📄 dvhdmirxr8j66030ft.c
字号:
reg[0] = INTRUPT_ENABLE_REG_ADDR;
ret = _HdmiRxDrvRegWrite(DV_HDMIRX_DEF_SLAVE_ADDR, sizeof(reg), reg);
return ret;
}
//*******************************************************************
//! @brief R8J66030FT偺妱崬傒儅僗僋夝彍
//! @retval 張棟寢壥
//! @param <BR>
//! @note <BR>
//! @attention <BR>
//! @author Y.Takeuchi
//! @date 07/05/07
//*******************************************************************
IW _dvHdmiRxR8J66030FTSetIntrEnable()
{
IW ret;
UB reg[4] = {0, 0, 0, 0};
reg[0] = INTRUPT_ENABLE_REG_ADDR;
// 儈儔乕儗僕僗僞偐傜妱崬傒儗僕僗僞偺抣傪庢摼
reg[1] = gHdmiRxDrvR8J66030FTReg.IntrMaskReg[0];
reg[2] = gHdmiRxDrvR8J66030FTReg.IntrMaskReg[1];
reg[3] = gHdmiRxDrvR8J66030FTReg.IntrMaskReg[2];
ret = _HdmiRxDrvRegWrite(DV_HDMIRX_DEF_SLAVE_ADDR, sizeof(reg), reg);
return ret;
}
//*******************************************************************
//! @brief 妱崬傒捠抦CB娭悢搊榐
//! @retval 張棟寢壥
//! @param CbFunc(I)丗妱崬傒捠抦CB娭悢<BR>
//! @note <BR>
//! @attention <BR>
//! @author Y.Takeuchi
//! @date 07/04/13
//*******************************************************************
IW _dvHdmiRxR8J66030FTRegistCBIntrupt(void (*CbFunc)(void))
{
gHdmiRxDrvIntrCbFunc = CbFunc;
}
//*******************************************************************
//! @brief R8J66030FT偺揹尮抐
//! @retval 張棟寢壥
//! @param <BR>
//! @note <BR>
//! @attention <BR>
//! @author Y.Takeuchi
//! @date 07/03/22
//*******************************************************************
IW _dvHdmiRxR8J66030FTPowerDown(void)
{
IW ret = HDMIDRV_OK;
UB reg[2] = {0, 0};
// 僒僗儁儞僪堏峴張棟幚峴
// General Control Register 0 (0x40)愝掕
reg[0] = GENERAL_CONTROL_REG0_ADDR;
reg[1] = gHdmiRxDrvR8J66030FTReg.GeneralControlReg0;
reg[1] |= PWR_DWN;
ret = _HdmiRxDrvRegWrite(DV_HDMIRX_DEF_SLAVE_ADDR, sizeof(reg), reg);
if (ret == HDMIDRV_OK) {
gHdmiRxDrvR8J66030FTReg.GeneralControlReg0 = reg[1];
} else {
HdmiRxDrvErrCatch("_dvHdmiRxR8J66030FTPowerDown failed %d\n", ret);
}
return ret;
}
//*******************************************************************
//! @brief R8J66030FT偺傾僋僥傿僽億乕僩曄峏
//! @retval 張棟寢壥
//! @param PortNo(I):億乕僩斣崋<BR>
//! @note 杮API偼C4US偵偍偄偰偼巊梡偝傟側偄<BR>
//! @attention <BR>
//! @author Y.Takeuchi
//! @date 07/03/22
//*******************************************************************
IW _dvHdmiRxR8J66030FTSelectPort(UB PortNo)
{
IW ret = HDMIDRV_OK;
#ifdef HDMI_ASSP
UB reg[2] = {0, 0};
// 傾僋僥傿僽億乕僩曄峏
// General Control Register 0 (0x40)愝掕
reg[0] = GENERAL_CONTROL_REG0_ADDR;
reg[1] = gHdmiRxDrvR8J66030FTReg.GeneralControlReg0;
reg[1] |= PortNo;
ret = _HdmiRxDrvRegWrite(DV_HDMIRX_DEF_SLAVE_ADDR, sizeof(reg), reg);
if (ret == HDMIDRV_OK) {
gHdmiRxDrvR8J66030FTReg.GeneralControlReg0 = reg[1];
} else {
HdmiRxDrvErrCatch("_dvHdmiRxR8J66030FTSelectPort failed %d\n", ret);
}
#endif
return ret;
}
//*******************************************************************
//! @brief R8J66030FT偺捛壛娔帇僷働僢僩1愝掕
//! @retval 張棟寢壥
//! @param <BR>
//! @note <BR>
//! @attention <BR>
//! @author Y.Takeuchi
//! @date 07/03/22
//*******************************************************************
IW _dvHdmiRxR8J66030FTWatchUserPacket1(UB PacketType)
{
IW ret = HDMIDRV_OK;
UB reg[2] = {0, 0};
// 儐乕僓僷働僢僩1愝掕
reg[0] = SELECT_PACKET_REG1;
reg[1] = PacketType;
ret = _HdmiRxDrvRegWrite(DV_HDMIRX_DEF_SLAVE_ADDR, sizeof(reg), reg);
if (ret == HDMIDRV_OK) {
gHdmiRxDrvR8J66030FTReg.UserPacketReg1 = reg[1];
} else {
HdmiRxDrvErrCatch("_dvHdmiRxR8J66030FTWatchUserPacket1 failed %d\n", ret);
return ret;
}
return ret;
}
//*******************************************************************
//! @brief R8J66030FT偺捛壛娔帇僷働僢僩2愝掕
//! @retval 張棟寢壥
//! @param <BR>
//! @note <BR>
//! @attention <BR>
//! @author Y.Takeuchi
//! @date 07/03/22
//*******************************************************************
IW _dvHdmiRxR8J66030FTWatchUserPacket2(UB PacketType)
{
IW ret = HDMIDRV_OK;
UB reg[2] = {0, 0};
// 儐乕僓僷働僢僩2愝掕
reg[0] = SELECT_PACKET_REG2;
reg[1] = PacketType;
ret = _HdmiRxDrvRegWrite(DV_HDMIRX_DEF_SLAVE_ADDR, sizeof(reg), reg);
if (ret == HDMIDRV_OK) {
gHdmiRxDrvR8J66030FTReg.UserPacketReg2 = reg[1];
} else {
HdmiRxDrvErrCatch("_dvHdmiRxR8J66030FTWatchUserPacket2 failed %d\n", ret);
return ret;
}
return ret;
}
//*******************************************************************
//! @brief R8J66030FT 庴怣僷働僢僩偺庢摼
//! @retval 張棟寢壥
//! @param PacketID(I):僷働僢僩庬暿抣<BR>
//! @param PacketLength(I):僷働僢僩挿<BR>
//! @param PacketData(O):僷働僢僩奿擺僶僢僼傽<BR>
//! @note <BR>
//! @attention <BR>
//! @author Y.Takeuchi
//! @date 07/03/22
//*******************************************************************
IW _dvHdmiRxR8J66030FTGetPacket(UB PacketID, UB PacketLength, UB* PacketData)
{
IW ret = HDMIDRV_OK;
UB length = PacketLength;
// 忋埵憌偺僷働僢僩奿擺僶僢僼傽偺愭摢傪僋儕傾
// 幐攕敾掕偵愭摢僶僀僩傪巊梡偡傞偨傔
PacketData[0] = 0x00;
switch(PacketID) {
case DV_HDMIRX_DEF_AVI_INFOFRAME: // AVI InfoFrame(0x82)
gPacketDataBuff[0] = 0x2A;
break;
case DV_HDMIRX_DEF_AUDIO_INFOFRAME: // Audio InfoFrame(0x84)
gPacketDataBuff[0] = 0x2B;
break;
case DV_HDMIRX_DEF_ACP: // ACP Packet
if (gHdmiRxDrvR8J66030FTReg.UserPacketReg1 == DV_HDMIRX_DEF_ACP) {
// 儐乕僓僷働僢僩1偱娔帇偟偰偄傞応崌
gPacketDataBuff[0] = 0x2D;
} else if (gHdmiRxDrvR8J66030FTReg.UserPacketReg2 == DV_HDMIRX_DEF_ACP) {
// 儐乕僓僷働僢僩2偱娔帇偟偰偄傞応崌
gPacketDataBuff[0] = 0x2E;
} else {
ret = DVHDMI_E_INVAL;
return ret;
}
break;
default:
break;
}
// 儗僕僗僞撉崬傒
ret = _HdmiRxDrvRegRead(DV_HDMIRX_DEF_SLAVE_ADDR, length, gPacketDataBuff);
if (ret == HDMIDRV_OK) {
if ((PacketID == DV_HDMIRX_DEF_AVI_INFOFRAME) || (PacketID == DV_HDMIRX_DEF_AUDIO_INFOFRAME)) {
// R8J66030FT偺応崌 AVI InfoFrame Audio InfoFrame庴怣帪偵僷働僢僩庬暿偲僷働僢僩挿偑庢摼
// 偱偒側偄偨傔帺暘偱愝掕偡傞昁梫偑偁傞
// 忋埵憌(壖憐Drv)偱偼丄僷働僢僩忣曬偼慡偰僿僢僟乕 + 僨乕僞(僠僃僢僋僒儉娷傓)偲偟偰埖偆
// 偨傔杮儌僕儏乕儖偱僨乕僞宍幃偺曄壔張棟傪峴偆
PacketData[0] = PacketID; // 僷働僢僩庬暿傪愝掕
PacketData[1] = gPacketDataBuff[0]; // Version忣曬傪堏摦
/* #AUDIO_PLL CHG S 2007/11/01 Y.Takeuchi */
PacketData[2] = PacketLength - 2; // 僨乕僞庢摼梡僷働僢僩挿偐傜Ver偲僠僃僢僋僒儉傪徣偄偨僷働僢僩挿傪愝掕
/* #AUDIO_PLL CHG E 2007/11/01 Y.Takeuchi */
memcpy(&PacketData[3], &gPacketDataBuff[1], (length-1)); // 僠僃僢僋僒儉 + 幚僨乕僞傪僐僺乕
}
/* #ACP_PACKET ADD S 2007/12/14 Y.Takeuchi */
else {
memcpy(PacketData, gPacketDataBuff, length);
}
/* #ACP_PACKET ADD E 2007/12/14 Y.Takeuchi */
} else {
HdmiRxDrvErrCatch("_dvHdmiRxR8J66030FTGetPacket failed %d\n", ret);
}
return ret;
}
//*******************************************************************
//! @brief R8J66030FT 妱崬傒敪惗妋擣
//! @retval 張棟寢壥
//! @param IntrSts(I):妱崬傒忬嫷<BR>
//! @note <BR>
//! @attention <BR>
//! @author Y.Takeuchi
//! @date 07/03/22
//*******************************************************************
IW _dvHdmiRxR8J66030FTCheckIntrupt(UB* IntrSts)
{
IW ret = HDMIDRV_OK;
#ifdef HDMI_ASSP
UB reg[1];
#else
UB reg[3] = {0, 0, 0};
#endif
// 妱崬傒僼儔僌撉崬傒
reg[0] = INTRUPT_ENABLE_REG_ADDR;
// 儗僕僗僞撉崬傒
ret = _HdmiRxDrvRegRead(DV_HDMIRX_DEF_SLAVE_ADDR, sizeof(reg), reg);
if (ret == HDMIDRV_OK) {
memcpy(IntrSts, reg, sizeof(reg));
} else {
HdmiRxDrvErrCatch("_dvHdmiRxR8J66030FTCheckIntrupt failed %d\n", ret);
}
return ret;
}
//*******************************************************************
//! @brief R8J66030FT 僗僥乕僞僗儗僕僗僞0 撉崬傒
//! @retval 張棟寢壥
//! @param Reg(O):僗僥乕僞僗儗僕僗僞0<BR>
//! @note <BR>
//! @attention <BR>
//! @author Y.Takeuchi
//! @date 07/03/22
//*******************************************************************
IW _dvHdmiRxR8J66030FTGetStsReg0(UB* Reg)
{
IW ret = HDMIDRV_OK;
UB reg = 0;
// 僗僥乕僞僗儗僕僗僞0 撉崬傒
reg = STATUS_REG0_ADDR;
// 儗僕僗僞撉崬傒
ret = _HdmiRxDrvRegRead(DV_HDMIRX_DEF_SLAVE_ADDR, sizeof(reg), ®);
if (ret == HDMIDRV_OK) {
*Reg = reg;
// 儈儔乕儗僕僗僞峏怴
gHdmiRxDrvR8J66030FTReg.StatusReg0 = reg;
} else {
HdmiRxDrvErrCatch("_dvHdmiRxR8J66030FTGetStsReg0 failed %d\n", ret);
}
return ret;
}
//*******************************************************************
//! @brief R8J66030FT 僗僥乕僞僗儗僕僗僞1 撉崬傒
//! @retval 張棟寢壥
//! @param Reg(O):僗僥乕僞僗儗僕僗僞1<BR>
//! @note <BR>
//! @attention <BR>
//! @author Y.Takeuchi
//! @date 07/03/22
//*******************************************************************
IW _dvHdmiRxR8J66030FTGetStsReg1(UB* Reg)
{
IW ret = HDMIDRV_OK;
UB reg = 0;
// 僗僥乕僞僗儗僕僗僞1 撉崬傒
reg = 0x3D;
// 儗僕僗僞撉崬傒
ret = _HdmiRxDrvRegRead(DV_HDMIRX_DEF_SLAVE_ADDR, sizeof(reg), ®);
if (ret == HDMIDRV_OK) {
*Reg = reg;
// 儈儔乕儗僕僗僞峏怴
gHdmiRxDrvR8J66030FTReg.StatusReg1 = reg;
} else {
HdmiRxDrvErrCatch("_dvHdmiRxR8J66030FTGetStsReg1 failed %d\n", ret);
}
return ret;
}
//*******************************************************************
//! @brief R8J66030FT Bcap/Bstatus 儗僕僗僞 撉崬傒
//! @retval 張棟寢壥
//! @param Reg(O):僗僥乕僞僗儗僕僗僞1<BR>
//! @note <BR>
//! @attention <BR>
//! @author Y.Takeuchi
//! @date 07/03/22
//*******************************************************************
IW _dvHdmiRxR8J66030FTGetBStsReg(UB* Bsts, UB Size)
{
IW ret = HDMIDRV_OK;
UB reg[3] = {0, 0, 0};
// B僗僥乕僞僗儗僕僗僞撉崬傒
reg[0] = 0x30;
// 儗僕僗僞撉崬傒
ret = _HdmiRxDrvRegRead(DV_HDMIRX_DEF_SLAVE_ADDR, sizeof(reg), reg);
if (ret == HDMIDRV_OK) {
// 嵟戝3僶僀僩僐僺乕
if (Size > 3) {
Size = sizeof(reg);
}
memcpy(Bsts, reg, Size);
} else {
HdmiRxDrvErrCatch("_dvHdmiRxR8J66030FTGetBStsReg failed %d\n", ret);
}
return ret;
}
//*******************************************************************
//! @brief R8J66030FT 僺僋僙儖廃攇悢愝掕
//! @retval 張棟寢壥
//! @param PixelFreq(I):僺僋僙儖廃攇悢<BR>
//! @note <BR>
//! @attention <BR>
//! @author Y.Takeuchi
//! @date 07/05/08
//*******************************************************************
IW _dvHdmiRxR8J66030FTSetPixelFreq(UB PixelFreq)
{
IW ret = HDMIDRV_OK;
UB reg[2] = {0, 0};
// 塮憸宱楬偺愝掕傪峴偆
reg[0] = STATUS_REG0_ADDR; // 僗僥乕僞僗儗僕僗僞0
reg[1] = PixelFreq;
// 儗僕僗僞彂崬傒
ret = _HdmiRxDrvRegWrite(DV_HDMIRX_DEF_SLAVE_ADDR, sizeof(reg), reg);
if (ret == HDMIDRV_OK) {
// 儈儔乕儗僕僗僞峏怴
gHdmiRxDrvR8J66030FTReg.StatusReg0 |= reg[1];
} else {
HdmiRxDrvErrCatch("_dvHdmiRxR8J66030FTSetPixelFreq failed %d\n", ret);
}
return ret;
}
/* #AV_MUTE ADD S 2007/11/07 Y.Takeuchi */
//*******************************************************************
//! @brief R8J66030FT AVMUTE僋儕傾
//! @retval 張棟寢壥
//! @param PixelFreq(I):僺僋僙儖廃攇悢<BR>
//! @note <BR>
//! @attention <BR>
//! @author Y.Takeuchi
//! @date 07/05/08
//*******************************************************************
IW _dvHdmiRxR8J66030FTClearAVMUTE(void)
{
IW ret = HDMIDRV_OK;
UB reg[2] = {0, 0};
// 塮憸宱楬偺愝掕傪峴偆
reg[0] = STATUS_REG0_ADDR; // 僗僥乕僞僗儗僕僗僞0
reg[1] = (gHdmiRxDrvR8J66030FTReg.StatusReg0 | AVMUTE_R) & 0xE0;
// 儗僕僗僞彂崬傒
ret = _HdmiRxDrvRegWrite(DV_HDMIRX_DEF_SLAVE_ADDR, sizeof(reg), reg);
if (ret == HDMIDRV_OK) {
// AVMUTE_R峏怴帪偼儈儔乕儗僕僗僞偺峏怴偼峴傢側偄
} else {
HdmiRxDrvErrCatch("_dvHdmiRxR8J66030FTClearAVMUTE failed %d\n", ret);
}
return ret;
}
/* #AV_MUTE ADD E 2007/11/07 Y.Takeuchi */
//*******************************************************************
//! @brief R8J66030FT 塮憸宱楬愝掕張棟
//! @retval 張棟寢壥
//! @param VideoPath(I):塮憸宱楬愝掕張棟<BR>
//! @note GeneralControl儗僕僗僞2(0x42)偺彂崬傒傪峴偆<BR>
//! @attention <BR>
//! @author Y.Takeuchi
//! @date 07/03/22
//*******************************************************************
IW _dvHdmiRxR8J66030FTSetVideoPath(UB VideoPath)
{
IW ret = HDMIDRV_OK;
UB reg[2] = {0, 0};
// 塮憸宱楬偺愝掕傪峴偆
reg[0] = GENERAL_CONTROL_REG2_ADDR; // GeneralControl儗僕僗僞2
reg[1] = VideoPath;
// 儗僕僗僞彂崬傒
ret = _HdmiRxDrvRegWrite(DV_HDMIRX_DEF_SLAVE_ADDR, sizeof(reg), reg);
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -