📄 dvhdmirx.c
字号:
outParam->EncryptionSts = 0;
}
} else {
// 嫮惂儕僙僢僩幚峴
_HdmiRxVdExtReset(DV_HDMIRX_DEF_DEV_0);
HdmiRxDrvErrCatch("_dvHdmiRxR8J66030FTGetStsReg0 failed %d\n", ret);
return ret;
}
break;
case DV_HDMIRX_DEF_DEV_1:
// 奜晅偗僨僶僀僗 弶婜壔張棟偼偙偙偵幚憰
ret = DVHDMI_E_DEV;
break;
default :
ret = DVHDMI_E_INVAL;
break;
}
return ret;
}
//*******************************************************************
//! @brief HDMI Rx Virtual Drv HDCP忬懺庢摼
//! @retval 張棟寢壥
//! @param DevNo(I)丗僨僶僀僗斣崋<BR>
//! @param Sts(O) 丗HDCP忬懺<BR>
//! @note <BR>
//! @attention <BR>
//! @author Y.Takeuchi
//! @date 2007/5/30
//*******************************************************************
IW _HdmiRxGetHdcpSts(UB DevNo, UB* Sts)
{
IW ret = HDMIDRV_OK;
UB bsts_reg[3];
switch (DevNo) {
case DV_HDMIRX_DEF_DEV_0:
*Sts = 0xFF;
ret = _dvHdmiRxR8J66030FTGetBStsReg(bsts_reg, sizeof(bsts_reg));
if (ret == HDMIDRV_OK) {
/* #AUTH_FAILED_MUTE CHG S 2007/10/29 */
if (bsts_reg[2] & 0x20) {
/* #AUTH_FAILED_MUTE CHG E 2007/10/29 */
// HDCP 旕奐巒忬懺
*Sts = DV_HDMIRX_DEF_HDCP_NOT_START;
} else {
// HDCP 奐巒忬懺
*Sts = DV_HDMIRX_DEF_HDCP_START;
}
}
break;
case DV_HDMIRX_DEF_DEV_1:
// 奜晅偗僨僶僀僗 弶婜壔張棟偼偙偙偵幚憰
ret = DVHDMI_E_DEV;
break;
default :
ret = DVHDMI_E_INVAL;
break;
}
}
//*******************************************************************
//! @brief HDMI Rx Virtual Drv 搑愨帪娫庢摼
//! @retval 張棟寢壥
//! @param DevNo(I)丗僨僶僀僗斣崋<BR>
//! @note <BR>
//! @attention <BR>
//! @author Y.Takeuchi
//! @date 2007/3/19
//*******************************************************************
IW _HdmiRxVdGetDiscriptionTime(UB DevNo, UB Type, UW * Time)
{
IW ret = HDMIDRV_OK;
switch (DevNo) {
case DV_HDMIRX_DEF_DEV_0:
switch (Type) {
case DV_HDMIRX_DEF_DESCRIPTION_VIDEO:
// 塮憸搑愨帪娫愝掕
*Time = gHdmiRxDrvConfigTbl.DescriptionVideoTime;
break;
case DV_HDMIRX_DEF_DESCRIPTION_AUDIO:
// 壒惡搑愨帪娫愝掕
*Time = gHdmiRxDrvConfigTbl.DescriptionAudioTime;
break;
case DV_HDMIRX_DEF_DESCRIPTION_AUTH:
// 擣徹搑愨帪娫愝掕
*Time = gHdmiRxDrvConfigTbl.DescriptionAuthTime;
break;
case DV_HDMIRX_DEF_DESCRIPTION_LINKON:
*Time = gHdmiRxDrvConfigTbl.DescriptionHpTime;
break;
default :
ret = DVHDMI_E_INVAL;
break;
}
break;
case DV_HDMIRX_DEF_DEV_1:
// 奜晅偗僨僶僀僗 弶婜壔張棟偼偙偙偵幚憰
ret = DVHDMI_E_DEV;
break;
default :
ret = DVHDMI_E_INVAL;
break;
}
return ret;
}
//*******************************************************************
//! @brief HDMI Rx Virtual Drv 僨僶僀僗堎忢敾掕
//! @retval 張棟寢壥
//! @param DevNo(I)丗僨僶僀僗斣崋<BR>
//! @param outParam(O)丗僨僶僀僗忬懺<BR>
//! @note <BR>
//! @attention <BR>
//! @author Y.Takeuchi
//! @date 2007/3/19
//*******************************************************************
IW _HdmiRxVdHealthCheck(UB DevNo, THdmiRxDrvHealthSts* outParam)
{
IW ret = HDMIDRV_OK;
// ToDo
// 僨僶僀僗堎忢敾掕偼偙偙偱峴偆
outParam->DevSts = 0x00;
return ret;
}
/* #AV_MUTE ADD S 2007/11/07 Y.Takeuchi */
//*******************************************************************
//! @brief HDMI Rx Virtual Drv AVMUTE忬懺僋儕傾
//! @retval 張棟寢壥
//! @param DevNo(I)丗僨僶僀僗斣崋<BR>
//! @note <BR>
//! @attention <BR>
//! @author Y.Takeuchi
//! @date 07/11/05
//*******************************************************************
IW _HdmiRxVdClearAVMUTE(UB DevNo)
{
IW ret;
ret = _dvHdmiRxR8J66030FTClearAVMUTE();
return ret;
}
//*******************************************************************
//! @brief HDMI Rx Virtual Drv AVMUTE忬懺庢摼
//! @retval 張棟寢壥
//! @param DevNo(I)丗僨僶僀僗斣崋<BR>
//! @param AvMute(O)丗AVMUTE忬懺<BR>
//! @note <BR>
//! @attention <BR>
//! @author Y.Takeuchi
//! @date 07/11/05
//*******************************************************************
IW _HdmiRxVdGetAVMUTE(UB DevNo, UB* AvMute)
{
IW ret;
// 僗僥乕僞僗儗僕僗僞0傪撉崬傒
ret = _dvHdmiRxR8J66030FTGetStsReg0(AvMute);
*AvMute &= 0x20;
*AvMute = *AvMute >> 5;
return ret;
}
/* #AV_MUTE ADD E 2007/11/07 Y.Takeuchi */
//*******************************************************************
//! @brief HDMI Rx Virtual Drv 僺僋僙儖廃攇悢庢摼
//! @retval 張棟寢壥
//! @param DevNo(I)丗僨僶僀僗斣崋<BR>
//! @param PixelFreq(O)丗僺僋僙儖廃攇悢<BR>
//! @note <BR>
//! @attention <BR>
//! @author Y.Takeuchi
//! @date 07/05/08
//*******************************************************************
IW _HdmiRxVdGetPixelFreq(UB DevNo, UB* PixelFreq)
{
IW ret;
// 僗僥乕僞僗儗僕僗僞0傪撉崬傒
ret = _dvHdmiRxR8J66030FTGetStsReg0(PixelFreq);
// 忋埵2bit偺僺僋僙儖廃攇悢傪庢摼
*PixelFreq &= 0xC0;
*PixelFreq = *PixelFreq >> 6;
return ret;
}
//*******************************************************************
//! @brief HDMI Rx Virtual Drv 僺僋僙儖廃攇悢愝掕
//! @retval 張棟寢壥
//! @param DevNo(I)丗僨僶僀僗斣崋<BR>
//! @param PixelFreq(I)丗僺僋僙儖廃攇悢<BR>
//! @note <BR>
//! @attention <BR>
//! @author Y.Takeuchi
//! @date 07/05/08
//*******************************************************************
IW _HdmiRxVdSetPixelFreq(UB DevNo, UB PixelFreq)
{
IW ret;
PixelFreq = PixelFreq << 6;
PixelFreq &= 0xC0;
ret = _dvHdmiRxR8J66030FTSetPixelFreq(PixelFreq);
return ret;
}
//*******************************************************************
//! @brief HDMI Rx Virtual Drv 塮憸宱楬愝掕
//! @retval 張棟寢壥
//! @param DevNo(I)丗僨僶僀僗斣崋<BR>
//! @param inParam(I)丗塮憸宱楬愝掕忣曬<BR>
//! @note <BR>
//! @attention <BR>
//! @author Y.Takeuchi
//! @date 2007/3/19
//*******************************************************************
IW _HdmiRxVdSetVideoPath(UB DevNo, THdmiRxDrvVideoPath* inParam)
{
IW ret = HDMIDRV_OK;
UB video_path = 0x00;
switch (DevNo) {
case DV_HDMIRX_DEF_DEV_0:
#if 0
// 720(1440) X 480i帪偺Replication偺愝掕抣偼1偲側傞偑Disp懁偱13.5MHz
// 偺720偱偼側偔丄27MHz偺1440偲埖偆偨傔PixelReplication偺愝掕抣傪0偲偡傞
// EDID偱嫋壜偟偰偄傞塮憸偵偰Replication偑0埲奜偺塮憸僼僅乕儅僢僩偼480i
// 偺傒偱偁傞偨傔杮娭悢偵偰忢帪0傪愝掕偡傞
//inParam->PixelReplication = 0;
#endif
// 擖椡宱楬愝掕
if (inParam->InColorFormat == DV_HDMIRX_DEF_YCC_422) {
video_path |= 0x40; // 4:2:2 擖椡
video_path |= 0x10; // YCC 擖椡
} else if (inParam->InColorFormat == DV_HDMIRX_DEF_YCC_444) {
video_path |= 0x10; // YCC 擖椡
} else if (inParam->InColorFormat == DV_HDMIRX_DEF_RGB_444) {
// RGB 4:4:4偺応崌偼壗傕側偟
} else {
ret = DVHDMI_E_INVAL;
break;
}
// 弌椡宱楬愝掕
if (inParam->OutColorFormat == DV_HDMIRX_DEF_YCC_422) {
// YCbCr 4:2:2 偺応崌傕4:4:4偱弌椡偡傞
//video_path |= 0x80; // 4:2:2 弌椡
video_path |= 0x20; // YCC 弌椡
} else if (inParam->OutColorFormat == DV_HDMIRX_DEF_YCC_444) {
video_path |= 0x20; // YCC 弌椡
} else if (inParam->OutColorFormat == DV_HDMIRX_DEF_RGB_444) {
// RGB 4:4:4偺応崌偼壗傕側偟
} else {
ret = DVHDMI_E_INVAL;
break;
}
// Range 愝掕
video_path |= (inParam->YccRange << 3);
// Colorimetry 愝掕
if (inParam->Colorimetry == DV_HDMIRX_DEF_709) {
video_path |= 0x04; // ITU-R BT.709
}
// Pixel Reprication 愝掕
video_path |= (inParam->PixelReplication) & 0x03;
// 塮憸宱楬愝掕
ret = _dvHdmiRxR8J66030FTSetVideoPath(video_path);
if (ret == HDMIDRV_OK) {
// 娗棟忣曬偺塮憸宱楬峏怴
memcpy(&gHdmiRxDrvSysInfo.VideoPath[DV_HDMIRX_DEF_DEV_0], inParam, sizeof(THdmiRxDrvVideoPath));
}
break;
case DV_HDMIRX_DEF_DEV_1:
// 奜晅偗僨僶僀僗 弶婜壔張棟偼偙偙偵幚憰
ret = DVHDMI_E_DEV;
break;
default :
ret = DVHDMI_E_INVAL;
break;
}
return ret;
}
//*******************************************************************
//! @brief HDMI Rx Virtual Drv 塮憸宱楬僷儔儊乕僞敾掕
//! @retval 張棟寢壥
//! @param DevNo(I)丗僨僶僀僗斣崋<BR>
//! @param inParam(I)丗塮憸宱楬愝掕忣曬<BR>
//! @note <BR>
//! @attention <BR>
//! @author Y.Takeuchi
//! @date 2007/3/19
//*******************************************************************
IW _HdmiRxVdSetVideoPathParamCheck(UB DevNo, THdmiRxDrvVideoPath* inParam)
{
IW ret = HDMIDRV_OK;
switch (DevNo) {
case DV_HDMIRX_DEF_DEV_0:
// 怓怺搙
if (inParam->ColorDepth != 0) {
ret = DVHDMI_E_INVAL;
}
break;
case DV_HDMIRX_DEF_DEV_1:
// 奜晅偗僨僶僀僗 弶婜壔張棟偼偙偙偵幚憰
ret = DVHDMI_E_DEV;
break;
default :
ret = DVHDMI_E_INVAL;
break;
}
return ret;
}
//*******************************************************************
//! @brief HDMI Rx Virtual Drv 塮憸宱楬庢摼
//! @retval 張棟寢壥
//! @param DevNo(I)丗僨僶僀僗斣崋<BR>
//! @param outParam(O)丗塮憸宱楬愝掕忣曬<BR>
//! @note <BR>
//! @attention <BR>
//! @author Y.Takeuchi
//! @date 2007/3/19
//*******************************************************************
IW _HdmiRxVdGetVideoPath(UB DevNo, THdmiRxDrvVideoPath* outParam)
{
IW ret = HDMIDRV_OK;
switch (DevNo) {
case DV_HDMIRX_DEF_DEV_0:
// 娗棟忣曬傪庢摼
memcpy(outParam, &gHdmiRxDrvSysInfo.VideoPath[DV_HDMIRX_DEF_DEV_0], sizeof(THdmiRxDrvVideoPath));
break;
case DV_HDMIRX_DEF_DEV_1:
// 奜晅偗僨僶僀僗 弶婜壔張棟偼偙偙偵幚憰
ret = DVHDMI_E_DEV;
break;
default :
ret = DVHDMI_E_INVAL;
break;
}
return ret;
}
//*******************************************************************
//! @brief HDMI Rx Virtual Drv 塮憸怣崋忬懺庢摼
//! @retval 張棟寢壥
//! @param DevNo(I)丗僨僶僀僗斣崋<BR>
//! @param SyncSts(O)丗塮憸怣崋忬懺<BR>
//! @note <BR>
//! @attention <BR>
//! @author Y.Takeuchi
//! @date 2007/5/04
//*******************************************************************
IW _HdmiRxVdGetInputVideoSyncSts(UB DevNo, UB * SyncSts)
{
IW ret = HDMIDRV_OK;
switch (DevNo) {
case DV_HDMIRX_DEF_DEV_0:
// 塮憸怣崋忣曬庢摼
*SyncSts = SHSYSCONF.SYCGPREG1.BIT.HDMI_SYNCDET;
break;
case DV_HDMIRX_DEF_DEV_1:
// 奜晅偗僨僶僀僗 弶婜壔張棟偼偙偙偵幚憰
ret = DVHDMI_E_DEV;
break;
default :
ret = DVHDMI_E_INVAL;
break;
}
}
//*******************************************************************
//! @brief HDMI Rx Virtual Drv 塮憸怣崋忣曬庢摼
//! @retval 張棟寢壥
//! @param DevNo(I)丗僨僶僀僗斣崋<BR>
//! @param outParam(O)丗塮憸怣崋忣曬<BR>
//! @note <BR>
//! @attention <BR>
//! @author Y.Takeuchi
//! @date 2007/3/19
//*******************************************************************
IW _HdmiRxVdGetInputVideoFormat(UB DevNo, UB Mode, THdmiRxDrvVideoFormat* outParam)
{
IW ret = HDMIDRV_OK;
switch (DevNo) {
case DV_HDMIRX_DEF_DEV_0:
// 塮憸怣崋忣曬庢摼
ret = HdmiRxGetInputVideoFormatDev0(Mode, outParam);
break;
case DV_HDMIRX_DEF_DEV_1:
// 奜晅偗僨僶僀僗 弶婜壔張棟偼偙偙偵幚憰
ret = DVHDMI_E_DEV;
break;
default :
ret = DVHDMI_E_INVAL;
break;
}
return ret;
}
//*******************************************************************
//! @brief HDMI Rx Virtual Drv 塮憸怣崋僼僅乕儅僢僩堎忢敾掕
//! @retval 張棟寢壥
//! @param DevNo(I)丗僨僶僀僗斣崋<BR>
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -