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

📄 hdmi.h

📁 realtek LCD monitor, TV开发源代码
💻 H
字号:
//**********************************************************************************************************
//  The  Software  is  proprietary,  confidential,  and  valuable to Realtek Semiconductor
//  Corporation  ("Realtek").  All  rights, including but not limited  to  copyrights,
//  patents,  trademarks, trade secrets, mask work rights, and other similar rights and interests,
//  are reserved to Realtek. Without  prior  written  consent  from  Realtek,  copying, reproduction,
//  modification,  distribution,  or  otherwise  is strictly prohibited. The Software  shall  be
//  kept  strictly  in  confidence,  and  shall  not be  disclosed to or otherwise accessed by
//  any third party. @ <2003> - <2008>   The Software is provided "AS IS" without any warranty of any kind,
//  express, implied, statutory or otherwise.
//**********************************************************************************************************
//----------------------------------------------------------------------------------------------------
// ID Code      : Hdmi.h No.0000
// Update Note  :
//----------------------------------------------------------------------------------------------------

//--------------------------------------------------
// Definitions of MCK Frequence
//--------------------------------------------------
#define _AUDIO_128_TIMES        1
#define _AUDIO_256_TIMES        2

#define _AUDIO_MCK_32000        _AUDIO_256_TIMES
#define _AUDIO_MCK_44100        _AUDIO_256_TIMES
#define _AUDIO_MCK_48000        _AUDIO_256_TIMES
#define _AUDIO_MCK_88200        _AUDIO_256_TIMES
#define _AUDIO_MCK_96000        _AUDIO_256_TIMES
#define _AUDIO_MCK_176400       _AUDIO_128_TIMES
#define _AUDIO_MCK_192000       _AUDIO_128_TIMES

//--------------------------------------------------
// Definitions of DAC
//--------------------------------------------------
#define _DAC_DEVICE_ADDR        0x20    //CS4360
#define _DAC_CONTROL_ADDR       0x01


//----------------------------------------------------------------------------------------------------

#ifdef __HDMI__

BYTE code tHDMI_NO_PORT_WARNING[] = { 0x00,};


#if(_HDMI_SUPPORT == _ON)
//--------------------------------------------------
// Global Hdmi Table
//--------------------------------------------------

BYTE code tHDMI_YPBPR_ITU601[] =
{
//cyyeh 20080710 update table  start
#if(_SCALER_TYPE == _RTD2472D)
    4,  _NON_AUTOINC,   _YUV2RGB_CTRL_9C,            0x02,
    5,  _AUTOINC,       _YUV_RGB_ACCESS_9D,          0x0C,0x04,
    5,  _AUTOINC,       _YUV_RGB_ACCESS_9D,          0x1C,0xa8,
    5,  _AUTOINC,       _YUV_RGB_ACCESS_9D,          0x2C,0x06,
    5,  _AUTOINC,       _YUV_RGB_ACCESS_9D,          0x3C,0x62,
    5,  _AUTOINC,       _YUV_RGB_ACCESS_9D,          0x4C,0x01,
    5,  _AUTOINC,       _YUV_RGB_ACCESS_9D,          0x5C,0x91,
    5,  _AUTOINC,       _YUV_RGB_ACCESS_9D,          0x6C,0x03,
    5,  _AUTOINC,       _YUV_RGB_ACCESS_9D,          0x7C,0x40,
    5,  _AUTOINC,       _YUV_RGB_ACCESS_9D,          0x8C,0x08,
    5,  _AUTOINC,       _YUV_RGB_ACCESS_9D,          0x9C,0x12,
    5,  _AUTOINC,       _YUV_RGB_ACCESS_9D,          0xAC,0x00,
    5,  _AUTOINC,       _YUV_RGB_ACCESS_9D,          0xBC,0x00,
    5,  _AUTOINC,       _YUV_RGB_ACCESS_9D,          0xCC,0x00,
    5,  _AUTOINC,       _YUV_RGB_ACCESS_9D,          0xDC,0x00,
    5,  _AUTOINC,       _YUV_RGB_ACCESS_9D,          0xEC,0x00,
    5,  _AUTOINC,       _YUV_RGB_ACCESS_9D,          0xFC,0x00,
    4,  _NON_AUTOINC,   _YUV_RGB_ACCESS_9D,          0x0C,
    4,  _NON_AUTOINC,   _YUV2RGB_CTRL_9C,            0x01,
#elif((_SCALER_TYPE == _RTD2545LR) || (_SCALER_TYPE == _RTD247xRD) || (_SCALER_TYPE == _RTD248xRD))
    4,  _NON_AUTOINC,   _PAGE_SELECT_9F,             0x07, // Page 7
    4,  _NON_AUTOINC,   _P7_YUV2RGB_CTRL_BF,         0x02,// Enable Coefficient Access
    5,  _AUTOINC,       _P7_YUV2RGB_ACCESS_C0,       0x00,0x04,
    5,  _AUTOINC,       _P7_YUV2RGB_ACCESS_C0,       0x08,0xa8,
    5,  _AUTOINC,       _P7_YUV2RGB_ACCESS_C0,       0x10,0x06,
    5,  _AUTOINC,       _P7_YUV2RGB_ACCESS_C0,       0x18,0x62,
    5,  _AUTOINC,       _P7_YUV2RGB_ACCESS_C0,       0x20,0x01,
    5,  _AUTOINC,       _P7_YUV2RGB_ACCESS_C0,       0x28,0x91,
    5,  _AUTOINC,       _P7_YUV2RGB_ACCESS_C0,       0x30,0x03,
    5,  _AUTOINC,       _P7_YUV2RGB_ACCESS_C0,       0x38,0x40,
    5,  _AUTOINC,       _P7_YUV2RGB_ACCESS_C0,       0x40,0x08,
    5,  _AUTOINC,       _P7_YUV2RGB_ACCESS_C0,       0x48,0x12,
    5,  _AUTOINC,       _P7_YUV2RGB_ACCESS_C0,       0x50,0x00,
    5,  _AUTOINC,       _P7_YUV2RGB_ACCESS_C0,       0x58,0x00,
    5,  _AUTOINC,       _P7_YUV2RGB_ACCESS_C0,       0x60,0x00,
    5,  _AUTOINC,       _P7_YUV2RGB_ACCESS_C0,       0x68,0x00,
    5,  _AUTOINC,       _P7_YUV2RGB_ACCESS_C0,       0x70,0x00,
    5,  _AUTOINC,       _P7_YUV2RGB_ACCESS_C0,       0x78,0x00,
    5,  _AUTOINC,       _P7_YUV2RGB_ACCESS_C0,       0x80,0x02,
    5,  _AUTOINC,       _P7_YUV2RGB_ACCESS_C0,       0x88,0x00,
    5,  _AUTOINC,       _P7_YUV2RGB_ACCESS_C0,       0x90,0x02,
    5,  _AUTOINC,       _P7_YUV2RGB_ACCESS_C0,       0x98,0x00,
    5,  _AUTOINC,       _P7_YUV2RGB_ACCESS_C0,       0xA0,0x02,
    5,  _AUTOINC,       _P7_YUV2RGB_ACCESS_C0,       0xA8,0x00,
    4,  _NON_AUTOINC,   _P7_YUV2RGB_ACCESS_C0,       0x06,
    4,  _NON_AUTOINC,   _P7_YUV2RGB_CTRL_BF,         0x01,
#else
    No Setting !!

#endif    // End of #if(_SCALER_TYPE == _RTD2472D)
    _END
};

BYTE code tHDMI_YPBPR_ITU709[] =
{
#if(_SCALER_TYPE == _RTD2472D)
    4,  _NON_AUTOINC,   _YUV2RGB_CTRL_9C,            0x02,
    5,  _AUTOINC,       _YUV_RGB_ACCESS_9D,          0x0C,0x04,
    5,  _AUTOINC,       _YUV_RGB_ACCESS_9D,          0x1C,0xa8,
    5,  _AUTOINC,       _YUV_RGB_ACCESS_9D,          0x2C,0x07,
    5,  _AUTOINC,       _YUV_RGB_ACCESS_9D,          0x3C,0x2c,
    5,  _AUTOINC,       _YUV_RGB_ACCESS_9D,          0x4C,0x00,
    5,  _AUTOINC,       _YUV_RGB_ACCESS_9D,          0x5C,0xda,
    5,  _AUTOINC,       _YUV_RGB_ACCESS_9D,          0x6C,0x02,
    5,  _AUTOINC,       _YUV_RGB_ACCESS_9D,          0x7C,0x22,
    5,  _AUTOINC,       _YUV_RGB_ACCESS_9D,          0x8C,0x08,
    5,  _AUTOINC,       _YUV_RGB_ACCESS_9D,          0x9C,0x73,
    5,  _AUTOINC,       _YUV_RGB_ACCESS_9D,          0xAC,0x00,
    5,  _AUTOINC,       _YUV_RGB_ACCESS_9D,          0xBC,0x00,
    5,  _AUTOINC,       _YUV_RGB_ACCESS_9D,          0xCC,0x00,
    5,  _AUTOINC,       _YUV_RGB_ACCESS_9D,          0xDC,0x00,
    5,  _AUTOINC,       _YUV_RGB_ACCESS_9D,          0xEC,0x00,
    5,  _AUTOINC,       _YUV_RGB_ACCESS_9D,          0xFC,0x00,
    4,  _NON_AUTOINC,   _YUV_RGB_ACCESS_9D,          0x0C,
    4,  _NON_AUTOINC,   _YUV2RGB_CTRL_9C,            0x01,
#elif((_SCALER_TYPE == _RTD2545LR) || (_SCALER_TYPE == _RTD247xRD) || (_SCALER_TYPE == _RTD248xRD))
    4,  _NON_AUTOINC,   _PAGE_SELECT_9F,             0x07,
    4,  _NON_AUTOINC,   _P7_YUV2RGB_CTRL_BF,         0x02,
    5,  _AUTOINC,       _P7_YUV2RGB_ACCESS_C0,       0x00,0x04,
    5,  _AUTOINC,       _P7_YUV2RGB_ACCESS_C0,       0x08,0xa8,
    5,  _AUTOINC,       _P7_YUV2RGB_ACCESS_C0,       0x10,0x07,
    5,  _AUTOINC,       _P7_YUV2RGB_ACCESS_C0,       0x18,0x2c,
    5,  _AUTOINC,       _P7_YUV2RGB_ACCESS_C0,       0x20,0x00,
    5,  _AUTOINC,       _P7_YUV2RGB_ACCESS_C0,       0x28,0xda,
    5,  _AUTOINC,       _P7_YUV2RGB_ACCESS_C0,       0x30,0x02,
    5,  _AUTOINC,       _P7_YUV2RGB_ACCESS_C0,       0x38,0x22,
    5,  _AUTOINC,       _P7_YUV2RGB_ACCESS_C0,       0x40,0x08,
    5,  _AUTOINC,       _P7_YUV2RGB_ACCESS_C0,       0x48,0x73,
    5,  _AUTOINC,       _P7_YUV2RGB_ACCESS_C0,       0x50,0x00,
    5,  _AUTOINC,       _P7_YUV2RGB_ACCESS_C0,       0x58,0x00,
    5,  _AUTOINC,       _P7_YUV2RGB_ACCESS_C0,       0x60,0x00,
    5,  _AUTOINC,       _P7_YUV2RGB_ACCESS_C0,       0x68,0x00,
    5,  _AUTOINC,       _P7_YUV2RGB_ACCESS_C0,       0x70,0x00,
    5,  _AUTOINC,       _P7_YUV2RGB_ACCESS_C0,       0x78,0x00,
    5,  _AUTOINC,       _P7_YUV2RGB_ACCESS_C0,       0x80,0x02,
    5,  _AUTOINC,       _P7_YUV2RGB_ACCESS_C0,       0x88,0x00,
    5,  _AUTOINC,       _P7_YUV2RGB_ACCESS_C0,       0x90,0x02,
    5,  _AUTOINC,       _P7_YUV2RGB_ACCESS_C0,       0x98,0x00,
    5,  _AUTOINC,       _P7_YUV2RGB_ACCESS_C0,       0xA0,0x02,
    5,  _AUTOINC,       _P7_YUV2RGB_ACCESS_C0,       0xA8,0x00,
    4,  _NON_AUTOINC,   _P7_YUV2RGB_ACCESS_C0,       0x06,
    4,  _NON_AUTOINC,   _P7_YUV2RGB_CTRL_BF,         0x01,

#else
    No Setting !!

#endif   // End of #if(_SCALER_TYPE == _RTD2472D)
//cyyeh 20080710 update table  End

    _END
};



BYTE code tHDMI_AUDIO_DAC[] =
{

    4,  _NON_AUTOINC,   _PAGE_SELECT_9F,                _PAGE1,
    5,  _AUTOINC,       _P1_BB_POWER0_F0,               0xff,0xff,
//    5,  _AUTOINC,       _P1_AOUT_CTL_F4,                0x10,0x10,
    4,  _NON_AUTOINC,   _PAGE_SELECT_9F,                _PAGE2,
//    9,  _AUTOINC,       _P1_BB_POWER0_F0,               0xff,0xff,0x67, 0x27,0x10,0x10,


    _END
};



#endif //End of #if(_HDMI_SUPPORT == _ON)

//--------------------------------------------------
// Global Variables
//--------------------------------------------------
BYTE xdata ucHdmiCtrl = 0;
BYTE xdata ucAudioRate = 0;


//--------------------------------------------------
// Function Prototypes
//--------------------------------------------------
bit CHdmiFormatDetect(void);
bit CHdmiAudioFIFODetect(void);
void CHdmiAudioModeDetect(void);
bit CHdmiVideoSetting(void);


#if(_EXT_DAC_SUPPORT == _ON)
void CHdmiResetDAC(void);
void CHdmiAdjustDACSampleRate(BYTE ucModeType);
#endif

void CHdmiAudioWaitingFlagReadyEven(void);
void CHdmiAudioFirstTracking(void);
void CHdmiEnableAudioOutput(void);

#else

//--------------------------------------------------
// Extern Global Hdmi Table
//--------------------------------------------------
extern BYTE code tHDMI_NO_PORT_WARNING[];

#if(_HDMI_SUPPORT == _ON)
extern BYTE code tHDMI_YPBPR_ITU601[];
extern BYTE code tHDMI_YPBPR_ITU709[];
extern BYTE code tHDMI_AUDIO_DAC[];
#endif //End of #if(_HDMI_SUPPORT == _ON)


//--------------------------------------------------
// Extern Global Hdmi Edid Data
//--------------------------------------------------


//--------------------------------------------------
// Extern Global Variables
//--------------------------------------------------
extern BYTE xdata ucHdmiCtrl;
extern BYTE xdata ucAudioRate;


//--------------------------------------------------
// Extern Function Prototypes
//--------------------------------------------------
extern bit CHdmiFormatDetect(void);
extern bit CHdmiAudioFIFODetect(void);
extern bit CHdmiVideoSetting(void);
extern void CHdmiAudioModeDetect(void);
extern void CHdmiResetDAC(void);
extern void CHdmiAdjustDACSampleRate(BYTE ucModeType);
extern void CHdmiAudioWaitingFlagReadyEven(void);
extern void CHdmiAudioFirstTracking(void);
extern void CHdmiEnableAudioOutput(void);

#endif // End of #ifdef __HDMI__



//----------------------------------------------------------------------------------------------------

//--------------------------------------------------
// Macro of Input source is the HDMI format
//--------------------------------------------------
#define GET_HDMIINPUT()             (bit)(ucHdmiCtrl & _BIT0)
#define SET_HDMIINPUT()             ucHdmiCtrl |= _BIT0
#define CLR_HDMIINPUT()             ucHdmiCtrl &= ~_BIT0


//--------------------------------------------------
// Macro of HDMI Audio PLL Lock Ready Flag
//--------------------------------------------------
#define GET_AUDIOPLLLOCKREADY()        (bit)(ucHdmiCtrl & _BIT1)
#define SET_AUDIOPLLLOCKREADY()        ucHdmiCtrl |= _BIT1
#define CLR_AUDIOPLLLOCKREADY()        ucHdmiCtrl &= ~_BIT1


//--------------------------------------------------
// Macro of HDMI Audio Resume Flag
//--------------------------------------------------
#define GET_AVRESUME()             (bit)(ucHdmiCtrl & _BIT2)
#define SET_AVRESUME()             ucHdmiCtrl |= _BIT2
#define CLR_AVRESUME()             ucHdmiCtrl &= ~_BIT2


//--------------------------------------------------
// Macro of HDMI Audio Waiting Time Flag
//--------------------------------------------------
#define GET_AUDIOWAITINGFLAG()     (bit)(ucHdmiCtrl & _BIT3)
#define SET_AUDIOWAITINGFLAG()     ucHdmiCtrl |= _BIT3
#define CLR_AUDIOWAITINGFLAG()     ucHdmiCtrl &= ~_BIT3


//--------------------------------------------------
// Macro of HDMI Audio Waiting Time Out Flag
//--------------------------------------------------
#define GET_AUDIOWAITINGTIMEOUT()  (bit)(ucHdmiCtrl & _BIT4)
#define SET_AUDIOWAITINGTIMEOUT()  ucHdmiCtrl |= _BIT4
#define CLR_AUDIOWAITINGTIMEOUT()  ucHdmiCtrl &= ~_BIT4

//cyyeh
//--------------------------------------------------
// Macro of 2472 Demo Board Audio ClassD 3005
//--------------------------------------------------
#define SET_AUDIOPWR()                 (bAUDIO_PWR = _LOW)
#define CLR_AUDIOPWR()                 (bAUDIO_PWR = _HIGH)

#define SET_AMPPWR()                   (bSHDN_AMP = _LOW)
#define CLR_AMPPWR()                   (bSHDN_AMP = _HIGH)


⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -