summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorTilman Sauerbeck <tilman@code-monkey.de>2007-09-14 23:10:24 +0200
committerTilman Sauerbeck <tilman@code-monkey.de>2007-09-14 23:10:24 +0200
commita4dd40eb053656cfdd238b65361c21551958cdea (patch)
tree8663fbe23dade638eb27ba0f8c1b2761514d200b
parentc9fb0e6de97f55f50bf0a63faa8da47d007e9c34 (diff)
parent485fb9aa1e5d90c75d763db4b7bf5a80e51e83e9 (diff)
Merge branch 'master' into randr-1.2
-rw-r--r--src/mga_driver.c49
1 files changed, 29 insertions, 20 deletions
diff --git a/src/mga_driver.c b/src/mga_driver.c
index 6cc38c6..d66c0d0 100644
--- a/src/mga_driver.c
+++ b/src/mga_driver.c
@@ -2311,27 +2311,27 @@ MGAMapMem(ScrnInfoPtr pScrn)
MGAPtr pMga = MGAPTR(pScrn);
#ifdef XSERVER_LIBPCIACCESS
struct pci_device *const dev = pMga->PciInfo;
- int err;
+ struct pci_mem_region *region;
+ int i, err;
#endif
if (!pMga->FBDev) {
#ifdef XSERVER_LIBPCIACCESS
- err = pci_device_map_region(dev, 0, TRUE);
- if (err) {
- xf86DrvMsg(pScrn->scrnIndex, X_ERROR,
- "Unable to map BAR 0. %s (%d)\n",
- strerror(err), err);
- return FALSE;
- }
-
- err = pci_device_map_region(dev, 1, TRUE);
- if (err) {
- xf86DrvMsg(pScrn->scrnIndex, X_ERROR,
- "Unable to map BAR 1. %s (%d)\n",
- strerror(err), err);
- return FALSE;
- }
+ for (i = 0; i < 2; i++) {
+ region = &dev->regions[i];
+ err = pci_device_map_range(dev,
+ region->base_addr, region->size,
+ PCI_DEV_MAP_FLAG_WRITABLE,
+ &region->memory);
+
+ if (err) {
+ xf86DrvMsg(pScrn->scrnIndex, X_ERROR,
+ "Unable to map BAR %i. %s (%d)\n",
+ i, strerror(err), err);
+ return FALSE;
+ }
+ }
pMga->IOBase = dev->regions[ pMga->io_bar ].memory;
pMga->FbBase = dev->regions[ pMga->framebuffer_bar ].memory;
@@ -2375,7 +2375,11 @@ MGAMapMem(ScrnInfoPtr pScrn)
pMga->ILOADBase = NULL;
if (pMga->iload_bar != -1) {
#ifdef XSERVER_LIBPCIACCESS
- err = pci_device_map_region(dev, pMga->iload_bar, TRUE);
+ region = &dev->regions[pMga->iload_bar];
+ err = pci_device_map_range(dev,
+ region->base_addr, region->size,
+ PCI_DEV_MAP_FLAG_WRITABLE,
+ &region->memory);
if (err) {
xf86DrvMsg(pScrn->scrnIndex, X_ERROR,
"Unable to map BAR 2 (ILOAD region). %s (%d)\n",
@@ -2408,13 +2412,17 @@ MGAUnmapMem(ScrnInfoPtr pScrn)
MGAPtr pMga = MGAPTR(pScrn);
#ifdef XSERVER_LIBPCIACCESS
struct pci_device * const dev = pMga->PciInfo;
+ struct pci_mem_region *region;
+ int i;
#endif
if (!pMga->FBDev) {
#ifdef XSERVER_LIBPCIACCESS
- pci_device_unmap_region(dev, 0);
- pci_device_unmap_region(dev, 1);
+ for (i = 0; i < 2; i++) {
+ region = &dev->regions[i];
+ pci_device_unmap_range(dev, region->memory, region->size);
+ }
#else
xf86UnMapVidMem(pScrn->scrnIndex, (pointer)pMga->IOBase, 0x4000);
xf86UnMapVidMem(pScrn->scrnIndex, (pointer)pMga->FbBase, pMga->FbMapSize);
@@ -2433,7 +2441,8 @@ MGAUnmapMem(ScrnInfoPtr pScrn)
#endif
) {
#ifdef XSERVER_LIBPCIACCESS
- pci_device_unmap_region(dev, pMga->iload_bar);
+ region = &dev->regions[pMga->iload_bar];
+ pci_device_unmap_range(dev, region->memory, region->size);
#else
xf86UnMapVidMem(pScrn->scrnIndex, (pointer)pMga->ILOADBase, 0x800000);
#endif