From 8e971287f60f3a41f2d0d176e4eaaa653e25276b Mon Sep 17 00:00:00 2001 From: Ian Romanick Date: Wed, 3 Oct 2007 12:47:59 -0700 Subject: Unmap the same size that was mapped Make sure the same size is used with pci_device_unmap_range as was used with pci_device_map_range. Failing to do so was causing problems with a G450 card in a POWER6 box. Based on a patch submitted by Anton Blanchard. --- src/mga_driver.c | 9 ++++++--- 1 file changed, 6 insertions(+), 3 deletions(-) diff --git a/src/mga_driver.c b/src/mga_driver.c index c881b9d..0185b9b 100644 --- a/src/mga_driver.c +++ b/src/mga_driver.c @@ -2880,8 +2880,10 @@ MGAUnmapMem(ScrnInfoPtr pScrn) if (!pMga->FBDev) { #ifdef XSERVER_LIBPCIACCESS - pci_device_unmap_range(dev, pMga->IOBase, 0x4000); - pci_device_unmap_range(dev, pMga->FbBase, pMga->FbMapSize); + pci_device_unmap_range(dev, pMga->IOBase, + dev->regions[pMga->io_bar].size); + pci_device_unmap_range(dev, pMga->FbBase, + dev->regions[pMga->fb_bar].size); #else xf86UnMapVidMem(pScrn->scrnIndex, (pointer)pMga->IOBase, 0x4000); xf86UnMapVidMem(pScrn->scrnIndex, (pointer)pMga->FbBase, pMga->FbMapSize); @@ -2894,7 +2896,8 @@ MGAUnmapMem(ScrnInfoPtr pScrn) if ((pMga->iload_bar != -1) && (pMga->ILOADBase != NULL)) { #ifdef XSERVER_LIBPCIACCESS - pci_device_unmap_range(dev, pMga->ILOADBase, 0x800000); + pci_device_unmap_range(dev, pMga->ILOADBase, + dev->regions[pMga->iload_bar].size); #else xf86UnMapVidMem(pScrn->scrnIndex, (pointer)pMga->ILOADBase, 0x800000); #endif -- cgit v1.2.3 From db22b6ef0fa3ae20f46719bd826e16b6580e5213 Mon Sep 17 00:00:00 2001 From: Tilman Sauerbeck Date: Wed, 3 Oct 2007 23:06:48 +0200 Subject: Fixed a typo. --- src/mga_driver.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/mga_driver.c b/src/mga_driver.c index 0185b9b..d11aed3 100644 --- a/src/mga_driver.c +++ b/src/mga_driver.c @@ -2883,7 +2883,7 @@ MGAUnmapMem(ScrnInfoPtr pScrn) pci_device_unmap_range(dev, pMga->IOBase, dev->regions[pMga->io_bar].size); pci_device_unmap_range(dev, pMga->FbBase, - dev->regions[pMga->fb_bar].size); + dev->regions[pMga->framebuffer_bar].size); #else xf86UnMapVidMem(pScrn->scrnIndex, (pointer)pMga->IOBase, 0x4000); xf86UnMapVidMem(pScrn->scrnIndex, (pointer)pMga->FbBase, pMga->FbMapSize); -- cgit v1.2.3 From 81717e5780350665166dd7a0f4d96135609a8764 Mon Sep 17 00:00:00 2001 From: Alan Coopersmith Date: Tue, 30 Oct 2007 18:43:30 -0700 Subject: Don't build or call init_dri if XF86DRI is undefined --- src/mga_exa.c | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/src/mga_exa.c b/src/mga_exa.c index bfb78e7..9321452 100644 --- a/src/mga_exa.c +++ b/src/mga_exa.c @@ -758,6 +758,7 @@ mgaWaitMarker(ScreenPtr pScreen, int marker) while (INREG (MGAREG_Status) & 0x10000); } +#ifdef XF86DRI static void init_dri(ScrnInfoPtr pScrn) { @@ -831,6 +832,7 @@ init_dri(ScrnInfoPtr pScrn) MGA_BUFFER_ALIGN) & ~MGA_BUFFER_ALIGN; dri->backPitch = widthBytes; } +#endif /* XF86DRI */ Bool mgaExaInit(ScreenPtr pScreen) @@ -891,8 +893,10 @@ mgaExaInit(ScreenPtr pScreen) pExa->UploadToScreen = mgaUploadToScreen; pExa->DownloadFromScreen = mgaDownloadFromScreen; +#ifdef XF86DRI if (pMga->directRenderingEnabled) init_dri(pScrn); +#endif return exaDriverInit(pScreen, pExa); } -- cgit v1.2.3 From 2096022c0757b675d39dea8830125ba800b43160 Mon Sep 17 00:00:00 2001 From: Adam Jackson Date: Wed, 12 Dec 2007 18:10:52 -0500 Subject: G200SE-A can't cope with bigger than 1600x1200. --- src/mga_driver.c | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/src/mga_driver.c b/src/mga_driver.c index d11aed3..be26e89 100644 --- a/src/mga_driver.c +++ b/src/mga_driver.c @@ -4286,6 +4286,13 @@ MGAValidMode(int scrnIndex, DisplayModePtr mode, Bool verbose, int flags) ScrnInfoPtr pScrn = xf86Screens[scrnIndex]; MGAPtr pMga = MGAPTR(pScrn); + if (pMga->Chipset == PCI_CHIP_MGAG200_SE_A_PCI) { + if (mode->HDisplay > 1600) + return MODE_VIRTUAL_X; + if (mode->VDisplay > 1200) + return MODE_VIRTUAL_Y; + } + lace = 1 + ((mode->Flags & V_INTERLACE) != 0); if ((mode->CrtcHDisplay <= 2048) && -- cgit v1.2.3 From bfee7bf011625079fd79b1bf89198ffeb76096d2 Mon Sep 17 00:00:00 2001 From: Tilman Sauerbeck Date: Fri, 18 Jan 2008 18:05:49 +0100 Subject: Bug #13926: Unbreak Xinerama. --- src/mga_driver.c | 19 ++++++++++--------- 1 file changed, 10 insertions(+), 9 deletions(-) diff --git a/src/mga_driver.c b/src/mga_driver.c index be26e89..52ec22c 100644 --- a/src/mga_driver.c +++ b/src/mga_driver.c @@ -794,6 +794,7 @@ MGAProbe(DriverPtr drv, int flags) else for (i = 0; i < numUsed; i++) { ScrnInfoPtr pScrn = NULL; EntityInfoPtr pEnt; + int attrib_no; #ifdef DISABLE_VGA_IO MgaSavePtr smga; #endif @@ -844,46 +845,46 @@ MGAProbe(DriverPtr drv, int flags) switch (pEnt->chipset) { case PCI_CHIP_MGA2064: - i = 0; + attrib_no = 0; break; case PCI_CHIP_MGA1064: - i = 1; + attrib_no = 1; break; case PCI_CHIP_MGA2164: case PCI_CHIP_MGA2164_AGP: - i = 2; + attrib_no = 2; break; case PCI_CHIP_MGAG100: case PCI_CHIP_MGAG100_PCI: - i = 3; + attrib_no = 3; break; case PCI_CHIP_MGAG200: case PCI_CHIP_MGAG200_PCI: - i = 4; + attrib_no = 4; break; case PCI_CHIP_MGAG400: - i = 5; + attrib_no = 5; break; case PCI_CHIP_MGAG550: - i = 6; + attrib_no = 6; break; case PCI_CHIP_MGAG200_SE_A_PCI: case PCI_CHIP_MGAG200_SE_B_PCI: - i = 7; + attrib_no = 7; break; default: return FALSE; } - pMga->chip_attribs = & attribs[i]; + pMga->chip_attribs = & attribs[attrib_no]; if (pMga->chip_attribs->dual_head_possible) { MGAEntPtr pMgaEnt = NULL; -- cgit v1.2.3