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

📄 tmdlhdmitx.c

📁 HDMI NXP9983 chipset controller driver
💻 C
📖 第 1 页 / 共 5 页
字号:
/** * Copyright (C) 2006 NXP N.V., All Rights Reserved. * This source code and any compilation or derivative thereof is the proprietary * information of NXP N.V. and is confidential in nature. Under no circumstances * is this software to be  exposed to or placed under an Open Source License of * any type without the expressed written permission of NXP N.V. * * \file          tmdlHdmiTx.c * * \version       Revision: 1 * * \date          Date: 10/08/07 10:00 * * \brief         devlib driver component API for the TDA998x HDMI Transmitters * * \section refs  Reference Documents * HDMI Tx Driver - FRS.doc, * * \section info  Change Information * * \verbatim   History:       tmdlHdmiTx.c * * *****************  Version 1  ***************** * User: J. Lamotte Date: 10/08/07   Time: 10:00 * Updated in $/Source/tmdlHdmiTx/inc * initial version    \endverbatim **//*============================================================================*//*                             INCLUDE FILES                                  *//*============================================================================*/#include "tmdlHdmiTx_IW.h"#include "tmdlHdmiTx.h"#include "tmdlHdmiTx_local.h"#include "tmbslHdmiTx.h"#include "tmdlHdmiTx_cfg.h"/*============================================================================*//*                          TYPES DECLARATIONS                                *//*============================================================================*//* Macro to avoid compilation warnings */#ifdef TMFL_OS_WINDOWS#define DUMMY_ACCESS(x) x#else#define DUMMY_ACCESS(x)#endif/*============================================================================*//*                       CONSTANTS DECLARATIONS                               *//*============================================================================*//*============================================================================*//*                         FUNCTION PROTOTYPES                                *//*============================================================================*/extern tmErrorCode_t tmbslDebugWriteFakeRegPage( tmUnitSelect_t txUnit );/* Prototypes of internal functions *//* Task functions */static void CommandTaskUnit0(void);static void CommandTaskUnit1(void);static void HdcpTaskUnit0(void);static void HdcpTaskUnit1(void);/* Interrupt callback functions */static void dlHdmiTxHandleENCRYPT(tmInstance_t instance);static void dlHdmiTxHandleHPD(tmInstance_t instance);static void dlHdmiTxHandleT0(tmInstance_t instance);static void dlHdmiTxHandleBCAPS(tmInstance_t instance);static void dlHdmiTxHandleBSTATUS(tmInstance_t instance);static void dlHdmiTxHandleSHA_1(tmInstance_t instance);static void dlHdmiTxHandlePJ(tmInstance_t instance);static void dlHdmiTxHandleR0(tmInstance_t instance);static void dlHdmiTxHandleSW_INT(tmInstance_t instance);static void dlHdmiTxHandleRX_SENSE(tmInstance_t instance);static void dlHdmiTxHandleEDID_READ(tmInstance_t instance);static void dlHdmiTxHandleVS_RPT(tmInstance_t instance);/* Devlib internal color bar management functions */ static void dlHdmiTxCheckColorBar(tmInstance_t instance);static void dlHdmiTxCheckHdcpColorBar(tmInstance_t instance);#ifndef NO_HDCPstatic void dlHdmiTxFindHdcpSeed(tmInstance_t instance);#endif /* NO_HDCP *//* Set the state machine of device library */static void dlHdmiTxSetState(    tmInstance_t instance,     tmdlHdmiTxDriverState_t state);/* Get the event status (enable or disable) in order to known   if event should be signaled */static tmdlHdmiTxEventStatus_t dlHdmiTxGetEventStatus(    tmInstance_t        instance,    tmdlHdmiTxEvent_t   event);/* Use by tmdlHdmiTxSetInputOutput in scaler mode */static Bool dlHdmiTxGetReflineRefpix(    tmdlHdmiTxVidFmt_t      vinFmt,        tmdlHdmiTxVinMode_t     vinMode,       tmdlHdmiTxVidFmt_t      voutFmt,       UInt8                   syncIn,    tmdlHdmiTxPixRate_t     pixRate,    UInt16                  *pRefPix,      UInt16                  *pRefLine,     UInt16                  *pScRefPix,    UInt16                  *pScRefLine,    Bool                    *pbVerified);/* Use by tmdlHdmiTxSetInputOutput to set AVI infoframe */static tmErrorCode_t dlHdmiTxSetVideoInfoframe(    tmInstance_t            instance,    tmdlHdmiTxVidFmt_t      voutFmt,    tmdlHdmiTxVoutMode_t    voutMode);/* Get DTD from BSL */static tmErrorCode_t dlHdmiTxEdidGetDTD(    tmInstance_t                    instance,    tmdlHdmiTxEdidVideoTimings_t    *pDTDescriptors,    UInt8                           maxDTDesc,    UInt8                           *pWrittenDTDesc);/* Convert DTD to CEA */static tmdlHdmiTxVidFmt_t dlHdmiTxConvertDTDtoCEA(    tmdlHdmiTxEdidVideoTimings_t    *pDTDescriptors);static tmdlHdmiTxVidFmt_t dlHdmiTxConvertDTDtoCEA_640HAP(    tmdlHdmiTxEdidVideoTimings_t    *pDTDescriptors);static tmdlHdmiTxVidFmt_t dlHdmiTxConvertDTDtoCEA_720HAP(    tmdlHdmiTxEdidVideoTimings_t    *pDTDescriptors,    tmdlHdmiTxPictAspectRatio_t     pictureAspectRatio);static tmdlHdmiTxVidFmt_t dlHdmiTxConvertDTDtoCEA_1280HAP(    tmdlHdmiTxEdidVideoTimings_t    *pDTDescriptors);static tmdlHdmiTxVidFmt_t dlHdmiTxConvertDTDtoCEA_1920HAP(    tmdlHdmiTxEdidVideoTimings_t    *pDTDescriptors,    Bool                            formatInterlaced);static tmdlHdmiTxVidFmt_t dlHdmiTxConvertDTDtoCEA_1440HAP(    tmdlHdmiTxEdidVideoTimings_t    *pDTDescriptors,    tmdlHdmiTxPictAspectRatio_t     pictureAspectRatio,    Bool                            formatInterlaced);static tmdlHdmiTxVidFmt_t dlHdmiTxConvertDTDtoCEA_2880HAP(    tmdlHdmiTxEdidVideoTimings_t    *pDTDescriptors,    tmdlHdmiTxPictAspectRatio_t     pictureAspectRatio,    Bool                            formatInterlaced);static tmdlHdmiTxPictAspectRatio_t dlHdmiTxCalcAspectRatio (    UInt16    HImageSize,    UInt16    VImageSize);/* IMPORTANT: The 3 functions define below should not be declared in static   in order to allow applicative API to call them. Those functions are not   in tmdlHdmiTx_Functions.h but are in tmdlHdmiTxCore.def *//* Get the device library state */tmdlHdmiTxDriverState_t dlHdmiTxGetState(tmInstance_t instance);/* Set pattern ON (Blue screen or color bar) */tmErrorCode_t dlHdmiTxSetTestPatternOn(    tmInstance_t            instance,    tmdlHdmiTxVidFmt_t		voutFmt,    tmdlHdmiTxVoutMode_t    voutMode,    tmdlHdmiTxTestPattern_t pattern);/* Set pattern OFF */tmErrorCode_t dlHdmiTxSetTestPatternOff(    tmInstance_t            instance,    tmdlHdmiTxVidFmt_t      voutFmt,    tmdlHdmiTxVoutMode_t    voutMode);static void dlHdmiTxCheckHdcpBksv(    tmInstance_t    instance,    UInt8 *         pHdcpBksvTested,    Bool  *         pbBksvSecure,    Bool            bBigEndian);/*============================================================================*//*                       VARIABLES DECLARATIONS                               *//*============================================================================*/tmdlHdmiTxIWSemHandle_t dlHdmiTxItSemaphore[MAX_UNITS];/* Unit configuration structure (device library system configuration) */unitConfig_t unitTableTx[MAX_UNITS] = {    {False, False, (tmdlHdmiTxHdcpOptions_t)HDCP_OPT_DEFAULT, False, False, TMDL_HDMITX_DEVICE_UNKNOWN, 0, 0, (tmdlHdmiTxIWTaskHandle_t)0,		(tmdlHdmiTxIWQueueHandle_t)0, (tmdlHdmiTxIWTaskHandle_t)0, STATE_NOT_INITIALIZED, (ptmdlHdmiTxCallback_t)0, Null, 0},    {False, False, (tmdlHdmiTxHdcpOptions_t)HDCP_OPT_DEFAULT, False, False, TMDL_HDMITX_DEVICE_UNKNOWN, 0, 0, (tmdlHdmiTxIWTaskHandle_t)0,		(tmdlHdmiTxIWQueueHandle_t)0, (tmdlHdmiTxIWTaskHandle_t)0, STATE_NOT_INITIALIZED, (ptmdlHdmiTxCallback_t)0, Null, 0}};tmdlHdmiTxIWFuncPtr_t commandTaskTableTx[MAX_UNITS] = {    CommandTaskUnit0,    CommandTaskUnit1};tmdlHdmiTxIWFuncPtr_t hdcpTaskTableTx[MAX_UNITS] = {    HdcpTaskUnit0,    HdcpTaskUnit1};tmbslHdmiTxCallbackList_t callbackFuncTableTx;/* Device library configuration structure completed by tmdlHdmiTxCfgGetConfig with   informations contained in config file */tmdlHdmiTxDriverConfigTable_t gtmdlHdmiTxDriverConfigTable[MAX_UNITS];/* Video info (see instanceStatusInfoTx) */tmdlHdmiTxVideoInfo_t videoInfoListTx = {    False,    {TMDL_HDMITX_VFMT_03_720x480p_60Hz, TMDL_HDMITX_VINMODE_YUV422, TMDL_HDMITX_SYNCSRC_EXT_VS, TMDL_HDMITX_PIXRATE_SINGLE},    {TMDL_HDMITX_VFMT_03_720x480p_60Hz, TMDL_HDMITX_VOUTMODE_YUV422, TMDL_HDMITX_COLORDEPTH_24}};/* Audio info (see instanceStatusInfoTx) */tmdlHdmiTxAudioInfo_t audioInfoListTx = {    False,    {TMDL_HDMITX_AFMT_SPDIF, TMDL_HDMITX_AFS_48K, TMDL_HDMITX_PIXRATE_SINGLE,      TMDL_HDMITX_I2SFOR_PHILIPS_L,TMDL_HDMITX_I2SQ_16BITS,TMDL_HDMITX_DSTRATE_SINGLE,0x00} };/* Event state (see instanceStatusInfoTx) */tmdlHdmiTxEventState_t eventStateListTx[EVENT_NB] = {    {TMDL_HDMITX_HDCP_ACTIVE,           TMDL_HDMITX_EVENT_DISABLED},    {TMDL_HDMITX_HDCP_INACTIVE,         TMDL_HDMITX_EVENT_DISABLED},    {TMDL_HDMITX_HPD_ACTIVE,            TMDL_HDMITX_EVENT_DISABLED},    {TMDL_HDMITX_HPD_INACTIVE,          TMDL_HDMITX_EVENT_DISABLED},    {TMDL_HDMITX_RX_KEYS_RECEIVED,      TMDL_HDMITX_EVENT_DISABLED},    {TMDL_HDMITX_RX_DEVICE_ACTIVE,      TMDL_HDMITX_EVENT_DISABLED},    {TMDL_HDMITX_RX_DEVICE_INACTIVE,    TMDL_HDMITX_EVENT_DISABLED},    {TMDL_HDMITX_EDID_RECEIVED,         TMDL_HDMITX_EVENT_DISABLED},    {TMDL_HDMITX_VS_RPT_RECEIVED,       TMDL_HDMITX_EVENT_DISABLED}};/* Color bars state (see instanceStatusInfoTx) */tmdlHdmiTxColBarState_t colorBarStateTx = {    False,    True,    True,    False,    False,    True,    False};/* Instance status (save the actual configuration) */instanceStatus_t instanceStatusInfoTx[MAX_UNITS] = {     &videoInfoListTx,    &audioInfoListTx,    eventStateListTx,    &colorBarStateTx,    0};/* HDCP seed table, arranged as pairs of 16-bit integers: lookup value, seed value. * If no table is programmed and if KEY_SEED in config file is null, HDCP will be disabled */#define SEED_TABLE_LEN 10static const UInt16 kSeedTable[SEED_TABLE_LEN][2] = { 	{0, 0},	{0, 0},	{0, 0},	{0, 0},	{0, 0},	{0, 0},	{0, 0},	{0, 0},	{0, 0},	{0, 0}};#ifndef NO_HDCPtmdlHdmiTxHdcpInfo_t hdcpInfoListTx[MAX_UNITS];

⌨️ 快捷键说明

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