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

📄 dvhdmirx.c

📁 the HDMI(High Definition Multimedia Interface) driver code
💻 C
📖 第 1 页 / 共 5 页
字号:
					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 + -