diff options
author | Luc Verhaegen <libv@skynet.be> | 2006-05-12 23:41:23 +0200 |
---|---|---|
committer | Luc Verhaegen <libv@skynet.be> | 2006-05-12 23:41:23 +0200 |
commit | f2b1fc58d68f6421a5ae80dc784576d923419c35 (patch) | |
tree | e873d231f93c209fe77fd054cfe3f00c62eb2d71 | |
parent | 767d1d0aea73c5454c7bddf1ec2a3eb900f8779b (diff) |
Go for full MMIO testing when mapping apertures later on.
This also removes the left-over inw Donnie Berkholz uncovered again :)
-rw-r--r-- | src/atipreinit.c | 3 | ||||
-rw-r--r-- | src/atividmem.c | 53 |
2 files changed, 4 insertions, 52 deletions
diff --git a/src/atipreinit.c b/src/atipreinit.c index 3259021..02f94c1 100644 --- a/src/atipreinit.c +++ b/src/atipreinit.c @@ -1436,7 +1436,8 @@ ATIPreInit(ScrnInfoPtr pScreenInfo, int flags) xfree(pEntity); - Mach64MMIODetectAndMap(pATI); + if (!Mach64MMIODetectAndMap(pATI)) + return FALSE; Mach64CPIOSetup(pATI); /* work me out */ diff --git a/src/atividmem.c b/src/atividmem.c index 56618dd..3601722 100644 --- a/src/atividmem.c +++ b/src/atividmem.c @@ -284,7 +284,7 @@ Mach64MMIODetectAndMap(ATIPtr pATI) if (Tmp <= 0x00400000) { xf86DrvMsg(pATI->scrnIndex, X_ERROR, "Unable to verify" " functionality of MMIO.\n"); - break; + return FALSE; } Tmp = 0x00400000 - PageSize; @@ -308,55 +308,6 @@ Mach64MMIODetectAndMap(ATIPtr pATI) } /* - * Map MMIO without much testing. - */ -Bool -Mach64MMIOMap(ATIPtr pATI) -{ - pciVideoPtr pVideo = pATI->PCIInfo; - PCITAG tag = ((pciConfigPtr) pVideo->thisCard)->tag; - unsigned long PageSize = getpagesize(); - unsigned long Tmp; - - /* First, try to get IO from the third BAR */ - if (pATI->Chip >= ATI_CHIP_264VT) { - Tmp = pVideo->memBase[2] & ~(PageSize - 1); - - pATI->pMMIO = xf86MapPciMem(pATI->scrnIndex, VIDMEM_MMIO, tag, Tmp, - PageSize); - - if (!pATI->pMMIO) { - xf86DrvMsg(pATI->scrnIndex, X_ERROR, "Unable to map MMIO at " - "0x%08lX.\n", pVideo->memBase[2]); - Mach64MMIOUnmap(pATI); - return FALSE; - } - - pATI->pBlock[1] = (char *)pATI->pMMIO + (pVideo->memBase[2] - Tmp); - pATI->pBlock[0] = (char *)pATI->pBlock[1] + 0x400; - } else { /* Gx/Cx/CT/ET have IO as the last kB of the FB aperture. */ - /* Check size of aperture. */ - if (((inw(PIO_CONFIG_CNTL) & 0x3) == 0x2) && (pVideo->size[0] >= 23)) - Tmp = 0x00800000 - PageSize; - else - Tmp = 0x00400000 - PageSize; - - pATI->pMMIO = xf86MapPciMem(pATI->scrnIndex, VIDMEM_MMIO, tag, - pVideo->memBase[0] + Tmp, PageSize); - if (!pATI->pMMIO) { - xf86DrvMsg(pATI->scrnIndex, X_ERROR, "Unable to map MMIO at " - "0x%08lX.\n", pVideo->memBase[0] + Tmp); - Mach64MMIOUnmap(pATI); - return FALSE; - } - - pATI->pBlock[0] = (char *)pATI->pMMIO + PageSize - 0x400; - } - - return TRUE; -} - -/* * */ void @@ -441,7 +392,7 @@ Mach64AperturesMap(ATIPtr pATI) } /* Map MMIO aperture */ - if (!pATI->pMMIO && !Mach64MMIOMap(pATI)){ + if (!pATI->pMMIO && !Mach64MMIODetectAndMap(pATI)){ Mach64AperturesUnmap(pATI); return FALSE; } |