📄 tmbslhdmitx_1.c
字号:
E_REGVFMT_1600x1200p_60Hz, /* HDMITX_VFMT_PC_1600x1200p_60Hz */ E_REGVFMT_1024x768p_70Hz, /* HDMITX_VFMT_PC_1024x768p_70Hz */ E_REGVFMT_640x480p_72Hz, /* HDMITX_VFMT_PC_640x480p_72Hz */ E_REGVFMT_800x600p_72Hz, /* HDMITX_VFMT_PC_800x600p_72Hz */ E_REGVFMT_640x480p_75Hz, /* HDMITX_VFMT_PC_640x480p_75Hz */ E_REGVFMT_1024x768p_75Hz, /* HDMITX_VFMT_PC_1024x768p_75Hz */ E_REGVFMT_800x600p_75Hz, /* HDMITX_VFMT_PC_800x600p_75Hz */ E_REGVFMT_INVALID, /* HDMITX_VFMT_PC_1024x864p_75Hz */ E_REGVFMT_1280x1024p_75Hz, /* HDMITX_VFMT_PC_1280x1024p_75Hz */ E_REGVFMT_INVALID, /* HDMITX_VFMT_PC_640x350p_85Hz */ E_REGVFMT_INVALID, /* HDMITX_VFMT_PC_640x400p_85Hz */ E_REGVFMT_INVALID, /* HDMITX_VFMT_PC_720x400p_85Hz */ E_REGVFMT_640x480p_85Hz, /* HDMITX_VFMT_PC_640x480p_85Hz */ E_REGVFMT_800x600p_85Hz, /* HDMITX_VFMT_PC_800x600p_85Hz */ E_REGVFMT_INVALID, /* HDMITX_VFMT_PC_1024x768p_85Hz */ E_REGVFMT_INVALID, /* HDMITX_VFMT_PC_1152x864p_85Hz */ E_REGVFMT_INVALID, /* HDMITX_VFMT_PC_1280x960p_85Hz */ E_REGVFMT_INVALID, /* HDMITX_VFMT_PC_1280x1024p_85Hz */ E_REGVFMT_INVALID, /* HDMITX_VFMT_PC_1024x768i_87Hz */#endif /* FORMAT PC */ };/** * Lookup table to convert from EIA/CEA TV video formats used in API * parameters to the vid_format_i and vid_format_o values used in the * E_REG_P01_SC_VIDFORMAT_W register */#define SCIO(scin,scout) (((scin)<<4)|(scout))#define SCIO2SCIN(scio) (UInt8)(((scio)>>4)&0xF)#define SCIO2SCOUT(scio) (UInt8)((scio)&0xF)static CONST_DAT UInt8 kVfmtToRegvfmtScio_TV[HDMITX_VFMT_TV_NUM] ={ SCIO(E_REGVFMT_SCIN_INVALID, E_REGVFMT_SCOUT_INVALID), /* HDMITX_VFMT_NULL */ SCIO(E_REGVFMT_SCIN_480p_60Hz, E_REGVFMT_SCOUT_480p_60Hz), /* HDMITX_VFMT_01_640x480p_60Hz */ SCIO(E_REGVFMT_SCIN_480p_60Hz, E_REGVFMT_SCOUT_480p_60Hz), /* HDMITX_VFMT_02_720x480p_60Hz */ SCIO(E_REGVFMT_SCIN_480p_60Hz, E_REGVFMT_SCOUT_480p_60Hz), /* HDMITX_VFMT_03_720x480p_60Hz */ SCIO(E_REGVFMT_SCIN_INVALID, E_REGVFMT_SCOUT_720p_50Hz_60Hz), /* HDMITX_VFMT_04_1280x720p_60Hz */ SCIO(E_REGVFMT_SCIN_INVALID, E_REGVFMT_SCOUT_1080i_50Hz_60Hz), /* HDMITX_VFMT_05_1920x1080i_60Hz */ SCIO(E_REGVFMT_SCIN_480i_60Hz, E_REGVFMT_SCOUT_INVALID), /* HDMITX_VFMT_06_720x480i_60Hz */ SCIO(E_REGVFMT_SCIN_480i_60Hz, E_REGVFMT_SCOUT_INVALID), /* HDMITX_VFMT_07_720x480i_60Hz */ SCIO(E_REGVFMT_SCIN_INVALID, E_REGVFMT_SCOUT_INVALID), /* HDMITX_VFMT_08_720x240p_60Hz */ SCIO(E_REGVFMT_SCIN_INVALID, E_REGVFMT_SCOUT_INVALID), /* HDMITX_VFMT_09_720x240p_60Hz */ SCIO(E_REGVFMT_SCIN_480i_60Hz, E_REGVFMT_SCOUT_INVALID), /* HDMITX_VFMT_10_720x480i_60Hz */ SCIO(E_REGVFMT_SCIN_480i_60Hz, E_REGVFMT_SCOUT_INVALID), /* HDMITX_VFMT_11_720x480i_60Hz */ SCIO(E_REGVFMT_SCIN_INVALID, E_REGVFMT_SCOUT_INVALID), /* HDMITX_VFMT_12_720x240p_60Hz */ SCIO(E_REGVFMT_SCIN_INVALID, E_REGVFMT_SCOUT_INVALID), /* HDMITX_VFMT_13_720x240p_60Hz */ SCIO(E_REGVFMT_SCIN_480p_60Hz, E_REGVFMT_SCOUT_INVALID), /* HDMITX_VFMT_14_1440x480p_60Hz */ SCIO(E_REGVFMT_SCIN_480p_60Hz, E_REGVFMT_SCOUT_INVALID), /* HDMITX_VFMT_15_1440x480p_60Hz */ SCIO(E_REGVFMT_SCIN_INVALID, E_REGVFMT_SCOUT_INVALID), /* HDMITX_VFMT_16_1920x1080p_60Hz */ SCIO(E_REGVFMT_SCIN_576p_50Hz, E_REGVFMT_SCOUT_576ip_50Hz), /* HDMITX_VFMT_17_720x576p_50Hz */ SCIO(E_REGVFMT_SCIN_576p_50Hz, E_REGVFMT_SCOUT_576ip_50Hz), /* HDMITX_VFMT_18_720x576p_50Hz */ SCIO(E_REGVFMT_SCIN_INVALID, E_REGVFMT_SCOUT_720p_50Hz_60Hz), /* HDMITX_VFMT_19_1280x720p_50Hz */ SCIO(E_REGVFMT_SCIN_INVALID, E_REGVFMT_SCOUT_1080i_50Hz_60Hz), /* HDMITX_VFMT_20_1920x1080i_50Hz */ SCIO(E_REGVFMT_SCIN_576i_50Hz, E_REGVFMT_SCOUT_576ip_50Hz), /* HDMITX_VFMT_21_720x576i_50Hz */ SCIO(E_REGVFMT_SCIN_576i_50Hz, E_REGVFMT_SCOUT_576ip_50Hz), /* HDMITX_VFMT_22_720x576i_50Hz */ SCIO(E_REGVFMT_SCIN_INVALID, E_REGVFMT_SCOUT_INVALID), /* HDMITX_VFMT_23_720x288p_50Hz */ SCIO(E_REGVFMT_SCIN_INVALID, E_REGVFMT_SCOUT_INVALID), /* HDMITX_VFMT_24_720x288p_50Hz */ SCIO(E_REGVFMT_SCIN_576i_50Hz, E_REGVFMT_SCOUT_INVALID), /* HDMITX_VFMT_25_720x576i_50Hz */ SCIO(E_REGVFMT_SCIN_576i_50Hz, E_REGVFMT_SCOUT_INVALID), /* HDMITX_VFMT_26_720x576i_50Hz */ SCIO(E_REGVFMT_SCIN_INVALID, E_REGVFMT_SCOUT_INVALID), /* HDMITX_VFMT_27_720x288p_50Hz */ SCIO(E_REGVFMT_SCIN_INVALID, E_REGVFMT_SCOUT_INVALID), /* HDMITX_VFMT_28_720x288p_50Hz */ SCIO(E_REGVFMT_SCIN_576p_50Hz, E_REGVFMT_SCOUT_INVALID), /* HDMITX_VFMT_29_1440x576p_50Hz */ SCIO(E_REGVFMT_SCIN_576p_50Hz, E_REGVFMT_SCOUT_INVALID), /* HDMITX_VFMT_30_1440x576p_50Hz */ SCIO(E_REGVFMT_SCIN_INVALID, E_REGVFMT_SCOUT_INVALID), /* HDMITX_VFMT_31_1920x1080p_50Hz */ SCIO(E_REGVFMT_SCIN_INVALID, E_REGVFMT_SCOUT_INVALID), /* HDMITX_VFMT_32_1920x1080p_24Hz */ SCIO(E_REGVFMT_SCIN_INVALID, E_REGVFMT_SCOUT_INVALID), /* HDMITX_VFMT_33_1920x1080p_25Hz */ SCIO(E_REGVFMT_SCIN_INVALID, E_REGVFMT_SCOUT_INVALID) /* HDMITX_VFMT_34_1920x1080p_30Hz */};/** * Macro to pack output format flags as bits in a UInt16 for the following table */#define PKOPF(p1,p2,p3,p4,p5,p6,p7,p8,p9,p10,p11,p12,p13,p14,p15,p16,p17) \ ((p1)|((p2)<<1)|((p3)<<2)|((p4)<<3)|((p5)<<4)|((p6)<<5)|((p7)<<6)|((p8)<<7)| \ ((p9)<<8)|((p10)<<9)|((p11)<<10)|((p12)<<11)|((p13)<<12)|((p14)<<13)|((p15)<<14)|((p16)<<15)|((p17)<<16))/* Macro to test for input and output format = '1' in following table */#define CAN_FMTS_SCALE(fin,fout) (kCanSclInToOut[(fin)]&(1<<(fout)))/** * Lookup table to determine if an input format can be scaled to an * output format, including scaler off conditions (in=out) * Indexed by [input format][output format] */static CONST_DAT UInt16 kCanSclInToOut[E_REGVFMT_INVALID+1] ={ /* -----OUTPUT FORMATS------ */ /* E_REGVFMT_640x480p_60Hz */ /* E_REGVFMT_720x480p_60Hz */ /* E_REGVFMT_1280x720p_60Hz */ /* E_REGVFMT_1920x1080i_60Hz */ /* E_REGVFMT_720x480i_60Hz */ /* E_REGVFMT_720x240p_60Hz */ /* E_REGVFMT_1920x1080p_60Hz */ /* E_REGVFMT_720x576p_50Hz */ /* E_REGVFMT_1280x720p_50Hz */ /* E_REGVFMT_1920x1080i_50Hz */ /* E_REGVFMT_720x576i_50Hz */ /* E_REGVFMT_720x288p_50Hz */ /* E_REGVFMT_1920x1080p_50Hz */ /* E_REGVFMT_1920x1080p_24Hz */ /* E_REGVFMT_1920x1080p_25Hz */ /* E_REGVFMT_1920x1080p_30Hz */ /* E_REGVFMT_INVALID */ /* ------INPUT FORMATS------ */PKOPF( 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0),/* E_REGVFMT_640x480p_60Hz */PKOPF( 0, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0),/* E_REGVFMT_720x480p_60Hz */PKOPF( 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0),/* E_REGVFMT_1280x720p_60Hz */PKOPF( 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0),/* E_REGVFMT_1920x1080i_60Hz */PKOPF( 0, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0),/* E_REGVFMT_720x480i_60Hz */PKOPF( 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0),/* E_REGVFMT_720x240p_60Hz */PKOPF( 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0),/* E_REGVFMT_1920x1080p_60Hz */PKOPF( 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0),/* E_REGVFMT_720x576p_50Hz */PKOPF( 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0),/* E_REGVFMT_1280x720p_50Hz */PKOPF( 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0),/* E_REGVFMT_1920x1080i_50Hz */PKOPF( 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0),/* E_REGVFMT_720x576i_50Hz */PKOPF( 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0),/* E_REGVFMT_720x288p_50Hz */PKOPF( 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0),/* E_REGVFMT_1920x1080p_50Hz */PKOPF( 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0),/* E_REGVFMT_1920x1080p_24Hz */PKOPF( 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0),/* E_REGVFMT_1920x1080p_25Hz */PKOPF( 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0),/* E_REGVFMT_1920x1080p_30Hz */PKOPF( 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0) /* E_REGVFMT_INVALID */};/** * Lookup tables to convert scaler input and output modes * to PLL scaling values */static CONST_DAT UInt16 kSclModeToScgN[E_REGVFMT_SCIN_NUM][E_REGVFMT_SCOUT_NUM] ={ /* E_REGVFMT_SCOUT_480p_60Hz */ /* E_REGVFMT_SCOUT_576ip_50Hz */ /* E_REGVFMT_SCOUT_720p_50Hz_60Hz */ /* E_REGVFMT_SCOUT_1080i_50Hz_60Hz */ { 20, 0, 500, 500}, /* E_REGVFMT_SCIN_480i_60Hz */ { 0, 20, 88, 88}, /* E_REGVFMT_SCIN_576i_50Hz */ { 0, 0, 250, 250}, /* E_REGVFMT_SCIN_480p_60Hz */ { 0, 0, 44, 44}, /* E_REGVFMT_SCIN_576p_50Hz */};static CONST_DAT UInt16 kSclModeToScgR[E_REGVFMT_SCIN_NUM][E_REGVFMT_SCOUT_NUM] ={ /* E_REGVFMT_SCOUT_480p_60Hz */ /* E_REGVFMT_SCOUT_576ip_50Hz */ /* E_REGVFMT_SCOUT_720p_50Hz_60Hz */ /* E_REGVFMT_SCOUT_1080i_50Hz_60Hz */ { 10, 0, 91, 91}, /* E_REGVFMT_SCIN_480i_60Hz */ { 0, 10, 16, 16}, /* E_REGVFMT_SCIN_576i_50Hz */ { 0, 0, 91, 91}, /* E_REGVFMT_SCIN_480p_60Hz */ { 0, 0, 16, 16}, /* E_REGVFMT_SCIN_576p_50Hz */};/** * Lookup tables to hide the scaler issue on side effect * by adding blanking pixel on right and left side of the screen */static CONST_DAT UInt8 kSclAddBlkPix[E_REGVFMT_SCIN_NUM][E_REGVFMT_SCOUT_NUM] ={ /* E_REGVFMT_SCOUT_480p_60Hz */ /* E_REGVFMT_SCOUT_576ip_50Hz */ /* E_REGVFMT_SCOUT_720p_50Hz_60Hz */ /* E_REGVFMT_SCOUT_1080i_50Hz_60Hz */ { 0, 0, 4, 8}, /* E_REGVFMT_SCIN_480i_60Hz */ { 0, 0, 4, 8}, /* E_REGVFMT_SCIN_576i_50Hz */ { 0, 0, 4, 8}, /* E_REGVFMT_SCIN_480p_60Hz */ { 0, 0, 4, 8}, /* E_REGVFMT_SCIN_576p_50Hz */};static CONST_DAT UInt8 kSclClearBlkPix[] ={ 0, /* HDMITX_VOUTMODE_RGB444 */ 1, /* HDMITX_VOUTMODE_YUV422 */ 1, /* HDMITX_VOUTMODE_YUV444 */ 0, /* HDMITX_VOUTMODE_NO_CHANGE */ 0 /* HDMITX_VOUTMODE_INVALID */};/** * Lookup table to convert from video format codes used in the * E_REG_P00_VIDFORMAT_W register to corresponding VS_PIX_STRT_2 * register values, to correct the output window for interlaced * output formats, with or without the scaler. * * The correction is VS_PIX_STRT_2=VS_PIX_STRT_2+VS_PIX_STRT_1. * The same value is also applied to VS_PIX_END_2. */static CONST_DAT UInt16 kRegvfmtToVs2[E_REGVFMT_NUM] ={ 0, /* E_REGVFMT_640x480p_60Hz */ 0, /* E_REGVFMT_720x480p_60Hz */ 0, /* E_REGVFMT_1280x720p_60Hz */ 1100 + 88, /* E_REGVFMT_1920x1080i_60Hz */ 429 + 19, /* E_REGVFMT_720x480i_60Hz */ 0, /* E_REGVFMT_720x240p_60Hz */ 0, /* E_REGVFMT_1920x1080p_60Hz */ 0, /* E_REGVFMT_720x576p_50Hz */ 0, /* E_REGVFMT_1280x720p_50Hz */ 1320 + 528, /* E_REGVFMT_1920x1080i_50Hz */ 432 + 12, /* E_REGVFMT_720x576i_50Hz */ 0, /* E_REGVFMT_720x288p_50Hz */ 0, /* E_REGVFMT_1920x1080p_50Hz */ 0, /* E_REGVFMT_1920x1080p_24Hz */ 0, /* E_REGVFMT_1920x1080p_25Hz */ 0 /* E_REGVFMT_1920x1080p_30Hz */#ifdef FORMAT_PC ,0, /* E_REGVFMT_640x480p_72Hz */ 0, /* E_REGVFMT_640x480p_75Hz */ 0, /* E_REGVFMT_640x480p_85Hz */ 0, /* E_REGVFMT_800x600p_60Hz */ 0, /* E_REGVFMT_800x600p_72Hz */ 0, /* E_REGVFMT_800x600p_75Hz */ 0, /* E_REGVFMT_800x600p_85Hz */ 0, /* E_REGVFMT_1024x768p_60Hz */ 0, /* E_REGVFMT_1024x768p_70Hz */ 0, /* E_REGVFMT_1024x768p_75Hz */ 0, /* E_REGVFMT_1280x768p_60Hz */ 0, /* E_REGVFMT_1280x1024p_60Hz */ 0, /* E_REGVFMT_1280x1024p_75Hz */ 0, /* E_REGVFMT_1360x768p_60Hz */ 0, /* E_REGVFMT_1400x1050p_60Hz */ 0, /* E_REGVFMT_1600x1200p_60Hz */#endif /* FORMAT_PC */};/** * Lookup table to convert from video format codes used in the * E_REG_P00_VIDFORMAT_W register to corresponding * pixel repetition values in the PLL_SERIAL_2 register. * 0=no repetition (pixel sent once) * 1=one repetition (pixel sent twice) etc */static CONST_DAT UInt8 kRegvfmtToPixRep[E_REGVFMT_NUM] ={ 0, /* E_REGVFMT_640x480p_60Hz */ 0, /* E_REGVFMT_720x480p_60Hz */ 0, /* E_REGVFMT_1280x720p_60Hz */ 0, /* E_REGVFMT_1920x1080i_60Hz */ 1, /* E_REGVFMT_720x480i_60Hz */ 1, /* E_REGVFMT_720x240p_60Hz */ 0, /* E_REGVFMT_1920x1080p_60Hz */ 0, /* E_REGVFMT_720x576p_50Hz */ 0, /* E_REGVFMT_1280x720p_50Hz */ 0, /* E_REGVFMT_1920x1080i_50Hz */ 1, /* E_REGVFMT_720x576i_50Hz */ 1, /* E_REGVFMT_720x288p_50Hz */ 0, /* E_REGVFMT_1920x1080p_50Hz */ 0, /* E_REGVFMT_1920x1080p_24Hz */ 0, /* E_REGVFMT_1920x1080p_25Hz */ 0 /* E_REGVFMT_1920x1080p_30Hz */#ifdef FORMAT_PC ,0, /* E_REGVFMT_640x480p_72Hz */ 0, /* E_REGVFMT_640x480p_75Hz */ 0, /* E_REGVFMT_640x480p_85Hz */ 0, /* E_REGVFMT_800x600p_60Hz */ 0, /* E_REGVFMT_800x600p_72Hz */ 0, /* E_REGVFMT_800x600p_75Hz */ 0, /* E_REGVFMT_800x600p_85Hz */ 0, /* E_REGVFMT_1024x768p_60Hz */ 0, /* E_REGVFMT_1024x768p_70Hz */ 0, /* E_REGVFMT_1024x768p_75Hz */ 0, /* E_REGVFMT_1280x768p_60Hz */ 0, /* E_REGVFMT_1280x1024p_60Hz */ 0, /* E_REGVFMT_1280x1024p_75Hz */ 0, /* E_REGVFMT_1360x768p_60Hz */ 0, /* E_REGVFMT_1400x1050p_60Hz */ 0, /* E_REGVFMT_1600x1200p_60Hz */#endif /* FORMAT_PC */};
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -