⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 dvhdmirx.c

📁 the HDMI(High Definition Multimedia Interface) driver code
💻 C
📖 第 1 页 / 共 5 页
字号:

	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 + -