summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorLuc Verhaegen <libv@skynet.be>2006-05-12 23:41:23 +0200
committerLuc Verhaegen <libv@skynet.be>2006-05-12 23:41:23 +0200
commitf2b1fc58d68f6421a5ae80dc784576d923419c35 (patch)
treee873d231f93c209fe77fd054cfe3f00c62eb2d71
parent767d1d0aea73c5454c7bddf1ec2a3eb900f8779b (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.c3
-rw-r--r--src/atividmem.c53
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;
}