diff options
author | Tilman Sauerbeck <tilman@code-monkey.de> | 2007-09-14 23:10:24 +0200 |
---|---|---|
committer | Tilman Sauerbeck <tilman@code-monkey.de> | 2007-09-14 23:10:24 +0200 |
commit | a4dd40eb053656cfdd238b65361c21551958cdea (patch) | |
tree | 8663fbe23dade638eb27ba0f8c1b2761514d200b | |
parent | c9fb0e6de97f55f50bf0a63faa8da47d007e9c34 (diff) | |
parent | 485fb9aa1e5d90c75d763db4b7bf5a80e51e83e9 (diff) |
Merge branch 'master' into randr-1.2
-rw-r--r-- | src/mga_driver.c | 49 |
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, + ®ion->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, + ®ion->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 |