diff options
author | Luc Verhaegen <libv@skynet.be> | 2005-10-18 14:51:10 +0000 |
---|---|---|
committer | Luc Verhaegen <libv@skynet.be> | 2005-10-18 14:51:10 +0000 |
commit | 96de2cc67fe2b436b2d5e0258c6d37f350eae4ea (patch) | |
tree | 6c742d7addd491de39964b7242203230810e8224 | |
parent | 9d5dcbc18211486a8cef2768f42b11cf6011d799 (diff) |
[devel-tv_more_flexible_i2c_detection]
- Use a table so that different addresses can be matched to the same
devices.
- Combine TVDetect and TVInit. Move basic I2CDev handling up.
- Remove general TVEncoder ids and go for (tv)driver local enums.
-rw-r--r-- | src/via_bios.h | 29 | ||||
-rw-r--r-- | src/via_ch7xxx.c | 91 | ||||
-rw-r--r-- | src/via_mode.c | 152 | ||||
-rw-r--r-- | src/via_vt162x.c | 195 |
4 files changed, 209 insertions, 258 deletions
diff --git a/src/via_bios.h b/src/via_bios.h index e3d96e0..33797ed 100644 --- a/src/via_bios.h +++ b/src/via_bios.h @@ -46,14 +46,6 @@ #define TVOUTPUT_YCBCR 0x08 #define TVOUTPUT_SC 0x16 -#define VIA_NONETV 0x00 -#define VIA_VT1621 0x01 /* TV2PLUS */ -#define VIA_VT1622 0x02 /* TV3 */ -#define VIA_VT1623 0x03 /* also VT1622A */ -#define VIA_VT1625 0x04 - -#define VIA_CH7011 0x10 - #define VIA_TVNORMAL 0 #define VIA_TVOVER 1 @@ -102,16 +94,18 @@ typedef struct _VIABIOSINFO { int resY; /* TV entries */ - int TVEncoder; int TVOutput; Bool TVActive; - I2CDevPtr TVI2CDev; int TVType; Bool TVDotCrawl; int TVDeflicker; - CARD8 TVRegs[0xFF]; - /* TV Callbacks */ + /* encoder internal use only */ + I2CDevPtr TVI2CDev; + int TVEncoder; + CARD8 TVRegs[0xFF]; + + /* Actual TV Callbacks */ void (*TVSave) (ScrnInfoPtr pScrn); void (*TVRestore) (ScrnInfoPtr pScrn); Bool (*TVDACSense) (ScrnInfoPtr pScrn); @@ -120,7 +114,6 @@ typedef struct _VIABIOSINFO { void (*TVPower) (ScrnInfoPtr pScrn, Bool On); DisplayModePtr TVModes; void (*TVPrintRegs) (ScrnInfoPtr pScrn); - } VIABIOSInfoRec, *VIABIOSInfoPtr; /* Function prototypes */ @@ -145,12 +138,8 @@ void ViaSetPrimaryFIFO(ScrnInfoPtr pScrn, DisplayModePtr mode); void ViaSetSecondaryFIFO(ScrnInfoPtr pScrn, DisplayModePtr mode); void ViaDisablePrimaryFIFO(ScrnInfoPtr pScrn); -/* via_vt162x.c */ -I2CDevPtr ViaVT162xDetect(ScrnInfoPtr pScrn, I2CBusPtr pBus, CARD8 Address); -void ViaVT162xInit(ScrnInfoPtr pScrn); - -/* via_ch7xxx.c */ -I2CDevPtr ViaCH7xxxDetect(ScrnInfoPtr pScrn, I2CBusPtr pBus, CARD8 Address); -void ViaCH7xxxInit(ScrnInfoPtr pScrn); +/* tv encoders: via_vt162x.c and via_ch7xxx.c */ +Bool ViaVT162xInit(ScrnInfoPtr pScrn, I2CDevPtr pDev); +Bool ViaCH7xxxInit(ScrnInfoPtr pScrn, I2CDevPtr pDev); #endif /* _VIA_BIOS_H_ */ diff --git a/src/via_ch7xxx.c b/src/via_ch7xxx.c index ee4c36b..4dcd13c 100644 --- a/src/via_ch7xxx.c +++ b/src/via_ch7xxx.c @@ -27,52 +27,11 @@ #include "via_id.h" /* - * + * */ -I2CDevPtr -ViaCH7xxxDetect(ScrnInfoPtr pScrn, I2CBusPtr pBus, CARD8 Address) -{ - VIABIOSInfoPtr pBIOSInfo = VIAPTR(pScrn)->pBIOSInfo; - I2CDevPtr pDev = xf86CreateI2CDevRec(); - CARD8 buf; - - VIAFUNC(pScrn->scrnIndex); - - pDev->DevName = "CH7xxx"; - pDev->SlaveAddr = Address; - pDev->pI2CBus = pBus; - - if (!xf86I2CDevInit(pDev)) { - xf86DestroyI2CDevRec(pDev, TRUE); - return NULL; - } - - if (!xf86I2CReadByte(pDev, 0x4B, &buf)) { - xf86DrvMsg(pScrn->scrnIndex, X_ERROR, "Unable to read from %s Slave %d.\n", - pBus->BusName, Address); - xf86DestroyI2CDevRec(pDev, TRUE); - return NULL; - } - - switch (buf) { - case 0x17: - xf86DrvMsg(pScrn->scrnIndex, X_PROBED, - "Detected Chrontel CH7011 TV Encoder\n"); - pBIOSInfo->TVEncoder = VIA_CH7011; - pDev->DevName = "CH7011"; - break; - default: - pBIOSInfo->TVEncoder = VIA_NONETV; - xf86DrvMsg(pScrn->scrnIndex, X_WARNING, - "Unknown TV Encoder found at %s %X (device id: 0x%02X).\n", - pBus->BusName, Address, buf); - xf86DestroyI2CDevRec(pDev,TRUE); - pDev = NULL; - break; - } - - return pDev; -} +enum CH7xxxDevices { + CH7011 +}; /* * @@ -421,25 +380,41 @@ CH7xxxTVPower(ScrnInfoPtr pScrn, Bool On) /* * */ -void -ViaCH7xxxInit(ScrnInfoPtr pScrn) +Bool +ViaCH7xxxInit(ScrnInfoPtr pScrn, I2CDevPtr pDev) { VIABIOSInfoPtr pBIOSInfo = VIAPTR(pScrn)->pBIOSInfo; + CARD8 buf; VIAFUNC(pScrn->scrnIndex); - switch (pBIOSInfo->TVEncoder) { - case VIA_CH7011: + if (!xf86I2CReadByte(pDev, 0x4B, &buf)) { + xf86DrvMsg(pScrn->scrnIndex, X_ERROR, "Unable to read from %s Slave %d.\n", + pDev->pI2CBus->BusName, pDev->SlaveAddr); + return FALSE; + } + + switch (buf) { + case 0x17: + xf86DrvMsg(pScrn->scrnIndex, X_PROBED, + "Detected Chrontel CH7011 TV Encoder\n"); + pDev->DevName = "CH7011"; + + pBIOSInfo->TVI2CDev = pDev; + pBIOSInfo->TVEncoder = CH7011; pBIOSInfo->TVSave = CH7011Save; - pBIOSInfo->TVRestore = CH7011Restore; - pBIOSInfo->TVDACSense = CH7011DACSense; - pBIOSInfo->TVModeValid = CH7011TVModeValid; - pBIOSInfo->TVMode = CH7011TVMode; - pBIOSInfo->TVPower = CH7xxxTVPower; - pBIOSInfo->TVModes = CH7011TVModes; - pBIOSInfo->TVPrintRegs = CH7xxxPrintRegs; - break; + pBIOSInfo->TVRestore = CH7011Restore; + pBIOSInfo->TVDACSense = CH7011DACSense; + pBIOSInfo->TVModeValid = CH7011TVModeValid; + pBIOSInfo->TVMode = CH7011TVMode; + pBIOSInfo->TVPower = CH7xxxTVPower; + pBIOSInfo->TVModes = CH7011TVModes; + pBIOSInfo->TVPrintRegs = CH7xxxPrintRegs; + + return TRUE; default: - break; + xf86DrvMsg(pScrn->scrnIndex, X_WARNING, "Unknown TV Encoder found at %s %X.\n", + pDev->pI2CBus->BusName, pDev->SlaveAddr); + return FALSE; } } diff --git a/src/via_mode.c b/src/via_mode.c index ce55674..ceb848b 100644 --- a/src/via_mode.c +++ b/src/via_mode.c @@ -46,44 +46,47 @@ * */ +static struct { + CARD8 Address; + char * Name; + Bool (*Init) (ScrnInfoPtr pScrn, I2CDevPtr pDev); +} ViaI2CDevices[] = { + {0x40, "VT162x", ViaVT162xInit}, + {0x42, "VT162x", ViaVT162xInit}, + {0xEA, "CH7xxx", ViaCH7xxxInit}, + {0xEC, "CH7xxx", ViaCH7xxxInit}, + {0x00, NULL, NULL} +}; + /* * */ static Bool -ViaTVDetect(ScrnInfoPtr pScrn) +ViaTVScanBus(ScrnInfoPtr pScrn, I2CBusPtr pI2CBus) { - VIAPtr pVia = VIAPTR(pScrn); - VIABIOSInfoPtr pBIOSInfo = pVia->pBIOSInfo; + int i; VIAFUNC(pScrn->scrnIndex); - /* preset some pBIOSInfo TV related values -- move up */ - pBIOSInfo->TVEncoder = VIA_NONETV; - pBIOSInfo->TVI2CDev = NULL; - pBIOSInfo->TVSave = NULL; - pBIOSInfo->TVRestore = NULL; - pBIOSInfo->TVDACSense = NULL; - pBIOSInfo->TVModeValid = NULL; - pBIOSInfo->TVMode = NULL; - pBIOSInfo->TVPower = NULL; - pBIOSInfo->TVModes = NULL; - pBIOSInfo->TVPrintRegs = NULL; - - if (pVia->pI2CBus2) { - if (xf86I2CProbeAddress(pVia->pI2CBus2, 0x40)) - pBIOSInfo->TVI2CDev = ViaVT162xDetect(pScrn, pVia->pI2CBus2, 0x40); - else if (xf86I2CProbeAddress(pVia->pI2CBus2, 0xEC)) - pBIOSInfo->TVI2CDev = ViaCH7xxxDetect(pScrn, pVia->pI2CBus2, 0xEC); - } - if (!pBIOSInfo->TVI2CDev && pVia->pI2CBus3) { - if (xf86I2CProbeAddress(pVia->pI2CBus3, 0x40)) - pBIOSInfo->TVI2CDev = ViaVT162xDetect(pScrn, pVia->pI2CBus3, 0x40); - else if (xf86I2CProbeAddress(pVia->pI2CBus3, 0xEC)) - ViaDebug(pScrn->scrnIndex, "We have chrontel on 3!\n"); - } + for (i = 0; ViaI2CDevices[i].Init; i++) + if (xf86I2CProbeAddress(pI2CBus, ViaI2CDevices[i].Address)) { + I2CDevPtr pDev = xf86CreateI2CDevRec(); + + pDev->DevName = ViaI2CDevices[i].Name; + pDev->SlaveAddr = ViaI2CDevices[i].Address; + pDev->pI2CBus = pI2CBus; + + if (!xf86I2CDevInit(pDev)) { + xf86DestroyI2CDevRec(pDev, TRUE); + return FALSE; + } + + if (ViaI2CDevices[i].Init(pScrn, pDev)) + return TRUE; + else + xf86DestroyI2CDevRec(pDev,TRUE); + } - if (pBIOSInfo->TVI2CDev) - return TRUE; return FALSE; } @@ -93,58 +96,61 @@ ViaTVDetect(ScrnInfoPtr pScrn) static Bool ViaTVInit(ScrnInfoPtr pScrn) { - VIABIOSInfoPtr pBIOSInfo = VIAPTR(pScrn)->pBIOSInfo; + VIAPtr pVia = VIAPTR(pScrn); + VIABIOSInfoPtr pBIOSInfo = pVia->pBIOSInfo; VIAFUNC(pScrn->scrnIndex); - switch (pBIOSInfo->TVEncoder){ - case VIA_VT1621: - case VIA_VT1622: - case VIA_VT1623: - ViaVT162xInit(pScrn); - break; - case VIA_CH7011: - ViaCH7xxxInit(pScrn); - break; - default: - return FALSE; - break; - } - - if (!pBIOSInfo->TVSave || !pBIOSInfo->TVRestore || - !pBIOSInfo->TVDACSense || !pBIOSInfo->TVModeValid || - !pBIOSInfo->TVMode || !pBIOSInfo->TVPower || - !pBIOSInfo->TVModes || !pBIOSInfo->TVPrintRegs) { - - xf86DrvMsg(pScrn->scrnIndex, X_ERROR, "ViaTVInit: TVEncoder was not " - "properly initialised."); - - xf86DestroyI2CDevRec(pBIOSInfo->TVI2CDev, TRUE); - pBIOSInfo->TVI2CDev = NULL; - pBIOSInfo->TVOutput = TVOUTPUT_NONE; - pBIOSInfo->TVEncoder = VIA_NONETV; - pBIOSInfo->TVI2CDev = NULL; - pBIOSInfo->TVSave = NULL; - pBIOSInfo->TVRestore = NULL; - pBIOSInfo->TVDACSense = NULL; - pBIOSInfo->TVModeValid = NULL; - pBIOSInfo->TVMode = NULL; - pBIOSInfo->TVPower = NULL; - pBIOSInfo->TVModes = NULL; - pBIOSInfo->TVPrintRegs = NULL; + /* preset some pBIOSInfo TV related values -- move up */ + pBIOSInfo->TVI2CDev = NULL; + pBIOSInfo->TVEncoder = -1; + pBIOSInfo->TVSave = NULL; + pBIOSInfo->TVRestore = NULL; + pBIOSInfo->TVDACSense = NULL; + pBIOSInfo->TVModeValid = NULL; + pBIOSInfo->TVMode = NULL; + pBIOSInfo->TVPower = NULL; + pBIOSInfo->TVModes = NULL; + pBIOSInfo->TVPrintRegs = NULL; - return FALSE; - } + if ((pVia->pI2CBus2 && ViaTVScanBus(pScrn, pVia->pI2CBus2)) || + (pVia->pI2CBus3 && ViaTVScanBus(pScrn, pVia->pI2CBus3))) { - /* Save now */ - pBIOSInfo->TVSave(pScrn); + if (!pBIOSInfo->TVSave || !pBIOSInfo->TVRestore || + !pBIOSInfo->TVDACSense || !pBIOSInfo->TVModeValid || + !pBIOSInfo->TVMode || !pBIOSInfo->TVPower || + !pBIOSInfo->TVModes || !pBIOSInfo->TVPrintRegs) { + + xf86DrvMsg(pScrn->scrnIndex, X_ERROR, "%s: TVEncoder was not " + "properly initialised.", __FUNCTION__); + + xf86DestroyI2CDevRec(pBIOSInfo->TVI2CDev, TRUE); + pBIOSInfo->TVI2CDev = NULL; + pBIOSInfo->TVOutput = TVOUTPUT_NONE; + pBIOSInfo->TVSave = NULL; + pBIOSInfo->TVRestore = NULL; + pBIOSInfo->TVDACSense = NULL; + pBIOSInfo->TVModeValid = NULL; + pBIOSInfo->TVMode = NULL; + pBIOSInfo->TVPower = NULL; + pBIOSInfo->TVModes = NULL; + pBIOSInfo->TVPrintRegs = NULL; + + return FALSE; + } + /* Save now */ + pBIOSInfo->TVSave(pScrn); + #ifdef HAVE_DEBUG - if (VIAPTR(pScrn)->PrintTVRegs) - pBIOSInfo->TVPrintRegs(pScrn); + if (VIAPTR(pScrn)->PrintTVRegs) + pBIOSInfo->TVPrintRegs(pScrn); #endif - return TRUE; + return TRUE; + } + + return FALSE; } void @@ -245,7 +251,7 @@ ViaOutputsDetect(ScrnInfoPtr pScrn) } /* TV encoder */ - if (ViaTVDetect(pScrn) && ViaTVInit(pScrn)) { + if (ViaTVInit(pScrn)) { if (!pBIOSInfo->TVOutput) /* Config might've set this already */ ViaTVDACSense(pScrn); } else if (pVia->Id && (pVia->Id->Outputs & VIA_DEVICE_TV)) { diff --git a/src/via_vt162x.c b/src/via_vt162x.c index 413eac1..e0b4e6e 100644 --- a/src/via_vt162x.c +++ b/src/via_vt162x.c @@ -31,6 +31,15 @@ /* * */ +enum VT162xDevices { + VT1621, + VT1622, + VT1623 +}; + +/* + * + */ static void VT162xPrintRegs(ScrnInfoPtr pScrn) { @@ -50,77 +59,6 @@ VT162xPrintRegs(ScrnInfoPtr pScrn) } /* - * - */ -I2CDevPtr -ViaVT162xDetect(ScrnInfoPtr pScrn, I2CBusPtr pBus, CARD8 Address) -{ - VIABIOSInfoPtr pBIOSInfo = VIAPTR(pScrn)->pBIOSInfo; - I2CDevPtr pDev = xf86CreateI2CDevRec(); - CARD8 buf; - - VIAFUNC(pScrn->scrnIndex); - - pDev->DevName = "VT162x"; - pDev->SlaveAddr = Address; - pDev->pI2CBus = pBus; - - if (!xf86I2CDevInit(pDev)) { - xf86DestroyI2CDevRec(pDev, TRUE); - return NULL; - } - - if (!xf86I2CReadByte(pDev, 0x1B, &buf)) { - xf86DrvMsg(pScrn->scrnIndex, X_ERROR, "Unable to read from %s Slave %d.\n", - pBus->BusName, Address); - xf86DestroyI2CDevRec(pDev, TRUE); - return NULL; - } - - switch (buf) { - case 0x02: - xf86DrvMsg(pScrn->scrnIndex, X_PROBED, - "Detected VIA Technologies VT1621 TV Encoder\n"); - pBIOSInfo->TVEncoder = VIA_VT1621; - pDev->DevName = "VT1621"; - break; - case 0x03: - xf86DrvMsg(pScrn->scrnIndex, X_PROBED, - "Detected VIA Technologies VT1622 TV Encoder\n"); - pBIOSInfo->TVEncoder = VIA_VT1622; - pDev->DevName = "VT1622"; - break; - case 0x10: - xf86DrvMsg(pScrn->scrnIndex, X_PROBED, - "Detected VIA Technologies VT1622A/VT1623 TV Encoder\n"); - pBIOSInfo->TVEncoder = VIA_VT1623; - pDev->DevName = "VT1623"; - break; - case 0x50: - xf86DrvMsg(pScrn->scrnIndex, X_PROBED, - "Detected VIA Technologies VT1625 TV Encoder\n"); -#if 0 - pBIOSInfo->TVEncoder = VIA_VT1625; - pDev->DevName = "VT1625"; -#else - xf86DrvMsg(pScrn->scrnIndex, X_WARNING, "VT1625 is not supported yet.\n"); - xf86DestroyI2CDevRec(pDev, TRUE); - pDev = NULL; -#endif - break; - default: - pBIOSInfo->TVEncoder = VIA_NONETV; - xf86DrvMsg(pScrn->scrnIndex, X_WARNING, - "Unknown TV Encoder found at %s %X.\n", pBus->BusName, Address); - xf86DestroyI2CDevRec(pDev,TRUE); - pDev = NULL; - break; - } - - return pDev; -} - -/* * */ static void @@ -318,7 +256,7 @@ VT1622ModeIndex(ScrnInfoPtr pScrn, DisplayModePtr mode) VIAFUNC(pScrn->scrnIndex); - if (pBIOSInfo->TVEncoder == VIA_VT1622) + if (pBIOSInfo->TVEncoder == VT1622) Table = VT1622Table; else Table = VT1623Table; @@ -444,7 +382,7 @@ VT1622Mode(ScrnInfoPtr pScrn, DisplayModePtr mode) VIAFUNC(pScrn->scrnIndex); - if (pBIOSInfo->TVEncoder == VIA_VT1622) + if (pBIOSInfo->TVEncoder == VT1622) Table = VT1622Table[VT1622ModeIndex(pScrn, mode)]; else /* VT1622A/VT1623 */ Table = VT1623Table[VT1622ModeIndex(pScrn, mode)]; @@ -549,45 +487,88 @@ VT1622Power(ScrnInfoPtr pScrn, Bool On) /* * */ -void -ViaVT162xInit(ScrnInfoPtr pScrn) +Bool +ViaVT162xInit(ScrnInfoPtr pScrn, I2CDevPtr pDev) { VIABIOSInfoPtr pBIOSInfo = VIAPTR(pScrn)->pBIOSInfo; + CARD8 buf; VIAFUNC(pScrn->scrnIndex); - switch (pBIOSInfo->TVEncoder) { - case VIA_VT1621: - pBIOSInfo->TVSave = VT162xSave; - pBIOSInfo->TVRestore = VT162xRestore; - pBIOSInfo->TVDACSense = VT1621DACSense; - pBIOSInfo->TVModeValid = VT1621ModeValid; - pBIOSInfo->TVMode = VT1621Mode; - pBIOSInfo->TVPower = VT1621Power; - pBIOSInfo->TVModes = VT1621Modes; - pBIOSInfo->TVPrintRegs = VT162xPrintRegs; - break; - case VIA_VT1622: - pBIOSInfo->TVSave = VT162xSave; - pBIOSInfo->TVRestore = VT162xRestore; - pBIOSInfo->TVDACSense = VT1622DACSense; - pBIOSInfo->TVModeValid = VT1622ModeValid; - pBIOSInfo->TVMode = VT1622Mode; - pBIOSInfo->TVPower = VT1622Power; - pBIOSInfo->TVModes = VT1622Modes; - pBIOSInfo->TVPrintRegs = VT162xPrintRegs; - break; - case VIA_VT1623: - pBIOSInfo->TVSave = VT162xSave; - pBIOSInfo->TVRestore = VT162xRestore; - pBIOSInfo->TVDACSense = VT1622DACSense; - pBIOSInfo->TVModeValid = VT1622ModeValid; - pBIOSInfo->TVMode = VT1622Mode; - pBIOSInfo->TVPower = VT1622Power; - pBIOSInfo->TVModes = VT1623Modes; - pBIOSInfo->TVPrintRegs = VT162xPrintRegs; - break; + if (!xf86I2CReadByte(pDev, 0x1B, &buf)) { + xf86DrvMsg(pScrn->scrnIndex, X_ERROR, "Unable to read from %s Slave %d.\n", + pDev->pI2CBus->BusName, pDev->SlaveAddr); + return FALSE; + } + + switch (buf) { + case 0x02: + xf86DrvMsg(pScrn->scrnIndex, X_PROBED, + "Detected VIA Technologies VT1621 TV Encoder\n"); + pDev->DevName = "VT1621"; + + pBIOSInfo->TVI2CDev = pDev; + pBIOSInfo->TVEncoder = VT1621; + pBIOSInfo->TVSave = VT162xSave; + pBIOSInfo->TVRestore = VT162xRestore; + pBIOSInfo->TVDACSense = VT1621DACSense; + pBIOSInfo->TVModeValid = VT1621ModeValid; + pBIOSInfo->TVMode = VT1621Mode; + pBIOSInfo->TVPower = VT1621Power; + pBIOSInfo->TVModes = VT1621Modes; + pBIOSInfo->TVPrintRegs = VT162xPrintRegs; + + return TRUE; + case 0x03: + xf86DrvMsg(pScrn->scrnIndex, X_PROBED, + "Detected VIA Technologies VT1622 TV Encoder\n"); + pDev->DevName = "VT1622"; + + pBIOSInfo->TVI2CDev = pDev; + pBIOSInfo->TVEncoder = VT1622; + pBIOSInfo->TVSave = VT162xSave; + pBIOSInfo->TVRestore = VT162xRestore; + pBIOSInfo->TVDACSense = VT1622DACSense; + pBIOSInfo->TVModeValid = VT1622ModeValid; + pBIOSInfo->TVMode = VT1622Mode; + pBIOSInfo->TVPower = VT1622Power; + pBIOSInfo->TVModes = VT1622Modes; + pBIOSInfo->TVPrintRegs = VT162xPrintRegs; + + return TRUE; + case 0x10: + xf86DrvMsg(pScrn->scrnIndex, X_PROBED, + "Detected VIA Technologies VT1622A/VT1623 TV Encoder\n"); + pDev->DevName = "VT1623"; + + pBIOSInfo->TVI2CDev = pDev; + pBIOSInfo->TVEncoder = VT1623; + pBIOSInfo->TVSave = VT162xSave; + pBIOSInfo->TVRestore = VT162xRestore; + pBIOSInfo->TVDACSense = VT1622DACSense; + pBIOSInfo->TVModeValid = VT1622ModeValid; + pBIOSInfo->TVMode = VT1622Mode; + pBIOSInfo->TVPower = VT1622Power; + pBIOSInfo->TVModes = VT1623Modes; + pBIOSInfo->TVPrintRegs = VT162xPrintRegs; + + return TRUE; + case 0x50: + xf86DrvMsg(pScrn->scrnIndex, X_PROBED, + "Detected VIA Technologies VT1625 TV Encoder\n"); +#if 0 + pDev->DevName = "VT1625"; + + ... + + return TRUE; +#else + xf86DrvMsg(pScrn->scrnIndex, X_WARNING, "VT1625 is not supported yet.\n"); + return FALSE; +#endif default: - break; + xf86DrvMsg(pScrn->scrnIndex, X_WARNING, "Unknown TV Encoder found at %s %X.\n", + pDev->pI2CBus->BusName, pDev->SlaveAddr); + return FALSE; } } |