📄 dvhdmirx.c
字号:
switch (DevNo) {
case DV_HDMIRX_DEF_DEV_0:
// RxR8J66030FT僜僼僩儕僙僢僩
ret = _dvHdmiRxR8J66030FTSoftReset();
if (ret != HDMIDRV_OK ) {
HdmiRxDrvErrCatch("_dvHdmiRxR8J66030FTSoftReset failed %d\n", ret);
// 奜晹嫮惂儕僙僢僩
_HdmiRxVdReset(DevNo);
}
break;
case DV_HDMIRX_DEF_DEV_1:
// 奜晅偗僨僶僀僗 弶婜壔張棟偼偙偙偵幚憰
ret = DVHDMI_E_DEV;
break;
default:
ret = DVHDMI_E_INVAL;
break;
}
return ret;
}
/* #HDCP_RESET2 ADD E 2007/11/12 Y.Takeuchi */
//%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
//%%%%%%%%%% f-2 憖嶌娭悢孮 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
//%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
//*******************************************************************
//! @brief 妱崬傒儗儀儖愝掕
//! @retval 張棟寢壥
//! @param DevNo(I)丗僨僶僀僗斣崋<BR>
//! @param intr_lv(I) 丗妱崬傒儗儀儖<BR>
//! @note <BR>
//! @attention <BR>
//! @author Y.Takeuchi
//! @date 07/04/24
//*******************************************************************
IW _HdmiRxVdSetIntrlvl(UB DevNo, UB intr_lv)
{
IW ret = HDMIDRV_OK; //L4_Modify
if (gHdmiRxDrvConfigTbl.UseIntr == 0) {
// 妱崬傒枹巊梡愝掕
_dvHdmiRxR8J66030FTSetIntrlvl(DV_HDMIRX_DEF_DEV_0_INTR, 0);
ret = HDMIDRV_OK;
} else {
switch (DevNo) {
case DV_HDMIRX_DEF_DEV_0:
// 妱崬傒嬛巭
// 妱崬傒儅僗僋傪夝彍偟偨弖娫偵妱傝崬傒偑敪惗偡傞壜擻惈偑偁傞偺偱
// 妱崬傒儅僗僋夝彍偲奜晹曄悢偺峏怴偺僋儕僥傿僇儖僷僗偼妱崬傒傪嬛巭偡傞
loc_cpu();
// 慜夞愝掕偟偨妱崬傒儗儀儖偲堎側偭偰偄傟偽愝掕偡傞
if (gHdmiRxDrvIntrLv[DV_HDMIRX_DEF_DEV_0] != intr_lv) {
// 愝掕屻偺妱崬傒儗儀儖傪庢摼
gHdmiRxDrvIntrLv[DV_HDMIRX_DEF_DEV_0] = intr_lv;
// 妱崬傒儗儀儖偺曄峏
_dvHdmiRxR8J66030FTSetIntrlvl(DV_HDMIRX_DEF_DEV_0_INTR, intr_lv);
}
// 妱崬傒嬛巭夝彍
unl_cpu();
break;
case DV_HDMIRX_DEF_DEV_1:
// 奜晅偗僨僶僀僗 弶婜壔張棟偼偙偙偵幚憰
ret = DVHDMI_E_DEV;
break;
default:
ret = DVHDMI_E_INVAL;
break;
}
}
return ret;
}
//*******************************************************************
//! @brief 妱崬傒儗儀儖庢摼
//! @retval 張棟寢壥
//! @param DevNo(I)丗僨僶僀僗斣崋<BR>
//! @param intr_lv(O) 丗妱崬傒儗儀儖<BR>
//! @note <BR>
//! @attention <BR>
//! @author Y.Takeuchi
//! @date 07/04/24
//*******************************************************************
IW _HdmiRxVdGetIntrlvl(UB DevNo, UB* intr_lv)
{
IW ret = HDMIDRV_OK; //L4_Modify
switch (DevNo) {
case DV_HDMIRX_DEF_DEV_0:
// 撪憼僨僶僀僗妱崬傒儗儀儖庢摼
*intr_lv = gHdmiRxDrvIntrLv[0];
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 PowerSts(O)丗揹尮忬懺<BR>
//! @note <BR>
//! @attention <BR>
//! @author Y.Takeuchi
//! @date 2007/4/09
//*******************************************************************
IW _HdmiRxVdGetPowerSts (UB DevNo, UB * PowerSts)
{
IW ret = HDMIDRV_OK;
*PowerSts = gHdmiRxDrvSysInfo.RxPower[DevNo];
return ret;
}
//*******************************************************************
//! @brief HDMI Rx Virtual Drv 揹尮OFF
//! @retval 張棟寢壥
//! @param DevNo(O)丗僨僶僀僗斣崋<BR>
//! @note <BR>
//! @attention <BR>
//! @author Y.Takeuchi
//! @date 2007/3/19
//*******************************************************************
IW _HdmiRxVdPowerDown(UB * DevNo)
{
IW ret = HDMIDRV_OK; //L4_Modify
UB cnt = gHdmiRxDrvConfigTbl.ExtResetNum;
UB port_no = 0;
port_no = gHdmiRxDrvSysInfo.PortNo[gHdmiRxActiveDevNo];
// 傾僋僥傿僽側億乕僩斣崋偐傜僨僶僀僗斣崋傪庢摼
// 2夋柺懳墳偺嵺偵(HDMI, HDMI)偼懚嵼偟側偄偲偄偆峫偊偱愝寁偟偰偄傞
// 2夋柺偱(HDMI, HDMI)偑偁傝偊傞応崌偼API I/F傕娷傔偰嵞専摙偡傞昁梫偑偁傞
_HdmiRxVdPortNoToDevNo(port_no, DevNo);
// 僨僶僀僗斣崋偑屌掕偵側偭偰傞偺偱彨棃揑偵傾僋僥傿僽側億乕僩偺僨僶僀僗
// 斣崋傪庢摼偱偒傞傛偆偵曄峏偡傞昁梫偑偁傞
switch (*DevNo) {
case DV_HDMIRX_DEF_DEV_0:
while(cnt--) {
// HDMI 妱崬傒儅僗僋
// 妱崬傒儅僗僋偺夝彍偼忋埵憌偵偰峴偆偙偲
_HdmiRxVdSetIntrlvl(*DevNo, 0);
// RxR8J66030FT 僒僗儁儞僪
ret = _dvHdmiRxR8J66030FTPowerDown();
if (ret != HDMIDRV_OK) {
HdmiRxDrvErrCatch("_HdmiRxVdR8J66030FTPowerDown failed %d\n", ret);
// 嫮惂儕僙僢僩幚峴
_HdmiRxVdExtReset(DV_HDMIRX_DEF_DEV_0);
WAIT(10);
} else {
// 娗棟忣曬偺傒峏怴
HdmiRxDev0Reset(1);
// 娗棟忣曬揹尮忬懺偺峏怴
gHdmiRxDrvSysInfo.RxPower[DV_HDMIRX_DEF_DEV_0] = DV_HDMIRX_DEF_POWER_OFF;
if (gHdmiRxDrvSysInfo.PowerDownCbFunc != NULL) {
// 僒僗儁儞僪儌乕僪堏峴 CB幚峴
(gHdmiRxDrvSysInfo.PowerDownCbFunc)(port_no);
}
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 揹尮OFF CB娭悢搊榐
//! @retval 張棟寢壥
//! @param CbFunc(I)丗揹尮OFF CB娭悢<BR>
//! @note <BR>
//! @attention <BR>
//! @author Y.Takeuchi
//! @date 2007/3/19
//*******************************************************************
IW _HdmiRxVdRegistCBPowerDown(void (*CbFunc)(UB PortNo))
{
// 僒僗儁儞僪儌乕僪堏峴専弌梡CB娭悢搊榐
// CB娭悢偼僨僶僀僗0偲僨僶僀僗1偱嫟捠
// CB娭悢撪堷悢偵億乕僩斣崋傪捠抦偡傞偺偱忋埵偼億乕僩斣崋偐傜敾抐偡傞
gHdmiRxDrvSysInfo.PowerDownCbFunc = CbFunc;
return HDMIDRV_OK;
}
//*******************************************************************
//! @brief HDMI Rx Virtual Drv 揹尮ON CB娭悢搊榐
//! @retval 張棟寢壥
//! @param CbFunc(I)丗揹尮ON CB娭悢<BR>
//! @note <BR>
//! @attention <BR>
//! @author Y.Takeuchi
//! @date 2007/3/19
//*******************************************************************
IW _HdmiRxVdRegistCBPowerOn(void (*CbFunc)(UB PortNo))
{
// 僒僗儁儞僪儌乕僪暅婣専弌梡CB娭悢搊榐
// CB娭悢偼僨僶僀僗0偲僨僶僀僗1偱嫟捠
// CB娭悢撪堷悢偵億乕僩斣崋傪捠抦偡傞偺偱忋埵偼億乕僩斣崋偐傜敾抐偡傞
gHdmiRxDrvSysInfo.PowerOnCbFunc = CbFunc;
return HDMIDRV_OK;
}
//*******************************************************************
//! @brief HDMI Rx Virtual Drv 妱崬傒敪惗 CB娭悢搊榐
//! @retval 張棟寢壥
//! @param CbFunc(I)丗妱崬傒敪惗 CB娭悢<BR>
//! @note <BR>
//! @attention <BR>
//! @author Y.Takeuchi
//! @date 2007/4/10
//*******************************************************************
IW _HdmiRxVdRegistCBIntrupt (void (*CbFunc)(UB DevNo))
{
// 妱崬傒敪惗専弌梡CB娭悢搊榐
// CB娭悢偼僨僶僀僗0偲僨僶僀僗1偱嫟捠
// CB娭悢撪堷悢偵僨僶僀僗斣崋傪捠抦偡傞偺偱僨僶僀僗斣崋偐傜敾抐偡傞
gHdmiRxDrvSysInfo.IntrCbFunc = CbFunc;
return HDMIDRV_OK;
}
//*******************************************************************
//! @brief HDMI Rx Virtual Drv HP億乕僩惂屼
//! @retval 張棟寢壥
//! @param DevNo(I)丗僨僶僀僗斣崋<BR>
//! @param HpLv(I)丗HP儗儀儖
//! 0:OFF 1:ON<BR>
//! @note <BR>
//! @attention <BR>
//! @author Y.Takeuchi
//! @date 2007/8/20
//*******************************************************************
IW _HdmiRxVdSetHotPlugPort(UB DevNo, UB HpLv)
{
IW ret = HDMIDRV_OK;
ULW device_name;
UW io_devide_id;
switch (DevNo) {
case DV_HDMIRX_DEF_PORT_0:
// HP抂巕偺埖偄偼儃乕僪埶懚偱偁傞偨傔曄姺偡傞
// C4US偱偼 HotPlug ON 帪偼Low丄Off帪偼Hi偵曄姺偡傞
if (HpLv == 1) {
HpLv = 0;
} else {
HpLv = 1;
}
memcpy(&device_name, HDMI_IO_HP_NAME, sizeof(device_name));
ret = _dtIoMgrAlloc(&io_devide_id, device_name);
if (ret == DT_E_OK) {
ret = _dtIoMgrset(io_devide_id, HpLv);
if (ret != DT_E_OK) {
HdmiRxDrvErrCatch("_dtIoMgrSet failed %d DevNo:%x\n", ret, io_devide_id);
}
/* #HPD_DYBAMIC_CTL ADD S 2007/09/12 Y.Takeuchi */
else {
// HotPlug抂巕儗儀儖傪愝掕
gHdmiRxDrvHotPlugLv = HpLv;
}
/* #HPD_DYBAMIC_CTL ADD E 2007/09/12 Y.Takeuchi */
} else {
ret = DVHDMI_E_DEV;
}
break;
case DV_HDMIRX_DEF_PORT_1:
// 奜晅偗僨僶僀僗 弶婜壔張棟偼偙偙偵幚憰
ret = DVHDMI_E_DEV;
break;
default :
ret = DVHDMI_E_INVAL;
break;
}
return ret;
}
//*******************************************************************
//! @brief HDMI Rx Virtual Drv HP億乕僩忣曬庢摼
//! @retval 張棟寢壥
//! @param DevNo(I)丗僨僶僀僗斣崋<BR>
//! @param HpLv(O)丗HP儗儀儖 0:OFF 1:ON<BR>
//! @note <BR>
//! @attention <BR>
//! @author Y.Takeuchi
//! @date 2007/8/20
//*******************************************************************
IW _HdmiRxVdGetHotPlugPort(UB DevNo, UB * HpLv)
{
/* #HPD_DYBAMIC_CTL CHG S 2007/09/12 Y.Takeuchi */
IW ret = HDMIDRV_OK;
ULW device_name;
UW io_devide_id;
*HpLv = 0xFF;
switch (DevNo) {
case DV_HDMIRX_DEF_PORT_0:
memcpy(&device_name, HDMI_IO_HP_NAME, sizeof(device_name));
ret = _dtIoMgrAlloc(&io_devide_id, device_name);
if (ret == DT_E_OK) {
// HP抂巕偺埖偄偼儃乕僪埶懚偱偁傞偨傔曄姺偡傞
// C4US偱偼 HotPlug ON 帪偼Low丄Off帪偼Hi偵曄姺偡傞
if (gHdmiRxDrvHotPlugLv == 1) {
*HpLv = 0;
} else if (gHdmiRxDrvHotPlugLv == 0) {
*HpLv = 1;
} else {
*HpLv = 0xFF;
ret = DVHDMI_E_DEV;
}
} else {
ret = DVHDMI_E_DEV;
}
break;
case DV_HDMIRX_DEF_PORT_1:
// 奜晅偗僨僶僀僗 弶婜壔張棟偼偙偙偵幚憰
ret = DVHDMI_E_DEV;
break;
default :
ret = DVHDMI_E_INVAL;
break;
}
/* #HPD_DYBAMIC_CTL CHG E 2007/09/12 Y.Takeuchi */
return ret;
}
//*******************************************************************
//! @brief HDMI Rx Virtual Drv億乕僩慖戰
//! @retval 張棟寢壥
//! @param PortNo(I)丗億乕僩斣崋愝掕峔憿懱<BR>
//! @note <BR>
//! @attention <BR>
//! @author Y.Takeuchi
//! @date 2007/3/19
//*******************************************************************
IW _HdmiRxVdSelectPort(THdmiRxDrvParamPort* Port)
{
IW ret = HDMIDRV_OK;
// HDMI SW 僪儔僀僶偵懳偟偰SW愗傝懼偊傪埶棅
ret = _dvHdmiSwInputSelect(Port->InputDevNo);
if (ret == DV_HDMISW_E_OK) {
// 娗棟忣曬偺億乕僩斣崋峏怴
gHdmiRxDrvSysInfo.PortNo[DV_HDMIRX_DEF_DEV_0] = Port->InputDevNo;
gHdmiRxActiveDevNo = Port->InputPortNo;
}
return ret;
}
//*******************************************************************
//! @brief HDMI Rx Virtual Drv億乕僩僷儔儊乕僞敾掕
//! @retval 張棟寢壥
//! @param PortNo(I)丗億乕僩斣崋愝掕峔憿懱<BR>
//! @note <BR>
//! @attention <BR>
//! @author Y.Takeuchi
//! @date 2007/3/19
//*******************************************************************
IW _HdmiRxVdSelectPortParamCheck(THdmiRxDrvParamPort* Port)
{
IW ret = HDMIDRV_OK;
// HDMI SW Drv偵懳偟偰儃乕僪埶懚僷儔儊乕僞偺栤偄崌傢偣
ret = _dvHdmiSwInputSelectParamCheck(Port->InputDevNo);
return ret;
}
//*******************************************************************
//! @brief HDMI Rx Virtual Drv 億乕僩斣崋 僨僶僀僗斣崋曄姺
//! @retval 張棟寢壥
//! @param PortNo(I)丗億乕僩斣崋<BR>
//! @param DevNo(O) 丗僨僶僀僗斣崋<BR>
//! @note <BR>
//! @attention <BR>
//! @author Y.Takeuchi
//! @date 2007/3/19
//*******************************************************************
IW _HdmiRxVdPortNoToDevNo(UB PortNo, UB* DevNo)
{
IW ret = HDMIDRV_OK;
*DevNo = 0;
return ret;
}
//*******************************************************************
//! @brief HDMI Rx Virtual Drv 僷働僢僩庢摼
//! @retval 張棟寢壥
//! @param DevNo(I)丗僨僶僀僗斣崋<BR>
//! @param outParam(I/O) 丗僷働僢僩奿擺峔憿懱<BR>
//! @note <BR>
//! @attention <BR>
//! @author Y.Takeuchi
//! @date 2007/3/19
//*******************************************************************
IW _HdmiRxVdGetPacket(UB DevNo, THdmiRxDrvPacket* inParam)
{
IW ret;
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -