Module Name: xsrc Committed By: macallan Date: Sun Jan 22 18:26:42 UTC 2012
Modified Files: xsrc/external/mit/xf86-video-tdfx/dist/src: tdfx_driver.c Log Message: don't mess with BARs if only one card is present now this works again on macppc While there, move USE_INT10 and USE_PCIVGAIO to the reachover Makefile. To generate a diff of this commit: cvs rdiff -u -r1.1.1.4 -r1.2 \ xsrc/external/mit/xf86-video-tdfx/dist/src/tdfx_driver.c Please note that diffs are not public domain; they are subject to the copyright notices on the relevant files.
Modified files: Index: xsrc/external/mit/xf86-video-tdfx/dist/src/tdfx_driver.c diff -u xsrc/external/mit/xf86-video-tdfx/dist/src/tdfx_driver.c:1.1.1.4 xsrc/external/mit/xf86-video-tdfx/dist/src/tdfx_driver.c:1.2 --- xsrc/external/mit/xf86-video-tdfx/dist/src/tdfx_driver.c:1.1.1.4 Sat Aug 22 00:10:18 2009 +++ xsrc/external/mit/xf86-video-tdfx/dist/src/tdfx_driver.c Sun Jan 22 18:26:42 2012 @@ -6,9 +6,6 @@ #include <inttypes.h> #endif -#define USE_INT10 1 -#define USE_PCIVGAIO 1 - /************************************************************************** Copyright 1998-1999 Precision Insight, Inc., Cedar Park, Texas. @@ -658,23 +655,28 @@ TDFXInitChips(ScrnInfoPtr pScrn) xf86DrvMsgVerb(pScrn->scrnIndex, X_INFO, 3, "TDFXInitChips: cfgbits = 0x%08lx\n", cfgbits); - for (i = 0; i < pTDFX->numChips; i++) { + if (pTDFX->numChips == 1) { + /* + * XXX + * Do not fudge BARs with only one chip present. + * Now this works again on NetBSD/macppc. + */ + pTDFX->MMIOAddr[0] = mem0base & 0xffffff00; + pTDFX->LinearAddr[0] = mem1base & 0xffffff00; + } else { + for (i = 0; i < pTDFX->numChips; i++) { PCI_WRITE_LONG(initbits | BIT(10), CFG_INIT_ENABLE, i); - -#if 0 - v=pciReadWord(pTDFX->PciTag[i], CFG_PCI_COMMAND); - if (!i) - pciWriteWord(pTDFX->PciTag[i], CFG_PCI_COMMAND, v | 0x3); - else - pciWriteWord(pTDFX->PciTag[i], CFG_PCI_COMMAND, v | 0x2); -#endif - + + #if 0 + v=pciReadWord(pTDFX->PciTag[i], CFG_PCI_COMMAND); + if (!i) + pciWriteWord(pTDFX->PciTag[i], CFG_PCI_COMMAND, v | 0x3); + else + pciWriteWord(pTDFX->PciTag[i], CFG_PCI_COMMAND, v | 0x2); + #endif + pTDFX->MMIOAddr[i] = mem0base + (i * mem0size); - xf86DrvMsgVerb(pScrn->scrnIndex, X_INFO, 3, - "TDFXInitChips: MMIOAddr[%d] = 0x%08lx\n", - i, pTDFX->MMIOAddr[i]); - PCI_WRITE_LONG(pTDFX->MMIOAddr[i], CFG_MEM0BASE, i); pTDFX->MMIOAddr[i] &= 0xFFFFFF00; @@ -682,14 +684,18 @@ TDFXInitChips(ScrnInfoPtr pScrn) PCI_WRITE_LONG(pTDFX->LinearAddr[i], CFG_MEM1BASE, i); - xf86DrvMsgVerb(pScrn->scrnIndex, X_INFO, 3, - "TDFXInitChips: LinearAddr[%d] = 0x%08lx\n", - i, pTDFX->LinearAddr[i]); pTDFX->LinearAddr[i] &= 0xFFFFFF00; PCI_WRITE_LONG(cfgbits, CFG_PCI_DECODE, i); PCI_WRITE_LONG(initbits, CFG_INIT_ENABLE, i); + } } + xf86DrvMsgVerb(pScrn->scrnIndex, X_INFO, 3, + "TDFXInitChips: MMIOAddr[%d] = 0x%08lx\n", + 0, pTDFX->MMIOAddr[0]); + xf86DrvMsgVerb(pScrn->scrnIndex, X_INFO, 3, + "TDFXInitChips: LinearAddr[%d] = 0x%08lx\n", + 0, pTDFX->LinearAddr[0]); } void @@ -2214,7 +2220,8 @@ TDFXScreenInit(int scrnIndex, ScreenPtr if (!pTDFX->usePIO) TDFXSetMMIOAccess(pTDFX); -#if USE_PCIVGAIO +#ifndef USE_PCIVGAIO + /* access VGA registers through the IO BAR, not legacy decoding */ hwp->PIOOffset = pTDFX->PIOBase[0] - 0x300; #endif vgaHWGetIOBase(hwp);