head 1.4; access; symbols pkgsrc-2013Q2:1.4.0.2 pkgsrc-2013Q2-base:1.4 pkgsrc-2013Q1:1.3.0.30 pkgsrc-2013Q1-base:1.3 pkgsrc-2012Q4:1.3.0.28 pkgsrc-2012Q4-base:1.3 pkgsrc-2012Q3:1.3.0.26 pkgsrc-2012Q3-base:1.3 pkgsrc-2012Q2:1.3.0.24 pkgsrc-2012Q2-base:1.3 pkgsrc-2012Q1:1.3.0.22 pkgsrc-2012Q1-base:1.3 pkgsrc-2011Q4:1.3.0.20 pkgsrc-2011Q4-base:1.3 pkgsrc-2011Q3:1.3.0.18 pkgsrc-2011Q3-base:1.3 pkgsrc-2011Q2:1.3.0.16 pkgsrc-2011Q2-base:1.3 pkgsrc-2011Q1:1.3.0.14 pkgsrc-2011Q1-base:1.3 pkgsrc-2010Q4:1.3.0.12 pkgsrc-2010Q4-base:1.3 pkgsrc-2010Q3:1.3.0.10 pkgsrc-2010Q3-base:1.3 pkgsrc-2010Q2:1.3.0.8 pkgsrc-2010Q2-base:1.3 pkgsrc-2010Q1:1.3.0.6 pkgsrc-2010Q1-base:1.3 pkgsrc-2009Q4:1.3.0.4 pkgsrc-2009Q4-base:1.3 pkgsrc-2009Q3:1.3.0.2 pkgsrc-2009Q3-base:1.3 pkgsrc-2009Q1:1.1.0.20 pkgsrc-2009Q1-base:1.1 pkgsrc-2008Q4:1.1.0.18 pkgsrc-2008Q4-base:1.1 pkgsrc-2008Q3:1.1.0.16 pkgsrc-2008Q3-base:1.1 cube-native-xorg:1.1.0.14 cube-native-xorg-base:1.1 pkgsrc-2008Q2:1.1.0.12 pkgsrc-2008Q2-base:1.1 cwrapper:1.1.0.10 pkgsrc-2008Q1:1.1.0.8 pkgsrc-2008Q1-base:1.1 pkgsrc-2007Q4:1.1.0.6 pkgsrc-2007Q4-base:1.1 pkgsrc-2007Q3:1.1.0.4 pkgsrc-2007Q3-base:1.1 pkgsrc-2007Q2:1.1.0.2 pkgsrc-2007Q2-base:1.1; locks; strict; comment @# @; 1.4 date 2013.05.16.06.28.50; author richard; state dead; branches; next 1.3; commitid k0SdZOSBquPRXOPw; 1.3 date 2009.07.21.20.12.07; author abs; state Exp; branches; next 1.2; 1.2 date 2009.06.10.08.05.03; author hasso; state dead; branches; next 1.1; 1.1 date 2007.04.09.14.28.01; author xtraeme; state Exp; branches; next ; desc @@ 1.4 log @update to xf86-video-tdfx-1.4.5 for modular-xorg-server-1.12.4 @ text @$NetBSD: patch-ab,v 1.3 2009/07/21 20:12:07 abs Exp $ --- src/tdfx.h.orig 2008-08-15 18:55:32.000000000 +0100 +++ src/tdfx.h @@@@ -11,6 +11,7 @@@@ #include #include +#include #include "xf86PciInfo.h" #include "xf86Pci.h" @ 1.3 log @Updated x11/xf86-video-tdfx to 1.4.2 upstream changes: - No changelog available pkgsrc changes: - Add patch to include so gettimeofday() actually works - Regen patches for changed line numbers @ text @d1 1 a1 1 $NetBSD$ @ 1.2 log @Updated to 1.4.1. Changes in 1.4.1: ================= Dave Airlie (1): tdfx 1.4.1 Jakub Bogusz (1): Bug #17557: Fix device initialization. Tiago Vignatti (2): Remove libc wrapper functions. Fix my bad typo in last commit. Changes in 1.4.0: ================= Adam Jackson (2): Death to RCS tags. tdfx 1.4.0 Brice Goglin (1): TDFX_*_VERSION using PACKAGE_VERSION_* Dave Airlie (1): update tdfx to use proper pciaccess detection Ian Romanick (6): Supply NULL driverFunc pointer in DriverRec. Wrap pciReadLong / pciWriteLong with macros. Make TDFXGetRec return the pointer instead of a bool. Minor code cleaning in TDFXMapMem. White-space police in TDFXInitChips. Initial pass at porting driver to pci-rework. DOES NOT WORK. James Cloos (2): Rename .cvsignore to .gitignore Add *~ to .gitignore to skip patch/emacs droppings Matthieu Herrb (1): Makefile.am: nuke RCS Id Michael Lorenz (1): Add DDC2/I2C support to the tdfx driver @ text @d1 1 a1 1 $NetBSD: patch-ab,v 1.1 2007/04/09 14:28:01 xtraeme Exp $ d3 7 a9 5 --- src/tdfx_driver.c.orig 2006-09-02 14:03:07.000000000 -0400 +++ src/tdfx_driver.c 2007-03-27 23:19:20.000000000 -0400 @@@@ -141,6 +141,8 @@@@ static void TDFXDisplayPowerManagementSet(ScrnInfoPtr pScrn, int PowerManagermentMode, int flags); d11 2 a12 227 +static xf86MonPtr doTDFXDDC(ScrnInfoPtr pScrn); + _X_EXPORT DriverRec TDFX = { TDFX_VERSION, TDFX_DRIVER_NAME, @@@@ -217,6 +219,13 @@@@ static const char *ddcSymbols[] = { "xf86PrintEDID", "xf86SetDDCproperties", + "xf86DoEDID_DDC2", + NULL +}; + +static const char *i2cSymbols[] = { + "xf86CreateI2CBusRec", + "xf86I2CBusInit", NULL }; @@@@ -677,6 +686,7 @@@@ { TDFXPtr pTDFX; ClockRangePtr clockRanges; + xf86MonPtr pMon; int i; MessageType from; int flags24; @@@@ -978,32 +988,6 @@@@ availableMem = pScrn->videoRam - 4096 - (((255 <= CMDFIFO_PAGES) ? 255 : CMDFIFO_PAGES) << 12); - i = xf86ValidateModes(pScrn, pScrn->monitor->Modes, - pScrn->display->modes, clockRanges, - 0, 320, 2048, 16*pScrn->bitsPerPixel, - 200, 2047, - pScrn->display->virtualX, pScrn->display->virtualY, - availableMem, LOOKUP_BEST_REFRESH); - - if (i==-1) { - TDFXFreeRec(pScrn); - return FALSE; - } - - xf86PruneDriverModes(pScrn); - - if (!i || !pScrn->modes) { - xf86DrvMsg(pScrn->scrnIndex, X_ERROR, "No valid modes found\n"); - TDFXFreeRec(pScrn); - return FALSE; - } - - xf86SetCrtcForModes(pScrn, 0); - - pScrn->currentMode = pScrn->modes; - - xf86PrintModes(pScrn); - xf86SetDpi(pScrn, 0, 0); if (!xf86LoadSubModule(pScrn, "fb")) { @@@@ -1046,18 +1030,26 @@@@ xf86LoaderReqSymLists(ramdacSymbols, NULL); } -#if USE_INT10 -#if !defined(__powerpc__) - /* Load DDC if needed */ - /* This gives us DDC1 - we should be able to get DDC2B using i2c */ + if (!xf86LoadSubModule(pScrn, "i2c")) { + TDFXFreeRec(pScrn); + return FALSE; + } + xf86LoaderReqSymLists(i2cSymbols, NULL); + if (!xf86LoadSubModule(pScrn, "ddc")) { TDFXFreeRec(pScrn); return FALSE; } xf86LoaderReqSymLists(ddcSymbols, NULL); - /* Initialize DDC1 if possible */ - if (xf86LoadSubModule(pScrn, "vbe")) { + pMon = doTDFXDDC(pScrn); + if (pMon != NULL) { + xf86SetDDCproperties(pScrn, xf86PrintEDID(pMon)); + } else { + /* Initialize DDC1 if possible */ +#if USE_INT10 +#if !defined(__powerpc__) + if (xf86LoadSubModule(pScrn, "vbe")) { xf86MonPtr pMon; vbeInfoPtr pVbe = VBEInit(NULL,pTDFX->pEnt->index); @@@@ -1065,14 +1057,40 @@@@ pMon = vbeDoEDID(pVbe, NULL); vbeFree(pVbe); xf86SetDDCproperties(pScrn,xf86PrintEDID(pMon)); - } + } #endif #endif + } if (xf86ReturnOptValBool(pTDFX->Options, OPTION_USE_PIO, FALSE)) { pTDFX->usePIO=TRUE; } + i = xf86ValidateModes(pScrn, pScrn->monitor->Modes, + pScrn->display->modes, clockRanges, + 0, 320, 2048, 16*pScrn->bitsPerPixel, + 200, 2047, + pScrn->display->virtualX, pScrn->display->virtualY, + availableMem, LOOKUP_BEST_REFRESH); + if (i==-1) { + TDFXFreeRec(pScrn); + return FALSE; + } + + xf86PruneDriverModes(pScrn); + + if (!i || !pScrn->modes) { + xf86DrvMsg(pScrn->scrnIndex, X_ERROR, "No valid modes found\n"); + TDFXFreeRec(pScrn); + return FALSE; + } + + xf86SetCrtcForModes(pScrn, 0); + + pScrn->currentMode = pScrn->modes; + + xf86PrintModes(pScrn); + #if X_BYTE_ORDER == X_BIG_ENDIAN pTDFX->ModeReg.miscinit0 = pTDFX->readLong(pTDFX, MISCINIT0); pTDFX->SavedReg.miscinit0 = pTDFX->ModeReg.miscinit0; @@@@ -1640,8 +1658,8 @@@@ /* Calculate the CRTC values */ hd = (mode->CrtcHDisplay>>3)-1; - hss = (mode->CrtcHSyncStart>>3); - hse = (mode->CrtcHSyncEnd>>3); + hss = (mode->CrtcHSyncStart>>3)-1; + hse = (mode->CrtcHSyncEnd>>3)-1; ht = (mode->CrtcHTotal>>3)-5; hbs = (mode->CrtcHBlankStart>>3)-1; hbe = (mode->CrtcHBlankEnd>>3)-1; @@@@ -2524,3 +2542,80 @@@@ dacmode|=state; pTDFX->writeLong(pTDFX, DACMODE, dacmode); } + +void +TDFXPutBits(I2CBusPtr b, int scl, int sda) +{ + TDFXPtr pTDFX; + CARD32 reg; + + pTDFX = b->DriverPrivate.ptr; + reg = pTDFX->readLong(pTDFX, VIDSERIALPARALLELPORT); + reg = (reg & ~(VSP_SDA0_OUT | VSP_SCL0_OUT)) | + (scl ? VSP_SCL0_OUT : 0) | + (sda ? VSP_SDA0_OUT : 0); + pTDFX->writeLong(pTDFX, VIDSERIALPARALLELPORT, reg); + (void)pTDFX->readLong(pTDFX, VIDSERIALPARALLELPORT); /* flush */ +} + +void +TDFXGetBits(I2CBusPtr b, int *scl, int *sda) +{ + TDFXPtr pTDFX; + CARD32 reg; + + pTDFX = b->DriverPrivate.ptr; + + reg = pTDFX->readLong(pTDFX, VIDSERIALPARALLELPORT); + *sda = (reg & VSP_SDA0_IN) ? 1 : 0; + *scl = (reg & VSP_SCL0_IN) ? 1 : 0; +} + +static xf86MonPtr +doTDFXDDC(ScrnInfoPtr pScrn) +{ + TDFXPtr pTDFX; + I2CBusPtr pI2CBus; + xf86MonPtr pMon = NULL; + CARD32 reg; + + pTDFX = TDFXPTR(pScrn); + + if (!(pI2CBus = xf86CreateI2CBusRec())) + { + xf86DrvMsg(pScrn->scrnIndex, X_WARNING, "Unable to allocate I2C Bus record.\n"); + return NULL; + } + + /* Fill in generic structure fields */ + pI2CBus->BusName = "DDC"; + pI2CBus->scrnIndex = pScrn->scrnIndex; + pI2CBus->I2CPutBits = TDFXPutBits; + pI2CBus->I2CGetBits = TDFXGetBits; + + pI2CBus->DriverPrivate.ptr = pTDFX; + + pI2CBus->ByteTimeout = 2200; + pI2CBus->StartTimeout = 550; + pI2CBus->BitTimeout = 40; + /*pI2CBus->ByteTimeout = 40;*/ + pI2CBus->AcknTimeout = 40; + +#if 1 + reg = pTDFX->readLong(pTDFX, VIDSERIALPARALLELPORT); + pTDFX->writeLong(pTDFX, VIDSERIALPARALLELPORT, reg | VSP_ENABLE_IIC0); +#else + pTDFX->writeLong(pTDFX, VIDSERIALPARALLELPORT, 0xcffc0020); +#endif + + if (xf86I2CBusInit(pI2CBus)) + { + pMon = xf86DoEDID_DDC2(pScrn->scrnIndex, pI2CBus); + if (pMon == NULL) + xf86Msg(X_WARNING, "No DDC2 capable monitor found\n"); + xf86DestroyI2CBusRec(pI2CBus, TRUE, TRUE); + } + pTDFX->writeLong(pTDFX, VIDSERIALPARALLELPORT, reg); + + return pMon; +} @ 1.1 log @Add xf86-video-tdfx-1.3.0 for modular-xorg, packaged by jmcneill@@. This is the 3Dfx video driver for the modular Xorg server. Supported video cards: Voodoo Banshee, Voodoo3, Voodoo4 and Voodoo5. @ text @d1 1 a1 1 $NetBSD$ @