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

xserver-xorg-video-savage: Changes to 'upstream-unstable'



 .cvsignore          |   19 --
 .gitignore          |   20 ++
 configure.ac        |   12 +
 man/.cvsignore      |    2 
 man/.gitignore      |    2 
 src/.cvsignore      |    6 
 src/.gitignore      |    6 
 src/savage_dga.c    |    2 
 src/savage_dri.c    |   14 +
 src/savage_driver.c |  418 +++++++++++++++++++++++++++++++++++++++-------------
 src/savage_driver.h |   33 +++-
 src/savage_hwmc.c   |    2 
 12 files changed, 390 insertions(+), 146 deletions(-)

New commits:
commit 9c959f53ca8376aa136a9d434c3383cdb20487c2
Author: Alex Deucher <alex@botch2.(none)>
Date:   Fri Sep 14 20:21:12 2007 -0400

    fix the build for the non-pci-rework case (compile tested only)

diff --git a/src/savage_driver.c b/src/savage_driver.c
index 586fbad..9d4209a 100644
--- a/src/savage_driver.c
+++ b/src/savage_driver.c
@@ -40,6 +40,7 @@
 #endif
 
 #include <unistd.h>
+#include <errno.h>
 
 #include "xf86RAC.h"
 #include "shadowfb.h"
@@ -3080,9 +3081,9 @@ static Bool SavageMapMem(ScrnInfoPtr pScrn)
             + psav->PciInfo->regions[0].base_addr;
         psav->FbRegion.base = psav->PciInfo->regions[1].base_addr;
 #else
-        psav->MmioBase = SAVAGE_NEWMMIO_REGBASE_S4 
+        psav->MmioRegion.base = SAVAGE_NEWMMIO_REGBASE_S4 
             + psav->PciInfo->memBase[0];
-        psav->FrameBufferBase = psav->PciInfo->memBase[1];
+        psav->FbRegion.base = psav->PciInfo->memBase[1];
 #endif
     }
 
diff --git a/src/savage_driver.h b/src/savage_driver.h
index a65b2d8..e032ddc 100644
--- a/src/savage_driver.h
+++ b/src/savage_driver.h
@@ -280,8 +280,13 @@ typedef struct _StatInfo {
 } StatInfoRec,*StatInfoPtr;
 
 struct savage_region {
+#ifdef XSERVER_LIBPCIACCESS
     pciaddr_t       base;
     pciaddr_t       size;
+#else
+    unsigned long   base;
+    unsigned long   size;
+#endif
     void          * memory;
 };
 

commit 846a69f70d189c486448df269a512b8d42fab0c2
Author: Alex Deucher <alex@botch2.(none)>
Date:   Fri Sep 14 20:13:33 2007 -0400

    fix segfault from pScrn->currentMode
    
    should fix bug 12260

diff --git a/src/savage_driver.c b/src/savage_driver.c
index a49f6a9..586fbad 100644
--- a/src/savage_driver.c
+++ b/src/savage_driver.c
@@ -119,7 +119,7 @@ static Bool SavageDDC1(int scrnIndex);
 static unsigned int SavageDDC1Read(ScrnInfoPtr pScrn);
 static void SavageProbeDDC(ScrnInfoPtr pScrn, int index);
 static void SavageGetTvMaxSize(SavagePtr psav);
-static Bool SavagePanningCheck(ScrnInfoPtr pScrn);
+static Bool SavagePanningCheck(ScrnInfoPtr pScrn, DisplayModePtr pMode);
 #ifdef XF86DRI
 static Bool SavageCheckAvailableRamFor3D(ScrnInfoPtr pScrn);
 #endif
@@ -3627,7 +3627,7 @@ static Bool SavageScreenInit(int scrnIndex, ScreenPtr pScreen,
     }
 #endif
 
-    SavagePanningCheck(pScrn);
+    SavagePanningCheck(pScrn, pScrn->currentMode);
 #ifdef XvExtension
     if( !psav->FBStart2nd && !psav->NoAccel  /*&& !SavagePanningCheck(pScrn)*/ ) {
 	if (psav->IsSecondary)
@@ -4271,7 +4271,7 @@ Bool SavageSwitchMode(int scrnIndex, DisplayModePtr mode, int flags)
         pSavEnt = pPriv->ptr;
         SavageModeInit(pSavEnt->pSecondaryScrn, pSavEnt->pSecondaryScrn->currentMode);
     }
-    SavagePanningCheck(pScrn);
+    SavagePanningCheck(pScrn, mode);
 
     return success;
 }
@@ -4750,12 +4750,9 @@ SavageGetTvMaxSize(SavagePtr psav)
 
 
 static Bool
-SavagePanningCheck(ScrnInfoPtr pScrn)
+SavagePanningCheck(ScrnInfoPtr pScrn, DisplayModePtr pMode)
 {
     SavagePtr psav = SAVPTR(pScrn);
-    DisplayModePtr pMode;
-
-    pMode = pScrn->currentMode;
     psav->iResX = pMode->CrtcHDisplay;
     psav->iResY = pMode->CrtcVDisplay;
 

commit 7da1a03d4b8b40483001b1f6e56dae655a1797f4
Author: James Cloos <cloos@jhcloos.com>
Date:   Mon Sep 3 05:52:43 2007 -0400

    Add *~ to .gitignore to skip patch/emacs droppings

diff --git a/.gitignore b/.gitignore
index fb1befd..2df4a8d 100644
--- a/.gitignore
+++ b/.gitignore
@@ -17,3 +17,4 @@ libtool
 ltmain.sh
 missing
 stamp-h1
+*~

commit 0287432c65231460fadff7d8d7b332208e345a31
Author: Ian Romanick <idr@us.ibm.com>
Date:   Fri Aug 31 13:07:17 2007 -0700

    Fix odd typo.

diff --git a/src/savage_driver.c b/src/savage_driver.c
index 0346faa..a49f6a9 100644
--- a/src/savage_driver.c
+++ b/src/savage_driver.c
@@ -3226,7 +3226,7 @@ static void SavageUnmapMem(ScrnInfoPtr pScrn, int All)
 #else
         xf86UnMapVidMem(pScrn->scrnIndex, (pointer)psav->FbRegion.base,
                         psav->FbRegion.size);
-#else
+#endif
     }
 
     if (psav->ApertureRegion.memory != NULL) {

commit 514dc647d108e179965adb1377b1d4c011afa367
Author: Ian Romanick <idr@us.ibm.com>
Date:   Thu Aug 30 17:53:11 2007 -0700

    Update to use new libpciaccess interfaces for mapping with MTRR support.

diff --git a/configure.ac b/configure.ac
index 04a4c3e..d596b7a 100644
--- a/configure.ac
+++ b/configure.ac
@@ -51,11 +51,6 @@ AC_ARG_ENABLE(dri, AC_HELP_STRING([--disable-dri],
                                   [Disable DRI support [[default=auto]]]),
               [DRI="$enableval"],
               [DRI=auto])
-AC_ARG_ENABLE(pciaccess,
-              AS_HELP_STRING([--enable-pciaccess],
-                             [Enable use of libpciaccess (default: disabled)]),
-              [PCIACCESS=$enableval],
-              [PCIACCESS=no])
 
 # Checks for extensions
 XORG_DRIVER_CHECK_EXT(RANDR, randrproto)
@@ -100,12 +95,17 @@ if test "$DRI" = yes; then
         AC_DEFINE(XF86DRI_DEVEL,1,[Enable developmental DRI driver support])
 fi
 
-AM_CONDITIONAL(PCIACCESS, [test "x$PCIACCESS" = xyes])
-if test "x$PCIACCESS" = xyes; then
-    AC_DEFINE(PCIACCESS, 1, [Use libpciaccess])
-    PKG_CHECK_MODULES([PCIACCESS], [pciaccess >= 0.7.0])
-    XORG_CFLAGS="$XORG_CFLAGS $PCIACCESS_CFLAGS"
+save_CFLAGS="$CFLAGS"
+CFLAGS="$XORG_CFLAGS"
+AC_CHECK_DECL(XSERVER_LIBPCIACCESS,
+              [XSERVER_LIBPCIACCESS=yes], [XSERVER_LIBPCIACCESS=no],
+              [#include "xorg-server.h"])
+CFLAGS="$save_CFLAGS"
+
+if test "x$XSERVER_LIBPCIACCESS" = xyes; then
+    PKG_CHECK_MODULES([PCIACCESS], [pciaccess >= 0.10.0])
 fi
+AM_CONDITIONAL(XSERVER_LIBPCIACCESS, test "x$XSERVER_LIBPCIACCESS" = xyes)
 
 AC_SUBST([DRI_CFLAGS])
 AC_SUBST([XORG_CFLAGS])
diff --git a/src/savage_dga.c b/src/savage_dga.c
index 49c9a3c..fd26d78 100644
--- a/src/savage_dga.c
+++ b/src/savage_dga.c
@@ -391,7 +391,7 @@ Savage_OpenFramebuffer(
     SavagePtr psav = SAVPTR(pScrn);
 
     *name = NULL;	 /* no special device */
-    *mem = (unsigned char*)psav->FrameBufferBase;
+    *mem = (unsigned char*)psav->FbRegion.base;
     *size = psav->videoRambytes;
     *offset = 0;
     *flags = DGA_NEED_ROOT;
diff --git a/src/savage_dri.c b/src/savage_dri.c
index aca0b8c..211fef0 100644
--- a/src/savage_dri.c
+++ b/src/savage_dri.c
@@ -624,7 +624,7 @@ static Bool SAVAGEDRIMapInit( ScreenPtr pScreen )
    pSAVAGEDRIServer->registers.size = SAVAGEIOMAPSIZE;
 
    if ( drmAddMap( psav->drmFD,
-		   (drm_handle_t)psav->MmioBase,
+		   (drm_handle_t)psav->MmioRegion.base,
 		   pSAVAGEDRIServer->registers.size,
 		   DRM_REGISTERS,0,
 		   &pSAVAGEDRIServer->registers.handle ) < 0 ) {
@@ -636,7 +636,7 @@ static Bool SAVAGEDRIMapInit( ScreenPtr pScreen )
    pSAVAGEDRIServer->aperture.size = 5 * 0x01000000;
    
    if ( drmAddMap( psav->drmFD,
-		   (drm_handle_t)(psav->ApertureBase),
+		   (drm_handle_t)(psav->ApertureRegion.base),
 		   pSAVAGEDRIServer->aperture.size,
 		   DRM_FRAME_BUFFER,0,
 		   &pSAVAGEDRIServer->aperture.handle ) < 0 ) {
@@ -882,7 +882,7 @@ Bool SAVAGEDRIScreenInit( ScreenPtr pScreen )
       sprintf(pDRIInfo->busIdString,
               "PCI:%d:%d:%d",
               psav->PciInfo->bus,
-#ifdef PCIACCESS
+#ifdef XSERVER_LIBPCIACCESS
               psav->PciInfo->dev,
 #else
               psav->PciInfo->device,
@@ -893,7 +893,7 @@ Bool SAVAGEDRIScreenInit( ScreenPtr pScreen )
    pDRIInfo->ddxDriverMinorVersion = SAVAGE_VERSION_MINOR;
    pDRIInfo->ddxDriverPatchVersion = SAVAGE_PATCHLEVEL;
 
-   pDRIInfo->frameBufferPhysicalAddress = (pointer) psav->FrameBufferBase;
+   pDRIInfo->frameBufferPhysicalAddress = (pointer) psav->FbRegion.base;
    pDRIInfo->frameBufferSize = psav->videoRambytes;
    pDRIInfo->frameBufferStride = pScrn->displayWidth*(pScrn->bitsPerPixel/8);
    pDRIInfo->ddxDrawableTableEntry = SAVAGE_MAX_DRAWABLES;
diff --git a/src/savage_driver.c b/src/savage_driver.c
index 4c4246b..0346faa 100644
--- a/src/savage_driver.c
+++ b/src/savage_driver.c
@@ -72,7 +72,7 @@ static void SavageDisableMMIO(ScrnInfoPtr pScrn);
 
 static const OptionInfoRec * SavageAvailableOptions(int chipid, int busid);
 static void SavageIdentify(int flags);
-#ifdef PCIACCESS
+#ifdef XSERVER_LIBPCIACCESS
 static Bool SavagePciProbe(DriverPtr drv, int entity_num,
 			   struct pci_device *dev, intptr_t match_data);
 #else
@@ -138,7 +138,7 @@ extern ScrnInfoPtr gpScrn;
 
 int gSavageEntityIndex = -1;
 
-#ifdef PCIACCESS
+#ifdef XSERVER_LIBPCIACCESS
 #define SAVAGE_DEVICE_MATCH(d, i) \
     { 0x5333, (d), PCI_MATCH_ANY, PCI_MATCH_ANY, 0, 0, (i) }
 
@@ -212,7 +212,7 @@ static SymTabRec SavageChipsets[] = {
     { -1,		NULL }
 };
 
-#ifndef PCIACCESS
+#ifndef XSERVER_LIBPCIACCESS
 /* This table maps a PCI device ID to a chipset family identifier. */
 
 static PciChipsets SavagePciChipsets[] = {
@@ -318,7 +318,7 @@ _X_EXPORT DriverRec SAVAGE =
     SAVAGE_VERSION,
     SAVAGE_DRIVER_NAME,
     SavageIdentify,
-#ifdef PCIACCESS
+#ifdef XSERVER_LIBPCIACCESS
     NULL,
 #else
     SavageProbe,
@@ -328,7 +328,7 @@ _X_EXPORT DriverRec SAVAGE =
     0,
     NULL,
 
-#ifdef PCIACCESS
+#ifdef XSERVER_LIBPCIACCESS
     savage_device_match,
     SavagePciProbe
 #endif
@@ -838,7 +838,7 @@ static void SavageIdentify(int flags)
 }
 
 
-#ifdef PCIACCESS
+#ifdef XSERVER_LIBPCIACCESS
 static Bool SavagePciProbe(DriverPtr drv, int entity_num,
 			   struct pci_device *dev, intptr_t match_data)
 {
@@ -1592,7 +1592,7 @@ static Bool SavagePreInit(ScrnInfoPtr pScrn, int flags)
 
     xfree(pEnt);
 
-#ifndef PCIACCESS
+#ifndef XSERVER_LIBPCIACCESS
     psav->PciTag = pciTag(psav->PciInfo->bus, psav->PciInfo->device,
 			  psav->PciInfo->func);
 #endif
@@ -1601,7 +1601,7 @@ static Bool SavagePreInit(ScrnInfoPtr pScrn, int flags)
     /* Set AGP Mode from config */
     /* We support 1X 2X and 4X  */
 #ifdef XF86DRI
-#ifdef PCIACCESS
+#ifdef XSERVER_LIBPCIACCESS
     /* Try to read the AGP capabilty block from the device.  If there is
      * no AGP info, the device is PCI.
      */
@@ -3060,127 +3060,132 @@ static void SavageWriteMode(ScrnInfoPtr pScrn, vgaRegPtr vgaSavePtr,
 static Bool SavageMapMem(ScrnInfoPtr pScrn)
 {
     SavagePtr psav = SAVPTR(pScrn);
-#ifndef PCIACCESS
-    int mode;
-#endif
-    unsigned i;
+    int err;
 
     TRACE(("SavageMapMem()\n"));
 
     if( S3_SAVAGE3D_SERIES(psav->Chipset) ) {
-	psav->MmioRegion.bar = 0;
-	psav->MmioRegion.offset = SAVAGE_NEWMMIO_REGBASE_S3;
-
-	psav->FbRegion.bar = 0;
-	psav->FbRegion.offset = 0;
-
-	psav->last_bar = 0;
+#ifdef XSERVER_LIBPCIACCESS
+        psav->MmioRegion.base = SAVAGE_NEWMMIO_REGBASE_S3
+            + psav->PciInfo->regions[0].base_addr;
+        psav->FbRegion.base = psav->PciInfo->regions[0].base_addr;
+#else
+        psav->MmioRegion.base = SAVAGE_NEWMMIO_REGBASE_S3
+            + psav->PciInfo->memBase[0];
+        psav->FbRegion.base = psav->PciInfo->memBase[0];
+#endif
     } else {
-	psav->MmioRegion.bar = 0;
-	psav->MmioRegion.offset = SAVAGE_NEWMMIO_REGBASE_S4;
-
-	psav->FbRegion.bar = 1;
-	psav->FbRegion.offset = 0;
-
-	psav->last_bar = 1;
+#ifdef XSERVER_LIBPCIACCESS
+        psav->MmioRegion.base = SAVAGE_NEWMMIO_REGBASE_S4
+            + psav->PciInfo->regions[0].base_addr;
+        psav->FbRegion.base = psav->PciInfo->regions[1].base_addr;
+#else
+        psav->MmioBase = SAVAGE_NEWMMIO_REGBASE_S4 
+            + psav->PciInfo->memBase[0];
+        psav->FrameBufferBase = psav->PciInfo->memBase[1];
+#endif
     }
 
+    psav->MmioRegion.size = SAVAGE_NEWMMIO_REGSIZE;
+    psav->FbRegion.size = psav->videoRambytes;
+
     /* On Paramount and Savage 2000, aperture 0 is PCI base 2.  On other
      * chipsets it's in the same BAR as the framebuffer.
      */
     if ((psav->Chipset == S3_SUPERSAVAGE) 
-	|| (psav->Chipset == S3_SAVAGE2000)) {
-	psav->ApertureRegion.bar = 2;
-	psav->ApertureRegion.offset = 0;
-
-	psav->last_bar = 2;
+        || (psav->Chipset == S3_SAVAGE2000)) {
+#ifdef XSERVER_LIBPCIACCESS
+        psav->ApertureRegion.base = psav->PciInfo->regions[2].base_addr;
+#else
+        psav->ApertureRegion.base = psav->PciInfo->memBase[2];
+#endif
     } else {
-	psav->ApertureRegion.bar = psav->FbRegion.bar;
-	psav->ApertureRegion.offset = 0x02000000;
+        psav->ApertureRegion.base = psav->FbRegion.base + 0x02000000;
     }
 
+    psav->ApertureRegion.size = (psav->IsPrimary || psav->IsSecondary)
+        ? (0x01000000 * 2) : (0x01000000 * 5);
 
-#ifdef PCIACCESS
-    psav->MmioBase = psav->PciInfo->regions[ psav->MmioRegion.bar ].base_addr
-      + psav->MmioRegion.offset;
 
-    psav->FrameBufferBase = psav->PciInfo->regions[ psav->FbRegion.bar ].base_addr
-      + psav->FbRegion.offset;
-
-    psav->ApertureBase = psav->PciInfo->regions[ psav->FbRegion.bar ].base_addr
-      + psav->ApertureRegion.offset;
+    if (psav->FbRegion.size != 0) {
+#ifdef XSERVER_LIBPCIACCESS
+        err = pci_device_map_range(psav->PciInfo, psav->FbRegion.base,
+                                   psav->FbRegion.size,
+                                   (PCI_DEV_MAP_FLAG_WRITABLE
+                                    | PCI_DEV_MAP_FLAG_WRITE_COMBINE),
+                                   & psav->FbRegion.memory);
 #else
-    psav->MmioBase = psav->PciInfo->memBase[ psav->MmioRegion.bar ]
-      + psav->MmioRegion.offset;
-
-    psav->FrameBufferBase = psav->PciInfo->memBase[ psav->FbRegion.bar ]
-      + psav->FbRegion.offset;
-
-    psav->ApertureBase = psav->PciInfo->memBase[ psav->FbRegion.bar ]
-      + psav->ApertureRegion.offset;
+        psav->FbRegion.memory = 
+            xf86MapPciMem(pScrn->scrnIndex, VIDMEM_FRAMEBUFFER,
+                          psav->PciTag, psav->FbRegion.base,
+                          psav->FbRegion.size);
+        err = (psav->FbRegion.memory == NULL) ? errno : 0;
 #endif
+        if (err) {
+            xf86DrvMsg(pScrn->scrnIndex, X_ERROR,
+                       "Internal error: cound not map framebuffer range (%d, %s).\n",
+                       err, strerror(err));
+            return FALSE;
+        }
 
+        psav->FBBase = psav->FbRegion.memory;
+        psav->FBStart = (psav->IsSecondary)
+            ? psav->FBBase + 0x1000000 : psav->FBBase;
+    }
 
-    /* FIXME: This seems fine even on Savage3D where the same BAR contains the
-     * FIXME: MMIO space and the framebuffer.  Write-combining gets fixed up
-     * FIXME: later.  Someone should investigate this, though.  And kick S3
-     * FIXME: for doing something so silly.
-     */
-#ifndef PCIACCESS
-    mode = VIDMEM_MMIO;
-#endif
-    for (i = 0; i <= psav->last_bar; i++) {
-	int err;
-	
-#ifdef PCIACCESS
-	err = pci_device_map_region(psav->PciInfo, i, TRUE);
+    if (psav->ApertureRegion.memory == NULL) {
+#ifdef XSERVER_LIBPCIACCESS
+        err = pci_device_map_range(psav->PciInfo, psav->ApertureRegion.base,
+                                   psav->ApertureRegion.size,
+                                   (PCI_DEV_MAP_FLAG_WRITABLE
+                                    | PCI_DEV_MAP_FLAG_WRITE_COMBINE),
+                                   & psav->ApertureRegion.memory);
 #else
-	psav->bar_mappings[i] = xf86MapPciMem(pScrn->scrnIndex, mode,
-					      psav->PciTag,
-					      psav->PciInfo->memBase[i],
-					      (1U << psav->PciInfo->size[i]));
-	err = (psav->bar_mappings[i] == NULL);
+        psav->ApertureRegion.memory = 
+            xf86MapPciMem(pScrn->scrnIndex, VIDMEM_FRAMEBUFFER,
+                          psav->PciTag, psav->ApertureRegion.base,
+                          psav->ApertureRegion.size);
+        err = (psav->ApertureRegion.memory == NULL) ? errno : 0;
 #endif
-	if (err) {
-	    xf86DrvMsg(pScrn->scrnIndex, X_ERROR,
-		       "Internal error: cound not map PCI region %u, last BAR = %u\n",
-		       i, psav->last_bar);
-	    return FALSE;
-	}
+        if (err) {
+            xf86DrvMsg(pScrn->scrnIndex, X_ERROR,
+                       "Internal error: cound not map aperture range (%d, %s).\n",
+                       err, strerror(err));
+            return FALSE;
+        }
 
-#ifdef PCIACCESS
-	psav->bar_mappings[i] = psav->PciInfo->regions[i].memory;
-#else
-	mode = VIDMEM_FRAMEBUFFER;
-#endif
+        psav->ApertureMap = (psav->IsSecondary)
+            ? psav->ApertureRegion.memory
+            : psav->ApertureRegion.memory + 0x1000000;
     }
 
-    psav->MapBase = psav->bar_mappings[ psav->MmioRegion.bar ]
-      + psav->MmioRegion.offset;
-
-    psav->BciMem = psav->MapBase + 0x10000;
-
-    SavageEnableMMIO(pScrn);
-
-    psav->FBBase = psav->bar_mappings[ psav->FbRegion.bar ]
-      + psav->FbRegion.offset;
-
-    psav->FBStart = (psav->IsSecondary)
-      ? psav->FBBase + 0x1000000 : psav->FBBase;
+    if (psav->MmioRegion.memory == NULL) {
+#ifdef XSERVER_LIBPCIACCESS
+        err = pci_device_map_range(psav->PciInfo, psav->MmioRegion.base,
+                                   psav->MmioRegion.size,
+                                   (PCI_DEV_MAP_FLAG_WRITABLE),
+                                   & psav->MmioRegion.memory);
+#else
+        psav->MmioRegion.memory = 
+            xf86MapPciMem(pScrn->scrnIndex, VIDMEM_FRAMEBUFFER,
+                          psav->PciTag, psav->MmioRegion.base,
+                          psav->MmioRegion.size);
+        err = (psav->MmioRegion.memory == NULL) ? errno : 0;
+#endif
+        if (err) {
+            xf86DrvMsg(pScrn->scrnIndex, X_ERROR,
+                       "Internal error: cound not map MMIO range (%d, %s).\n",
+                       err, strerror(err));
+            return FALSE;
+        }
 
-    psav->ApertureMap = psav->bar_mappings[ psav->ApertureRegion.bar ]
-      + psav->ApertureRegion.offset;
+        psav->MapBase = psav->MmioRegion.memory;
+        psav->BciMem = psav->MapBase + 0x10000;
 
-    if (psav->IsSecondary) {
-	psav->ApertureMap += 0x1000000;
+        SavageEnableMMIO(pScrn);
     }
 
-#ifdef PCIACCESS
-    pScrn->memPhysBase = psav->PciInfo->regions[0].base_addr;
-#else
-    pScrn->memPhysBase = psav->PciInfo->memBase[0];
-#endif
-
+    pScrn->memPhysBase = psav->FbRegion.base;
     return TRUE;
 }
 
@@ -3188,34 +3193,55 @@ static Bool SavageMapMem(ScrnInfoPtr pScrn)
 static void SavageUnmapMem(ScrnInfoPtr pScrn, int All)
 {
     SavagePtr psav = SAVPTR(pScrn);
-    unsigned i;
 
     TRACE(("SavageUnmapMem(%x,%x)\n", psav->MapBase, psav->FBBase));
 
     if (psav->PrimaryVidMapped) {
-	vgaHWUnmapMem(pScrn);
-	psav->PrimaryVidMapped = FALSE;
+        vgaHWUnmapMem(pScrn);
+        psav->PrimaryVidMapped = FALSE;
     }
 
     SavageDisableMMIO(pScrn);
 
-    for (i = (All) ? 0 : 1; i <= psav->last_bar; i++) {
-	if (psav->bar_mappings[i]) {
-#ifdef PCIACCESS
-	    pci_device_unmap_region(psav->PciInfo, i);
+    if (All && (psav->MmioRegion.memory != NULL)) {
+#ifdef XSERVER_LIBPCIACCESS
+        pci_device_unmap_range(psav->PciInfo,
+                               psav->MmioRegion.memory,
+                               psav->MmioRegion.size);
 #else
-	    xf86UnMapVidMem(pScrn->scrnIndex, psav->bar_mappings[i],
-			    (1U << psav->PciInfo->size[i]));
+        xf86UnMapVidMem(pScrn->scrnIndex, (pointer)psav->MapBase,
+                        SAVAGE_NEWMMIO_REGSIZE);
 #endif
-	    psav->bar_mappings[i] = NULL;
-	}
+
+        psav->MmioRegion.memory = NULL;
+        psav->MapBase = 0;
+        psav->BciMem = 0;
+    }
+
+    if (psav->FbRegion.memory != NULL) {
+#ifdef XSERVER_LIBPCIACCESS
+        pci_device_unmap_range(psav->PciInfo,
+                               psav->FbRegion.memory,
+                               psav->FbRegion.size);
+#else
+        xf86UnMapVidMem(pScrn->scrnIndex, (pointer)psav->FbRegion.base,
+                        psav->FbRegion.size);
+#else
     }
 
-    if (All) {
-	psav->MapBase = 0;
-	psav->BciMem = 0;
+    if (psav->ApertureRegion.memory != NULL) {
+#ifdef XSERVER_LIBPCIACCESS
+        pci_device_unmap_range(psav->PciInfo,
+                               psav->ApertureRegion.memory,
+                               psav->ApertureRegion.size);
+#else
+        xf86UnMapVidMem(pScrn->scrnIndex, (pointer)psav->ApertureRegion.base,
+                        psav->ApertureRegion.size);
+#endif
     }
-    
+
+    psav->FbRegion.memory = NULL;
+    psav->ApertureRegion.memory = NULL;
     psav->FBBase = 0;
     psav->FBStart = 0;
     psav->ApertureMap = 0;
@@ -3304,7 +3330,7 @@ static void SavageInitShadowStatus(ScrnInfoPtr pScrn)
 
     if( psav->ShadowStatus ) {
 	psav->ShadowPhysical = 
-	    psav->FrameBufferBase + psav->CursorKByte*1024 + 4096 - 32;
+	    psav->FbRegion.base + psav->CursorKByte*1024 + 4096 - 32;
 	
 	psav->ShadowVirtual = (CARD32 *)
 	    (psav->FBBase + psav->CursorKByte*1024 + 4096 - 32);
diff --git a/src/savage_driver.h b/src/savage_driver.h
index 74eea5c..a65b2d8 100644
--- a/src/savage_driver.h
+++ b/src/savage_driver.h
@@ -33,7 +33,7 @@
 #include <string.h>
 #include <math.h>
 
-#ifdef PCIACCESS
+#ifdef XSERVER_LIBPCIACCESS
 #include <pciaccess.h>
 #define VENDOR_ID(p)      (p)->vendor_id
 #define DEVICE_ID(p)      (p)->device_id
@@ -280,8 +280,9 @@ typedef struct _StatInfo {
 } StatInfoRec,*StatInfoPtr;
 
 struct savage_region {
-    unsigned        bar;
-    unsigned long   offset;
+    pciaddr_t       base;
+    pciaddr_t       size;
+    void          * memory;
 };
 
 typedef struct _Savage {
@@ -305,18 +306,12 @@ typedef struct _Savage {
     int			endfb;
 
     /* These are physical addresses. */
-    unsigned long	FrameBufferBase;
-    unsigned long	MmioBase;
-    unsigned long	ApertureBase;
     unsigned long	ShadowPhysical;
 
     /* These are linear addresses. */
     struct savage_region   MmioRegion;
     struct savage_region   FbRegion;
     struct savage_region   ApertureRegion;
-    unsigned               last_bar;
-
-    unsigned char*         bar_mappings[3];
 
     unsigned char*	MapBase;
     unsigned char*	BciMem;
@@ -376,7 +371,7 @@ typedef struct _Savage {
     int			TVSizeY;
 
     CloseScreenProcPtr	CloseScreen;
-#ifdef PCIACCESS
+#ifdef XSERVER_LIBPCIACCESS
     struct pci_device * PciInfo;
 #else
     pciVideoPtr		PciInfo;
diff --git a/src/savage_hwmc.c b/src/savage_hwmc.c
index 6a39754..43c9dfd 100644
--- a/src/savage_hwmc.c
+++ b/src/savage_hwmc.c
@@ -202,7 +202,7 @@ Bool SAVAGEInitMC(ScreenPtr pScreen)
     return FALSE;
   }
 
-  offset = pSAVAGE->hwmcOffset + pSAVAGE->FrameBufferBase;
+  offset = pSAVAGE->hwmcOffset + pSAVAGE->FbRegion.base;
 
   if(drmAddMap(pSAVAGE->drmFD, offset, pSAVAGE->hwmcSize,
                DRM_FRAME_BUFFER, 0, &pSAVAGEDriPriv->xvmcSurfHandle) < 0)

commit 4a87cab2765df548a3b5d796e19568a2576306b8
Author: James Cloos <cloos@jhcloos.com>
Date:   Thu Aug 23 19:25:53 2007 -0400

    Rename .cvsignore to .gitignore

diff --git a/.cvsignore b/.cvsignore
deleted file mode 100644
index fb1befd..0000000
--- a/.cvsignore
+++ /dev/null
@@ -1,19 +0,0 @@
-Makefile
-Makefile.in
-*.la
-*.lo
-aclocal.m4
-autom4te.cache
-config.guess
-config.h
-config.h.in
-config.log
-config.status
-config.sub
-configure
-depcomp
-install-sh
-libtool
-ltmain.sh
-missing
-stamp-h1
diff --git a/.gitignore b/.gitignore
new file mode 100644
index 0000000..fb1befd
--- /dev/null
+++ b/.gitignore
@@ -0,0 +1,19 @@
+Makefile
+Makefile.in
+*.la
+*.lo
+aclocal.m4
+autom4te.cache
+config.guess
+config.h
+config.h.in
+config.log
+config.status
+config.sub
+configure
+depcomp
+install-sh
+libtool
+ltmain.sh
+missing
+stamp-h1
diff --git a/man/.cvsignore b/man/.cvsignore
deleted file mode 100644
index 282522d..0000000
--- a/man/.cvsignore
+++ /dev/null
@@ -1,2 +0,0 @@
-Makefile
-Makefile.in
diff --git a/man/.gitignore b/man/.gitignore
new file mode 100644
index 0000000..282522d
--- /dev/null
+++ b/man/.gitignore
@@ -0,0 +1,2 @@
+Makefile
+Makefile.in
diff --git a/src/.cvsignore b/src/.cvsignore
deleted file mode 100644
index 9730646..0000000
--- a/src/.cvsignore
+++ /dev/null
@@ -1,6 +0,0 @@
-.deps
-.libs
-Makefile
-Makefile.in
-*.la
-*.lo
diff --git a/src/.gitignore b/src/.gitignore
new file mode 100644
index 0000000..9730646
--- /dev/null
+++ b/src/.gitignore
@@ -0,0 +1,6 @@
+.deps
+.libs
+Makefile
+Makefile.in
+*.la
+*.lo

commit ffc5ba7f0b1cdefdcecf6bd47018b6a4924bfc44
Author: Ian Romanick <idr@us.ibm.com>
Date:   Wed Aug 22 12:38:14 2007 -0700

    Merge PCI-rework support and "classic" PCI interface support into one tree
    
    First pass at merging both trees.  So far, this has only been compile
    tested.  I need to dig out a savage card to put in a system for
    testing, so it may take another hour or two.

diff --git a/configure.ac b/configure.ac
index 16c19d0..04a4c3e 100644
--- a/configure.ac
+++ b/configure.ac
@@ -51,6 +51,11 @@ AC_ARG_ENABLE(dri, AC_HELP_STRING([--disable-dri],
                                   [Disable DRI support [[default=auto]]]),
               [DRI="$enableval"],
               [DRI=auto])
+AC_ARG_ENABLE(pciaccess,
+              AS_HELP_STRING([--enable-pciaccess],
+                             [Enable use of libpciaccess (default: disabled)]),
+              [PCIACCESS=$enableval],
+              [PCIACCESS=no])
 
 # Checks for extensions
 XORG_DRIVER_CHECK_EXT(RANDR, randrproto)
@@ -95,8 +100,12 @@ if test "$DRI" = yes; then
         AC_DEFINE(XF86DRI_DEVEL,1,[Enable developmental DRI driver support])
 fi
 
-PKG_CHECK_MODULES([PCIACCESS], [pciaccess >= 0.5.0])
-XORG_CFLAGS="$XORG_CFLAGS $PCIACCESS_CFLAGS"
+AM_CONDITIONAL(PCIACCESS, [test "x$PCIACCESS" = xyes])
+if test "x$PCIACCESS" = xyes; then
+    AC_DEFINE(PCIACCESS, 1, [Use libpciaccess])
+    PKG_CHECK_MODULES([PCIACCESS], [pciaccess >= 0.7.0])
+    XORG_CFLAGS="$XORG_CFLAGS $PCIACCESS_CFLAGS"
+fi
 
 AC_SUBST([DRI_CFLAGS])
 AC_SUBST([XORG_CFLAGS])
diff --git a/src/savage_dri.c b/src/savage_dri.c
index 41e8bb1..aca0b8c 100644
--- a/src/savage_dri.c
+++ b/src/savage_dri.c
@@ -467,8 +467,8 @@ static Bool SAVAGEDRIAgpInit(ScreenPtr pScreen)
    xf86DrvMsg( pScreen->myNum, X_INFO,
 	       "[agp] Mode 0x%08lx [AGP 0x%04x/0x%04x; Card 0x%04x/0x%04x]\n",
 	       mode, vendor, device,
-	       psav->PciInfo->vendor_id,
-	       psav->PciInfo->device_id );
+	       VENDOR_ID(psav->PciInfo),
+	       DEVICE_ID(psav->PciInfo));
 
    if ( drmAgpEnable( psav->drmFD, mode ) < 0 ) {
       xf86DrvMsg( pScreen->myNum, X_ERROR, "[agp] AGP not enabled\n" );
@@ -882,7 +882,11 @@ Bool SAVAGEDRIScreenInit( ScreenPtr pScreen )
       sprintf(pDRIInfo->busIdString,
               "PCI:%d:%d:%d",
               psav->PciInfo->bus,
+#ifdef PCIACCESS
               psav->PciInfo->dev,
+#else
+              psav->PciInfo->device,
+#endif
               psav->PciInfo->func);
    }
    pDRIInfo->ddxDriverMajorVersion = SAVAGE_VERSION_MAJOR;
diff --git a/src/savage_driver.c b/src/savage_driver.c
index 9975119..4c4246b 100644
--- a/src/savage_driver.c
+++ b/src/savage_driver.c
@@ -72,8 +72,13 @@ static void SavageDisableMMIO(ScrnInfoPtr pScrn);
 
 static const OptionInfoRec * SavageAvailableOptions(int chipid, int busid);
 static void SavageIdentify(int flags);
+#ifdef PCIACCESS
 static Bool SavagePciProbe(DriverPtr drv, int entity_num,
 			   struct pci_device *dev, intptr_t match_data);
+#else
+static Bool SavageProbe(DriverPtr drv, int flags);
+static int LookupChipID(PciChipsets* pset, int ChipID);
+#endif
 static Bool SavagePreInit(ScrnInfoPtr pScrn, int flags);
 
 static Bool SavageEnterVT(int scrnIndex, int flags);
@@ -133,6 +138,7 @@ extern ScrnInfoPtr gpScrn;
 
 int gSavageEntityIndex = -1;
 
+#ifdef PCIACCESS
 #define SAVAGE_DEVICE_MATCH(d, i) \
     { 0x5333, (d), PCI_MATCH_ANY, PCI_MATCH_ANY, 0, 0, (i) }
 
@@ -163,6 +169,7 @@ static const struct pci_id_match savage_device_match[] = {
 
     { 0, 0, 0 },
 };
+#endif
 
 /* Supported chipsets */
 
@@ -205,6 +212,37 @@ static SymTabRec SavageChipsets[] = {
     { -1,		NULL }
 };
 
+#ifndef PCIACCESS
+/* This table maps a PCI device ID to a chipset family identifier. */
+
+static PciChipsets SavagePciChipsets[] = {
+    { S3_SAVAGE3D,	PCI_CHIP_SAVAGE3D,	RES_SHARED_VGA },
+    { S3_SAVAGE3D,	PCI_CHIP_SAVAGE3D_MV, 	RES_SHARED_VGA },
+    { S3_SAVAGE4,	PCI_CHIP_SAVAGE4,	RES_SHARED_VGA },
+    { S3_SAVAGE2000,	PCI_CHIP_SAVAGE2000,	RES_SHARED_VGA },
+    { S3_SAVAGE_MX,	PCI_CHIP_SAVAGE_MX_MV,	RES_SHARED_VGA },
+    { S3_SAVAGE_MX,	PCI_CHIP_SAVAGE_MX,	RES_SHARED_VGA },
+    { S3_SAVAGE_MX,	PCI_CHIP_SAVAGE_IX_MV,	RES_SHARED_VGA },
+    { S3_SAVAGE_MX,	PCI_CHIP_SAVAGE_IX,	RES_SHARED_VGA },
+    { S3_PROSAVAGE,	PCI_CHIP_PROSAVAGE_PM,	RES_SHARED_VGA },
+    { S3_PROSAVAGE,	PCI_CHIP_PROSAVAGE_KM,	RES_SHARED_VGA },
+    { S3_TWISTER,	PCI_CHIP_S3TWISTER_P,	RES_SHARED_VGA },
+    { S3_TWISTER,	PCI_CHIP_S3TWISTER_K,	RES_SHARED_VGA },
+    { S3_PROSAVAGEDDR,	PCI_CHIP_PROSAVAGE_DDR,	RES_SHARED_VGA },
+    { S3_PROSAVAGEDDR,	PCI_CHIP_PROSAVAGE_DDRK,	RES_SHARED_VGA },
+    { S3_SUPERSAVAGE,	PCI_CHIP_SUPSAV_MX128,	RES_SHARED_VGA },
+    { S3_SUPERSAVAGE,	PCI_CHIP_SUPSAV_MX64,	RES_SHARED_VGA },
+    { S3_SUPERSAVAGE,	PCI_CHIP_SUPSAV_MX64C,	RES_SHARED_VGA },
+    { S3_SUPERSAVAGE,	PCI_CHIP_SUPSAV_IX128SDR,	RES_SHARED_VGA },
+    { S3_SUPERSAVAGE,	PCI_CHIP_SUPSAV_IX128DDR,	RES_SHARED_VGA },
+    { S3_SUPERSAVAGE,	PCI_CHIP_SUPSAV_IX64SDR,	RES_SHARED_VGA },
+    { S3_SUPERSAVAGE,	PCI_CHIP_SUPSAV_IX64DDR,	RES_SHARED_VGA },
+    { S3_SUPERSAVAGE,	PCI_CHIP_SUPSAV_IXCSDR,	RES_SHARED_VGA },
+    { S3_SUPERSAVAGE,	PCI_CHIP_SUPSAV_IXCDDR,	RES_SHARED_VGA },
+    { -1,		-1,			RES_UNDEFINED }
+};
+#endif
+
 typedef enum {
      OPTION_PCI_BURST
     ,OPTION_PCI_RETRY
@@ -280,14 +318,20 @@ _X_EXPORT DriverRec SAVAGE =
     SAVAGE_VERSION,
     SAVAGE_DRIVER_NAME,
     SavageIdentify,
+#ifdef PCIACCESS
     NULL,
+#else
+    SavageProbe,
+#endif
     SavageAvailableOptions,
     NULL,
     0,
     NULL,
 
+#ifdef PCIACCESS
     savage_device_match,
     SavagePciProbe
+#endif
 };
 
 
@@ -794,6 +838,7 @@ static void SavageIdentify(int flags)
 }
 
 
+#ifdef PCIACCESS
 static Bool SavagePciProbe(DriverPtr drv, int entity_num,
 			   struct pci_device *dev, intptr_t match_data)
 {
@@ -867,6 +912,133 @@ static Bool SavagePciProbe(DriverPtr drv, int entity_num,
     return (pScrn != NULL);
 }
 
+#else
+
+static Bool SavageProbe(DriverPtr drv, int flags)
+{
+    int i;
+    GDevPtr *devSections = NULL;
+    int *usedChips;
+    int numDevSections;
+    int numUsed;
+    Bool foundScreen = FALSE;
+
+    /* sanity checks */
+    if ((numDevSections = xf86MatchDevice("savage", &devSections)) <= 0)
+	return FALSE;
+    if (xf86GetPciVideoInfo() == NULL) {
+        if (devSections)
+	    xfree(devSections);
+        return FALSE;
+    }
+
+    numUsed = xf86MatchPciInstances("SAVAGE", PCI_VENDOR_S3,
+				    SavageChipsets, SavagePciChipsets,
+				    devSections, numDevSections, drv,
+				    &usedChips);
+    if (devSections)
+	xfree(devSections);
+    devSections = NULL;
+    if (numUsed <= 0)
+	return FALSE;
+



Reply to: