Home | History | Annotate | Download | only in video
      1 #ifndef _MSM_HDMI_MODES_H__
      2 #define _MSM_HDMI_MODES_H__
      3 #include <linux/types.h>
      4 #include <linux/errno.h>
      5 
      6 #define MSM_HDMI_RGB_888_24BPP_FORMAT       BIT(0)
      7 #define MSM_HDMI_YUV_420_12BPP_FORMAT       BIT(1)
      8 
      9 enum aspect_ratio {
     10 	HDMI_RES_AR_INVALID,
     11 	HDMI_RES_AR_4_3,
     12 	HDMI_RES_AR_5_4,
     13 	HDMI_RES_AR_16_9,
     14 	HDMI_RES_AR_16_10,
     15 	HDMI_RES_AR_64_27,
     16 	HDMI_RES_AR_256_135,
     17 	HDMI_RES_AR_MAX,
     18 };
     19 
     20 enum msm_hdmi_s3d_mode {
     21 	HDMI_S3D_NONE,
     22 	HDMI_S3D_SIDE_BY_SIDE,
     23 	HDMI_S3D_TOP_AND_BOTTOM,
     24 	HDMI_S3D_FRAME_PACKING,
     25 	HDMI_S3D_MAX,
     26 };
     27 
     28 struct msm_hdmi_mode_timing_info {
     29 	uint32_t	video_format;
     30 	uint32_t	active_h;
     31 	uint32_t	front_porch_h;
     32 	uint32_t	pulse_width_h;
     33 	uint32_t	back_porch_h;
     34 	uint32_t	active_low_h;
     35 	uint32_t	active_v;
     36 	uint32_t	front_porch_v;
     37 	uint32_t	pulse_width_v;
     38 	uint32_t	back_porch_v;
     39 	uint32_t	active_low_v;
     40 	/* Must divide by 1000 to get the actual frequency in MHZ */
     41 	uint32_t	pixel_freq;
     42 	/* Must divide by 1000 to get the actual frequency in HZ */
     43 	uint32_t	refresh_rate;
     44 	uint32_t	interlaced;
     45 	uint32_t	supported;
     46 	enum aspect_ratio ar;
     47 	/* Flags indicating support for specific pixel formats */
     48 	uint32_t        pixel_formats;
     49 };
     50 
     51 #define MSM_HDMI_INIT_RES_PAGE          1
     52 
     53 #define MSM_HDMI_MODES_CEA		(1 << 0)
     54 #define MSM_HDMI_MODES_XTND		(1 << 1)
     55 #define MSM_HDMI_MODES_DVI		(1 << 2)
     56 #define MSM_HDMI_MODES_ALL		(MSM_HDMI_MODES_CEA |\
     57 					 MSM_HDMI_MODES_XTND |\
     58 					 MSM_HDMI_MODES_DVI)
     59 
     60 /* all video formats defined by CEA 861D */
     61 #define HDMI_VFRMT_UNKNOWN		0
     62 #define HDMI_VFRMT_640x480p60_4_3	1
     63 #define HDMI_VFRMT_720x480p60_4_3	2
     64 #define HDMI_VFRMT_720x480p60_16_9	3
     65 #define HDMI_VFRMT_1280x720p60_16_9	4
     66 #define HDMI_VFRMT_1920x1080i60_16_9	5
     67 #define HDMI_VFRMT_720x480i60_4_3	6
     68 #define HDMI_VFRMT_1440x480i60_4_3	HDMI_VFRMT_720x480i60_4_3
     69 #define HDMI_VFRMT_720x480i60_16_9	7
     70 #define HDMI_VFRMT_1440x480i60_16_9	HDMI_VFRMT_720x480i60_16_9
     71 #define HDMI_VFRMT_720x240p60_4_3	8
     72 #define HDMI_VFRMT_1440x240p60_4_3	HDMI_VFRMT_720x240p60_4_3
     73 #define HDMI_VFRMT_720x240p60_16_9	9
     74 #define HDMI_VFRMT_1440x240p60_16_9	HDMI_VFRMT_720x240p60_16_9
     75 #define HDMI_VFRMT_2880x480i60_4_3	10
     76 #define HDMI_VFRMT_2880x480i60_16_9	11
     77 #define HDMI_VFRMT_2880x240p60_4_3	12
     78 #define HDMI_VFRMT_2880x240p60_16_9	13
     79 #define HDMI_VFRMT_1440x480p60_4_3	14
     80 #define HDMI_VFRMT_1440x480p60_16_9	15
     81 #define HDMI_VFRMT_1920x1080p60_16_9	16
     82 #define HDMI_VFRMT_720x576p50_4_3	17
     83 #define HDMI_VFRMT_720x576p50_16_9	18
     84 #define HDMI_VFRMT_1280x720p50_16_9	19
     85 #define HDMI_VFRMT_1920x1080i50_16_9	20
     86 #define HDMI_VFRMT_720x576i50_4_3	21
     87 #define HDMI_VFRMT_1440x576i50_4_3	HDMI_VFRMT_720x576i50_4_3
     88 #define HDMI_VFRMT_720x576i50_16_9	22
     89 #define HDMI_VFRMT_1440x576i50_16_9	HDMI_VFRMT_720x576i50_16_9
     90 #define HDMI_VFRMT_720x288p50_4_3	23
     91 #define HDMI_VFRMT_1440x288p50_4_3	HDMI_VFRMT_720x288p50_4_3
     92 #define HDMI_VFRMT_720x288p50_16_9	24
     93 #define HDMI_VFRMT_1440x288p50_16_9	HDMI_VFRMT_720x288p50_16_9
     94 #define HDMI_VFRMT_2880x576i50_4_3	25
     95 #define HDMI_VFRMT_2880x576i50_16_9	26
     96 #define HDMI_VFRMT_2880x288p50_4_3	27
     97 #define HDMI_VFRMT_2880x288p50_16_9	28
     98 #define HDMI_VFRMT_1440x576p50_4_3	29
     99 #define HDMI_VFRMT_1440x576p50_16_9	30
    100 #define HDMI_VFRMT_1920x1080p50_16_9	31
    101 #define HDMI_VFRMT_1920x1080p24_16_9	32
    102 #define HDMI_VFRMT_1920x1080p25_16_9	33
    103 #define HDMI_VFRMT_1920x1080p30_16_9	34
    104 #define HDMI_VFRMT_2880x480p60_4_3	35
    105 #define HDMI_VFRMT_2880x480p60_16_9	36
    106 #define HDMI_VFRMT_2880x576p50_4_3	37
    107 #define HDMI_VFRMT_2880x576p50_16_9	38
    108 #define HDMI_VFRMT_1920x1250i50_16_9	39
    109 #define HDMI_VFRMT_1920x1080i100_16_9	40
    110 #define HDMI_VFRMT_1280x720p100_16_9	41
    111 #define HDMI_VFRMT_720x576p100_4_3	42
    112 #define HDMI_VFRMT_720x576p100_16_9	43
    113 #define HDMI_VFRMT_720x576i100_4_3	44
    114 #define HDMI_VFRMT_1440x576i100_4_3	HDMI_VFRMT_720x576i100_4_3
    115 #define HDMI_VFRMT_720x576i100_16_9	45
    116 #define HDMI_VFRMT_1440x576i100_16_9	HDMI_VFRMT_720x576i100_16_9
    117 #define HDMI_VFRMT_1920x1080i120_16_9	46
    118 #define HDMI_VFRMT_1280x720p120_16_9	47
    119 #define HDMI_VFRMT_720x480p120_4_3	48
    120 #define HDMI_VFRMT_720x480p120_16_9	49
    121 #define HDMI_VFRMT_720x480i120_4_3	50
    122 #define HDMI_VFRMT_1440x480i120_4_3	HDMI_VFRMT_720x480i120_4_3
    123 #define HDMI_VFRMT_720x480i120_16_9	51
    124 #define HDMI_VFRMT_1440x480i120_16_9	HDMI_VFRMT_720x480i120_16_9
    125 #define HDMI_VFRMT_720x576p200_4_3	52
    126 #define HDMI_VFRMT_720x576p200_16_9	53
    127 #define HDMI_VFRMT_720x576i200_4_3	54
    128 #define HDMI_VFRMT_1440x576i200_4_3	HDMI_VFRMT_720x576i200_4_3
    129 #define HDMI_VFRMT_720x576i200_16_9	55
    130 #define HDMI_VFRMT_1440x576i200_16_9	HDMI_VFRMT_720x576i200_16_9
    131 #define HDMI_VFRMT_720x480p240_4_3	56
    132 #define HDMI_VFRMT_720x480p240_16_9	57
    133 #define HDMI_VFRMT_720x480i240_4_3	58
    134 #define HDMI_VFRMT_1440x480i240_4_3	HDMI_VFRMT_720x480i240_4_3
    135 #define HDMI_VFRMT_720x480i240_16_9	59
    136 #define HDMI_VFRMT_1440x480i240_16_9	HDMI_VFRMT_720x480i240_16_9
    137 #define HDMI_VFRMT_1280x720p24_16_9	60
    138 #define HDMI_VFRMT_1280x720p25_16_9	61
    139 #define HDMI_VFRMT_1280x720p30_16_9	62
    140 #define HDMI_VFRMT_1920x1080p120_16_9	63
    141 #define HDMI_VFRMT_1920x1080p100_16_9	64
    142 #define HDMI_VFRMT_1280x720p24_64_27    65
    143 #define HDMI_VFRMT_1280x720p25_64_27    66
    144 #define HDMI_VFRMT_1280x720p30_64_27    67
    145 #define HDMI_VFRMT_1280x720p50_64_27    68
    146 #define HDMI_VFRMT_1280x720p60_64_27    69
    147 #define HDMI_VFRMT_1280x720p100_64_27   70
    148 #define HDMI_VFRMT_1280x720p120_64_27   71
    149 #define HDMI_VFRMT_1920x1080p24_64_27   72
    150 #define HDMI_VFRMT_1920x1080p25_64_27   73
    151 #define HDMI_VFRMT_1920x1080p30_64_27   74
    152 #define HDMI_VFRMT_1920x1080p50_64_27   75
    153 #define HDMI_VFRMT_1920x1080p60_64_27   76
    154 #define HDMI_VFRMT_1920x1080p100_64_27  77
    155 #define HDMI_VFRMT_1920x1080p120_64_27  78
    156 #define HDMI_VFRMT_1680x720p24_64_27    79
    157 #define HDMI_VFRMT_1680x720p25_64_27    80
    158 #define HDMI_VFRMT_1680x720p30_64_27    81
    159 #define HDMI_VFRMT_1680x720p50_64_27    82
    160 #define HDMI_VFRMT_1680x720p60_64_27    83
    161 #define HDMI_VFRMT_1680x720p100_64_27   84
    162 #define HDMI_VFRMT_1680x720p120_64_27   85
    163 #define HDMI_VFRMT_2560x1080p24_64_27   86
    164 #define HDMI_VFRMT_2560x1080p25_64_27   87
    165 #define HDMI_VFRMT_2560x1080p30_64_27   88
    166 #define HDMI_VFRMT_2560x1080p50_64_27   89
    167 #define HDMI_VFRMT_2560x1080p60_64_27   90
    168 #define HDMI_VFRMT_2560x1080p100_64_27  91
    169 #define HDMI_VFRMT_2560x1080p120_64_27  92
    170 #define HDMI_VFRMT_3840x2160p24_16_9    93
    171 #define HDMI_VFRMT_3840x2160p25_16_9    94
    172 #define HDMI_VFRMT_3840x2160p30_16_9    95
    173 #define HDMI_VFRMT_3840x2160p50_16_9    96
    174 #define HDMI_VFRMT_3840x2160p60_16_9    97
    175 #define HDMI_VFRMT_4096x2160p24_256_135 98
    176 #define HDMI_VFRMT_4096x2160p25_256_135 99
    177 #define HDMI_VFRMT_4096x2160p30_256_135 100
    178 #define HDMI_VFRMT_4096x2160p50_256_135 101
    179 #define HDMI_VFRMT_4096x2160p60_256_135 102
    180 #define HDMI_VFRMT_3840x2160p24_64_27   103
    181 #define HDMI_VFRMT_3840x2160p25_64_27   104
    182 #define HDMI_VFRMT_3840x2160p30_64_27   105
    183 #define HDMI_VFRMT_3840x2160p50_64_27   106
    184 #define HDMI_VFRMT_3840x2160p60_64_27   107
    185 
    186 /* Video Identification Codes from 107-127 are reserved for the future */
    187 #define HDMI_VFRMT_END			127
    188 
    189 #define EVFRMT_OFF(x)			(HDMI_VFRMT_END + x)
    190 
    191 /* extended video formats */
    192 #define HDMI_EVFRMT_3840x2160p30_16_9	EVFRMT_OFF(1)
    193 #define HDMI_EVFRMT_3840x2160p25_16_9	EVFRMT_OFF(2)
    194 #define HDMI_EVFRMT_3840x2160p24_16_9	EVFRMT_OFF(3)
    195 #define HDMI_EVFRMT_4096x2160p24_16_9	EVFRMT_OFF(4)
    196 #define HDMI_EVFRMT_END			HDMI_EVFRMT_4096x2160p24_16_9
    197 
    198 #define WQXGA_OFF(x)			(HDMI_EVFRMT_END + x)
    199 
    200 /* WQXGA */
    201 #define HDMI_VFRMT_2560x1600p60_16_9	WQXGA_OFF(1)
    202 #define HDMI_WQXGAFRMT_END		HDMI_VFRMT_2560x1600p60_16_9
    203 
    204 #define WXGA_OFF(x)			(HDMI_WQXGAFRMT_END + x)
    205 
    206 /* WXGA */
    207 #define HDMI_VFRMT_1280x800p60_16_10	WXGA_OFF(1)
    208 #define HDMI_VFRMT_1366x768p60_16_10	WXGA_OFF(2)
    209 #define HDMI_WXGAFRMT_END		HDMI_VFRMT_1366x768p60_16_10
    210 
    211 #define ETI_OFF(x)			(HDMI_WXGAFRMT_END + x)
    212 
    213 /* ESTABLISHED TIMINGS I */
    214 #define HDMI_VFRMT_800x600p60_4_3	ETI_OFF(1)
    215 #define ETI_VFRMT_END			HDMI_VFRMT_800x600p60_4_3
    216 
    217 #define ETII_OFF(x)			(ETI_VFRMT_END + x)
    218 
    219 /* ESTABLISHED TIMINGS II */
    220 #define HDMI_VFRMT_1024x768p60_4_3	ETII_OFF(1)
    221 #define HDMI_VFRMT_1280x1024p60_5_4	ETII_OFF(2)
    222 #define ETII_VFRMT_END			HDMI_VFRMT_1280x1024p60_5_4
    223 
    224 #define ETIII_OFF(x)			(ETII_VFRMT_END + x)
    225 
    226 /* ESTABLISHED TIMINGS III */
    227 #define HDMI_VFRMT_848x480p60_16_9	ETIII_OFF(1)
    228 #define HDMI_VFRMT_1280x960p60_4_3	ETIII_OFF(2)
    229 #define HDMI_VFRMT_1360x768p60_16_9	ETIII_OFF(3)
    230 #define HDMI_VFRMT_1440x900p60_16_10	ETIII_OFF(4)
    231 #define HDMI_VFRMT_1400x1050p60_4_3	ETIII_OFF(5)
    232 #define HDMI_VFRMT_1680x1050p60_16_10	ETIII_OFF(6)
    233 #define HDMI_VFRMT_1600x1200p60_4_3	ETIII_OFF(7)
    234 #define HDMI_VFRMT_1920x1200p60_16_10	ETIII_OFF(8)
    235 #define ETIII_VFRMT_END			HDMI_VFRMT_1920x1200p60_16_10
    236 
    237 #define MISC_VFRMT_OFF(x)		(ETIII_VFRMT_END + x)
    238 #define HDMI_VFRMT_640x480p59_4_3	MISC_VFRMT_OFF(1)
    239 #define MISC_VFRMT_END			HDMI_VFRMT_640x480p59_4_3
    240 
    241 #define RESERVE_OFF(x)			(MISC_VFRMT_END + x)
    242 
    243 #define HDMI_VFRMT_RESERVE1		RESERVE_OFF(1)
    244 #define HDMI_VFRMT_RESERVE2		RESERVE_OFF(2)
    245 #define HDMI_VFRMT_RESERVE3		RESERVE_OFF(3)
    246 #define HDMI_VFRMT_RESERVE4		RESERVE_OFF(4)
    247 #define HDMI_VFRMT_RESERVE5		RESERVE_OFF(5)
    248 #define HDMI_VFRMT_RESERVE6		RESERVE_OFF(6)
    249 #define HDMI_VFRMT_RESERVE7		RESERVE_OFF(7)
    250 #define HDMI_VFRMT_RESERVE8		RESERVE_OFF(8)
    251 #define RESERVE_VFRMT_END		HDMI_VFRMT_RESERVE8
    252 
    253 #define HDMI_VFRMT_MAX			(RESERVE_VFRMT_END + 1)
    254 
    255 /* Timing information for supported modes */
    256 #define VFRMT_NOT_SUPPORTED(VFRMT) \
    257 	{VFRMT, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, false,		\
    258 		HDMI_RES_AR_INVALID}
    259 
    260 #define HDMI_VFRMT_640x480p60_4_3_TIMING				\
    261 	{HDMI_VFRMT_640x480p60_4_3, 640, 16, 96, 48, true,		\
    262 	 480, 10, 2, 33, true, 25200, 60000, false, true, HDMI_RES_AR_4_3, 0}
    263 #define HDMI_VFRMT_720x480p60_4_3_TIMING				\
    264 	{HDMI_VFRMT_720x480p60_4_3, 720, 16, 62, 60, true,		\
    265 	 480, 9, 6, 30, true, 27027, 60000, false, true, HDMI_RES_AR_4_3, 0}
    266 #define HDMI_VFRMT_720x480p60_16_9_TIMING				\
    267 	{HDMI_VFRMT_720x480p60_16_9, 720, 16, 62, 60, true,		\
    268 	 480, 9, 6, 30, true, 27027, 60000, false, true, HDMI_RES_AR_16_9, 0}
    269 #define HDMI_VFRMT_1280x720p60_16_9_TIMING				\
    270 	{HDMI_VFRMT_1280x720p60_16_9, 1280, 110, 40, 220, false,	\
    271 	 720, 5, 5, 20, false, 74250, 60000, false, true, HDMI_RES_AR_16_9, 0}
    272 #define HDMI_VFRMT_1920x1080i60_16_9_TIMING				\
    273 	{HDMI_VFRMT_1920x1080i60_16_9, 1920, 88, 44, 148, false,	\
    274 	 540, 2, 5, 5, false, 74250, 60000, true, true, HDMI_RES_AR_16_9, 0}
    275 #define HDMI_VFRMT_1440x480i60_4_3_TIMING				\
    276 	{HDMI_VFRMT_1440x480i60_4_3, 1440, 38, 124, 114, true,		\
    277 	 240, 4, 3, 15, true, 27000, 60000, true, true, HDMI_RES_AR_4_3, 0}
    278 #define HDMI_VFRMT_1440x480i60_16_9_TIMING				\
    279 	{HDMI_VFRMT_1440x480i60_16_9, 1440, 38, 124, 114, true,		\
    280 	 240, 4, 3, 15, true, 27000, 60000, true, true, HDMI_RES_AR_16_9, 0}
    281 #define HDMI_VFRMT_1920x1080p60_16_9_TIMING				\
    282 	{HDMI_VFRMT_1920x1080p60_16_9, 1920, 88, 44, 148, false,	\
    283 	 1080, 4, 5, 36, false, 148500, 60000, false, true, HDMI_RES_AR_16_9, 0}
    284 #define HDMI_VFRMT_720x576p50_4_3_TIMING				\
    285 	{HDMI_VFRMT_720x576p50_4_3, 720, 12, 64, 68, true,		\
    286 	 576,  5, 5, 39, true, 27000, 50000, false, true, HDMI_RES_AR_4_3, 0}
    287 #define HDMI_VFRMT_720x576p50_16_9_TIMING				\
    288 	{HDMI_VFRMT_720x576p50_16_9, 720, 12, 64, 68, true,		\
    289 	 576,  5, 5, 39, true, 27000, 50000, false, true, HDMI_RES_AR_16_9, 0}
    290 #define HDMI_VFRMT_1280x720p50_16_9_TIMING				\
    291 	{HDMI_VFRMT_1280x720p50_16_9, 1280, 440, 40, 220, false,	\
    292 	 720,  5, 5, 20, false, 74250, 50000, false, true, HDMI_RES_AR_16_9, 0}
    293 #define HDMI_VFRMT_1440x576i50_4_3_TIMING				\
    294 	{HDMI_VFRMT_1440x576i50_4_3, 1440, 24, 126, 138, true,		\
    295 	 288,  2, 3, 19, true, 27000, 50000, true, true, HDMI_RES_AR_4_3, 0}
    296 #define HDMI_VFRMT_1440x576i50_16_9_TIMING				\
    297 	{HDMI_VFRMT_1440x576i50_16_9, 1440, 24, 126, 138, true,		\
    298 	 288,  2, 3, 19, true, 27000, 50000, true, true, HDMI_RES_AR_16_9, 0}
    299 #define HDMI_VFRMT_1920x1080p50_16_9_TIMING				\
    300 	{HDMI_VFRMT_1920x1080p50_16_9, 1920, 528, 44, 148, false,	\
    301 	 1080, 4, 5, 36, false, 148500, 50000, false, true, HDMI_RES_AR_16_9, 0}
    302 #define HDMI_VFRMT_1920x1080p24_16_9_TIMING				\
    303 	{HDMI_VFRMT_1920x1080p24_16_9, 1920, 638, 44, 148, false,	\
    304 	 1080, 4, 5, 36, false, 74250, 24000, false, true, HDMI_RES_AR_16_9, 0}
    305 #define HDMI_VFRMT_1920x1080p25_16_9_TIMING				\
    306 	{HDMI_VFRMT_1920x1080p25_16_9, 1920, 528, 44, 148, false,	\
    307 	 1080, 4, 5, 36, false, 74250, 25000, false, true, HDMI_RES_AR_16_9, 0}
    308 #define HDMI_VFRMT_1920x1080p30_16_9_TIMING				\
    309 	{HDMI_VFRMT_1920x1080p30_16_9, 1920, 88, 44, 148, false,	\
    310 	 1080, 4, 5, 36, false, 74250, 30000, false, true, HDMI_RES_AR_16_9, 0}
    311 #define HDMI_VFRMT_1024x768p60_4_3_TIMING                               \
    312 	{HDMI_VFRMT_1024x768p60_4_3, 1024, 24, 136, 160, false,         \
    313 	768, 2, 6, 29, false, 65000, 60000, false, true, HDMI_RES_AR_4_3, 0}
    314 #define HDMI_VFRMT_1280x1024p60_5_4_TIMING				\
    315 	{HDMI_VFRMT_1280x1024p60_5_4, 1280, 48, 112, 248, false,	\
    316 	1024, 1, 3, 38, false, 108000, 60000, false, true, HDMI_RES_AR_5_4, 0}
    317 #define HDMI_VFRMT_2560x1600p60_16_9_TIMING				\
    318 	{HDMI_VFRMT_2560x1600p60_16_9, 2560, 48, 32, 80, false,		\
    319 	 1600, 3, 6, 37, false, 268500, 60000, false, true, HDMI_RES_AR_16_9, 0}
    320 #define HDMI_EVFRMT_3840x2160p30_16_9_TIMING				\
    321 	{HDMI_EVFRMT_3840x2160p30_16_9, 3840, 176, 88, 296, false,	\
    322 	 2160, 8, 10, 72, false, 297000, 30000, false, true, \
    323 		HDMI_RES_AR_16_9, 0}
    324 #define HDMI_EVFRMT_3840x2160p25_16_9_TIMING				\
    325 	{HDMI_EVFRMT_3840x2160p25_16_9, 3840, 1056, 88, 296, false,	\
    326 	 2160, 8, 10, 72, false, 297000, 25000, false, true, \
    327 		HDMI_RES_AR_16_9, 0}
    328 #define HDMI_EVFRMT_3840x2160p24_16_9_TIMING				\
    329 	{HDMI_EVFRMT_3840x2160p24_16_9, 3840, 1276, 88, 296, false,	\
    330 	 2160, 8, 10, 72, false, 297000, 24000, false, true, \
    331 		HDMI_RES_AR_16_9, 0}
    332 #define HDMI_EVFRMT_4096x2160p24_16_9_TIMING				\
    333 	{HDMI_EVFRMT_4096x2160p24_16_9, 4096, 1020, 88, 296, false,	\
    334 	 2160, 8, 10, 72, false, 297000, 24000, false, true, \
    335 		HDMI_RES_AR_16_9, 0}
    336 
    337 #define HDMI_VFRMT_800x600p60_4_3_TIMING				\
    338 	{HDMI_VFRMT_800x600p60_4_3, 800, 40, 128, 88, false,	\
    339 	 600, 1, 4, 23, false, 40000, 60000, false, true, HDMI_RES_AR_4_3, 0}
    340 #define HDMI_VFRMT_848x480p60_16_9_TIMING				\
    341 	{HDMI_VFRMT_848x480p60_16_9, 848, 16, 112, 112, false,	\
    342 	 480, 6, 8, 23, false, 33750, 60000, false, true, HDMI_RES_AR_16_9, 0}
    343 #define HDMI_VFRMT_1280x960p60_4_3_TIMING\
    344 	{HDMI_VFRMT_1280x960p60_4_3, 1280, 96, 112, 312, false,	\
    345 	 960, 1, 3, 36, false, 108000, 60000, false, true, HDMI_RES_AR_4_3, 0}
    346 #define HDMI_VFRMT_1360x768p60_16_9_TIMING\
    347 	{HDMI_VFRMT_1360x768p60_16_9, 1360, 64, 112, 256, false,	\
    348 	 768, 3, 6, 18, false, 85500, 60000, false, true, HDMI_RES_AR_16_9, 0}
    349 #define HDMI_VFRMT_1440x900p60_16_10_TIMING\
    350 	{HDMI_VFRMT_1440x900p60_16_10, 1440, 48, 32, 80, false,	\
    351 	 900, 3, 6, 17, true, 88750, 60000, false, true, HDMI_RES_AR_16_10, 0}
    352 #define HDMI_VFRMT_1400x1050p60_4_3_TIMING\
    353 	{HDMI_VFRMT_1400x1050p60_4_3, 1400, 48, 32, 80, false,	\
    354 	 1050, 3, 4, 23, true, 101000, 60000, false, true, HDMI_RES_AR_4_3, 0}
    355 #define HDMI_VFRMT_1680x1050p60_16_10_TIMING\
    356 	{HDMI_VFRMT_1680x1050p60_16_10, 1680, 48, 32, 80, false,	\
    357 	 1050, 3, 6, 21, true, 119000, 60000, false, true, HDMI_RES_AR_16_10, 0}
    358 #define HDMI_VFRMT_1600x1200p60_4_3_TIMING\
    359 	{HDMI_VFRMT_1600x1200p60_4_3, 1600, 64, 192, 304, false,	\
    360 	 1200, 1, 3, 46, false, 162000, 60000, false, true, HDMI_RES_AR_4_3, 0}
    361 #define HDMI_VFRMT_1920x1200p60_16_10_TIMING\
    362 	{HDMI_VFRMT_1920x1200p60_16_10, 1920, 48, 32, 80, false,\
    363 	 1200, 3, 6, 26, true, 154000, 60000, false, true, HDMI_RES_AR_16_10, 0}
    364 #define HDMI_VFRMT_1366x768p60_16_10_TIMING\
    365 	{HDMI_VFRMT_1366x768p60_16_10, 1366, 70, 143, 213, false,\
    366 	 768, 3, 3, 24, false, 85500, 60000, false, true, HDMI_RES_AR_16_10, 0}
    367 #define HDMI_VFRMT_1280x800p60_16_10_TIMING\
    368 	{HDMI_VFRMT_1280x800p60_16_10, 1280, 72, 128, 200, true,\
    369 	 800, 3, 6, 22, false, 83500, 60000, false, true, HDMI_RES_AR_16_10, 0}
    370 #define HDMI_VFRMT_3840x2160p24_16_9_TIMING                             \
    371 	{HDMI_VFRMT_3840x2160p24_16_9, 3840, 1276, 88, 296, false,      \
    372 	 2160, 8, 10, 72, false, 297000, 24000, false, true, \
    373 		HDMI_RES_AR_16_9, 0}
    374 #define HDMI_VFRMT_3840x2160p25_16_9_TIMING                             \
    375 	{HDMI_VFRMT_3840x2160p25_16_9, 3840, 1056, 88, 296, false,      \
    376 	 2160, 8, 10, 72, false, 297000, 25000, false, true, \
    377 		HDMI_RES_AR_16_9, 0}
    378 #define HDMI_VFRMT_3840x2160p30_16_9_TIMING                             \
    379 	{HDMI_VFRMT_3840x2160p30_16_9, 3840, 176, 88, 296, false,       \
    380 	 2160, 8, 10, 72, false, 297000, 30000, false, true, \
    381 		HDMI_RES_AR_16_9, 0}
    382 #define HDMI_VFRMT_3840x2160p50_16_9_TIMING                             \
    383 	{HDMI_VFRMT_3840x2160p50_16_9, 3840, 1056, 88, 296, false,      \
    384 	 2160, 8, 10, 72, false, 594000, 50000, false, true, \
    385 		HDMI_RES_AR_16_9, 0}
    386 #define HDMI_VFRMT_3840x2160p60_16_9_TIMING                             \
    387 	{HDMI_VFRMT_3840x2160p60_16_9, 3840, 176, 88, 296, false,       \
    388 	 2160, 8, 10, 72, false, 594000, 60000, false, true, \
    389 		HDMI_RES_AR_16_9, 0}
    390 
    391 #define HDMI_VFRMT_4096x2160p24_256_135_TIMING                          \
    392 	{HDMI_VFRMT_4096x2160p24_256_135, 4096, 1020, 88, 296, false,   \
    393 	 2160, 8, 10, 72, false, 297000, 24000, false, true, \
    394 		HDMI_RES_AR_256_135, 0}
    395 #define HDMI_VFRMT_4096x2160p25_256_135_TIMING                          \
    396 	{HDMI_VFRMT_4096x2160p25_256_135, 4096, 968, 88, 128, false,    \
    397 	 2160, 8, 10, 72, false, 297000, 25000, false, true, \
    398 		HDMI_RES_AR_256_135, 0}
    399 #define HDMI_VFRMT_4096x2160p30_256_135_TIMING                          \
    400 	{HDMI_VFRMT_4096x2160p30_256_135, 4096, 88, 88, 128, false,     \
    401 	 2160, 8, 10, 72, false, 297000, 30000, false, true, \
    402 		HDMI_RES_AR_256_135, 0}
    403 #define HDMI_VFRMT_4096x2160p50_256_135_TIMING                          \
    404 	{HDMI_VFRMT_4096x2160p50_256_135, 4096, 968, 88, 128, false,    \
    405 	 2160, 8, 10, 72, false, 594000, 50000, false, true, \
    406 		HDMI_RES_AR_256_135, 0}
    407 #define HDMI_VFRMT_4096x2160p60_256_135_TIMING                          \
    408 	{HDMI_VFRMT_4096x2160p60_256_135, 4096, 88, 88, 128, false,     \
    409 	 2160, 8, 10, 72, false, 594000, 60000, false, true, \
    410 		HDMI_RES_AR_256_135, 0}
    411 
    412 #define HDMI_VFRMT_3840x2160p24_64_27_TIMING                             \
    413 	{HDMI_VFRMT_3840x2160p24_64_27, 3840, 1276, 88, 296, false,      \
    414 	 2160, 8, 10, 72, false, 297000, 24000, false, true, \
    415 		HDMI_RES_AR_64_27, 0}
    416 #define HDMI_VFRMT_3840x2160p25_64_27_TIMING                             \
    417 	{HDMI_VFRMT_3840x2160p25_64_27, 3840, 1056, 88, 296, false,      \
    418 	 2160, 8, 10, 72, false, 297000, 25000, false, true, \
    419 		HDMI_RES_AR_64_27, 0}
    420 #define HDMI_VFRMT_3840x2160p30_64_27_TIMING                             \
    421 	{HDMI_VFRMT_3840x2160p30_64_27, 3840, 176, 88, 296, false,       \
    422 	 2160, 8, 10, 72, false, 297000, 30000, false, true, \
    423 		HDMI_RES_AR_64_27, 0}
    424 #define HDMI_VFRMT_3840x2160p50_64_27_TIMING                             \
    425 	{HDMI_VFRMT_3840x2160p50_64_27, 3840, 1056, 88, 296, false,      \
    426 	 2160, 8, 10, 72, false, 594000, 50000, false, true, \
    427 		HDMI_RES_AR_64_27, 0}
    428 #define HDMI_VFRMT_3840x2160p60_64_27_TIMING                             \
    429 	{HDMI_VFRMT_3840x2160p60_64_27, 3840, 176, 88, 296, false,       \
    430 	 2160, 8, 10, 72, false, 594000, 60000, false, true, \
    431 		HDMI_RES_AR_64_27, 0}
    432 #define HDMI_VFRMT_640x480p59_4_3_TIMING                             \
    433 	{HDMI_VFRMT_640x480p59_4_3, 640, 16, 96, 48, true,       \
    434 	 480, 10, 2, 33, true, 25170, 59928, false, true, \
    435 		HDMI_RES_AR_4_3, 1}
    436 
    437 
    438 #define MSM_HDMI_MODES_SET_TIMING(LUT, MODE) do {		\
    439 	struct msm_hdmi_mode_timing_info mode = MODE##_TIMING;	\
    440 	LUT[MODE] = mode;\
    441 	} while (0)
    442 
    443 #define MSM_HDMI_MODES_INIT_TIMINGS(__lut)	\
    444 do {	\
    445 	unsigned int i;	\
    446 	for (i = 0; i < HDMI_VFRMT_MAX; i++) {	\
    447 		struct msm_hdmi_mode_timing_info mode =	\
    448 			VFRMT_NOT_SUPPORTED(i);	\
    449 		(__lut)[i] = mode;	\
    450 	}	\
    451 } while (0)
    452 
    453 #define MSM_HDMI_MODES_SET_SUPP_TIMINGS(__lut, __type)	\
    454 do {	\
    455 	if (__type & MSM_HDMI_MODES_CEA) {	\
    456 		MSM_HDMI_MODES_SET_TIMING(__lut,	\
    457 			HDMI_VFRMT_640x480p60_4_3);	\
    458 		MSM_HDMI_MODES_SET_TIMING(__lut,	\
    459 			HDMI_VFRMT_720x480p60_4_3);	\
    460 		MSM_HDMI_MODES_SET_TIMING(__lut,	\
    461 			HDMI_VFRMT_720x480p60_16_9);	\
    462 		MSM_HDMI_MODES_SET_TIMING(__lut,	\
    463 			HDMI_VFRMT_1280x720p60_16_9);	\
    464 		MSM_HDMI_MODES_SET_TIMING(__lut,	\
    465 			HDMI_VFRMT_1920x1080i60_16_9);	\
    466 		MSM_HDMI_MODES_SET_TIMING(__lut,	\
    467 			HDMI_VFRMT_1440x480i60_4_3);	\
    468 		MSM_HDMI_MODES_SET_TIMING(__lut,	\
    469 			HDMI_VFRMT_1440x480i60_16_9);	\
    470 		MSM_HDMI_MODES_SET_TIMING(__lut,	\
    471 			HDMI_VFRMT_1920x1080p60_16_9);	\
    472 		MSM_HDMI_MODES_SET_TIMING(__lut,	\
    473 			HDMI_VFRMT_720x576p50_4_3);	\
    474 		MSM_HDMI_MODES_SET_TIMING(__lut,	\
    475 			HDMI_VFRMT_720x576p50_16_9);	\
    476 		MSM_HDMI_MODES_SET_TIMING(__lut,	\
    477 			HDMI_VFRMT_1280x720p50_16_9);	\
    478 		MSM_HDMI_MODES_SET_TIMING(__lut,	\
    479 			HDMI_VFRMT_1440x576i50_4_3);	\
    480 		MSM_HDMI_MODES_SET_TIMING(__lut,	\
    481 			HDMI_VFRMT_1440x576i50_16_9);	\
    482 		MSM_HDMI_MODES_SET_TIMING(__lut,	\
    483 			HDMI_VFRMT_1920x1080p50_16_9);	\
    484 		MSM_HDMI_MODES_SET_TIMING(__lut,	\
    485 			HDMI_VFRMT_1920x1080p24_16_9);	\
    486 		MSM_HDMI_MODES_SET_TIMING(__lut,	\
    487 			HDMI_VFRMT_1920x1080p25_16_9);	\
    488 		MSM_HDMI_MODES_SET_TIMING(__lut,	\
    489 			HDMI_VFRMT_1920x1080p30_16_9);	\
    490 		MSM_HDMI_MODES_SET_TIMING(__lut,	\
    491 			HDMI_VFRMT_3840x2160p24_16_9);  \
    492 		MSM_HDMI_MODES_SET_TIMING(__lut,	\
    493 			HDMI_VFRMT_3840x2160p25_16_9);  \
    494 		MSM_HDMI_MODES_SET_TIMING(__lut,	\
    495 			HDMI_VFRMT_3840x2160p30_16_9);  \
    496 		MSM_HDMI_MODES_SET_TIMING(__lut,	\
    497 			HDMI_VFRMT_3840x2160p50_16_9);  \
    498 		MSM_HDMI_MODES_SET_TIMING(__lut,	\
    499 			HDMI_VFRMT_3840x2160p60_16_9);  \
    500 		MSM_HDMI_MODES_SET_TIMING(__lut,	\
    501 			HDMI_VFRMT_4096x2160p24_256_135);\
    502 		MSM_HDMI_MODES_SET_TIMING(__lut,	\
    503 			HDMI_VFRMT_4096x2160p25_256_135);\
    504 		MSM_HDMI_MODES_SET_TIMING(__lut,	\
    505 			HDMI_VFRMT_4096x2160p30_256_135);\
    506 		MSM_HDMI_MODES_SET_TIMING(__lut,	\
    507 			HDMI_VFRMT_4096x2160p50_256_135);\
    508 		MSM_HDMI_MODES_SET_TIMING(__lut,	\
    509 			HDMI_VFRMT_4096x2160p60_256_135);\
    510 		MSM_HDMI_MODES_SET_TIMING(__lut,	\
    511 			HDMI_VFRMT_3840x2160p24_64_27); \
    512 		MSM_HDMI_MODES_SET_TIMING(__lut,	\
    513 			HDMI_VFRMT_3840x2160p25_64_27); \
    514 		MSM_HDMI_MODES_SET_TIMING(__lut,	\
    515 			HDMI_VFRMT_3840x2160p30_64_27); \
    516 		MSM_HDMI_MODES_SET_TIMING(__lut,	\
    517 			HDMI_VFRMT_3840x2160p50_64_27); \
    518 		MSM_HDMI_MODES_SET_TIMING(__lut,	\
    519 			HDMI_VFRMT_3840x2160p60_64_27); \
    520 		MSM_HDMI_MODES_SET_TIMING(__lut,	\
    521 			HDMI_VFRMT_640x480p59_4_3); \
    522 	}	\
    523 	if (__type & MSM_HDMI_MODES_XTND) {	\
    524 		MSM_HDMI_MODES_SET_TIMING(__lut,	\
    525 			HDMI_EVFRMT_3840x2160p30_16_9);	\
    526 		MSM_HDMI_MODES_SET_TIMING(__lut,	\
    527 			HDMI_EVFRMT_3840x2160p25_16_9);	\
    528 		MSM_HDMI_MODES_SET_TIMING(__lut,	\
    529 			HDMI_EVFRMT_3840x2160p24_16_9);	\
    530 		MSM_HDMI_MODES_SET_TIMING(__lut,	\
    531 			HDMI_EVFRMT_4096x2160p24_16_9);	\
    532 	}	\
    533 	if (__type & MSM_HDMI_MODES_DVI) {	\
    534 		MSM_HDMI_MODES_SET_TIMING(__lut,	\
    535 			HDMI_VFRMT_1024x768p60_4_3);	\
    536 		MSM_HDMI_MODES_SET_TIMING(__lut,	\
    537 			HDMI_VFRMT_1280x1024p60_5_4);	\
    538 		MSM_HDMI_MODES_SET_TIMING(__lut,	\
    539 			HDMI_VFRMT_2560x1600p60_16_9);	\
    540 		MSM_HDMI_MODES_SET_TIMING(__lut,	\
    541 			HDMI_VFRMT_800x600p60_4_3);	\
    542 		MSM_HDMI_MODES_SET_TIMING(__lut,	\
    543 			HDMI_VFRMT_848x480p60_16_9);	\
    544 		MSM_HDMI_MODES_SET_TIMING(__lut,	\
    545 			HDMI_VFRMT_1280x960p60_4_3);	\
    546 		MSM_HDMI_MODES_SET_TIMING(__lut,	\
    547 			HDMI_VFRMT_1360x768p60_16_9);	\
    548 		MSM_HDMI_MODES_SET_TIMING(__lut,	\
    549 			HDMI_VFRMT_1440x900p60_16_10);	\
    550 		MSM_HDMI_MODES_SET_TIMING(__lut,	\
    551 			HDMI_VFRMT_1400x1050p60_4_3);	\
    552 		MSM_HDMI_MODES_SET_TIMING(__lut,	\
    553 			HDMI_VFRMT_1680x1050p60_16_10);	\
    554 		MSM_HDMI_MODES_SET_TIMING(__lut,	\
    555 			HDMI_VFRMT_1600x1200p60_4_3);	\
    556 		MSM_HDMI_MODES_SET_TIMING(__lut,	\
    557 			HDMI_VFRMT_1920x1200p60_16_10);	\
    558 		MSM_HDMI_MODES_SET_TIMING(__lut,	\
    559 			HDMI_VFRMT_1366x768p60_16_10);	\
    560 		MSM_HDMI_MODES_SET_TIMING(__lut,	\
    561 			HDMI_VFRMT_1280x800p60_16_10);	\
    562 	}	\
    563 } while (0)
    564 
    565 #define MSM_HDMI_MODES_GET_DETAILS(mode, MODE) do {		\
    566 	struct msm_hdmi_mode_timing_info info = MODE##_TIMING;	\
    567 	*mode = info;						\
    568 	} while (0)
    569 
    570 #endif /* _MSM_HDMI_MODES_H__ */
    571