[Date Prev][Date Next] [Thread Prev][Thread Next] [Date Index] [Thread Index]

xserver-xorg-video-s3: Changes to 'upstream-experimental'



 ChangeLog          |    8 +++
 configure.ac       |   14 +++++-
 src/Makefile.am    |    1 
 src/newmmio.h      |    1 
 src/s3.h           |   12 +++--
 src/s3_IBMRGB.c    |    1 
 src/s3_Ti.c        |    1 
 src/s3_Trio64DAC.c |    3 -
 src/s3_accel.c     |    2 
 src/s3_bios.c      |    6 ++
 src/s3_cursor.c    |    1 
 src/s3_dga.c       |    1 
 src/s3_driver.c    |  101 +++++++++++++++++++++++++++++++++++++++----
 src/s3_pcirename.h |  122 +++++++++++++++++++++++++++++++++++++++++++++++++++++
 src/s3_reg.h       |    1 
 src/s3_video.c     |    1 
 16 files changed, 247 insertions(+), 29 deletions(-)

New commits:
commit 7edc59e33bfa152e124bc8dd25f7fc4b22e44bd8
Author: Adam Jackson <ajax@redhat.com>
Date:   Wed Mar 19 15:00:28 2008 -0400

    s3 0.6.0

diff --git a/configure.ac b/configure.ac
index 461313b..0229c5f 100644
--- a/configure.ac
+++ b/configure.ac
@@ -22,7 +22,7 @@
 
 AC_PREREQ(2.57)
 AC_INIT([xf86-video-s3],
-        0.5.0,
+        0.6.0,
         [https://bugs.freedesktop.org/enter_bug.cgi?product=xorg],
         xf86-video-s3)
 

commit 081bf87a55b65f12d0339b4f48a13b8113661dc7
Author: Adam Jackson <ajax@redhat.com>
Date:   Wed Mar 19 14:55:06 2008 -0400

    Fix distcheck

diff --git a/src/Makefile.am b/src/Makefile.am
index ddbb6f9..0d9ae4b 100644
--- a/src/Makefile.am
+++ b/src/Makefile.am
@@ -36,6 +36,7 @@ s3_drv_la_SOURCES = \
          s3_driver.c \
          s3.h \
          s3_IBMRGB.c \
+	 s3_pcirename.h \
          s3_reg.h \
          s3_Ti.c \
          s3_Trio64DAC.c \

commit 773959298037b5b86e87d0fed530f1924d5d2208
Author: Adam Jackson <ajax@redhat.com>
Date:   Wed Mar 19 14:53:10 2008 -0400

    Death to RCS tags.

diff --git a/src/newmmio.h b/src/newmmio.h
index 3da3959..fdb0d34 100644
--- a/src/newmmio.h
+++ b/src/newmmio.h
@@ -1,4 +1,3 @@
-/* $XFree86: xc/programs/Xserver/hw/xfree86/drivers/s3/newmmio.h,v 1.6 2001/07/02 10:46:04 alanh Exp $ */
 
 /*
  *
diff --git a/src/s3.h b/src/s3.h
index 444fd3e..7c59236 100644
--- a/src/s3.h
+++ b/src/s3.h
@@ -24,7 +24,6 @@
  *
  *
  */
-/* $XFree86: xc/programs/Xserver/hw/xfree86/drivers/s3/s3.h,v 1.17 2003/07/04 16:24:28 eich Exp $ */
 
 
 #ifndef _S3_H
diff --git a/src/s3_IBMRGB.c b/src/s3_IBMRGB.c
index f12d637..a9f8a20 100644
--- a/src/s3_IBMRGB.c
+++ b/src/s3_IBMRGB.c
@@ -24,7 +24,6 @@
  *
  *
  */
-/* $XFree86: xc/programs/Xserver/hw/xfree86/drivers/s3/s3_IBMRGB.c,v 1.4 2002/12/11 17:30:48 dawes Exp $ */
 
 #ifdef HAVE_CONFIG_H
 #include "config.h"
diff --git a/src/s3_Ti.c b/src/s3_Ti.c
index 98934bd..9ea949a 100644
--- a/src/s3_Ti.c
+++ b/src/s3_Ti.c
@@ -24,7 +24,6 @@
  *
  *
  */
-/* $XFree86: xc/programs/Xserver/hw/xfree86/drivers/s3/s3_Ti.c,v 1.4 2001/10/28 03:33:44 tsi Exp $ */
 
 #ifdef HAVE_CONFIG_H
 #include "config.h"
diff --git a/src/s3_Trio64DAC.c b/src/s3_Trio64DAC.c
index 5bb8b3c..5b32146 100644
--- a/src/s3_Trio64DAC.c
+++ b/src/s3_Trio64DAC.c
@@ -24,7 +24,6 @@
  *
  *
  */
-/* $XFree86: xc/programs/Xserver/hw/xfree86/drivers/s3/s3_Trio64DAC.c,v 1.7tsi Exp $ */
 
 #ifdef HAVE_CONFIG_H
 #include "config.h"
diff --git a/src/s3_accel.c b/src/s3_accel.c
index af94816..675b823 100644
--- a/src/s3_accel.c
+++ b/src/s3_accel.c
@@ -24,8 +24,6 @@
  *
  *
  */
-/* $XdotOrg: xc/programs/Xserver/hw/xfree86/drivers/s3/s3_accel.c,v 1.2 2004/04/23 19:43:14 eich Exp $ */
-/* $XFree86: xc/programs/Xserver/hw/xfree86/drivers/s3/s3_accel.c,v 1.2 2001/10/28 03:33:44 tsi Exp $ */
 
 #ifdef HAVE_CONFIG_H
 #include "config.h"
diff --git a/src/s3_bios.c b/src/s3_bios.c
index 8fe14dc..6fbf561 100644
--- a/src/s3_bios.c
+++ b/src/s3_bios.c
@@ -24,7 +24,6 @@
  *
  *
  */
-/* $XFree86: xc/programs/Xserver/hw/xfree86/drivers/s3/s3_bios.c,v 1.2 2001/07/11 07:45:35 alanh Exp $ */
 
 #ifdef HAVE_CONFIG_H
 #include "config.h"
diff --git a/src/s3_cursor.c b/src/s3_cursor.c
index bc4a011..1cb1c65 100644
--- a/src/s3_cursor.c
+++ b/src/s3_cursor.c
@@ -24,7 +24,6 @@
  *
  *
  */
-/* $XFree86: $ */
 
 #ifdef HAVE_CONFIG_H
 #include "config.h"
diff --git a/src/s3_dga.c b/src/s3_dga.c
index c36f2f4..680aa02 100644
--- a/src/s3_dga.c
+++ b/src/s3_dga.c
@@ -24,7 +24,6 @@
  *
  *
  */
-/* $XFree86: $ */
 
 #ifdef HAVE_CONFIG_H
 #include "config.h"
diff --git a/src/s3_driver.c b/src/s3_driver.c
index c2ec292..1a68202 100644
--- a/src/s3_driver.c
+++ b/src/s3_driver.c
@@ -34,7 +34,6 @@
  *
  *
  */
-/* $XFree86: xc/programs/Xserver/hw/xfree86/drivers/s3/s3_driver.c,v 1.19tsi Exp $ */
 
 #ifdef HAVE_CONFIG_H
 #include "config.h"
diff --git a/src/s3_reg.h b/src/s3_reg.h
index 63646d9..64e3633 100644
--- a/src/s3_reg.h
+++ b/src/s3_reg.h
@@ -1,4 +1,3 @@
-/* $XFree86: xc/programs/Xserver/hw/xfree86/drivers/s3/s3_reg.h,v 1.1 2001/07/02 10:46:04 alanh Exp $ */
 
 #ifndef _S3_REG_H
 #define _S3_REG_H
diff --git a/src/s3_video.c b/src/s3_video.c
index 8189fdf..e320329 100644
--- a/src/s3_video.c
+++ b/src/s3_video.c
@@ -24,7 +24,6 @@
  *
  *
  */
-/* $XFree86: xc/programs/Xserver/hw/xfree86/drivers/s3/s3_video.c,v 1.4tsi Exp $ */
 
 #ifdef HAVE_CONFIG_H
 #include "config.h"

commit a0d6e3ff590f3704918339dc2b9aa0f820b24b75
Author: Dave Airlie <airlied@redhat.com>
Date:   Mon Mar 10 11:47:10 2008 +1000

    s3: pciaccess conversion

diff --git a/configure.ac b/configure.ac
index c6f47b0..461313b 100644
--- a/configure.ac
+++ b/configure.ac
@@ -58,10 +58,22 @@ PKG_CHECK_MODULES(XORG, [xorg-server >= 1.0.99.901 xproto fontsproto $REQUIRED_M
 sdkdir=$(pkg-config --variable=sdkdir xorg-server)
 
 # Checks for libraries.
+SAVE_CPPFLAGS="$CPPFLAGS"
+CPPFLAGS="$CPPFLAGS $XORG_CFLAGS"
+AC_CHECK_DECL(XSERVER_LIBPCIACCESS,
+              [XSERVER_LIBPCIACCESS=yes],[XSERVER_LIBPCIACCESS=no],
+              [#include "xorg-server.h"])
+CPPFLAGS="$SAVE_CPPFLAGS"
 
 # Checks for header files.
 AC_HEADER_STDC
 
+if test "x$XSERVER_LIBPCIACCESS" = xyes; then
+    PKG_CHECK_MODULES([PCIACCESS], [pciaccess >= 0.8.0])
+    XORG_CFLAGS="$XORG_CFLAGS $PCIACCESS_CFLAGS"
+fi
+AM_CONDITIONAL(XSERVER_LIBPCIACCESS, test "x$XSERVER_LIBPCIACCESS" = xyes)
+
 AC_SUBST([XORG_CFLAGS])
 AC_SUBST([moduledir])
 
diff --git a/src/s3.h b/src/s3.h
index 20a7b6f..444fd3e 100644
--- a/src/s3.h
+++ b/src/s3.h
@@ -30,6 +30,7 @@
 #ifndef _S3_H
 #define _S3_H
 
+#include "s3_pcirename.h"
 #include <string.h>
 
 #include "xf86.h"
@@ -86,7 +87,9 @@ typedef struct {
 
 typedef struct _S3Rec {
         pciVideoPtr             PciInfo;
+#ifndef XSERVER_LIBPCIACCESS
         PCITAG                  PciTag;
+#endif
         EntityInfoPtr           pEnt;
         unsigned long           IOAddress;
         unsigned long           FBAddress; 
diff --git a/src/s3_bios.c b/src/s3_bios.c
index 5ef1eb3..8fe14dc 100644
--- a/src/s3_bios.c
+++ b/src/s3_bios.c
@@ -46,8 +46,13 @@ static unsigned char *find_bios_string(S3Ptr pS3, int BIOSbase,
 
 	if (!init) {
 		init = 1;
+#ifndef XSERVER_LIBPCIACCESS
 		if (xf86ReadDomainMemory(pS3->PciTag, BIOSbase, BIOS_BSIZE, bios) != BIOS_BSIZE)
 			return NULL;
+#else
+		if (pci_device_read_rom(pS3->PciInfo, bios))
+		        return NULL;
+#endif
 		if ((bios[0] != 0x55) || (bios[1] != 0xaa))
 			return NULL;
 	}
diff --git a/src/s3_driver.c b/src/s3_driver.c
index 2ea4afa..c2ec292 100644
--- a/src/s3_driver.c
+++ b/src/s3_driver.c
@@ -499,7 +499,7 @@ static Bool S3PreInit(ScrnInfoPtr pScrn, int flags)
                 xf86DrvMsg(pScrn->scrnIndex, X_CONFIG, "ChipID override: 0x%04X\n",
                            pS3->Chipset);
         } else {
-                pS3->Chipset = pS3->PciInfo->chipType;   
+  	        pS3->Chipset = PCI_DEV_DEVICE_ID(pS3->PciInfo);
                 pScrn->chipset = (char *)xf86TokenToString(S3Chipsets,
                                                            pS3->Chipset);
         }                                                  
@@ -508,14 +508,16 @@ static Bool S3PreInit(ScrnInfoPtr pScrn, int flags)
                 xf86DrvMsg(pScrn->scrnIndex, X_CONFIG, "ChipRev override: %d\n",
                            pS3->ChipRev);
         } else
-                pS3->ChipRev = pS3->PciInfo->chipRev;    
+	        pS3->ChipRev = PCI_DEV_REVISION(pS3->PciInfo);
         
         xfree(pEnt);
         
         xf86DrvMsg(pScrn->scrnIndex, X_CONFIG, "Chipset: \"%s\"\n", pScrn->chipset);
         
+#ifndef XSERVER_LIBPCIACCESS
         pS3->PciTag = pciTag(pS3->PciInfo->bus, pS3->PciInfo->device,
                              pS3->PciInfo->func);        
+#endif
 
 	switch (pS3->Chipset) {
 	case PCI_CHIP_964_0:
@@ -531,7 +533,7 @@ static Bool S3PreInit(ScrnInfoPtr pScrn, int flags)
 		break;
 	}
 
-	pS3->FBAddress = pS3->PciInfo->memBase[0];
+	pS3->FBAddress = PCI_REGION_BASE(pS3->PciInfo, 0, REGION_MEM);
 	pScrn->memPhysBase = pS3->FBAddress;
 	pScrn->fbOffset = 0;
 	
@@ -1016,9 +1018,25 @@ static Bool S3MapMem(ScrnInfoPtr pScrn)
 	S3Ptr pS3 = S3PTR(pScrn);
 
 	if (pS3->S3NewMMIO) {
+
+
+#ifndef XSERVER_LIBPCIACCESS
 		pS3->MMIOBase = xf86MapPciMem(pScrn->scrnIndex, VIDMEM_MMIO,
 					      pS3->PciTag, pS3->IOAddress,
 					      S3_NEWMMIO_REGSIZE);
+#else
+		{
+			void** result = (void**)&pS3->MMIOBase;
+			int err = pci_device_map_range(pS3->PciInfo,
+						       pS3->IOAddress,
+						       S3_NEWMMIO_REGSIZE,
+						       PCI_DEV_MAP_FLAG_WRITABLE,
+						       result);
+			
+			if (err) 
+				return FALSE;
+		}
+#endif
 		if (!pS3->MMIOBase) {
 			xf86DrvMsg(pScrn->scrnIndex, X_ERROR,
 				   "Could not map MMIO\n");
@@ -1026,9 +1044,25 @@ static Bool S3MapMem(ScrnInfoPtr pScrn)
 		}
 	}
 
+#ifndef XSERVER_LIBPCIACCESS
 	pS3->FBBase = xf86MapPciMem(pScrn->scrnIndex, VIDMEM_FRAMEBUFFER,
 				    pS3->PciTag, pS3->FBAddress,
 				    pScrn->videoRam * 1024);
+
+#else
+	{
+		void** result = (void**)&pS3->FBBase;
+		int err = pci_device_map_range(pS3->PciInfo,
+					       pS3->FBAddress,
+					       pS3->videoRam * 1024,
+					       PCI_DEV_MAP_FLAG_WRITABLE |
+					       PCI_DEV_MAP_FLAG_WRITE_COMBINE,
+					       result);
+		
+		if (err) 
+			return FALSE;
+	}
+#endif
 	if (!pS3->FBBase) {
 		xf86DrvMsg(pScrn->scrnIndex, X_ERROR,
 			   "Could not map framebuffer\n");
@@ -1045,11 +1079,21 @@ static void S3UnmapMem(ScrnInfoPtr pScrn)
 {
 	S3Ptr pS3 = S3PTR(pScrn);
 
-	if (pS3->S3NewMMIO)
+	if (pS3->S3NewMMIO) {
+#ifndef XSERVER_LIBPCIACCESS
 		xf86UnMapVidMem(pScrn->scrnIndex, (pointer)pS3->MMIOBase,
 				S3_NEWMMIO_REGSIZE);
+#else
+		pci_device_unmap_range(pS3->PciInfo, pS3->MMIOBase, S3_NEWMMIO_REGSIZE);
+#endif
+	}
+	
+#ifndef XSERVER_LIBPCIACCESS
 	xf86UnMapVidMem(pScrn->scrnIndex, (pointer)pS3->FBBase,
 			pScrn->videoRam * 1024);
+#else
+	pci_device_unmap_range(pS3->PciInfo, pS3->FBBase, pScrn->videoRam * 1024);
+#endif
 
 	return;
 }
diff --git a/src/s3_pcirename.h b/src/s3_pcirename.h
new file mode 100644
index 0000000..9321046
--- /dev/null
+++ b/src/s3_pcirename.h
@@ -0,0 +1,122 @@
+/*
+ * Copyright 2007 George Sapountzis
+ *
+ * Permission is hereby granted, free of charge, to any person obtaining a
+ * copy of this software and associated documentation files (the "Software"),
+ * to deal in the Software without restriction, including without limitation
+ * the rights to use, copy, modify, merge, publish, distribute, sublicense,
+ * and/or sell copies of the Software, and to permit persons to whom the
+ * Software is furnished to do so, subject to the following conditions:
+ *
+ * The above copyright notice and this permission notice (including the next
+ * paragraph) shall be included in all copies or substantial portions of the
+ * Software.
+ *
+ * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+ * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+ * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.  IN NO EVENT SHALL
+ * THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+ * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+ * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
+ * SOFTWARE.
+ */
+
+/**
+ * Macros for porting drivers from legacy xfree86 PCI code to the pciaccess
+ * library. The main purpose being to facilitate source code compatibility.
+ */
+
+#ifndef S3PCIRENAME_H
+#define S3PCIRENAME_H
+
+enum region_type {
+    REGION_MEM,
+    REGION_IO 
+};
+
+#ifndef XSERVER_LIBPCIACCESS
+
+/* pciVideoPtr */
+#define PCI_DEV_VENDOR_ID(_pcidev) ((_pcidev)->vendor)
+#define PCI_DEV_DEVICE_ID(_pcidev) ((_pcidev)->chipType)
+#define PCI_DEV_REVISION(_pcidev)  ((_pcidev)->chipRev)
+
+#define PCI_SUB_VENDOR_ID(_pcidev) ((_pcidev)->subsysVendor)
+#define PCI_SUB_DEVICE_ID(_pcidev) ((_pcidev)->subsysCard)
+
+#define PCI_DEV_TAG(_pcidev) pciTag((_pcidev)->bus,    \
+                                    (_pcidev)->device, \
+                                    (_pcidev)->func)
+#define PCI_DEV_BUS(_pcidev)       ((_pcidev)->bus)
+#define PCI_DEV_DEV(_pcidev)       ((_pcidev)->device)
+#define PCI_DEV_FUNC(_pcidev)      ((_pcidev)->func)
+
+/* pciConfigPtr */
+#define PCI_CFG_TAG(_pcidev)  (((pciConfigPtr)(_pcidev)->thisCard)->tag)
+#define PCI_CFG_BUS(_pcidev)  (((pciConfigPtr)(_pcidev)->thisCard)->busnum)
+#define PCI_CFG_DEV(_pcidev)  (((pciConfigPtr)(_pcidev)->thisCard)->devnum)
+#define PCI_CFG_FUNC(_pcidev) (((pciConfigPtr)(_pcidev)->thisCard)->funcnum)
+
+/* region addr: xfree86 uses different fields for memory regions and I/O ports */
+#define PCI_REGION_BASE(_pcidev, _b, _type)             \
+    (((_type) == REGION_MEM) ? (_pcidev)->memBase[(_b)] \
+                             : (_pcidev)->ioBase[(_b)])
+
+/* region size: xfree86 uses the log2 of the region size,
+ * but with zero meaning no region, not size of one XXX */
+#define PCI_REGION_SIZE(_pcidev, _b) \
+    (((_pcidev)->size[(_b)] > 0) ? (1 << (_pcidev)->size[(_b)]) : 0)
+
+/* read/write PCI configuration space */
+#define PCI_READ_BYTE(_pcidev, _value_ptr, _offset) \
+    *(_value_ptr) = pciReadByte(PCI_CFG_TAG(_pcidev), (_offset))
+
+#define PCI_READ_LONG(_pcidev, _value_ptr, _offset) \
+    *(_value_ptr) = pciReadLong(PCI_CFG_TAG(_pcidev), (_offset))
+
+#define PCI_WRITE_LONG(_pcidev, _value, _offset) \
+    pciWriteLong(PCI_CFG_TAG(_pcidev), (_offset), (_value))
+
+#else /* XSERVER_LIBPCIACCESS */
+
+typedef struct pci_device *pciVideoPtr;
+
+#define PCI_DEV_VENDOR_ID(_pcidev) ((_pcidev)->vendor_id)
+#define PCI_DEV_DEVICE_ID(_pcidev) ((_pcidev)->device_id)
+#define PCI_DEV_REVISION(_pcidev)  ((_pcidev)->revision)
+
+#define PCI_SUB_VENDOR_ID(_pcidev) ((_pcidev)->subvendor_id)
+#define PCI_SUB_DEVICE_ID(_pcidev) ((_pcidev)->subdevice_id)
+
+/* pci-rework functions take a 'pci_device' parameter instead of a tag */
+#define PCI_DEV_TAG(_pcidev)        (_pcidev)
+
+/* PCI_DEV macros, typically used in printf's, add domain ? XXX */
+#define PCI_DEV_BUS(_pcidev)       ((_pcidev)->bus)
+#define PCI_DEV_DEV(_pcidev)       ((_pcidev)->dev)
+#define PCI_DEV_FUNC(_pcidev)      ((_pcidev)->func)
+
+/* pci-rework functions take a 'pci_device' parameter instead of a tag */
+#define PCI_CFG_TAG(_pcidev)        (_pcidev)
+
+/* PCI_CFG macros, typically used in DRI init, contain the domain */
+#define PCI_CFG_BUS(_pcidev)      (((_pcidev)->domain << 8) | \
+                                    (_pcidev)->bus)
+#define PCI_CFG_DEV(_pcidev)       ((_pcidev)->dev)
+#define PCI_CFG_FUNC(_pcidev)      ((_pcidev)->func)
+
+#define PCI_REGION_BASE(_pcidev, _b, _type) ((_pcidev)->regions[(_b)].base_addr)
+#define PCI_REGION_SIZE(_pcidev, _b)        ((_pcidev)->regions[(_b)].size)
+
+#define PCI_READ_BYTE(_pcidev, _value_ptr, _offset) \
+    pci_device_cfg_read_u8((_pcidev), (_value_ptr), (_offset))
+
+#define PCI_READ_LONG(_pcidev, _value_ptr, _offset) \
+    pci_device_cfg_read_u32((_pcidev), (_value_ptr), (_offset))
+
+#define PCI_WRITE_LONG(_pcidev, _value, _offset) \
+    pci_device_cfg_write_u32((_pcidev), (_value), (_offset))
+
+#endif /* XSERVER_LIBPCIACCESS */
+
+#endif /* CIRPCIRENAME_H */

commit 7985d0148c766475c04f8481b0a9ddcea807d990
Author: Evgeny M. Zubok <evgeny.zubok@tochka.ru>
Date:   Mon Feb 25 11:52:09 2008 -0500

    Add non-vbe DPMS support for TRIOs, adjust max clock on Trio64V2

diff --git a/ChangeLog b/ChangeLog
index e9e18a8..dc15e51 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,11 @@
+2008-02-23  Evgeny M. Zubok <evgeny.zubok@tochka.ru>
+
+	* src/s3_driver.c: Add DPMS support for S3 Trio64V2 and possibly
+	others (need testing): S3 Trio64UV+. S3 Aurora64V+ and S3 Trio32/64
+	* src/s3_Trio64DAC: Change clocks for S3 Trio64V2 to make
+	the 1024x768@16bpp mode work.
+	Thanks to Richard Driscoll for these patches.
+	
 2006-04-07  Adam Jackson  <ajax@freedesktop.org>
 
 	* configure.ac:
diff --git a/src/s3_Trio64DAC.c b/src/s3_Trio64DAC.c
index cb4de3a..5bb8b3c 100644
--- a/src/s3_Trio64DAC.c
+++ b/src/s3_Trio64DAC.c
@@ -327,7 +327,7 @@ void S3Trio64DAC_Init(ScrnInfoPtr pScrn, DisplayModePtr mode)
 			       135000, 270000);
 	else if (pS3->Chipset == PCI_CHIP_TRIO64V2_DXGX)
 		S3TrioSetClock(pScrn, mode->Clock, 2, 1, 1, 31, 0, 3, 2,
-			       170000, 270000);
+			       170000, 340000);
 	else
 		S3TrioSetClock(pScrn, mode->Clock, 2, 1, 1, 31, 0, 3, 2,
 			       135000, 270000);
diff --git a/src/s3_driver.c b/src/s3_driver.c
index 924b073..2ea4afa 100644
--- a/src/s3_driver.c
+++ b/src/s3_driver.c
@@ -1847,11 +1847,47 @@ void S3BankZero(ScrnInfoPtr pScrn)
 	outb(vgaCRReg, tmp);
 }
 
-
-
-static void S3DisplayPowerManagementSet(ScrnInfoPtr pScrn,
-					int PowerManagementMode, int flags)
+static void
+S3DisplayPowerManagementSet(ScrnInfoPtr pScrn, int PowerManagementMode,
+			    int flags)
 {
-	vgaHWDPMSSet(pScrn, PowerManagementMode, flags);
+     S3Ptr pS3 = S3PTR(pScrn);
+     switch (pS3->Chipset) {
+     case PCI_CHIP_TRIO64V2_DXGX:
+     case PCI_CHIP_TRIO:
+     case PCI_CHIP_AURORA64VP:
+     case PCI_CHIP_TRIO64UVP:
+     {
+	  int srd;
+      
+	  outb(0x3c4, 0x08);
+	  outb(0x3c5, 0x06);	  /* unlock extended sequence registers */
+
+	  outb(0x3c4, 0x0d);
+	  srd = inb(0x3c5) & 0xf;  /* clear the sync control bits */
+  
+	  switch (PowerManagementMode) {
+	  case DPMSModeOn:
+	       /* Screen: On; HSync: On, VSync: On */
+	       break;
+	  case DPMSModeStandby:
+	       /* Screen: Off; HSync: Off, VSync: On */
+	       srd |= 0x10;
+	       break;
+	  case DPMSModeSuspend:
+	       /* Screen: Off; HSync: On, VSync: Off */
+	       srd |= 0x40;
+	       break;
+	  case DPMSModeOff:
+	       /* Screen: Off; HSync: Off, VSync: Off */
+	       srd |= 0x50;
+	       break;
+	  }
+	  outb(0x3c4, 0x0d);
+	  outb(0x3c5, srd);
+	  break;
+     }
+     default:
+	  vgaHWDPMSSet(pScrn, PowerManagementMode, flags);
+     }
 }
-

commit 4cf015311015b0e2267d7195c3795a337a466508
Author: Brice Goglin <bgoglin@debian.org>
Date:   Tue Aug 7 12:50:34 2007 +0200

    Define VERSION* using PACKAGE_VERSION*

diff --git a/src/s3.h b/src/s3.h
index 814b76b..20a7b6f 100644
--- a/src/s3.h
+++ b/src/s3.h
@@ -164,10 +164,10 @@ typedef struct _S3Rec {
 
 
 #define DRIVER_NAME     "s3"
-#define DRIVER_VERSION  "0.5.0"
-#define VERSION_MAJOR   0
-#define VERSION_MINOR   5
-#define PATCHLEVEL      0
+#define DRIVER_VERSION  PACKAGE_VERSION
+#define VERSION_MAJOR   PACKAGE_VERSION_MAJOR
+#define VERSION_MINOR   PACKAGE_VERSION_MINOR
+#define PATCHLEVEL      PACKAGE_VERSION_PATCHLEVEL
 #define S3_VERSION     ((VERSION_MAJOR << 24) | \
                         (VERSION_MINOR << 16) | PATCHLEVEL)
 


Reply to: