void vSetHdmiHighBitrate(u8 fgHighBitRate) { u8 bData; MT8193_AUDIO_FUNC(); if(fgHighBitRate ==TRUE) { bData=bReadByteHdmiGRL(GRL_AOUT_BNUM_SEL); bData |= HIGH_BIT_RATE_PACKET_ALIGN; vWriteByteHdmiGRL(GRL_AOUT_BNUM_SEL, bData); udelay(100);//1ms bData=bReadByteHdmiGRL(GRL_AUDIO_CFG); bData |= HIGH_BIT_RATE; vWriteByteHdmiGRL(GRL_AUDIO_CFG, bData); } else { bData=bReadByteHdmiGRL(GRL_AOUT_BNUM_SEL); bData &= ~HIGH_BIT_RATE_PACKET_ALIGN; vWriteByteHdmiGRL(GRL_AOUT_BNUM_SEL, bData); bData=bReadByteHdmiGRL(GRL_AUDIO_CFG); bData &= ~HIGH_BIT_RATE; vWriteByteHdmiGRL(GRL_AUDIO_CFG, bData); } }
void vSetHdmiIecI2s(u8 bIn) { u8 bData; MT8193_AUDIO_FUNC(); if(bIn == SV_SPDIF) { bData=bReadByteHdmiGRL(GRL_CFG1); if((bData&CFG1_SPDIF)==0) { bData |= CFG1_SPDIF; vWriteByteHdmiGRL(GRL_CFG1, bData); } } else { bData=bReadByteHdmiGRL(GRL_CFG1); if(bData&CFG1_SPDIF) { bData &= ~CFG1_SPDIF; vWriteByteHdmiGRL(GRL_CFG1, bData); } bData=bReadByteHdmiGRL(GRL_CFG1); } }
void vHalHDCPReset(void) { u8 bTemp; MT8193_HDCP_FUNC(); if (fgHostKey()) { bTemp = HDCP_CTL_CP_RSTB | HDCP_CTL_HOST_KEY; } else { bTemp = HDCP_CTL_CP_RSTB; } vWriteByteHdmiGRL(GRL_HDCP_CTL, bTemp); for(bTemp=0; bTemp<5; bTemp++) { udelay(255); } bTemp=bReadByteHdmiGRL(GRL_HDCP_CTL); bTemp &= (~HDCP_CTL_CP_RSTB); vWriteByteHdmiGRL(GRL_HDCP_CTL, bTemp); vSetCTL0BeZero(FALSE); }
void vSetHdmiI2SChNum(u8 bChNum, u8 bChMapping) { u8 bData, bData1, bData2, bData3; MT8193_AUDIO_FUNC(); if (bChNum == 2) /* I2S 2ch */ { bData = 0x04; /* 2ch data */ bData1 = 0x50; /* data0 */ } else if ((bChNum == 3) || (bChNum == 4)) /* I2S 2ch */ { if ((bChNum == 4) && (bChMapping == 0x08)) { bData = 0x14; /* 4ch data */ } else { bData = 0x0c; /* 4ch data */ } bData1 = 0x50; /* data0 */ } else if ((bChNum == 6) || (bChNum == 5)) /* I2S 5.1ch */ { if ((bChNum == 6) && (bChMapping == 0x0E)) { bData = 0x3C; /* 6.0 ch data */ bData1 = 0x50; /* data0 */ } else { bData = 0x1C; /* 5.1ch data, 5/0ch */ bData1 = 0x50; /* data0 */ } } else if (bChNum == 8) /* I2S 5.1ch */ { bData = 0x3C; /* 7.1ch data */ bData1 = 0x50; /* data0 */ } else if (bChNum == 7) /* I2S 6.1ch */ { bData = 0x3C; /* 6.1ch data */ bData1 = 0x50; /* data0 */ } else { bData = 0x04; /* 2ch data */ bData1 = 0x50; /* data0 */ } bData2 = 0xc6; bData3 = 0xfa; vWriteByteHdmiGRL(GRL_CH_SW0, bData1); vWriteByteHdmiGRL(GRL_CH_SW1, bData2); vWriteByteHdmiGRL(GRL_CH_SW2, bData3); vWriteByteHdmiGRL(GRL_I2S_UV, bData); /* vDisableDsdConfig(); */ }
void vHDMISettingColorSpace(u8 ui1colorspace) { if (ui1colorspace == HDMI_YCBCR_444) { vWriteByteHdmiGRL(GRL_DIV_RESET, UNSWAP_YC); } else if (ui1colorspace == HDMI_YCBCR_422) { vWriteByteHdmiGRL(GRL_DIV_RESET, SWAP_YC); } else { vWriteByteHdmiGRL(GRL_DIV_RESET, UNSWAP_YC); } }
void vEnableNotice(u8 bOn) { u8 bData; MT8193_VIDEO_FUNC(); if (bOn == TRUE) { bData = bReadByteHdmiGRL(GRL_CFG2); bData |= 0x40; /* temp. solve 720p issue. to avoid audio packet jitter problem */ vWriteByteHdmiGRL(GRL_CFG2, bData); } else { bData = bReadByteHdmiGRL(GRL_CFG2); bData &= ~0x40; vWriteByteHdmiGRL(GRL_CFG2, bData); } }
void vHalHDMI_NCTS(u8 bAudioFreq, u8 bPix, u8 bDeepMode) { u8 bTemp, bData, bData1[NCTS_BYTES]; u32 u4Temp, u4NTemp=0; MT8193_AUDIO_FUNC(); MT8193_AUDIO_LOG("bAudioFreq=%d, bPix=%d, bDeepMode=%d\n", bAudioFreq, bPix, bDeepMode); bData=0; vWriteByteHdmiGRL(GRL_NCTS, bData);//YT suggest 3 dummy N-CTS vWriteByteHdmiGRL(GRL_NCTS, bData); vWriteByteHdmiGRL(GRL_NCTS, bData); for(bTemp=0; bTemp<NCTS_BYTES; bTemp++) { bData1[bTemp] = 0; } if(bDeepMode == HDMI_NO_DEEP_COLOR) { for(bTemp=0; bTemp<NCTS_BYTES; bTemp++) { if((bAudioFreq < 7) && (bPix < 9)) bData1[bTemp]= HDMI_NCTS[bAudioFreq][bPix][bTemp]; } u4NTemp = (bData1[4]<<16)|(bData1[5]<<8)|(bData1[6]);//N u4Temp = (bData1[0]<<24)|(bData1[1]<<16)|(bData1[2]<<8)|(bData1[3]);//CTS } else { for(bTemp=0; bTemp<NCTS_BYTES; bTemp++) { if((bAudioFreq < 7) && (bPix < 9)) bData1[bTemp] = HDMI_NCTS[bAudioFreq][bPix][bTemp]; } u4NTemp = (bData1[4]<<16)|(bData1[5]<<8)|(bData1[6]);//N u4Temp = (bData1[0]<<24)|(bData1[1]<<16)|(bData1[2]<<8)|(bData1[3]); if(bDeepMode == HDMI_DEEP_COLOR_10_BIT) { u4Temp = (u4Temp >> 2)*5;// (*5/4) } else if(bDeepMode == HDMI_DEEP_COLOR_12_BIT)
void vHalWriteKsvListPort(u8 *prKsvData, u8 bDevice_Count, u8 *prBstatus) { u8 bIndex; MT8193_HDCP_FUNC(); if ((bDevice_Count * 5) < KSV_BUFF_SIZE) { for (bIndex = 0; bIndex < (bDevice_Count * 5); bIndex++) { vWriteByteHdmiGRL(GRL_KSVLIST, *(prKsvData + bIndex)); } for (bIndex = 0; bIndex < 2; bIndex++) { vWriteByteHdmiGRL(GRL_KSVLIST, *(prBstatus + bIndex)); } } }
void vEnableHdmiMode(u8 bOn) { u8 bData; MT8193_DRV_FUNC(); if (bOn == TRUE) { bData = bReadByteHdmiGRL(GRL_CFG1); bData &= ~CFG1_DVI; /* enable HDMI mode */ vWriteByteHdmiGRL(GRL_CFG1, bData); } else { bData = bReadByteHdmiGRL(GRL_CFG1); bData |= CFG1_DVI; /* disable HDMI mode */ vWriteByteHdmiGRL(GRL_CFG1, bData); } }
void vDSTNormalDouble(u8 fgEnable) { u8 bData; MT8193_AUDIO_FUNC(); if (fgEnable) { bData = bReadByteHdmiGRL(GRL_AUDIO_CFG); bData |= DST_NORMAL_DOUBLE; vWriteByteHdmiGRL(GRL_AUDIO_CFG, bData); } else { bData = bReadByteHdmiGRL(GRL_AUDIO_CFG); bData &= ~DST_NORMAL_DOUBLE; vWriteByteHdmiGRL(GRL_AUDIO_CFG, bData); } }
void vEnableDSTConfig(u8 fgEnable) { u8 bData; MT8193_AUDIO_FUNC(); if (fgEnable) { bData = bReadByteHdmiGRL(GRL_AUDIO_CFG); bData |= SACD_DST; vWriteByteHdmiGRL(GRL_AUDIO_CFG, bData); } else { bData = bReadByteHdmiGRL(GRL_AUDIO_CFG); bData &= ~SACD_DST; vWriteByteHdmiGRL(GRL_AUDIO_CFG, bData); } }
void vMiAnUpdateOrFix(u8 bUpdate) { u8 bTemp; MT8193_HDCP_FUNC(); if (bUpdate == TRUE) { bTemp = bReadByteHdmiGRL(GRL_CFG1); bTemp |= CFG1_HDCP_DEBUG; vWriteByteHdmiGRL(GRL_CFG1, bTemp); } else { bTemp = bReadByteHdmiGRL(GRL_CFG1); bTemp &= ~CFG1_HDCP_DEBUG; vWriteByteHdmiGRL(GRL_CFG1, bTemp); } }
void vWriteDataHdmiGRL(u8 bAddr, u8 bCount, u8 *bVal) { u8 i; MT8193_HDCP_FUNC(); for (i = 0; i < bCount; i++) vWriteByteHdmiGRL(bAddr + i * 4, *(bVal + i)); }
void vWriteHdmiIntMask(u8 bMask) { MT8193_DRV_FUNC(); vWriteByteHdmiGRL(GRL_INT_MASK, bMask); /* INT mask */ }
void vEnableHashHardwrae(void) { u8 bData; MT8193_HDCP_FUNC(); bData = bReadByteHdmiGRL(GRL_HDCP_CTL); bData |= HDCP_CTL_SHA_EN; vWriteByteHdmiGRL(GRL_HDCP_CTL, bData); }
void MuteHDMIAudio(void) { u8 bData; MT8193_AUDIO_FUNC(); bData = bReadByteHdmiGRL(GRL_AUDIO_CFG); bData |= AUDIO_ZERO; vWriteByteHdmiGRL(GRL_AUDIO_CFG, bData); }
void vSetCTL0BeZero(u8 fgBeZero) { u8 bTemp; MT8193_VIDEO_FUNC(); if (fgBeZero == TRUE) { bTemp = bReadByteHdmiGRL(GRL_CFG1); bTemp |= (1 << 4); vWriteByteHdmiGRL(GRL_CFG1, bTemp); } else { bTemp = bReadByteHdmiGRL(GRL_CFG1); bTemp &= ~(1 << 4); vWriteByteHdmiGRL(GRL_CFG1, bTemp); } }
void vEnableIecTxRaw(void) { u8 bData; MT8193_AUDIO_FUNC(); bData = bReadByteHdmiGRL(GRL_MIX_CTRL); bData |= MIX_CTRL_FLAT; vWriteByteHdmiGRL(GRL_MIX_CTRL, bData); }
void vDisableDsdConfig(void) { u8 bData; MT8193_AUDIO_FUNC(); bData = bReadByteHdmiGRL(GRL_AUDIO_CFG); bData &= ~SACD_SEL; vWriteByteHdmiGRL(GRL_AUDIO_CFG, bData); }
void vStopAn(void) { u8 bTemp; MT8193_HDCP_FUNC(); bTemp = bReadByteHdmiGRL(GRL_HDCP_CTL); bTemp |= HDCP_CTL_AN_STOP; vWriteByteHdmiGRL(GRL_HDCP_CTL, bTemp); }
void vEnableNCTSAutoWrite(void) { u8 bData; MT8193_AUDIO_FUNC(); bData = bReadByteHdmiGRL(GRL_DIVN); bData |= NCTS_WRI_ANYTIME; /* enabel N-CTS can be written in any time */ vWriteByteHdmiGRL(GRL_DIVN, bData); }
void vEnableEncrpt(void) { u8 bTemp; MT8193_HDCP_FUNC(); bTemp = bReadByteHdmiGRL(GRL_HDCP_CTL); bTemp |= HDCP_CTL_ENC_EN; vWriteByteHdmiGRL(GRL_HDCP_CTL, bTemp); }
void UnMuteHDMIAudio(void) { BYTE bData; MT8193_AUDIO_FUNC(); bData = bReadByteHdmiGRL(GRL_AUDIO_CFG); bData &= ~AUDIO_ZERO; vWriteByteHdmiGRL(GRL_AUDIO_CFG, bData); }
void vHalWriteHashPort(u8 *prHashVBuff) { u8 bIndex; MT8193_HDCP_FUNC(); for (bIndex = 0; bIndex < 20; bIndex++) { vWriteByteHdmiGRL(GRL_REPEATER_HASH + bIndex * 4, *(prHashVBuff + bIndex)); } }
u8 fgHostKey(void) { u8 bTemp; MT8193_HDCP_FUNC(); bTemp = bReadByteHdmiGRL(GRL_HDCP_CTL); vWriteByteHdmiGRL(GRL_HDCP_CTL, bTemp | HDCP_CTL_HOST_KEY); return TRUE; }
void vEnableAuthHardware(void) { u8 bTemp; MT8193_HDCP_FUNC(); bTemp = bReadByteHdmiGRL(GRL_HDCP_CTL); bTemp |= HDCP_CTL_AUTHEN_EN; vWriteByteHdmiGRL(GRL_HDCP_CTL, bTemp); }
void vAudioPacketOff(u8 bOn) { u8 bData; MT8193_AUDIO_FUNC(); bData = bReadByteHdmiGRL(GRL_SHIFT_R2); if (bOn) bData |= 0x40; else bData &= ~0x40; vWriteByteHdmiGRL(GRL_SHIFT_R2, bData); }
u8 bCheckHDCPStatus(u8 bMode) { u8 bStatus = 0; MT8193_HDCP_FUNC(); bStatus = bReadByteHdmiGRL(GRL_HDCP_STA); bStatus &= bMode; if (bStatus) { vWriteByteHdmiGRL(GRL_HDCP_STA, bMode); return TRUE; } else { return FALSE; } }
void vHwNCTSOnOff(u8 bHwNctsOn) { u8 bData; MT8193_AUDIO_FUNC(); bData=bReadByteHdmiGRL(GRL_CTS_CTRL); if(bHwNctsOn == TRUE) bData &= ~CTS_CTRL_SOFT; else bData |= CTS_CTRL_SOFT; vWriteByteHdmiGRL(GRL_CTS_CTRL, bData); }
void vRepeaterOnOff(u8 fgIsRep) { u8 bTemp; MT8193_HDCP_FUNC(); bTemp = bReadByteHdmiGRL(GRL_HDCP_CTL); if (fgIsRep == TRUE) { bTemp |= HDCP_CTRL_RX_RPTR; } else { bTemp &= ~HDCP_CTRL_RX_RPTR; } vWriteByteHdmiGRL(GRL_HDCP_CTL, bTemp); }