u8 fgCompareRi(void) { u8 bTemp; u8 bHDCPBuf[4]; MT8193_HDCP_FUNC(); /* Read R0/ Ri from Transmitter */ /* fgI2CDataRead(HDMI_DEV_GRL, GRL_RI_0, HDCP_RI_COUNT, bHDCPBuf+HDCP_RI_COUNT); */ bReadDataHdmiGRL(GRL_RI_0, HDCP_RI_COUNT, &bHDCPBuf[HDCP_RI_COUNT]); /* Read R0'/ Ri' from Receiver */ fgDDCDataRead(RX_ID, RX_REG_RI, HDCP_RI_COUNT, bHDCPBuf); MT8193_HDCP_LOG("bHDCPBuf[0]=0x%x,bHDCPBuf[1]=0x%x,bHDCPBuf[2]=0x%x,bHDCPBuf[3]=0x%x\n", bHDCPBuf[0], bHDCPBuf[1], bHDCPBuf[2], bHDCPBuf[3]); /* compare R0 and R0' */ for (bTemp = 0; bTemp < HDCP_RI_COUNT; bTemp++) { if (bHDCPBuf[bTemp] == bHDCPBuf[bTemp + HDCP_RI_COUNT]) { continue; } else { break; } } if (bTemp == HDCP_RI_COUNT) { return TRUE; } else { return FALSE; } }
void vSendAn(void) { u8 bHDCPBuf[HDCP_AN_COUNT]; MT8193_HDCP_FUNC(); /* Step 1: issue command to general a new An value */ /* (1) read the value first */ /* (2) set An control as stop to general a An first */ vStopAn(); /* Step 2: Read An from Transmitter */ bReadDataHdmiGRL(GRL_WR_AN0, HDCP_AN_COUNT, bHDCPBuf); /* Step 3: Send An to Receiver */ fgDDCDataWrite(RX_ID, RX_REG_HDCP_AN, HDCP_AN_COUNT, bHDCPBuf); }
void vExchangeKSVs(void) { u8 bHDCPBuf[HDCP_AKSV_COUNT]; MT8193_HDCP_FUNC(); /* Step 1: read Aksv from transmitter, and send to receiver */ if (fgHostKey()) { fgDDCDataWrite(RX_ID, RX_REG_HDCP_AKSV, HDCP_AKSV_COUNT, HDMI_AKSV); } else { /* fgI2CDataRead(HDMI_DEV_GRL, GRL_RD_AKSV0, HDCP_AKSV_COUNT, bHDCPBuf); */ bReadDataHdmiGRL(GRL_RD_AKSV0, HDCP_AKSV_COUNT, bHDCPBuf); fgDDCDataWrite(RX_ID, RX_REG_HDCP_AKSV, HDCP_AKSV_COUNT, bHDCPBuf); } /* Step 4: read Bksv from receiver, and send to transmitter */ fgDDCDataRead(RX_ID, RX_REG_HDCP_BKSV, HDCP_BKSV_COUNT, bHDCPBuf); /* fgI2CDataWrite(HDMI_DEV_GRL, GRL_WR_BKSV0, HDCP_BKSV_COUNT, bHDCPBuf); */ vWriteDataHdmiGRL(GRL_WR_BKSV0, HDCP_BKSV_COUNT, bHDCPBuf); }
u8 fgCompareRi(void) { u8 bTemp; u8 bHDCPBuf[4]; MT8193_HDCP_FUNC(); // Read R0/ Ri from Transmitter //fgI2CDataRead(HDMI_DEV_GRL, GRL_RI_0, HDCP_RI_COUNT, bHDCPBuf+HDCP_RI_COUNT); bReadDataHdmiGRL(GRL_RI_0, HDCP_RI_COUNT, &bHDCPBuf[HDCP_RI_COUNT]); // Read R0'/ Ri' from Receiver fgDDCDataRead(RX_ID, RX_REG_RI, HDCP_RI_COUNT, bHDCPBuf); // compare R0 and R0' for(bTemp=0; bTemp<HDCP_RI_COUNT; bTemp++) { if(bHDCPBuf[bTemp] == bHDCPBuf[bTemp+HDCP_RI_COUNT]) { continue; } else { break; } } if(bTemp==HDCP_RI_COUNT) { return TRUE; } else { return FALSE; } }