commit xorg-x11-driver-video for openSUSE:Factory
Hello community, here is the log from the commit of package xorg-x11-driver-video for openSUSE:Factory checked in at Wed Apr 29 02:48:03 CEST 2009. -------- --- xorg-x11-driver-video/xorg-x11-driver-video.changes 2009-04-28 03:54:38.000000000 +0200 +++ xorg-x11-driver-video/xorg-x11-driver-video.changes 2009-04-29 01:51:17.000000000 +0200 @@ -1,0 +2,6 @@ +Wed Apr 29 01:36:49 CEST 2009 - sndirsch@suse.de + +- xf86-video-siliconmotion 1.7.1 + * various driver fixes + +------------------------------------------------------------------- calling whatdependson for head-i586 Old: ---- xf86-video-siliconmotion-1.7.0.tar.bz2 New: ---- xf86-video-siliconmotion-1.7.1.tar.bz2 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ Other differences: ------------------ ++++++ xorg-x11-driver-video.spec ++++++ --- /var/tmp/diff_new_pack.M20468/_old 2009-04-29 02:47:24.000000000 +0200 +++ /var/tmp/diff_new_pack.M20468/_new 2009-04-29 02:47:24.000000000 +0200 @@ -22,7 +22,7 @@ BuildRequires: Mesa-devel libdrm-devel pkgconfig xorg-x11-proto-devel xorg-x11-server-sdk Url: http://xorg.freedesktop.org/ Version: 7.4 -Release: 56 +Release: 57 License: X11/MIT BuildRoot: %{_tmppath}/%{name}-%{version}-build Group: System/X11/Servers/XF86_4 @@ -52,7 +52,7 @@ Source20: xf86-video-s3-0.6.1.tar.bz2 Source21: xf86-video-s3virge-1.10.2.tar.bz2 Source22: xf86-video-savage-2.2.1.tar.bz2 -Source23: xf86-video-siliconmotion-1.7.0.tar.bz2 +Source23: xf86-video-siliconmotion-1.7.1.tar.bz2 Source24: xf86-video-sis-0.10.1.tar.bz2 Source25: xf86-video-sisusb-0.9.1.tar.bz2 Source33: xf86-video-tdfx-1.4.1.tar.bz2 @@ -268,6 +268,9 @@ /var/lib/hardware/ids/20.%{name} %changelog +* Wed Apr 29 2009 sndirsch@suse.de +- xf86-video-siliconmotion 1.7.1 + * various driver fixes * Tue Apr 28 2009 sndirsch@suse.de - intel-gpu-tools 1.0 * This little package is an amalgamation of a few things: ++++++ xf86-video-siliconmotion-1.7.0.tar.bz2 -> xf86-video-siliconmotion-1.7.1.tar.bz2 ++++++ ++++ 1736 lines of diff (skipped) ++++ retrying with extended exclude list diff -urN --exclude=CVS --exclude=.cvsignore --exclude=.svn --exclude=.svnignore --exclude Makefile.in --exclude configure --exclude config.guess --exclude '*.pot' --exclude mkinstalldirs --exclude aclocal.m4 --exclude config.sub --exclude depcomp --exclude install-sh --exclude ltmain.sh old/xf86-video-siliconmotion-1.7.0/ChangeLog new/xf86-video-siliconmotion-1.7.1/ChangeLog --- old/xf86-video-siliconmotion-1.7.0/ChangeLog 2008-12-29 22:31:14.000000000 +0100 +++ new/xf86-video-siliconmotion-1.7.1/ChangeLog 2009-04-28 22:14:46.000000000 +0200 @@ -1,3 +1,99 @@ +commit abf1ba79f2bfe61f24cfa43deb0400d7c5f95bd5 +Author: Francisco Jerez <currojerez@riseup.net> +Date: Tue Apr 21 21:37:45 2009 +0200 + + Increase the maximum clock value to 200MHz on SM712. + + The default MCLK setting was higher than the clock limit, and it + failed. + +commit 41e5c49024d4e27a7be3da02017000a22b59016f +Author: Francisco Jerez <currojerez@riseup.net> +Date: Tue Apr 21 21:36:10 2009 +0200 + + Don't attempt monitor detection on SM712. + + The databook says nothing about it, and it doesn't work. + +commit 6691678b5f04d52a1e08f9eaa6d511df9b7eeb4d +Author: Jamie Lentin <jm@lentin.co.uk> +Date: Thu Mar 19 21:54:12 2009 +0000 + + Stop clearing of "VESA compliance power down mode" bit + + Clearing this bit causes an OQO 01+ w/SMI720 to power down the LCD, + leave it alone. + + Signed-off-by: Jamie Lentin <jm@lentin.co.uk> + Signed-off-by: Francisco Jerez <currojerez@riseup.net> + +commit 05480382c508bd27c1755405518ce9c339f0f80e +Author: Matthieu Herrb <matthieu.herrb@laas.fr> +Date: Fri Mar 13 21:19:16 2009 +0100 + + Fix direct access to IO space on chipsets with no IOBase mapping. + + Signed-off-by: Francisco Jerez <currojerez@riseup.net> + +commit e62807140ede74e262ed70c846017dc3506b511e +Author: Niels de Vos <niels.devos@wincor-nixdorf.com> +Date: Wed Feb 11 10:10:13 2009 +0100 + + siliconmotion: Fix disabling of debugging if SMI501_CLI_DEBUG is set to 0 + + Due to checking if SMI501_CLI_DEBUG is defined, some debugging will + be enabled if SMI501_CLI_DEBUG is set to 0. A single #if should be + used instead. Some debugging code already does this. + + Signed-off-by: Niels de Vos <niels.devos@wincor-nixdorf.com> + Signed-off-by: Francisco Jerez <currojerez@riseup.net> + +commit 0b34c4a29fcf45ac24361b4691cca0fd99cc3a3f +Author: Francisco Jerez <currojerez@riseup.net> +Date: Wed Feb 4 03:49:08 2009 +0100 + + Wait for vertical retrace before writing registers at SMILynx_CrtcDPMS_* + +commit 1d46cca27b0d38d5355b5f93dd0ed0fe4f250d3f +Author: Francisco Jerez <currojerez@riseup.net> +Date: Tue Feb 3 22:15:45 2009 +0100 + + Drop the outdated configuration options documentation in README. + +commit 64f722c3121a8f28cfc5b532ddec0ac83095ac95 +Author: Francisco Jerez <currojerez@riseup.net> +Date: Tue Feb 3 22:17:33 2009 +0100 + + Minor corrections at the man page. + +commit 94d9c659b71c84db46fa279d9d8736e1589e155c +Author: Francisco Jerez <currojerez@riseup.net> +Date: Tue Feb 3 22:18:14 2009 +0100 + + Set dualhead to on by default on SM72x chipsets. + +commit 4d98e9c6a6e357ed736cd312a957c1e0a7b1d36b +Author: Francisco Jerez <currojerez@riseup.net> +Date: Wed Feb 4 01:56:20 2009 +0100 + + Dynamically switch virtual refresh mode. + + Probably this makes dualhead mode more useful because it makes + possible displaying video on the LCD as long as the CRT output is + disabled or cloned. + +commit 1c57cfa814504c33fcad51115d77f2d166fb7903 +Author: Alan Coopersmith <alan.coopersmith@sun.com> +Date: Fri Jan 30 21:00:17 2009 -0800 + + Add README with pointers to mailing list, bugzilla & git repos + +commit 2aee107d992cb58bfbb2f527cfa73ea9f6957998 +Author: Alan Coopersmith <alan.coopersmith@sun.com> +Date: Fri Jan 9 16:33:43 2009 -0800 + + Remove xorgconfig & xorgcfg from See Also list in man page + commit fdc2c50682b240e5966e4e5a7b45552ee2043bfc Author: Paulo Cesar Pereira de Andrade <pcpa@mandriva.com.br> Date: Mon Dec 29 18:41:05 2008 -0200 diff -urN --exclude=CVS --exclude=.cvsignore --exclude=.svn --exclude=.svnignore --exclude Makefile.in --exclude configure --exclude config.guess --exclude '*.pot' --exclude mkinstalldirs --exclude aclocal.m4 --exclude config.sub --exclude depcomp --exclude install-sh --exclude ltmain.sh old/xf86-video-siliconmotion-1.7.0/configure.ac new/xf86-video-siliconmotion-1.7.1/configure.ac --- old/xf86-video-siliconmotion-1.7.0/configure.ac 2008-12-29 21:40:55.000000000 +0100 +++ new/xf86-video-siliconmotion-1.7.1/configure.ac 2009-04-28 22:13:23.000000000 +0200 @@ -22,7 +22,7 @@ AC_PREREQ(2.57) AC_INIT([xf86-video-siliconmotion], - 1.7.0, + 1.7.1, [https://bugs.freedesktop.org/enter_bug.cgi?product=xorg], xf86-video-siliconmotion) diff -urN --exclude=CVS --exclude=.cvsignore --exclude=.svn --exclude=.svnignore --exclude Makefile.in --exclude configure --exclude config.guess --exclude '*.pot' --exclude mkinstalldirs --exclude aclocal.m4 --exclude config.sub --exclude depcomp --exclude install-sh --exclude ltmain.sh old/xf86-video-siliconmotion-1.7.0/man/siliconmotion.man new/xf86-video-siliconmotion-1.7.1/man/siliconmotion.man --- old/xf86-video-siliconmotion-1.7.0/man/siliconmotion.man 2008-12-12 18:50:32.000000000 +0100 +++ new/xf86-video-siliconmotion-1.7.1/man/siliconmotion.man 2009-03-20 00:26:11.000000000 +0100 @@ -106,12 +106,12 @@ .TP .BI "Option \*qUseBIOS\*q \*q" boolean \*q Use the BIOS to set the modes. This is used for custom panel timings. -Default: on. +Default: off for SM72x and SM5xx, otherwise on. .TP .BI "Option \*qDualhead\*q \*q" boolean \*q Enable dualhead mode. -Currently not all chips are supported and on lynx chipsets hardware video -overlay (XV) will only work on the secondary VGA output. +Currently not all chips are supported and hardware video +overlay (XV) support may have some limitations. Default: off. .TP .BI "Option \*qPanelSize\*q \*q" width x height \*q @@ -191,7 +191,7 @@ option. .SH SEE ALSO -__xservername__(1), __xconfigfile__(__filemansuffix__), xorgconfig(1), Xserver(1), X(__miscmansuffix__) +__xservername__(1), __xconfigfile__(__filemansuffix__), Xserver(1), X(__miscmansuffix__) .SH SUPPORT For assistance with this driver, or __xservername__ in general, check the web diff -urN --exclude=CVS --exclude=.cvsignore --exclude=.svn --exclude=.svnignore --exclude Makefile.in --exclude configure --exclude config.guess --exclude '*.pot' --exclude mkinstalldirs --exclude aclocal.m4 --exclude config.sub --exclude depcomp --exclude install-sh --exclude ltmain.sh old/xf86-video-siliconmotion-1.7.0/README new/xf86-video-siliconmotion-1.7.1/README --- old/xf86-video-siliconmotion-1.7.0/README 2008-09-18 23:00:14.000000000 +0200 +++ new/xf86-video-siliconmotion-1.7.1/README 2009-03-20 00:26:11.000000000 +0100 @@ -1,76 +1,22 @@ -What works: -- Supports 8bpp, 16bpp and 24bpp. Heavy testing on SM720. +xf86-video-siliconmotion - Silicon Motion video driver for the Xorg X server -XCONFIG options: +Please submit bugs & patches to the Xorg bugzilla: -The driver supports quite a few different XConfig options, which can -be used to tune the driver and improve performance. Without any options, -the driver will use conservative settings which should work on most -hardware. Large improvements in performance are possible by selecting -the proper options, which will probably work on most systems. - -Cursor: - -- "hwcursor" "off" behaves exactly like "swcursor". Default: "on" -- "swcursor" will disable the HW Cursor. HW Cursor is used by default and - no option is needed to enable it. - -Display: - -- "ShadowFB" Use shadow framebuffer. Default: off. -- "Rotate" "cw" | "ccw" Rotate the screen CW - clockwise or CCW - counter - clockwise. Uses ShadowFB. Default: no rotation. -- "UseBIOS" Use BIOS to set modes. Default: on. -- "ZoomOnLCD" Allow changing resolution on panel. Default: off. - -Overlays: - -- "VideoKey" Set chroma key for video. Default: Off blue. -- "ByteSwap" Turn on YUV byte swapping. Defaul: off. - -Video memory: - -- "set_mclk" sets the memory clock, format is: - Option "set_mclk" "50000" - in the XF86Config file. Valid values are any - integer <= 100000, where 100000 == 100 MHz. - -Acceleration and graphic engine: - -- "NoAccel" turns off all acceleration -- "fifo_aggressive", "fifo_moderate" and "fifo_conservative" alter the settings - for the threshold at which the pixel FIFO takes over the internal - memory bus to refill itself. The smaller this threshold, the better - the acceleration performance of the card. You may try the fastest - setting ("aggressive") and move down if you encounter pixel corruption. - The optimal setting will probably depend on dot-clock and on color - depth. Note that specifying any of these options will also alter other - memory settings which should increase performance, so you should at - least use "fifo_conservative" (this uses the chip defaults). -- Common XAA acceleration options to disable primitives for test purposes: - "XaaNoScreenToScreenCopy" - "XaaNoSolidFillRect" - "XaaNoColor8x8PatternFillRect" - "XaaNoImageWriteRect" - "XaaNoPixmapCache" - -PCI bus: - -- "pci_burst" will enable PCI burst mode. This should work on all but a - few "broken" PCI chipsets, and will increase performance. Option may - take a parameter "on", "off", "yes", etc... -- "pci_retry" will allow the driver to rely on PCI Retry to program the - ViRGE registers. "pci_burst" must be enabled for this to work. - This will increase performance, especially for small fills/blits, - because the driver does not have to poll the ViRGE before sending it - commands to make sure it is ready. It should work on most - recent PCI chipsets. + https://bugs.freedesktop.org/enter_bug.cgi?product=xorg -Debug: +All questions regarding this software should be directed at the +Xorg mailing list: -- "ShowCache" Enable or disable viewing offscreen cache memory. A - development debug option. Default: off. + http://lists.freedesktop.org/mailman/listinfo/xorg -Header: //Mercury/Projects/archives/XFree86/4.0/README.-arc 1.2 14 Sep 2000 12:28:36 Frido $ +The master development code repository can be found at: -$XFree86: xc/programs/Xserver/hw/xfree86/drivers/siliconmotion/README,v 1.3 2001/02/15 18:20:33 dawes Exp $ + git://anongit.freedesktop.org/git/xorg/driver/xf86-video-siliconmotion + + http://cgit.freedesktop.org/xorg/driver/xf86-video-siliconmotion + +For more information on the git code manager, see: + + http://wiki.x.org/wiki/GitPage + +---------------------------------------------------------------------------- diff -urN --exclude=CVS --exclude=.cvsignore --exclude=.svn --exclude=.svnignore --exclude Makefile.in --exclude configure --exclude config.guess --exclude '*.pot' --exclude mkinstalldirs --exclude aclocal.m4 --exclude config.sub --exclude depcomp --exclude install-sh --exclude ltmain.sh old/xf86-video-siliconmotion-1.7.0/src/smi_501.h new/xf86-video-siliconmotion-1.7.1/src/smi_501.h --- old/xf86-video-siliconmotion-1.7.0/src/smi_501.h 2008-12-29 18:55:08.000000000 +0100 +++ new/xf86-video-siliconmotion-1.7.1/src/smi_501.h 2009-03-20 00:26:11.000000000 +0100 @@ -1333,7 +1333,7 @@ } smi_cli_entry_t; -#ifdef SMI501_CLI_DEBUG +#if SMI501_CLI_DEBUG /* ensure there are "count" command list "slots" 8 bytes wide free */ #define BATCH_BEGIN(COUNT) \ diff -urN --exclude=CVS --exclude=.cvsignore --exclude=.svn --exclude=.svnignore --exclude Makefile.in --exclude configure --exclude config.guess --exclude '*.pot' --exclude mkinstalldirs --exclude aclocal.m4 --exclude config.sub --exclude depcomp --exclude install-sh --exclude ltmain.sh old/xf86-video-siliconmotion-1.7.0/src/smi_driver.c new/xf86-video-siliconmotion-1.7.1/src/smi_driver.c --- old/xf86-video-siliconmotion-1.7.0/src/smi_driver.c 2008-12-29 21:39:50.000000000 +0100 +++ new/xf86-video-siliconmotion-1.7.1/src/smi_driver.c 2009-04-21 21:47:11.000000000 +0200 @@ -792,9 +792,13 @@ pSmi->PciInfo->func); #endif - pSmi->Dualhead = FALSE; - from = X_DEFAULT; + if(pSmi->Chipset == SMI_LYNX3DM && + pScrn->bitsPerPixel == 16) + pSmi->Dualhead = TRUE; + else + pSmi->Dualhead = FALSE; + if (xf86GetOptValBool(pSmi->Options, OPTION_DUALHEAD, &pSmi->Dualhead)) from = X_CONFIG; @@ -914,8 +918,7 @@ pSmi->clockRange.next = NULL; pSmi->clockRange.minClock = 20000; - if (pSmi->Chipset == SMI_LYNX3DM || - pSmi->Chipset == SMI_COUGAR3DR || + if (SMI_LYNXM_SERIES(pSmi->Chipset) || IS_MSOC(pSmi)) pSmi->clockRange.maxClock = 200000; else @@ -1535,7 +1538,7 @@ pSmi->FBReserved = pSmi->FBCursorOffset = pSmi->videoRAMBytes - (pSmi->Dualhead ? SMI501_CURSOR_SIZE << 1 : SMI501_CURSOR_SIZE); -# ifdef SMI501_CLI_DEBUG +# if SMI501_CLI_DEBUG if (pSmi->useEXA) { pSmi->batch_active = FALSE; pSmi->batch_length = 4096; diff -urN --exclude=CVS --exclude=.cvsignore --exclude=.svn --exclude=.svnignore --exclude Makefile.in --exclude configure --exclude config.guess --exclude '*.pot' --exclude mkinstalldirs --exclude aclocal.m4 --exclude config.sub --exclude depcomp --exclude install-sh --exclude ltmain.sh old/xf86-video-siliconmotion-1.7.0/src/smi.h new/xf86-video-siliconmotion-1.7.1/src/smi.h --- old/xf86-video-siliconmotion-1.7.0/src/smi.h 2008-12-29 18:55:32.000000000 +0100 +++ new/xf86-video-siliconmotion-1.7.1/src/smi.h 2009-03-20 00:26:11.000000000 +0100 @@ -264,7 +264,7 @@ structure */ void (*BlockHandler)(int i, pointer blockData, pointer pTimeout, pointer pReadMask); -#ifdef SMI501_CLI_DEBUG +#if SMI501_CLI_DEBUG /* SMI 501/502 Command List Interpreter */ Bool batch_active; int64_t *batch_handle; /* Virtual address */ diff -urN --exclude=CVS --exclude=.cvsignore --exclude=.svn --exclude=.svnignore --exclude Makefile.in --exclude configure --exclude config.guess --exclude '*.pot' --exclude mkinstalldirs --exclude aclocal.m4 --exclude config.sub --exclude depcomp --exclude install-sh --exclude ltmain.sh old/xf86-video-siliconmotion-1.7.0/src/smilynx_crtc.c new/xf86-video-siliconmotion-1.7.1/src/smilynx_crtc.c --- old/xf86-video-siliconmotion-1.7.0/src/smilynx_crtc.c 2008-12-29 16:52:25.000000000 +0100 +++ new/xf86-video-siliconmotion-1.7.1/src/smilynx_crtc.c 2009-03-20 00:26:11.000000000 +0100 @@ -194,7 +194,7 @@ WRITE_VPR(pSmi, 0x0C, Base); WRITE_FPR(pSmi, FPR0C, Base); }else{ - if(pSmi->Dualhead && crtc == crtcConf->crtc[0]){ + if(pSmi->Dualhead && crtc == crtcConf->crtc[1]){ /* LCD */ /* FIFO1 read start address */ @@ -857,6 +857,7 @@ ScrnInfoPtr pScrn = crtc->scrn; SMIPtr pSmi = SMIPTR(pScrn); SMIRegPtr reg = pSmi->mode; + vgaHWPtr hwp = VGAHWPTR(pScrn); ENTER(); @@ -865,8 +866,41 @@ else reg->SR21 &= ~0x88; /* Enable DAC and color palette RAM */ + /* Wait for vertical retrace */ + while (hwp->readST01(hwp) & 0x8) ; + while (!(hwp->readST01(hwp) & 0x8)) ; + VGAOUT8_INDEX(pSmi, VGA_SEQ_INDEX, VGA_SEQ_DATA, 0x21, reg->SR21); + if(mode == DPMSModeOn){ + /* Reload the LUT */ + SMILynx_CrtcLoadLUT_crt(crtc); + } + + LEAVE(); +} + +static void +SMILynx_CrtcDPMS_lcd(xf86CrtcPtr crtc, int mode) +{ + ScrnInfoPtr pScrn = crtc->scrn; + SMIPtr pSmi = SMIPTR(pScrn); + SMIRegPtr reg = pSmi->mode; + vgaHWPtr hwp = VGAHWPTR(pScrn); + + ENTER(); + + if(mode == DPMSModeOff) + reg->SR31 &= ~0x80; /* Disable Virtual Refresh */ + else + reg->SR31 |= 0x80; /* Enable Virtual Refresh */ + + /* Wait for vertical retrace */ + while (hwp->readST01(hwp) & 0x8) ; + while (!(hwp->readST01(hwp) & 0x8)) ; + + VGAOUT8_INDEX(pSmi, VGA_SEQ_INDEX, VGA_SEQ_DATA, 0x31, reg->SR31); + LEAVE(); } @@ -912,56 +946,52 @@ LEAVE(FALSE); crtc->driver_private = crtcPriv; }else{ - if(pSmi->Dualhead){ - /* CRTC is LCD*/ - SMI_CrtcFuncsInit_base(&crtcFuncs, &crtcPriv); - crtcFuncs->mode_set = SMILynx_CrtcModeSet_lcd; - crtcFuncs->mode_fixup = SMILynx_CrtcModeFixup; - crtcPriv->adjust_frame = SMILynx_CrtcAdjustFrame; - crtcPriv->video_init = SMILynx_CrtcVideoInit_lcd; - crtcPriv->load_lut = SMILynx_CrtcLoadLUT_lcd; - - if(! (crtc = xf86CrtcCreate(pScrn,crtcFuncs))) - LEAVE(FALSE); - crtc->driver_private = crtcPriv; + /* CRTC0 can drive both outputs when virtual refresh is + disabled, and only the VGA output with virtual refresh + enabled. */ + SMI_CrtcFuncsInit_base(&crtcFuncs, &crtcPriv); - /* CRTC1 is CRT */ - SMI_CrtcFuncsInit_base(&crtcFuncs, &crtcPriv); + if(pSmi->useBIOS){ + crtcFuncs->mode_set = SMILynx_CrtcModeSet_bios; + }else{ crtcFuncs->dpms = SMILynx_CrtcDPMS_crt; - crtcFuncs->mode_set = SMILynx_CrtcModeSet_crt; - crtcFuncs->mode_fixup = SMILynx_CrtcModeFixup; - crtcPriv->adjust_frame = SMILynx_CrtcAdjustFrame; - crtcPriv->video_init = SMILynx_CrtcVideoInit_crt; - crtcPriv->load_lut = SMILynx_CrtcLoadLUT_crt; - if(! (crtc = xf86CrtcCreate(pScrn,crtcFuncs))) - LEAVE(FALSE); - crtc->driver_private = crtcPriv; + if(pSmi->Dualhead){ + /* The standard VGA CRTC registers get locked in + virtual refresh mode. */ + crtcFuncs->mode_set = SMILynx_CrtcModeSet_crt; - }else{ - /* CRTC0 is LCD, but in standard refresh mode - it is controlled through the primary VGA registers */ - SMI_CrtcFuncsInit_base(&crtcFuncs, &crtcPriv); - - if(pSmi->useBIOS){ - crtcFuncs->mode_set = SMILynx_CrtcModeSet_bios; }else{ - crtcFuncs->dpms = SMILynx_CrtcDPMS_crt; crtcFuncs->mode_set = SMILynx_CrtcModeSet_vga; } + } + + crtcFuncs->mode_fixup = SMILynx_CrtcModeFixup; + crtcPriv->adjust_frame = SMILynx_CrtcAdjustFrame; + crtcPriv->video_init = SMILynx_CrtcVideoInit_crt; + crtcPriv->load_lut = SMILynx_CrtcLoadLUT_crt; + + if(pSmi->HwCursor){ + crtcFuncs->set_cursor_colors = SMILynx_CrtcSetCursorColors_crt; + crtcFuncs->set_cursor_position = SMILynx_CrtcSetCursorPosition_crt; + crtcFuncs->show_cursor = SMILynx_CrtcShowCursor_crt; + crtcFuncs->hide_cursor = SMILynx_CrtcHideCursor_crt; + crtcFuncs->load_cursor_image = SMILynx_CrtcLoadCursorImage_crt; + } + if(! (crtc = xf86CrtcCreate(pScrn,crtcFuncs))) + LEAVE(FALSE); + crtc->driver_private = crtcPriv; + + if(pSmi->Dualhead){ + /* CRTC1 drives LCD when enabled. */ + SMI_CrtcFuncsInit_base(&crtcFuncs, &crtcPriv); + crtcFuncs->mode_set = SMILynx_CrtcModeSet_lcd; crtcFuncs->mode_fixup = SMILynx_CrtcModeFixup; + crtcFuncs->dpms = SMILynx_CrtcDPMS_lcd; crtcPriv->adjust_frame = SMILynx_CrtcAdjustFrame; - crtcPriv->video_init = SMILynx_CrtcVideoInit_crt; - crtcPriv->load_lut = SMILynx_CrtcLoadLUT_crt; - - if(pSmi->HwCursor){ - crtcFuncs->set_cursor_colors = SMILynx_CrtcSetCursorColors_crt; - crtcFuncs->set_cursor_position = SMILynx_CrtcSetCursorPosition_crt; - crtcFuncs->show_cursor = SMILynx_CrtcShowCursor_crt; - crtcFuncs->hide_cursor = SMILynx_CrtcHideCursor_crt; - crtcFuncs->load_cursor_image = SMILynx_CrtcLoadCursorImage_crt; - } + crtcPriv->video_init = SMILynx_CrtcVideoInit_lcd; + crtcPriv->load_lut = SMILynx_CrtcLoadLUT_lcd; if(! (crtc = xf86CrtcCreate(pScrn,crtcFuncs))) LEAVE(FALSE); diff -urN --exclude=CVS --exclude=.cvsignore --exclude=.svn --exclude=.svnignore --exclude Makefile.in --exclude configure --exclude config.guess --exclude '*.pot' --exclude mkinstalldirs --exclude aclocal.m4 --exclude config.sub --exclude depcomp --exclude install-sh --exclude ltmain.sh old/xf86-video-siliconmotion-1.7.0/src/smilynx_hw.c new/xf86-video-siliconmotion-1.7.1/src/smilynx_hw.c --- old/xf86-video-siliconmotion-1.7.0/src/smilynx_hw.c 2008-12-22 17:39:30.000000000 +0100 +++ new/xf86-video-siliconmotion-1.7.1/src/smilynx_hw.c 2009-03-20 00:26:25.000000000 +0100 @@ -80,19 +80,12 @@ /* Set DPMS state to Off */ mode->SR22 |= 0x30; - /* VESA compliance power down mode */ - mode->SR24 &= ~0x01; - if (pSmi->Chipset != SMI_COUGAR3DR) { /* Select no displays */ mode->SR31 &= ~0x07; - /* Enable virtual refresh */ - if(pSmi->Dualhead){ - mode->SR31 |= 0x80; - }else{ - mode->SR31 &= ~0x80; - } + /* Disable virtual refresh */ + mode->SR31 &= ~0x80; /* Disable expansion */ mode->SR32 &= ~0x03; @@ -131,7 +124,6 @@ VGAOUT8_INDEX(pSmi, VGA_SEQ_INDEX, VGA_SEQ_DATA, 0x20, mode->SR20); VGAOUT8_INDEX(pSmi, VGA_SEQ_INDEX, VGA_SEQ_DATA, 0x21, mode->SR21); VGAOUT8_INDEX(pSmi, VGA_SEQ_INDEX, VGA_SEQ_DATA, 0x22, mode->SR22); - VGAOUT8_INDEX(pSmi, VGA_SEQ_INDEX, VGA_SEQ_DATA, 0x24, mode->SR24); VGAOUT8_INDEX(pSmi, VGA_SEQ_INDEX, VGA_SEQ_DATA, 0x31, mode->SR31); VGAOUT8_INDEX(pSmi, VGA_SEQ_INDEX, VGA_SEQ_DATA, 0x32, mode->SR32); VGAOUT8_INDEX(pSmi, VGA_SEQ_INDEX, VGA_SEQ_DATA, 0x34, mode->SR34); diff -urN --exclude=CVS --exclude=.cvsignore --exclude=.svn --exclude=.svnignore --exclude Makefile.in --exclude configure --exclude config.guess --exclude '*.pot' --exclude mkinstalldirs --exclude aclocal.m4 --exclude config.sub --exclude depcomp --exclude install-sh --exclude ltmain.sh old/xf86-video-siliconmotion-1.7.0/src/smilynx_output.c new/xf86-video-siliconmotion-1.7.1/src/smilynx_output.c --- old/xf86-video-siliconmotion-1.7.0/src/smilynx_output.c 2008-12-29 16:52:17.000000000 +0100 +++ new/xf86-video-siliconmotion-1.7.1/src/smilynx_output.c 2009-04-21 21:47:11.000000000 +0200 @@ -82,17 +82,25 @@ ScrnInfoPtr pScrn = output->scrn; SMIPtr pSmi = SMIPTR(pScrn); SMIRegPtr reg = pSmi->mode; + xf86CrtcConfigPtr crtcConf = XF86_CRTC_CONFIG_PTR(pScrn); ENTER(); switch (mode) { case DPMSModeOn: - if(pSmi->lcd == 2 /* LCD is DSTN */ - || pSmi->Dualhead /* Virtual Refresh is enabled */) + if(pSmi->Dualhead && + output->crtc == crtcConf->crtc[1]){ + /* Virtual Refresh is enabled */ + reg->SR21 &= ~0x10; /* Enable LCD framebuffer read operation and DSTN dithering engine */ - if(pSmi->lcd == 2 /* LCD is DSTN */ - && !pSmi->Dualhead /* Virtual Refresh is disabled */) - reg->SR21 &= ~0x20; /* Enable LCD framebuffer write operation */ + }else{ + if(pSmi->lcd == 2){ + /* LCD is DSTN */ + + reg->SR21 &= ~0x10; /* Enable LCD framebuffer read operation and DSTN dithering engine */ + reg->SR21 &= ~0x20; /* Enable LCD framebuffer write operation */ + } + } reg->SR31 |= 0x01; /* Enable LCD display*/ break; @@ -212,7 +220,7 @@ while (!(hwp->readST01(hwp) & 0x8)) ; while (hwp->readST01(hwp) & 0x8) ; - status = MMIO_IN8(pSmi->IOBase, 0x3C2) & 0x10; + status = VGAIN8(pSmi, 0x3C2) & 0x10; /* Restore previous state */ VGAOUT8_INDEX(pSmi, VGA_SEQ_INDEX, VGA_SEQ_DATA, 0x21, mode->SR21); @@ -269,18 +277,17 @@ output->interlaceAllowed = FALSE; output->doubleScanAllowed = FALSE; - output->possible_crtcs = 1 << 0; - if(pSmi->Dualhead) - output->possible_clones = 0; - else - output->possible_clones = 1 << 1; + output->possible_crtcs = (1 << 0) | (1 << 1); + output->possible_clones = 1 << 1; - if(!pSmi->useBIOS){ + if(pSmi->Dualhead){ /* Output 1 is CRT */ SMI_OutputFuncsInit_base(&outputFuncs); outputFuncs->dpms = SMILynx_OutputDPMS_crt; outputFuncs->get_modes = SMILynx_OutputGetModes_crt; - outputFuncs->detect = SMILynx_OutputDetect_crt; + + if(pSmi->Chipset == SMI_LYNX3DM) + outputFuncs->detect = SMILynx_OutputDetect_crt; if(! (output = xf86OutputCreate(pScrn,outputFuncs,"VGA"))) LEAVE(FALSE); @@ -288,13 +295,8 @@ output->interlaceAllowed = FALSE; output->doubleScanAllowed = FALSE; - if(pSmi->Dualhead){ - output->possible_crtcs = 1 << 1; - output->possible_clones = 0; - }else{ - output->possible_crtcs = 1 << 0; - output->possible_clones = 1 << 0; - } + output->possible_crtcs = 1 << 0; + output->possible_clones = 1 << 0; } } diff -urN --exclude=CVS --exclude=.cvsignore --exclude=.svn --exclude=.svnignore --exclude Makefile.in --exclude configure --exclude config.guess --exclude '*.pot' --exclude mkinstalldirs --exclude aclocal.m4 --exclude config.sub --exclude depcomp --exclude install-sh --exclude ltmain.sh old/xf86-video-siliconmotion-1.7.0/src/smi_video.c new/xf86-video-siliconmotion-1.7.1/src/smi_video.c --- old/xf86-video-siliconmotion-1.7.0/src/smi_video.c 2008-12-29 21:34:59.000000000 +0100 +++ new/xf86-video-siliconmotion-1.7.1/src/smi_video.c 2009-03-20 00:26:11.000000000 +0100 @@ -1057,10 +1057,10 @@ dstBox.x2 = drw_x + drw_w; dstBox.y2 = drw_y + drw_h; - if(!xf86_crtc_clip_video_helper(pScrn, &crtc, NULL, &dstBox, &x1, &x2, &y1, &y2, clipBoxes, width, height)) + if(!xf86_crtc_clip_video_helper(pScrn, &crtc, crtcConf->crtc[0], &dstBox, &x1, &x2, &y1, &y2, clipBoxes, width, height)) LEAVE(Success); - if(pSmi->Dualhead && crtc == crtcConf->crtc[0]) + if(pSmi->Dualhead && crtc == crtcConf->crtc[1]) LEAVE(Success); /* Transform dstBox to the CRTC coordinates */ @@ -1516,7 +1516,7 @@ LEAVE(Success); } else { - if (!xf86_crtc_clip_video_helper(pScrn, &crtc, NULL, &dstBox, + if (!xf86_crtc_clip_video_helper(pScrn, &crtc, crtcConf->crtc[0], &dstBox, &x1, &x2, &y1, &y2, clipBoxes, width, height)) LEAVE(Success); @@ -1629,7 +1629,7 @@ drw_w, drw_h); } else{ - if(!pSmi->Dualhead || crtc == crtcConf->crtc[1]) + if(crtc == crtcConf->crtc[0]) SMI_DisplayVideo(pScrn, id, offset, width, height, dstPitch, x1, y1, x2, y2, &dstBox, src_w, src_h, drw_w, drw_h); } @@ -2461,7 +2461,7 @@ dstBox.y1 = drw_y; dstBox.y2 = drw_y + drw_h; - if(!xf86_crtc_clip_video_helper(surface->pScrn, &crtc, NULL, &dstBox, + if(!xf86_crtc_clip_video_helper(surface->pScrn, &crtc, crtcConf->crtc[0], &dstBox, &x1, &x2, &y1, &y2, clipBoxes, surface->width, surface->height)) LEAVE(Success); @@ -2485,7 +2485,7 @@ surface->height, surface->pitches[0], x1, y1, x2, y2, &dstBox, vid_w, vid_h, drw_w, drw_h); else{ - if(!pSmi->Dualhead || crtc == crtcConf->crtc[1]) + if(crtc == crtcConf->crtc[0]) SMI_DisplayVideo(surface->pScrn, surface->id, surface->offsets[0], surface->width, surface->height, surface->pitches[0], x1, y1, x2, y2, &dstBox, vid_w, vid_h, drw_w, drw_h); ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ Remember to have fun... -- To unsubscribe, e-mail: opensuse-commit+unsubscribe@opensuse.org For additional commands, e-mail: opensuse-commit+help@opensuse.org
participants (1)
-
root@Hilbert.suse.de