mirror of
https://github.com/marqs85/ossc
synced 2025-04-09 22:56:34 +03:00
it6613: add support for Freesync infoframe
This commit is contained in:
parent
46a4f4450f
commit
1ba1779632
@ -360,5 +360,27 @@ void HDMITX_SetHDRInfoFrame(BYTE HDR_TF)
|
||||
HDRInfo.pktbyte.HDR_DB[24] = 0xfa;
|
||||
HDRInfo.pktbyte.HDR_DB[25] = 0x00;*/
|
||||
|
||||
EnableHDRInfoFrame(TRUE, (BYTE *) &HDRInfo);
|
||||
EnableGPInfoFrame(TRUE, (BYTE *) &HDRInfo);
|
||||
}
|
||||
|
||||
void HDMITX_SetVRRInfoFrame(BYTE enable)
|
||||
{
|
||||
int i;
|
||||
Freesync_InfoFrame VRRInfo;
|
||||
|
||||
VRRInfo.info.Type = SPD_INFOFRAME_TYPE;
|
||||
VRRInfo.info.Ver = VENDORSPEC_INFOFRAME_VER;
|
||||
VRRInfo.info.Len = VENDORSPEC_INFOFRAME_LEN;
|
||||
|
||||
VRRInfo.info.Enable = enable ? 0x1a : 0;
|
||||
VRRInfo.info.Mode2 = 0x07;
|
||||
VRRInfo.info.min_rate = 40;
|
||||
VRRInfo.info.max_rate = 144;
|
||||
|
||||
for (i=1; i<VENDORSPEC_INFOFRAME_LEN-3; i++) {
|
||||
VRRInfo.pktbyte.FS_DB[i] = 0;
|
||||
}
|
||||
|
||||
EnableGPInfoFrame(TRUE, (BYTE *) &VRRInfo);
|
||||
}
|
||||
|
||||
|
@ -28,5 +28,6 @@ void HDMITX_SetOutputColorDepth(int ColorDepth);
|
||||
|
||||
void HDMITX_SetAudioInfoFrame(BYTE bAudioDwSampling);
|
||||
void HDMITX_SetHDRInfoFrame(BYTE enableHDR);
|
||||
void HDMITX_SetVRRInfoFrame(BYTE enable);
|
||||
|
||||
#endif /*HDMI_TX_H_*/
|
||||
|
@ -80,7 +80,7 @@ static SYS_STATUS SetAVIInfoFrame(AVI_InfoFrame *pAVIInfoFrame) ;
|
||||
static SYS_STATUS SetAudioInfoFrame(Audio_InfoFrame *pAudioInfoFrame) ;
|
||||
static SYS_STATUS SetSPDInfoFrame(SPD_InfoFrame *pSPDInfoFrame) ;
|
||||
static SYS_STATUS SetMPEGInfoFrame(MPEG_InfoFrame *pMPGInfoFrame) ;
|
||||
static SYS_STATUS SetHDRInfoFrame(HDR_InfoFrame *pHDRInfoFrame) ;
|
||||
static SYS_STATUS SetGPInfoFrame(BYTE *pInfoFrameData) ;
|
||||
static SYS_STATUS ReadEDID(BYTE *pData,BYTE bSegment,BYTE offset,SHORT Count) ;
|
||||
static void AbortDDC() ;
|
||||
static void ClearDDCFIFO() ;
|
||||
@ -825,14 +825,14 @@ EnableAudioInfoFrame(BYTE bEnable,BYTE *pAudioInfoFrame)
|
||||
}
|
||||
|
||||
BOOL
|
||||
EnableHDRInfoFrame(BYTE bEnable, BYTE *pHDRInfoFrame)
|
||||
EnableGPInfoFrame(BYTE bEnable, BYTE *pInfoFrame)
|
||||
{
|
||||
if (!bEnable) {
|
||||
DISABLE_NULL_PKT();
|
||||
return TRUE;
|
||||
}
|
||||
|
||||
if(SetHDRInfoFrame((HDR_InfoFrame *)pHDRInfoFrame) == ER_SUCCESS)
|
||||
if(SetGPInfoFrame(pInfoFrame) == ER_SUCCESS)
|
||||
{
|
||||
return TRUE;
|
||||
}
|
||||
@ -3390,28 +3390,29 @@ SetAudioInfoFrame(Audio_InfoFrame *pAudioInfoFrame)
|
||||
}
|
||||
|
||||
static SYS_STATUS
|
||||
SetHDRInfoFrame(HDR_InfoFrame *pHDRInfoFrame)
|
||||
SetGPInfoFrame(BYTE *pInfoFrameData)
|
||||
{
|
||||
int i ;
|
||||
BYTE ucData ;
|
||||
HDR_InfoFrame *pInfoFrame = (HDR_InfoFrame*)pInfoFrameData;
|
||||
|
||||
if(!pHDRInfoFrame)
|
||||
if(!pInfoFrame)
|
||||
{
|
||||
return ER_FAIL ;
|
||||
}
|
||||
|
||||
Switch_HDMITX_Bank(1) ;
|
||||
|
||||
HDMITX_WriteI2C_Byte(REG_TX_PKT_HB00, (0x80+pHDRInfoFrame->info.Type));
|
||||
HDMITX_WriteI2C_Byte(REG_TX_PKT_HB01, pHDRInfoFrame->info.Ver);
|
||||
HDMITX_WriteI2C_Byte(REG_TX_PKT_HB02, pHDRInfoFrame->info.Len);
|
||||
HDMITX_WriteI2C_Byte(REG_TX_PKT_HB00, (0x80+pInfoFrame->info.Type));
|
||||
HDMITX_WriteI2C_Byte(REG_TX_PKT_HB01, pInfoFrame->info.Ver);
|
||||
HDMITX_WriteI2C_Byte(REG_TX_PKT_HB02, pInfoFrame->info.Len);
|
||||
|
||||
for(i = 0,ucData = 0 ; i< HDR_INFOFRAME_LEN ; i++)
|
||||
for(i = 0,ucData = 0 ; i< pInfoFrame->info.Len ; i++)
|
||||
{
|
||||
HDMITX_WriteI2C_Byte(REG_TX_PKT_PB01+i, pHDRInfoFrame->pktbyte.HDR_DB[i]);
|
||||
ucData -= pHDRInfoFrame->pktbyte.HDR_DB[i] ;
|
||||
HDMITX_WriteI2C_Byte(REG_TX_PKT_PB01+i, pInfoFrame->pktbyte.HDR_DB[i]);
|
||||
ucData -= pInfoFrame->pktbyte.HDR_DB[i] ;
|
||||
}
|
||||
ucData -= 0x80+HDR_INFOFRAME_VER+HDR_INFOFRAME_TYPE+HDR_INFOFRAME_LEN ;
|
||||
ucData -= 0x80+pInfoFrame->info.Type+pInfoFrame->info.Ver+pInfoFrame->info.Len ;
|
||||
HDMITX_WriteI2C_Byte(REG_TX_PKT_PB00, ucData);
|
||||
|
||||
Switch_HDMITX_Bank(0) ;
|
||||
|
@ -828,7 +828,7 @@ BOOL CheckHDMITX(BYTE *pHPD,BYTE *pHPDChange) ;
|
||||
BOOL EnableHDCP(BYTE bEnable) ;
|
||||
BOOL EnableAVIInfoFrame(BYTE bEnable,BYTE *pAVIInfoFrame);
|
||||
BOOL EnableAudioInfoFrame(BYTE bEnable,BYTE *pAudioInfoFrame);
|
||||
BOOL EnableHDRInfoFrame(BYTE bEnable, BYTE *pHDRInfoFrame);
|
||||
BOOL EnableGPInfoFrame(BYTE bEnable, BYTE *pInfoFrame);
|
||||
// BOOL EnableVideoOutputIndirect(BYTE xCnt,BYTE inputColorMode,BYTE outputColorMode,BYTE bHDMI) ;
|
||||
void SetAVMute(BYTE bEnable) ;
|
||||
void SetOutputColorDepthPhase(BYTE ColorDepth,BYTE bPhase) ;
|
||||
|
@ -252,6 +252,33 @@ typedef union _AVI_InfoFrame
|
||||
} pktbyte ;
|
||||
} AVI_InfoFrame ;
|
||||
|
||||
typedef union _Freesync_InfoFrame {
|
||||
|
||||
struct {
|
||||
BYTE Type ;
|
||||
BYTE Ver ;
|
||||
BYTE Len ;
|
||||
|
||||
BYTE Enable ;
|
||||
|
||||
BYTE Rsvd1 ;
|
||||
BYTE Rsvd2 ;
|
||||
BYTE Rsvd3 ;
|
||||
BYTE Rsvd4 ;
|
||||
|
||||
BYTE Mode2 ;
|
||||
|
||||
BYTE min_rate ;
|
||||
BYTE max_rate ;
|
||||
} info ;
|
||||
|
||||
struct {
|
||||
BYTE FS_HB[3] ;
|
||||
BYTE FS_DB[VENDORSPEC_INFOFRAME_LEN] ;
|
||||
} pktbyte ;
|
||||
|
||||
} Freesync_InfoFrame ;
|
||||
|
||||
typedef union _Audio_InfoFrame {
|
||||
|
||||
struct {
|
||||
|
Loading…
Reference in New Issue
Block a user