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

📄 tmbslhdmitx_1.c

📁 HDMI NXP9983 chipset controller driver
💻 C
📖 第 1 页 / 共 5 页
字号:
    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 + -