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

📄 tmbslhdmitx_app.c

📁 HDMI NXP9983 chipset controller driver
💻 C
📖 第 1 页 / 共 5 页
字号:
 * User: Djw          Date: 22/08/06   Time: 9:59
 * Updated in $/Source/tmbslHdmiTx/Src
 * NO_HDCP modifications. Change Request 13.
 * 
 * *****************  Version 13  *****************
 * User: Mayhew       Date: 10/07/06   Time: 13:15
 * Updated in $/Source/tmbslHdmiTx/Src
 * Fix file header comment. Aspect ratio codes now 1 not 0 for 4:3. 
 * Fix VGA format lookup. 
 * New refpix/refline values. Add Verified value for each combination.
 * Sync Once values now based on scaler mode not output format.
 * Reduce delay before HandleBKSV for reliability. Fix GCC warnings.
 * 
 * *****************  Version 11  *****************
 * User: Mayhew       Date: 30/06/06   Time: 12:44
 * Updated in $/Source/tmbslHdmiTx/Src
 * Add audioFmt parameter to appHdmiTx_setInputOutput.
 * New kRefpixRefline values, based on pixRate not voutMode.
 * 
 * *****************  Version 10  *****************
 * User: Mayhew       Date: 29/06/06   Time: 16:35
 * Updated in $/Source/tmbslHdmiTx/Src
 * New refpix/refline values. Add audioFmt audio format argument. Collect
 * all input sync settings under syncIn argument. Add RGB swapTable
 * values.
 * 
 * *****************  Version 8  *****************
 * User: Mayhew       Date: 5/06/06    Time: 15:02
 * Updated in $/Source/tmbslHdmiTx/Src
 * Rename syncSrc to syncIn. Remove 2nd param from handleBCAPS. 
 * Add pVidFmtNew param to appHdmiTx_nextEdidVidFmt.
 * Input port mapping depends on vinMode.
 * Several settings differ for CCIR656 rather than set as constants.
 * Use table of refpix/refline values for combinations of input/output.
 * Use table fo aspect ratios per vouFmt
 * 
 * *****************  Version 6  *****************
 * User: Mayhew       Date: 22/05/06   Time: 15:56
 * Updated in $/Source/tmbslHdmiTx/Src
 * Add pixRate to appHdmiTx_setInputOutput. Add appHdmiTx_nextEdidVidFmt.
 * 
 * *****************  Version 4  *****************
 * User: Mayhew       Date: 19/05/06   Time: 11:33
 * Updated in $/Source/tmbslHdmiTx/Src
 * Add options parameter to appHdmiTx_Hdcp_On
 * 
 * *****************  Version 3  *****************
 * User: Mayhew       Date: 10/05/06   Time: 17:09
 * Updated in $/Source/tmbslHdmiTx/Src
 * New APIs for HDCP and parameterised format setting
 * 
 * *****************  Version 2  *****************
 * User: Mayhew       Date: 11/04/06   Time: 14:18
 * Updated in $/Source/tmbslHdmiTx/Src
 * Fixed bad colours in phase 2 demo: MATMODE_AUTO not _OFF, UPSAMPLE_AUTO
 * not _COPY. 
 * ScalerSetFine values changed from script for 1080i.
 * SD output format uses 59Hz not 60Hz.
 * For cleaner image changes, disabled scaler input instead of output
 * frame.
   \endverbatim
 *
*/

/*============================================================================*/
/*                   STANDARD INCLUDE FILES                                   */
/*============================================================================*/



/*============================================================================*/
/*                   PROJECT INCLUDE FILES                                    */
/* Note that tmbslHdmiTx_local.h is NOT included, because local driver data   */
/* should NOT be accessed from application code.                              */
/*============================================================================*/
#include "tmbslHdmiTx.h"
#include "tmbslHdmiTx_app.h"

#ifdef TMFL_TDA9981_SUPPORT
#include "tmbslHdmiTx_cfg.h"
#endif /* TMFL_TDA9981_SUPPORT */

/*============================================================================*/
/*                   MACRO DEFINITIONS                                        */
/*============================================================================*/

/**
 * A macro to check a condition and if true return a result
 */
#define RETIF(cond, rslt)       if ((cond)){return (rslt);}

/* Arbitrary short TV format values */
#define TV_INVALID      0
#define TV_VGA_60Hz     1
#define TV_240p_60Hz    2
#define TV_480p_60Hz    3
#define TV_480i_60Hz    4
#define TV_720p_60Hz    5
#define TV_1080p_60Hz   6
#define TV_1080i_60Hz   7
#define TV_288p_50Hz    8
#define TV_576p_50Hz    9
#define TV_576i_50Hz    10
#define TV_720p_50Hz    11
#define TV_1080p_50Hz   12
#define TV_1080i_50Hz   13


/* Shorthands for vinMode values in tmbslHdmiTx.h */
#define iINVALID HDMITX_VINMODE_INVALID
#define iCCIR656 HDMITX_VINMODE_CCIR656
#define iRGB444  HDMITX_VINMODE_RGB444 
#define iYUV444  HDMITX_VINMODE_YUV444 
#define iYUV422  HDMITX_VINMODE_YUV422 

/* Shorthands for input sync */
#define EMB      1
#define EXT      0

/* Shorthands for single/double pixel rate in tmbslHdmiTx.h */
#define SINGLE   HDMITX_PIXRATE_SINGLE
#define DOUBLE   HDMITX_PIXRATE_DOUBLE

/* Shorthands for sampling frequency in appHdmiTx_setAudio API */#define AIF_SF_REFER_TO_STREAM_HEADER   0#define AIF_SF_32K                      1#define AIF_SF_44K                      2#define AIF_SF_48K                      3#define AIF_SF_88K                      4#define AIF_SF_96K                      5#define AIF_SF_176K                     6#define AIF_SF_192K                     7
/* HDCP check interval in milliseconds */
#define HDCP_CHECK_INTERVAL_MS 2500

/* Number of HDCP checks to carry out after HDCP is started */
#define HDCP_NUM_CHECKS 5

/*============================================================================*/
/*                   TYPE DEFINITIONS                                         */
/*============================================================================*/


/*============================================================================*/
/*                   PUBLIC VARIABLE DEFINITIONS                              */
/*============================================================================*/


/*============================================================================*/
/*                   STATIC CONSTANT DECLARATIONS                             */
/*============================================================================*/

#define APP_HDMITX_CHANNELALLOC_LUT_SIZE 32static CONST_DAT UInt8 kChanAllocChanNum[APP_HDMITX_CHANNELALLOC_LUT_SIZE] = \{2,3,3,4,3,4,4,5,4,5,5,6,5,6,6,7,6,7,7,8,4,5,5,6,5,6,6,7,6,7,7,8 };
/**
 * Lookup table to convert from EIA/CEA TV video format to
 * aspect ratio used in video infoframe:
 * Aspect ratio 1=4:3, 2=16:9
 */
#ifndef FORMAT_PC
static CONST_DAT UInt8 kVfmtToAspect_TV[HDMITX_VFMT_TV_NUM] =
#else /* FORMAT_PC */
static CONST_DAT UInt8 kVfmtToAspect_TV[HDMITX_VFMT_TV_NUM + HDMITX_VFMT_PC_NUM] =
#endif /* FORMAT_PC */
{
    0,   /* HDMITX_VFMT_NULL               */
    1,   /* HDMITX_VFMT_01_640x480p_60Hz   */
    1,   /* HDMITX_VFMT_02_720x480p_60Hz   */
    2,   /* HDMITX_VFMT_03_720x480p_60Hz   */
    2,   /* HDMITX_VFMT_04_1280x720p_60Hz  */
    2,   /* HDMITX_VFMT_05_1920x1080i_60Hz */
    1,   /* HDMITX_VFMT_06_720x480i_60Hz   */
    2,   /* HDMITX_VFMT_07_720x480i_60Hz   */
    1,   /* HDMITX_VFMT_08_720x240p_60Hz   */
    2,   /* HDMITX_VFMT_09_720x240p_60Hz   */
    1,   /* HDMITX_VFMT_10_720x480i_60Hz   */
    2,   /* HDMITX_VFMT_11_720x480i_60Hz   */
    1,   /* HDMITX_VFMT_12_720x240p_60Hz   */
    2,   /* HDMITX_VFMT_13_720x240p_60Hz   */
    1,   /* HDMITX_VFMT_14_1440x480p_60Hz  */
    2,   /* HDMITX_VFMT_15_1440x480p_60Hz  */
    2,   /* HDMITX_VFMT_16_1920x1080p_60Hz */
    1,   /* HDMITX_VFMT_17_720x576p_50Hz   */
    2,   /* HDMITX_VFMT_18_720x576p_50Hz   */
    2,   /* HDMITX_VFMT_19_1280x720p_50Hz  */
    2,   /* HDMITX_VFMT_20_1920x1080i_50Hz */
    1,   /* HDMITX_VFMT_21_720x576i_50Hz   */
    2,   /* HDMITX_VFMT_22_720x576i_50Hz   */
    1,   /* HDMITX_VFMT_23_720x288p_50Hz   */
    2,   /* HDMITX_VFMT_24_720x288p_50Hz   */
    1,   /* HDMITX_VFMT_25_720x576i_50Hz   */
    2,   /* HDMITX_VFMT_26_720x576i_50Hz   */
    1,   /* HDMITX_VFMT_27_720x288p_50Hz   */
    2,   /* HDMITX_VFMT_28_720x288p_50Hz   */
    1,   /* HDMITX_VFMT_29_1440x576p_50Hz  */
    2,   /* HDMITX_VFMT_30_1440x576p_50Hz  */
    2,   /* HDMITX_VFMT_31_1920x1080p_50Hz */
    2,   /* HDMITX_VFMT_32_1920x1080p_24Hz */
    2,   /* HDMITX_VFMT_33_1920x1080p_25Hz */
    2    /* HDMITX_VFMT_34_1920x1080p_30Hz */
#ifdef FORMAT_PC
   ,1,   /* HDMITX_VFMT_PC_640x480p_60Hz  */
    1,   /* HDMITX_VFMT_PC_800x600p_60Hz  */
    1,   /* HDMITX_VFMT_PC_1152x960p_60Hz  */
    1,   /* HDMITX_VFMT_PC_1024x768p_60Hz  */
    1,   /* HDMITX_VFMT_PC_1280x768p_60Hz  */
    1,   /* HDMITX_VFMT_PC_1280x1024p_60Hz  */
    1,   /* HDMITX_VFMT_PC_1360x768p_60Hz */
    1,   /* HDMITX_VFMT_PC_1400x1050p_60Hz */
    1,   /* HDMITX_VFMT_PC_1600x1200p_60Hz  */
    1,   /* HDMITX_VFMT_PC_1024x768p_70Hz  */
    1,   /* HDMITX_VFMT_PC_640x480p_72Hz  */
    1,   /* HDMITX_VFMT_PC_800x600p_72Hz  */
    1,   /* HDMITX_VFMT_PC_640x480p_75Hz  */
    1,   /* HDMITX_VFMT_PC_1024x768p_75Hz  */
    1,   /* HDMITX_VFMT_PC_800x600p_75Hz  */
    1,   /* HDMITX_VFMT_PC_1024x864p_75Hz  */
    1,   /* HDMITX_VFMT_PC_1280x1024p_75Hz  */
    1,   /* HDMITX_VFMT_PC_640x350p_85Hz  */
    1,   /* HDMITX_VFMT_PC_640x400p_85Hz  */
    1,   /* HDMITX_VFMT_PC_720x400p_85Hz  */
    1,   /* HDMITX_VFMT_PC_640x480p_85Hz  */
    1,   /* HDMITX_VFMT_PC_800x600p_85Hz  */
    1,   /* HDMITX_VFMT_PC_1024x768p_85Hz  */
    1,   /* HDMITX_VFMT_PC_1152x864p_85Hz  */
    1,   /* HDMITX_VFMT_PC_1280x960p_85Hz  */
    1,   /* HDMITX_VFMT_PC_1280x1024p_85Hz */
    1    /* HDMITX_VFMT_PC_1024x768i_87Hz  */
#endif /* FORMAT_PC */
};

/**
 * Lookup table to convert from EIA/CEA TV video format to
 * the short format of resolution/interlace/frequency
 */
static CONST_DAT UInt8 kVfmtToShortFmt_TV[HDMITX_VFMT_TV_NUM] =
{
    TV_INVALID,         /* HDMITX_VFMT_NULL               */
    TV_VGA_60Hz,        /* HDMITX_VFMT_01_640x480p_60Hz   */
    TV_480p_60Hz,       /* HDMITX_VFMT_02_720x480p_60Hz   */
    TV_480p_60Hz,       /* HDMITX_VFMT_03_720x480p_60Hz   */
    TV_720p_60Hz,       /* HDMITX_VFMT_04_1280x720p_60Hz  */
    TV_1080i_60Hz,      /* HDMITX_VFMT_05_1920x1080i_60Hz */
    TV_480i_60Hz,       /* HDMITX_VFMT_06_720x480i_60Hz   */
    TV_480i_60Hz,       /* HDMITX_VFMT_07_720x480i_60Hz   */
    TV_240p_60Hz,       /* HDMITX_VFMT_08_720x240p_60Hz   */
    TV_240p_60Hz,       /* HDMITX_VFMT_09_720x240p_60Hz   */
    TV_480i_60Hz,       /* HDMITX_VFMT_10_720x480i_60Hz   */
    TV_480i_60Hz,       /* HDMITX_VFMT_11_720x480i_60Hz   */
    TV_240p_60Hz,       /* HDMITX_VFMT_12_720x240p_60Hz   */
    TV_240p_60Hz,       /* HDMITX_VFMT_13_720x240p_60Hz   */
    TV_480p_60Hz,       /* HDMITX_VFMT_14_1440x480p_60Hz  */
    TV_480p_60Hz,       /* HDMITX_VFMT_15_1440x480p_60Hz  */
    TV_1080p_60Hz,      /* HDMITX_VFMT_16_1920x1080p_60Hz */
    TV_576p_50Hz,       /* HDMITX_VFMT_17_720x576p_50Hz   */
    TV_576p_50Hz,       /* HDMITX_VFMT_18_720x576p_50Hz   */
    TV_720p_50Hz,       /* HDMITX_VFMT_19_1280x720p_50Hz  */
    TV_1080i_50Hz,      /* HDMITX_VFMT_20_1920x1080i_50Hz */
    TV_576i_50Hz,       /* HDMITX_VFMT_21_720x576i_50Hz   */
    TV_576i_50Hz,       /* HDMITX_VFMT_22_720x576i_50Hz   */
    TV_288p_50Hz,       /* HDMITX_VFMT_23_720x288p_50Hz   */
    TV_288p_50Hz,       /* HDMITX_VFMT_24_720x288p_50Hz   */
    TV_576i_50Hz,       /* HDMITX_VFMT_25_720x576i_50Hz   */
    TV_576i_50Hz,       /* HDMITX_VFMT_26_720x576i_50Hz   */
    TV_288p_50Hz,       /* HDMITX_VFMT_27_720x288p_50Hz   */

⌨️ 快捷键说明

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