diff options
author | Tilman Sauerbeck <tilman@code-monkey.de> | 2008-01-18 18:12:30 +0100 |
---|---|---|
committer | Tilman Sauerbeck <tilman@code-monkey.de> | 2008-01-18 18:12:30 +0100 |
commit | abc4b876c39965f9cda15a530019e90a420a24b4 (patch) | |
tree | 8d552bb42aedd4a70f68a14e220dffcb0c32c067 | |
parent | 0031fe800f8388bbf56e76b9974b88e0643e1f85 (diff) | |
parent | bfee7bf011625079fd79b1bf89198ffeb76096d2 (diff) |
Merge branch 'master' into randr-1.2randr-1.2
Conflicts:
src/mga_driver.c
-rw-r--r-- | src/mga_driver.c | 35 | ||||
-rw-r--r-- | src/mga_exa.c | 4 |
2 files changed, 27 insertions, 12 deletions
diff --git a/src/mga_driver.c b/src/mga_driver.c index f87c7b9..00e7e45 100644 --- a/src/mga_driver.c +++ b/src/mga_driver.c @@ -747,6 +747,7 @@ MGAProbe(DriverPtr drv, int flags) if (pScrn != NULL) { MGAPtr pMga; EntityInfoPtr pEnt; + int attrib_no; /* Fill in what we can of the ScrnInfoRec */ pScrn->driverVersion = MGA_VERSION; @@ -774,46 +775,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]; } } xfree(usedChips); @@ -2407,8 +2408,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->framebuffer_bar].size); #else xf86UnMapVidMem(pScrn->scrnIndex, (pointer)pMga->IOBase, 0x4000); xf86UnMapVidMem(pScrn->scrnIndex, (pointer)pMga->FbBase, pMga->FbMapSize); @@ -2421,7 +2424,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 @@ -3140,6 +3144,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) && diff --git a/src/mga_exa.c b/src/mga_exa.c index b194d3b..d701a2c 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) @@ -896,8 +898,10 @@ mgaExaInit(ScreenPtr pScreen) pExa->UploadToScreen = mgaUploadToScreen; pExa->DownloadFromScreen = mgaDownloadFromScreen; +#ifdef XF86DRI if (pMga->directRenderingEnabled) init_dri(pScrn); +#endif return exaDriverInit(pScreen, pExa); } |