diff --git a/software/sys_controller/it6613/HDMI_TX.c b/software/sys_controller/it6613/HDMI_TX.c index 4a393cd..9d262f0 100644 --- a/software/sys_controller/it6613/HDMI_TX.c +++ b/software/sys_controller/it6613/HDMI_TX.c @@ -16,19 +16,19 @@ extern BOOL bHDMIMode; extern BOOL bAudioEnable; BOOL ParseEDID(); -INSTANCE InitInstanceData = +INSTANCE InitInstanceData = { 0,0, //I2C_DEV, I2C_ADDR 0, //bIntType (TxCLK active, Push-Pull Mode, INT active low) 0,/* | T_MODE_CCIR656 | T_MODE_SYNCEMB | T_MODE_INDDR */ // bInputVideoSignalType - + B_AUDFMT_STD_I2S, // bOutputAudioMode, 0x00, standard i2s, rising edge to sample ws/i2s, not full packet mode REG[0xE1] - + 0,// bAudioChannelSwap B_AUD_EN_I2S0 | B_AUD_I2S | M_AUD_16BIT, // bAudioChannelEnable, 0x01, REG[0xE0], defined in it6613_drv.h AUDFS_48KHz, //0, //bAudFs, 0, // TMDSClock - TRUE,//bAuthenticated + TRUE,//bAuthenticated TRUE,// bHDMIMode FALSE,// bIntPOL FALSE // bHPD @@ -38,19 +38,19 @@ bool HDMITX_ChipVerify(void){ bool bPass = FALSE; alt_u8 szID[4]; int i; - - + + for(i=0;i<4;i++) szID[i] = HDMITX_ReadI2C_Byte(i); - + // if (szID[0] == 0x00 && szID[1] == 0xCA && szID[1] == 0x13 && szID[1] == 0x06) szID[0] ??? if ((szID[1] == 0xCA && szID[2] == 0x13 && szID[3] == 0x06) || (szID[1] == 0xCA && szID[2] == 0x13 && szID[3] == 0x16)){ bPass = TRUE; - printf("TX Chip Revision ID: %d\n", szID[0]); + printf("TX Chip Revision ID: %d\n", szID[0]); }else{ - printf("NG, Read TX Chip ID:%02X%02X%02X%02Xh (expected:00CA1306h)\n", szID[0], szID[1], szID[2], szID[3]); + printf("NG, Read TX Chip ID:%02X%02X%02X%02Xh (expected:00CA1306h)\n", szID[0], szID[1], szID[2], szID[3]); } - + return bPass; } @@ -62,19 +62,19 @@ bool HDMITX_Init(void){ OS_PRINTF("Failed to find IT6613 HDMI-TX Chip.\n"); bSuccess = FALSE; //return 0; - } + } HDMITX_InitInstance(&InitInstanceData) ; InitIT6613() ; - - - return bSuccess; -} + + + return bSuccess; +} bool HDMITX_HPD(void){ if (TX_HDP) return TRUE; - return FALSE; + return FALSE; } @@ -85,10 +85,10 @@ void HDMITX_SetAVIInfoFrame(alt_u8 VIC, alt_u8 OutputColorMode, bool b16x9, bool OS_PRINTF("HDMITX_SetAVIInfoFrame: VIC=%d, ColorMode=%d, Aspect-Ratio=%s, ITU709=%s, ITC=%s, pixelrep=%u\n", VIC, OutputColorMode, b16x9?"16:9":"4:3", ITU709?"Yes":"No", ITC?"Yes":"No", pixelrep); - AviInfo.pktbyte.AVI_HB[0] = AVI_INFOFRAME_TYPE|0x80 ; - AviInfo.pktbyte.AVI_HB[1] = AVI_INFOFRAME_VER ; - AviInfo.pktbyte.AVI_HB[2] = AVI_INFOFRAME_LEN ; - + AviInfo.pktbyte.AVI_HB[0] = AVI_INFOFRAME_TYPE|0x80 ; + AviInfo.pktbyte.AVI_HB[1] = AVI_INFOFRAME_VER ; + AviInfo.pktbyte.AVI_HB[2] = AVI_INFOFRAME_LEN ; + switch(OutputColorMode) { case F_MODE_YUV444: @@ -128,7 +128,7 @@ void HDMITX_SetAVIInfoFrame(alt_u8 VIC, alt_u8 OutputColorMode, bool b16x9, bool void HDMITX_ChangeVideoTiming(int VIC){ int OutputVideoTiming = VIC; int HdmiColorMode; - + switch(bOutputColorMode) { case F_MODE_YUV444: @@ -141,15 +141,15 @@ void HDMITX_ChangeVideoTiming(int VIC){ default: HdmiColorMode = HDMI_RGB444; break ; - } - - HDMITX_ChangeDisplayOption(OutputVideoTiming, HdmiColorMode); // just modify variable. Take effect when HDMITX_SetOutput is called in HDMITX_DevLoopProc + } + + HDMITX_ChangeDisplayOption(OutputVideoTiming, HdmiColorMode); // just modify variable. Take effect when HDMITX_SetOutput is called in HDMITX_DevLoopProc } void HDMITX_ChangeVideoTimingAndColor(int VIC, COLOR_TYPE Color){ int OutputVideoTiming = VIC; int HdmiColorMode; - + switch(Color) { case COLOR_YUV444: @@ -162,12 +162,12 @@ void HDMITX_ChangeVideoTimingAndColor(int VIC, COLOR_TYPE Color){ default: HdmiColorMode = HDMI_RGB444; break ; - } - HDMITX_ChangeDisplayOption(OutputVideoTiming, HdmiColorMode); + } + HDMITX_ChangeDisplayOption(OutputVideoTiming, HdmiColorMode); } void HDMITX_DisableVideoOutput(void){ - DisableVideoOutput(); + DisableVideoOutput(); } void HDMITX_EnableVideoOutput(void){ @@ -183,7 +183,7 @@ void HDMITX_SetColorSpace(COLOR_TYPE InputColor, COLOR_TYPE OutputColor){ bool HDMITX_IsSinkSupportYUV444(void){ bool bSupport = FALSE; - if (RxCapability.Valid && RxCapability.ValidHDMI && RxCapability.ValidCEA && + if (RxCapability.Valid && RxCapability.ValidHDMI && RxCapability.ValidCEA && (RxCapability.VideoMode & CEA_SUPPORT_YUV444)) bSupport = TRUE; return bSupport; @@ -191,7 +191,7 @@ bool HDMITX_IsSinkSupportYUV444(void){ bool HDMITX_IsSinkSupportYUV422(void){ bool bSupport = FALSE; - if (RxCapability.Valid && RxCapability.ValidHDMI && RxCapability.ValidCEA && + if (RxCapability.Valid && RxCapability.ValidHDMI && RxCapability.ValidCEA && (RxCapability.VideoMode & CEA_SUPPORT_YUV422)) bSupport = TRUE; return bSupport; @@ -199,19 +199,19 @@ bool HDMITX_IsSinkSupportYUV422(void){ bool HDMITX_IsSinkSupportColorDepth36(void){ bool bSupport = FALSE; - if (RxCapability.Valid && RxCapability.ValidHDMI && RxCapability.ValidCEA && + if (RxCapability.Valid && RxCapability.ValidHDMI && RxCapability.ValidCEA && RxCapability.dc.info.DC_36Bit) bSupport = TRUE; - return bSupport; + return bSupport; } bool HDMITX_IsSinkSupportColorDepth30(void){ bool bSupport = FALSE; - if (RxCapability.Valid && RxCapability.ValidHDMI && RxCapability.ValidCEA && + if (RxCapability.Valid && RxCapability.ValidHDMI && RxCapability.ValidCEA && RxCapability.dc.info.DC_30Bit) bSupport = TRUE; - return bSupport; + return bSupport; } void HDMITX_SetOutputColorDepth(int ColorDepth){ @@ -228,36 +228,36 @@ bool HDMITX_DevLoopProc() // Richard CheckHDMI(&HPD,&HPDChange) ; CheckHDMITX(&HPD,&HPDChange) ; - + if (HPD == PreHPD && HPDChange) // richard add return FALSE; - - TX_HDP = HPD; - PreHPD = HPD; - PreHPDChange = HPDChange; - + + TX_HDP = HPD; + PreHPD = HPD; + PreHPDChange = HPDChange; + if( HPDChange ) { - - + + OS_PRINTF("HPDChange\n"); if( HPD ) { OS_PRINTF("HPD=ON\n"); RxCapability.Valid = ParseEDID() ; - //bOutputColorMode = F_MODE_YUV444; //F_MODE_RGB444; // richard node. users can change color space here according to HDMI sink - + //bOutputColorMode = F_MODE_YUV444; //F_MODE_RGB444; // richard node. users can change color space here according to HDMI sink + if( RxCapability.Valid && RxCapability.ValidHDMI ) { OS_PRINTF("HDMI Display found\n"); bHDMIMode = TRUE ; - + if(RxCapability.VideoMode & (1<<6)) { bAudioEnable = TRUE ; } - -#if 0 // richard, don't care edid, the output always RGB444 + +#if 0 // richard, don't care edid, the output always RGB444 if( RxCapability.VideoMode & (1<<5)) { bOutputColorMode &= ~F_MODE_CLRMOD_MASK ; @@ -268,17 +268,17 @@ bool HDMITX_DevLoopProc() bOutputColorMode &= ~F_MODE_CLRMOD_MASK ; bOutputColorMode |= F_MODE_YUV422 ; } -#endif +#endif } else if (!RxCapability.Valid) { OS_PRINTF("Failed to read EDID\n"); - + // enable it when edid fail bHDMIMode = TRUE ; bAudioEnable = TRUE ; - } - else + } + else { OS_PRINTF("Invalid HDMI Display\n"); bHDMIMode = FALSE ; @@ -287,7 +287,7 @@ bool HDMITX_DevLoopProc() OS_PRINTF("HDMITX_SetOutput\n"); //HDMITX_SetOutput() ; - + } else { @@ -308,7 +308,7 @@ bool HDMITX_DevLoopProc() HDMITX_SetOutput() ; } } - + return HPDChange; } @@ -339,3 +339,26 @@ void HDMITX_SetAudioInfoFrame(BYTE bAudioDwSampling) EnableAudioInfoFrame(TRUE, (BYTE *) &AudioInfo); } + +void HDMITX_SetHDRInfoFrame(BYTE HDR_TF) +{ + int i; + HDR_InfoFrame HDRInfo; + + HDRInfo.info.Type = HDR_INFOFRAME_TYPE; + HDRInfo.info.Ver = HDR_INFOFRAME_VER; + HDRInfo.info.Len = HDR_INFOFRAME_LEN; + + HDRInfo.info.TF = HDR_TF; + + for (i=1; i31000 && SampleFreq<=38050 ) { Instance[0].bAudFs = AUDFS_32KHz ; @@ -1776,16 +1793,16 @@ AutoAdjustAudio() Instance[0].bAudFs = AUDFS_192KHz ; fs = AUDFS_192KHz ;; } - else + else { Instance[0].bAudFs = AUDFS_OTHER; fs = AUDFS_OTHER;; } // bPendingAdjustAudioFreq = FALSE ; - + SetNCTS(Instance[0].TMDSClock, Instance[0].bAudFs) ; // set N, CTS by new generated clock. - + Switch_HDMITX_Bank(1) ; // adjust the new fs in channel status registers HDMITX_WriteI2C_Byte(REG_TX_AUDCHST_CA_FS,0x00|fs) ; // choose clock fs = ~fs ; // OFS is the one's complement of FS @@ -1793,7 +1810,7 @@ AutoAdjustAudio() uc &= 0xF ; uc |= fs << 4 ; HDMITX_WriteI2C_Byte(REG_TX_AUDCHST_OFS_WL,uc) ; - + Switch_HDMITX_Bank(0) ; } @@ -1994,7 +2011,7 @@ AbortDDC() { break ; // success } - + if( uc & (B_DDC_NOACK|B_DDC_WAITBUS|B_DDC_ARBILOSE) ) { ErrorF("AbortDDC Fail by reg16=%02X\n",uc) ; @@ -2100,12 +2117,12 @@ ReadEDID(BYTE *pData,BYTE bSegment,BYTE offset,SHORT Count) for(TimeOut = 0 ; TimeOut < 200 ; TimeOut++) { ucdata = HDMITX_ReadI2C_Byte(REG_TX_DDC_STATUS) ; - + if(ucdata&B_DDC_DONE) { - break ; + break ; } - + if((ucdata & B_DDC_ERROR)||(HDMITX_ReadI2C_Byte(REG_TX_INT_STAT1) & B_INT_DDC_BUS_HANG)) { ErrorF("Called AboutDDC()\n") ; @@ -2458,14 +2475,14 @@ HDCP_Authenticate() HDCP_GetBKSV(BKSV) ; ErrorF("BKSV %02X %02X %02X %02X %02X\n",BKSV[0],BKSV[1],BKSV[2],BKSV[3],BKSV[4]) ; - + for(TimeOut = 0, ucdata = 0 ; TimeOut < 5 ; TimeOut ++) { ucdata += countbit(BKSV[TimeOut]) ; } if( ucdata != 20 ) return ER_FAIL ; - - + + #ifdef SUPPORT_REVOKE_KSV HDCP_VerifyRevocationList(SRM1,BKSV,&revoked) ; if(revoked) @@ -2513,7 +2530,7 @@ HDCP_Authenticate() { HDCP_Auth_Fire(); // wait for status ; - + for(TimeOut = 250 ; TimeOut > 0 ; TimeOut --) { DelayMS(5) ; // delay 1ms @@ -2525,7 +2542,7 @@ HDCP_Authenticate() Instance[0].bAuthenticated = TRUE ; break ; } - + ucdata = HDMITX_ReadI2C_Byte(REG_TX_INT_STAT2) ; if(ucdata & B_INT_AUTH_FAIL) { @@ -2616,12 +2633,12 @@ HDCP_GetKSVList(BYTE *pKSVList,BYTE cDownStream) { BYTE TimeOut = 100 ; BYTE ucdata ; - + if(cDownStream == 0 || pKSVList == NULL) { return ER_FAIL ; } - + HDMITX_WriteI2C_Byte(REG_TX_DDC_MASTER_CTRL,B_MASTERHOST) ; HDMITX_WriteI2C_Byte(REG_TX_DDC_HEADER,0x74) ; HDMITX_WriteI2C_Byte(REG_TX_DDC_REQOFF,0x43) ; @@ -2667,13 +2684,13 @@ HDCP_GetVr(BYTE *pVr) { BYTE TimeOut ; BYTE ucdata ; - + if(pVr == NULL) { // richard return NULL ; return ER_FAIL; } - + HDMITX_WriteI2C_Byte(REG_TX_DDC_MASTER_CTRL,B_MASTERHOST) ; HDMITX_WriteI2C_Byte(REG_TX_DDC_HEADER,0x74) ; HDMITX_WriteI2C_Byte(REG_TX_DDC_REQOFF,0x20) ; @@ -2713,9 +2730,9 @@ HDCP_GetVr(BYTE *pVr) pVr[TimeOut*4+2] = (ULONG)HDMITX_ReadI2C_Byte(REG_TX_SHA_RD_BYTE2) ; pVr[TimeOut*4+1] = (ULONG)HDMITX_ReadI2C_Byte(REG_TX_SHA_RD_BYTE3) ; pVr[TimeOut*4] = (ULONG)HDMITX_ReadI2C_Byte(REG_TX_SHA_RD_BYTE4) ; - ErrorF("V' = %02X %02X %02X %02X\n",pVr[TimeOut*4],pVr[TimeOut*4+1],pVr[TimeOut*4+2],pVr[TimeOut*4+3]) ; + ErrorF("V' = %02X %02X %02X %02X\n",pVr[TimeOut*4],pVr[TimeOut*4+1],pVr[TimeOut*4+2],pVr[TimeOut*4+3]) ; } - + return ER_SUCCESS ; } @@ -2728,7 +2745,7 @@ HDCP_GetM0(BYTE *pM0) { return ER_FAIL ; } - + HDMITX_WriteI2C_Byte(REG_TX_SHA_SEL,5) ; // read m0[31:0] from reg51~reg54 pM0[0] = HDMITX_ReadI2C_Byte(REG_TX_SHA_RD_BYTE1) ; pM0[1] = HDMITX_ReadI2C_Byte(REG_TX_SHA_RD_BYTE2) ; @@ -2764,7 +2781,7 @@ void SHATransform(ULONG * h) { LONG t; - + for (t = 16; t < 80; t++) { ULONG tmp = w[t - 3] ^ w[t - 8] ^ w[t - 14] ^ w[t - 16]; w[t] = rol(tmp,1); @@ -2787,7 +2804,7 @@ void SHATransform(ULONG * h) h[2] = rol(h[1],30); h[1] = h[0]; h[0] = tmp; - + } for (t = 20; t < 40; t++) { ULONG tmp = rol(h[0],5) + (h[1] ^ h[2] ^ h[3]) + h[4] + w[t] + 0x6ed9eba1; @@ -2841,8 +2858,8 @@ void SHA_Simple(void *p,LONG len,BYTE *output) int i, t ; ULONG c ; char *pBuff = p ; - - + + for( i = 0 ; i < len ; i++ ) { t = i/4 ; @@ -2867,14 +2884,14 @@ void SHA_Simple(void *p,LONG len,BYTE *output) w[t] = 0 ; } w[15] = len*8 ; - + for( t = 0 ; t< 16 ; t++ ) { printf("w[%2d] = %08lX\n",t,w[t]) ; } SHATransform(sha) ; - + for( i = 0 ; i < 5 ; i++ ) { output[i*4] = (BYTE)((sha[i]>>24)&0xFF) ; @@ -2888,7 +2905,7 @@ static SYS_STATUS HDCP_CheckSHA(BYTE pM0[],USHORT BStatus,BYTE pKSVList[],int cDownStream,BYTE Vr[]) { int i,n ; - + for(i = 0 ; i < cDownStream*5 ; i++) { SHABuff[i] = pKSVList[i] ; @@ -2926,7 +2943,7 @@ HDCP_CheckSHA(BYTE pM0[],USHORT BStatus,BYTE pKSVList[],int cDownStream,BYTE Vr[ { printf(" %02X",Vr[i]) ; } - + for(i = 0 ; i < 20 ; i++) { if(V[i] != Vr[i]) @@ -2941,7 +2958,7 @@ static SYS_STATUS HDCP_Authenticate_Repeater() { BYTE uc ; - #ifdef SUPPORT_DSSSHA + #ifdef SUPPORT_DSSSHA BYTE revoked ; int i ; #else @@ -2978,7 +2995,7 @@ HDCP_Authenticate_Repeater() ////////////////////////////////////// // Authenticate Fired ////////////////////////////////////// - + HDCP_GetBCaps(&BCaps,&BStatus) ; DelayMS(2); HDCP_Auth_Fire(); @@ -3038,7 +3055,7 @@ HDCP_Authenticate_Repeater() { ErrorF("Wait KSV FIFO Ready %d\n",TimeOut) ; } - + if(HDCP_GetBCaps(&BCaps,&BStatus) == ER_FAIL) { ErrorF("Get BCaps fail\n") ; @@ -3061,17 +3078,17 @@ HDCP_Authenticate_Repeater() } ErrorF("Wait timeout = %d\n",TimeOut) ; - + ClearDDCFIFO() ; GenerateDDCSCLK() ; cDownStream = (BStatus & M_DOWNSTREAM_COUNT) ; - + if(cDownStream == 0 || cDownStream > 6 || BStatus & (B_MAX_CASCADE_EXCEEDED|B_DOWNSTREAM_OVER)) { ErrorF("Invalid Down stream count,fail\n") ; goto HDCP_Repeater_Fail ; } - + if(HDCP_GetKSVList(KSVList,cDownStream) == ER_FAIL) { @@ -3087,38 +3104,38 @@ HDCP_Authenticate_Repeater() uc += countbit(KSVList[i*5+TimeOut]) ; } if( uc != 20 ) revoked = TRUE ; - #ifdef SUPPORT_REVOKE_KSV + #ifdef SUPPORT_REVOKE_KSV HDCP_VerifyRevocationList(SRM1,&KSVList[i*5],&revoked) ; #endif if(revoked) { - ErrorF("KSVFIFO[%d] = %02X %02X %02X %02X %02X is revoked\n",i,KSVList[i*5],KSVList[i*5+1],KSVList[i*5+2],KSVList[i*5+3],KSVList[i*5+4]) ; + ErrorF("KSVFIFO[%d] = %02X %02X %02X %02X %02X is revoked\n",i,KSVList[i*5],KSVList[i*5+1],KSVList[i*5+2],KSVList[i*5+3],KSVList[i*5+4]) ; goto HDCP_Repeater_Fail ; } } - + if(HDCP_GetVr(Vr) == ER_FAIL) { - goto HDCP_Repeater_Fail ; + goto HDCP_Repeater_Fail ; } if(HDCP_GetM0(M0) == ER_FAIL) { goto HDCP_Repeater_Fail ; } - + // do check SHA if(HDCP_CheckSHA(M0,BStatus,KSVList,cDownStream,Vr) == ER_FAIL) { goto HDCP_Repeater_Fail ; } - - + + HDCP_ResumeRepeaterAuthenticate() ; Instance[0].bAuthenticated = TRUE ; return ER_SUCCESS ; - + HDCP_Repeater_Fail: HDCP_CancelRepeaterAuthenticate() ; return ER_FAIL ; @@ -3388,6 +3405,38 @@ SetAudioInfoFrame(Audio_InfoFrame *pAudioInfoFrame) return ER_SUCCESS ; } +static SYS_STATUS +SetHDRInfoFrame(HDR_InfoFrame *pHDRInfoFrame) +{ + int i ; + BYTE ucData ; + + if(!pHDRInfoFrame) + { + return ER_FAIL ; + } + + Switch_HDMITX_Bank(1) ; + + HDMITX_WriteI2C_Byte(REG_TX_PKT_HB00, (0x80+pHDRInfoFrame->info.Type)); + HDMITX_WriteI2C_Byte(REG_TX_PKT_HB01, pHDRInfoFrame->info.Ver); + HDMITX_WriteI2C_Byte(REG_TX_PKT_HB02, pHDRInfoFrame->info.Len); + + for(i = 0; i < HDR_INFOFRAME_LEN ; i++) + HDMITX_WriteI2C_Byte(REG_TX_PKT_PB01+i, pHDRInfoFrame->pktbyte.HDR_DB[i]); + + for(i = 0,ucData = 0 ; i< HDR_INFOFRAME_LEN ; i++) + { + ucData -= pHDRInfoFrame->pktbyte.HDR_DB[i] ; + } + ucData -= 0x80+HDR_INFOFRAME_VER+HDR_INFOFRAME_TYPE+HDR_INFOFRAME_LEN ; + HDMITX_WriteI2C_Byte(REG_TX_PKT_PB00, ucData); + + Switch_HDMITX_Bank(0) ; + ENABLE_NULL_PKT(); + return ER_SUCCESS ; +} + ////////////////////////////////////////////////////////////////////// // Function: SetSPDInfoFrame() // Parameter: pSPDInfoFrame - the pointer to HDMI SPD Infoframe ucData diff --git a/software/sys_controller/it6613/it6613_drv.h b/software/sys_controller/it6613/it6613_drv.h index efdfca2..36e297b 100644 --- a/software/sys_controller/it6613/it6613_drv.h +++ b/software/sys_controller/it6613/it6613_drv.h @@ -277,7 +277,7 @@ #define B_AFE_DRV_PDRXDET (1<<2) #define B_AFE_DRV_TERMON (1<<1) #define B_AFE_DRV_ENCAL (1<<0) - + #define REG_TX_AFE_XP_CTRL 0x62 #define B_AFE_XP_GAINBIT (1<<7) #define B_AFE_XP_PWDPLL (1<<6) @@ -287,7 +287,7 @@ #define B_AFE_XP_PWDI (1<<2) #define B_AFE_XP_DEI (1<<1) #define B_AFE_XP_DER (1<<0) - + #define REG_TX_AFE_ISW_CTRL 0x63 #define B_AFE_RTERM_SEL (1<<7) #define B_AFE_IP_BYPASS (1<<6) @@ -296,7 +296,7 @@ #define B_AFE_DRV_ISWK 7 #define REG_TX_AFE_IP_CTRL 0x64 - + #define B_AFE_IP_GAINBIT (1<<7) #define B_AFE_IP_PWDPLL (1<<6) #define M_AFE_IP_CKSEL (3<<4) @@ -315,15 +315,15 @@ #define M_AFE_DRV_VSW (3<<2) #define B_AFE_RING_SLOW (1<<1) #define B_AFE_RING_FAST (1<<0) -#define REG_TX_AFE_TEST 0x66 +#define REG_TX_AFE_TEST 0x66 #define B_AFE_AFE_ENTEST (1<<6) #define B_AFE_AFE_ENBIST (1<<5) #define M_AFE_CAL_RTERM_MANUAL 0x1F -#define REG_TX_AFE_LFSR 0x67 +#define REG_TX_AFE_LFSR 0x67 #define B_AFE_AFELFSR_VAL (1<<7) #define B_AFE_DIS_AFELFSR (1<<6) #define M_AFE_RTERM_VAOUE 0xF - + // //#define REG_TX_AFE_DRV_CTRL 0x61 // #define M_AFE_DRV_SR (3<<2) @@ -448,7 +448,7 @@ #define B_BLUE_SCR_MUTE (1<<1) #define B_NODEF_PHASE (1<<2) #define B_PHASE_RESYNC (1<<3) - + #define O_COLOR_DEPTH 4 #define M_COLOR_DEPTH 7 #define B_COLOR_DEPTH_MASK (M_COLOR_DEPTH<