Home | History | Annotate | Download | only in video
      1 #ifndef _UAPI_MSM_HDMI_MODES_H__
      2 #define _UAPI_MSM_HDMI_MODES_H__
      3 #include <linux/types.h>
      4 
      5 enum aspect_ratio {
      6 	HDMI_RES_AR_INVALID,
      7 	HDMI_RES_AR_4_3,
      8 	HDMI_RES_AR_5_4,
      9 	HDMI_RES_AR_16_9,
     10 	HDMI_RES_AR_16_10,
     11 	HDMI_RES_AR_MAX,
     12 };
     13 
     14 enum msm_hdmi_s3d_mode {
     15 	HDMI_S3D_NONE,
     16 	HDMI_S3D_SIDE_BY_SIDE,
     17 	HDMI_S3D_TOP_AND_BOTTOM,
     18 	HDMI_S3D_FRAME_PACKING,
     19 	HDMI_S3D_MAX,
     20 };
     21 
     22 struct msm_hdmi_mode_timing_info {
     23 	uint32_t	video_format;
     24 	uint32_t	active_h;
     25 	uint32_t	front_porch_h;
     26 	uint32_t	pulse_width_h;
     27 	uint32_t	back_porch_h;
     28 	uint32_t	active_low_h;
     29 	uint32_t	active_v;
     30 	uint32_t	front_porch_v;
     31 	uint32_t	pulse_width_v;
     32 	uint32_t	back_porch_v;
     33 	uint32_t	active_low_v;
     34 	/* Must divide by 1000 to get the actual frequency in MHZ */
     35 	uint32_t	pixel_freq;
     36 	/* Must divide by 1000 to get the actual frequency in HZ */
     37 	uint32_t	refresh_rate;
     38 	uint32_t	interlaced;
     39 	uint32_t	supported;
     40 	enum aspect_ratio ar;
     41 };
     42 
     43 #define MSM_HDMI_INIT_RES_PAGE          1
     44 
     45 #define MSM_HDMI_MODES_CEA		(1 << 0)
     46 #define MSM_HDMI_MODES_XTND		(1 << 1)
     47 #define MSM_HDMI_MODES_DVI		(1 << 2)
     48 #define MSM_HDMI_MODES_ALL		(MSM_HDMI_MODES_CEA |\
     49 					 MSM_HDMI_MODES_XTND |\
     50 					 MSM_HDMI_MODES_DVI)
     51 
     52 /* all video formats defined by CEA 861D */
     53 #define HDMI_VFRMT_UNKNOWN		0
     54 #define HDMI_VFRMT_640x480p60_4_3	1
     55 #define HDMI_VFRMT_720x480p60_4_3	2
     56 #define HDMI_VFRMT_720x480p60_16_9	3
     57 #define HDMI_VFRMT_1280x720p60_16_9	4
     58 #define HDMI_VFRMT_1920x1080i60_16_9	5
     59 #define HDMI_VFRMT_720x480i60_4_3	6
     60 #define HDMI_VFRMT_1440x480i60_4_3	HDMI_VFRMT_720x480i60_4_3
     61 #define HDMI_VFRMT_720x480i60_16_9	7
     62 #define HDMI_VFRMT_1440x480i60_16_9	HDMI_VFRMT_720x480i60_16_9
     63 #define HDMI_VFRMT_720x240p60_4_3	8
     64 #define HDMI_VFRMT_1440x240p60_4_3	HDMI_VFRMT_720x240p60_4_3
     65 #define HDMI_VFRMT_720x240p60_16_9	9
     66 #define HDMI_VFRMT_1440x240p60_16_9	HDMI_VFRMT_720x240p60_16_9
     67 #define HDMI_VFRMT_2880x480i60_4_3	10
     68 #define HDMI_VFRMT_2880x480i60_16_9	11
     69 #define HDMI_VFRMT_2880x240p60_4_3	12
     70 #define HDMI_VFRMT_2880x240p60_16_9	13
     71 #define HDMI_VFRMT_1440x480p60_4_3	14
     72 #define HDMI_VFRMT_1440x480p60_16_9	15
     73 #define HDMI_VFRMT_1920x1080p60_16_9	16
     74 #define HDMI_VFRMT_720x576p50_4_3	17
     75 #define HDMI_VFRMT_720x576p50_16_9	18
     76 #define HDMI_VFRMT_1280x720p50_16_9	19
     77 #define HDMI_VFRMT_1920x1080i50_16_9	20
     78 #define HDMI_VFRMT_720x576i50_4_3	21
     79 #define HDMI_VFRMT_1440x576i50_4_3	HDMI_VFRMT_720x576i50_4_3
     80 #define HDMI_VFRMT_720x576i50_16_9	22
     81 #define HDMI_VFRMT_1440x576i50_16_9	HDMI_VFRMT_720x576i50_16_9
     82 #define HDMI_VFRMT_720x288p50_4_3	23
     83 #define HDMI_VFRMT_1440x288p50_4_3	HDMI_VFRMT_720x288p50_4_3
     84 #define HDMI_VFRMT_720x288p50_16_9	24
     85 #define HDMI_VFRMT_1440x288p50_16_9	HDMI_VFRMT_720x288p50_16_9
     86 #define HDMI_VFRMT_2880x576i50_4_3	25
     87 #define HDMI_VFRMT_2880x576i50_16_9	26
     88 #define HDMI_VFRMT_2880x288p50_4_3	27
     89 #define HDMI_VFRMT_2880x288p50_16_9	28
     90 #define HDMI_VFRMT_1440x576p50_4_3	29
     91 #define HDMI_VFRMT_1440x576p50_16_9	30
     92 #define HDMI_VFRMT_1920x1080p50_16_9	31
     93 #define HDMI_VFRMT_1920x1080p24_16_9	32
     94 #define HDMI_VFRMT_1920x1080p25_16_9	33
     95 #define HDMI_VFRMT_1920x1080p30_16_9	34
     96 #define HDMI_VFRMT_2880x480p60_4_3	35
     97 #define HDMI_VFRMT_2880x480p60_16_9	36
     98 #define HDMI_VFRMT_2880x576p50_4_3	37
     99 #define HDMI_VFRMT_2880x576p50_16_9	38
    100 #define HDMI_VFRMT_1920x1250i50_16_9	39
    101 #define HDMI_VFRMT_1920x1080i100_16_9	40
    102 #define HDMI_VFRMT_1280x720p100_16_9	41
    103 #define HDMI_VFRMT_720x576p100_4_3	42
    104 #define HDMI_VFRMT_720x576p100_16_9	43
    105 #define HDMI_VFRMT_720x576i100_4_3	44
    106 #define HDMI_VFRMT_1440x576i100_4_3	HDMI_VFRMT_720x576i100_4_3
    107 #define HDMI_VFRMT_720x576i100_16_9	45
    108 #define HDMI_VFRMT_1440x576i100_16_9	HDMI_VFRMT_720x576i100_16_9
    109 #define HDMI_VFRMT_1920x1080i120_16_9	46
    110 #define HDMI_VFRMT_1280x720p120_16_9	47
    111 #define HDMI_VFRMT_720x480p120_4_3	48
    112 #define HDMI_VFRMT_720x480p120_16_9	49
    113 #define HDMI_VFRMT_720x480i120_4_3	50
    114 #define HDMI_VFRMT_1440x480i120_4_3	HDMI_VFRMT_720x480i120_4_3
    115 #define HDMI_VFRMT_720x480i120_16_9	51
    116 #define HDMI_VFRMT_1440x480i120_16_9	HDMI_VFRMT_720x480i120_16_9
    117 #define HDMI_VFRMT_720x576p200_4_3	52
    118 #define HDMI_VFRMT_720x576p200_16_9	53
    119 #define HDMI_VFRMT_720x576i200_4_3	54
    120 #define HDMI_VFRMT_1440x576i200_4_3	HDMI_VFRMT_720x576i200_4_3
    121 #define HDMI_VFRMT_720x576i200_16_9	55
    122 #define HDMI_VFRMT_1440x576i200_16_9	HDMI_VFRMT_720x576i200_16_9
    123 #define HDMI_VFRMT_720x480p240_4_3	56
    124 #define HDMI_VFRMT_720x480p240_16_9	57
    125 #define HDMI_VFRMT_720x480i240_4_3	58
    126 #define HDMI_VFRMT_1440x480i240_4_3	HDMI_VFRMT_720x480i240_4_3
    127 #define HDMI_VFRMT_720x480i240_16_9	59
    128 #define HDMI_VFRMT_1440x480i240_16_9	HDMI_VFRMT_720x480i240_16_9
    129 #define HDMI_VFRMT_1280x720p24_16_9	60
    130 #define HDMI_VFRMT_1280x720p25_16_9	61
    131 #define HDMI_VFRMT_1280x720p30_16_9	62
    132 #define HDMI_VFRMT_1920x1080p120_16_9	63
    133 #define HDMI_VFRMT_1920x1080p100_16_9	64
    134 /* Video Identification Codes from 65-127 are reserved for the future */
    135 #define HDMI_VFRMT_END			127
    136 
    137 #define EVFRMT_OFF(x)			(HDMI_VFRMT_END + x)
    138 
    139 /* extended video formats */
    140 #define HDMI_VFRMT_3840x2160p30_16_9	EVFRMT_OFF(1)
    141 #define HDMI_VFRMT_3840x2160p25_16_9	EVFRMT_OFF(2)
    142 #define HDMI_VFRMT_3840x2160p24_16_9	EVFRMT_OFF(3)
    143 #define HDMI_VFRMT_4096x2160p24_16_9	EVFRMT_OFF(4)
    144 #define HDMI_EVFRMT_END			HDMI_VFRMT_4096x2160p24_16_9
    145 
    146 #define WQXGA_OFF(x)			(HDMI_EVFRMT_END + x)
    147 
    148 /* WQXGA */
    149 #define HDMI_VFRMT_2560x1600p60_16_9	WQXGA_OFF(1)
    150 #define HDMI_WQXGAFRMT_END		HDMI_VFRMT_2560x1600p60_16_9
    151 
    152 #define WXGA_OFF(x)			(HDMI_WQXGAFRMT_END + x)
    153 
    154 /* WXGA */
    155 #define HDMI_VFRMT_1280x800p60_16_10	WXGA_OFF(1)
    156 #define HDMI_VFRMT_1366x768p60_16_10	WXGA_OFF(2)
    157 #define HDMI_WXGAFRMT_END		HDMI_VFRMT_1366x768p60_16_10
    158 
    159 #define ETI_OFF(x)			(HDMI_WXGAFRMT_END + x)
    160 
    161 /* ESTABLISHED TIMINGS I */
    162 #define HDMI_VFRMT_800x600p60_4_3	ETI_OFF(1)
    163 #define ETI_VFRMT_END			HDMI_VFRMT_800x600p60_4_3
    164 
    165 #define ETII_OFF(x)			(ETI_VFRMT_END + x)
    166 
    167 /* ESTABLISHED TIMINGS II */
    168 #define HDMI_VFRMT_1024x768p60_4_3	ETII_OFF(1)
    169 #define HDMI_VFRMT_1280x1024p60_5_4	ETII_OFF(2)
    170 #define ETII_VFRMT_END			HDMI_VFRMT_1280x1024p60_5_4
    171 
    172 #define ETIII_OFF(x)			(ETII_VFRMT_END + x)
    173 
    174 /* ESTABLISHED TIMINGS III */
    175 #define HDMI_VFRMT_848x480p60_16_9	ETIII_OFF(1)
    176 #define HDMI_VFRMT_1280x960p60_4_3	ETIII_OFF(2)
    177 #define HDMI_VFRMT_1360x768p60_16_9	ETIII_OFF(3)
    178 #define HDMI_VFRMT_1440x900p60_16_10	ETIII_OFF(4)
    179 #define HDMI_VFRMT_1400x1050p60_4_3	ETIII_OFF(5)
    180 #define HDMI_VFRMT_1680x1050p60_16_10	ETIII_OFF(6)
    181 #define HDMI_VFRMT_1600x1200p60_4_3	ETIII_OFF(7)
    182 #define HDMI_VFRMT_1920x1200p60_16_10	ETIII_OFF(8)
    183 #define ETIII_VFRMT_END			HDMI_VFRMT_1920x1200p60_16_10
    184 
    185 #define RESERVE_OFF(x)			(ETIII_VFRMT_END + x)
    186 
    187 #define HDMI_VFRMT_RESERVE1		RESERVE_OFF(1)
    188 #define HDMI_VFRMT_RESERVE2		RESERVE_OFF(2)
    189 #define HDMI_VFRMT_RESERVE3		RESERVE_OFF(3)
    190 #define HDMI_VFRMT_RESERVE4		RESERVE_OFF(4)
    191 #define HDMI_VFRMT_RESERVE5		RESERVE_OFF(5)
    192 #define HDMI_VFRMT_RESERVE6		RESERVE_OFF(6)
    193 #define HDMI_VFRMT_RESERVE7		RESERVE_OFF(7)
    194 #define HDMI_VFRMT_RESERVE8		RESERVE_OFF(8)
    195 #define RESERVE_VFRMT_END		HDMI_VFRMT_RESERVE8
    196 
    197 #define HDMI_VFRMT_MAX			(RESERVE_VFRMT_END + 1)
    198 #define HDMI_VFRMT_FORCE_32BIT		0x7FFFFFFF
    199 
    200 /* Timing information for supported modes */
    201 #define VFRMT_NOT_SUPPORTED(VFRMT) \
    202 	{VFRMT, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, false,		\
    203 		HDMI_RES_AR_INVALID}
    204 
    205 #define HDMI_VFRMT_640x480p60_4_3_TIMING				\
    206 	{HDMI_VFRMT_640x480p60_4_3, 640, 16, 96, 48, true,		\
    207 	 480, 10, 2, 33, true, 25200, 60000, false, true, HDMI_RES_AR_4_3}
    208 #define HDMI_VFRMT_720x480p60_4_3_TIMING				\
    209 	{HDMI_VFRMT_720x480p60_4_3, 720, 16, 62, 60, true,		\
    210 	 480, 9, 6, 30, true, 27027, 60000, false, true, HDMI_RES_AR_4_3}
    211 #define HDMI_VFRMT_720x480p60_16_9_TIMING				\
    212 	{HDMI_VFRMT_720x480p60_16_9, 720, 16, 62, 60, true,		\
    213 	 480, 9, 6, 30, true, 27027, 60000, false, true, HDMI_RES_AR_16_9}
    214 #define HDMI_VFRMT_1280x720p60_16_9_TIMING				\
    215 	{HDMI_VFRMT_1280x720p60_16_9, 1280, 110, 40, 220, false,	\
    216 	 720, 5, 5, 20, false, 74250, 60000, false, true, HDMI_RES_AR_16_9}
    217 #define HDMI_VFRMT_1920x1080i60_16_9_TIMING				\
    218 	{HDMI_VFRMT_1920x1080i60_16_9, 1920, 88, 44, 148, false,	\
    219 	 540, 2, 5, 5, false, 74250, 60000, false, true, HDMI_RES_AR_16_9}
    220 #define HDMI_VFRMT_1440x480i60_4_3_TIMING				\
    221 	{HDMI_VFRMT_1440x480i60_4_3, 1440, 38, 124, 114, true,		\
    222 	 240, 4, 3, 15, true, 27000, 60000, true, true, HDMI_RES_AR_4_3}
    223 #define HDMI_VFRMT_1440x480i60_16_9_TIMING				\
    224 	{HDMI_VFRMT_1440x480i60_16_9, 1440, 38, 124, 114, true,		\
    225 	 240, 4, 3, 15, true, 27000, 60000, true, true, HDMI_RES_AR_16_9}
    226 #define HDMI_VFRMT_1920x1080p60_16_9_TIMING				\
    227 	{HDMI_VFRMT_1920x1080p60_16_9, 1920, 88, 44, 148, false,	\
    228 	 1080, 4, 5, 36, false, 148500, 60000, false, true, HDMI_RES_AR_16_9}
    229 #define HDMI_VFRMT_720x576p50_4_3_TIMING				\
    230 	{HDMI_VFRMT_720x576p50_4_3, 720, 12, 64, 68, true,		\
    231 	 576,  5, 5, 39, true, 27000, 50000, false, true, HDMI_RES_AR_4_3}
    232 #define HDMI_VFRMT_720x576p50_16_9_TIMING				\
    233 	{HDMI_VFRMT_720x576p50_16_9, 720, 12, 64, 68, true,		\
    234 	 576,  5, 5, 39, true, 27000, 50000, false, true, HDMI_RES_AR_16_9}
    235 #define HDMI_VFRMT_1280x720p50_16_9_TIMING				\
    236 	{HDMI_VFRMT_1280x720p50_16_9, 1280, 440, 40, 220, false,	\
    237 	 720,  5, 5, 20, false, 74250, 50000, false, true, HDMI_RES_AR_16_9}
    238 #define HDMI_VFRMT_1440x576i50_4_3_TIMING				\
    239 	{HDMI_VFRMT_1440x576i50_4_3, 1440, 24, 126, 138, true,		\
    240 	 288,  2, 3, 19, true, 27000, 50000, true, true, HDMI_RES_AR_4_3}
    241 #define HDMI_VFRMT_1440x576i50_16_9_TIMING				\
    242 	{HDMI_VFRMT_1440x576i50_16_9, 1440, 24, 126, 138, true,		\
    243 	 288,  2, 3, 19, true, 27000, 50000, true, true, HDMI_RES_AR_16_9}
    244 #define HDMI_VFRMT_1920x1080p50_16_9_TIMING				\
    245 	{HDMI_VFRMT_1920x1080p50_16_9, 1920, 528, 44, 148, false,	\
    246 	 1080, 4, 5, 36, false, 148500, 50000, false, true, HDMI_RES_AR_16_9}
    247 #define HDMI_VFRMT_1920x1080p24_16_9_TIMING				\
    248 	{HDMI_VFRMT_1920x1080p24_16_9, 1920, 638, 44, 148, false,	\
    249 	 1080, 4, 5, 36, false, 74250, 24000, false, true, HDMI_RES_AR_16_9}
    250 #define HDMI_VFRMT_1920x1080p25_16_9_TIMING				\
    251 	{HDMI_VFRMT_1920x1080p25_16_9, 1920, 528, 44, 148, false,	\
    252 	 1080, 4, 5, 36, false, 74250, 25000, false, true, HDMI_RES_AR_16_9}
    253 #define HDMI_VFRMT_1920x1080p30_16_9_TIMING				\
    254 	{HDMI_VFRMT_1920x1080p30_16_9, 1920, 88, 44, 148, false,	\
    255 	 1080, 4, 5, 36, false, 74250, 30000, false, true, HDMI_RES_AR_16_9}
    256 #define HDMI_VFRMT_1024x768p60_4_3_TIMING                               \
    257 	{HDMI_VFRMT_1024x768p60_4_3, 1024, 24, 136, 160, false,         \
    258 	768, 2, 6, 29, false, 65000, 60000, false, true, HDMI_RES_AR_4_3}
    259 #define HDMI_VFRMT_1280x1024p60_5_4_TIMING				\
    260 	{HDMI_VFRMT_1280x1024p60_5_4, 1280, 48, 112, 248, false,	\
    261 	1024, 1, 3, 38, false, 108000, 60000, false, true, HDMI_RES_AR_5_4}
    262 #define HDMI_VFRMT_2560x1600p60_16_9_TIMING				\
    263 	{HDMI_VFRMT_2560x1600p60_16_9, 2560, 48, 32, 80, false,		\
    264 	 1600, 3, 6, 37, false, 268500, 60000, false, true, HDMI_RES_AR_16_9}
    265 #define HDMI_VFRMT_3840x2160p30_16_9_TIMING				\
    266 	{HDMI_VFRMT_3840x2160p30_16_9, 3840, 176, 88, 296, false,	\
    267 	 2160, 8, 10, 72, false, 297000, 30000, false, true, HDMI_RES_AR_16_9}
    268 #define HDMI_VFRMT_3840x2160p25_16_9_TIMING				\
    269 	{HDMI_VFRMT_3840x2160p25_16_9, 3840, 1056, 88, 296, false,	\
    270 	 2160, 8, 10, 72, false, 297000, 25000, false, true, HDMI_RES_AR_16_9}
    271 #define HDMI_VFRMT_3840x2160p24_16_9_TIMING				\
    272 	{HDMI_VFRMT_3840x2160p24_16_9, 3840, 1276, 88, 296, false,	\
    273 	 2160, 8, 10, 72, false, 297000, 24000, false, true, HDMI_RES_AR_16_9}
    274 #define HDMI_VFRMT_4096x2160p24_16_9_TIMING				\
    275 	{HDMI_VFRMT_4096x2160p24_16_9, 4096, 1020, 88, 296, false,	\
    276 	 2160, 8, 10, 72, false, 297000, 24000, false, true, HDMI_RES_AR_16_9}
    277 
    278 #define HDMI_VFRMT_800x600p60_4_3_TIMING				\
    279 	{HDMI_VFRMT_800x600p60_4_3, 800, 40, 128, 88, false,	\
    280 	 600, 1, 4, 23, false, 40000, 60000, false, true, HDMI_RES_AR_4_3}
    281 #define HDMI_VFRMT_848x480p60_16_9_TIMING				\
    282 	{HDMI_VFRMT_848x480p60_16_9, 848, 16, 112, 112, false,	\
    283 	 480, 6, 8, 23, false, 33750, 60000, false, true, HDMI_RES_AR_16_9}
    284 #define HDMI_VFRMT_1280x960p60_4_3_TIMING\
    285 	{HDMI_VFRMT_1280x960p60_4_3, 1280, 96, 112, 312, false,	\
    286 	 960, 1, 3, 36, false, 108000, 60000, false, true, HDMI_RES_AR_4_3}
    287 #define HDMI_VFRMT_1360x768p60_16_9_TIMING\
    288 	{HDMI_VFRMT_1360x768p60_16_9, 1360, 64, 112, 256, false,	\
    289 	 768, 3, 6, 18, false, 85500, 60000, false, true, HDMI_RES_AR_16_9}
    290 #define HDMI_VFRMT_1440x900p60_16_10_TIMING\
    291 	{HDMI_VFRMT_1440x900p60_16_10, 1440, 48, 32, 80, false,	\
    292 	 900, 3, 6, 17, true, 88750, 60000, false, true, HDMI_RES_AR_16_10}
    293 #define HDMI_VFRMT_1400x1050p60_4_3_TIMING\
    294 	{HDMI_VFRMT_1400x1050p60_4_3, 1400, 48, 32, 80, false,	\
    295 	 1050, 3, 4, 23, true, 101000, 60000, false, true, HDMI_RES_AR_4_3}
    296 #define HDMI_VFRMT_1680x1050p60_16_10_TIMING\
    297 	{HDMI_VFRMT_1680x1050p60_16_10, 1680, 48, 32, 80, false,	\
    298 	 1050, 3, 6, 21, true, 119000, 60000, false, true, HDMI_RES_AR_16_10}
    299 #define HDMI_VFRMT_1600x1200p60_4_3_TIMING\
    300 	{HDMI_VFRMT_1600x1200p60_4_3, 1600, 64, 192, 304, false,	\
    301 	 1200, 1, 3, 46, false, 162000, 60000, false, true, HDMI_RES_AR_4_3}
    302 #define HDMI_VFRMT_1920x1200p60_16_10_TIMING\
    303 	{HDMI_VFRMT_1920x1200p60_16_10, 1920, 48, 32, 80, false,\
    304 	 1200, 3, 6, 26, true, 154000, 60000, false, true, HDMI_RES_AR_16_10}
    305 #define HDMI_VFRMT_1366x768p60_16_10_TIMING\
    306 	{HDMI_VFRMT_1366x768p60_16_10, 1366, 70, 143, 213, false,\
    307 	 768, 3, 3, 24, false, 85500, 60000, false, true, HDMI_RES_AR_16_10}
    308 #define HDMI_VFRMT_1280x800p60_16_10_TIMING\
    309 	{HDMI_VFRMT_1280x800p60_16_10, 1280, 72, 128, 200, true,\
    310 	 800, 3, 6, 22, false, 83500, 60000, false, true, HDMI_RES_AR_16_10}
    311 
    312 #define MSM_HDMI_MODES_SET_TIMING(LUT, MODE) do {		\
    313 	struct msm_hdmi_mode_timing_info mode = MODE##_TIMING;	\
    314 	LUT[MODE] = mode;\
    315 	} while (0)
    316 
    317 #define MSM_HDMI_MODES_INIT_TIMINGS(__lut)	\
    318 do {	\
    319 	unsigned int i;	\
    320 	for (i = 0; i < HDMI_VFRMT_MAX; i++) {	\
    321 		struct msm_hdmi_mode_timing_info mode =	\
    322 			VFRMT_NOT_SUPPORTED(i);	\
    323 		(__lut)[i] = mode;	\
    324 	}	\
    325 } while (0)
    326 
    327 #define MSM_HDMI_MODES_SET_SUPP_TIMINGS(__lut, __type)	\
    328 do {	\
    329 	if (__type & MSM_HDMI_MODES_CEA) {	\
    330 		MSM_HDMI_MODES_SET_TIMING(__lut,	\
    331 			HDMI_VFRMT_640x480p60_4_3);	\
    332 		MSM_HDMI_MODES_SET_TIMING(__lut,	\
    333 			HDMI_VFRMT_720x480p60_4_3);	\
    334 		MSM_HDMI_MODES_SET_TIMING(__lut,	\
    335 			HDMI_VFRMT_720x480p60_16_9);	\
    336 		MSM_HDMI_MODES_SET_TIMING(__lut,	\
    337 			HDMI_VFRMT_1280x720p60_16_9);	\
    338 		MSM_HDMI_MODES_SET_TIMING(__lut,	\
    339 			HDMI_VFRMT_1920x1080i60_16_9);	\
    340 		MSM_HDMI_MODES_SET_TIMING(__lut,	\
    341 			HDMI_VFRMT_1440x480i60_4_3);	\
    342 		MSM_HDMI_MODES_SET_TIMING(__lut,	\
    343 			HDMI_VFRMT_1440x480i60_16_9);	\
    344 		MSM_HDMI_MODES_SET_TIMING(__lut,	\
    345 			HDMI_VFRMT_1920x1080p60_16_9);	\
    346 		MSM_HDMI_MODES_SET_TIMING(__lut,	\
    347 			HDMI_VFRMT_720x576p50_4_3);	\
    348 		MSM_HDMI_MODES_SET_TIMING(__lut,	\
    349 			HDMI_VFRMT_720x576p50_16_9);	\
    350 		MSM_HDMI_MODES_SET_TIMING(__lut,	\
    351 			HDMI_VFRMT_1280x720p50_16_9);	\
    352 		MSM_HDMI_MODES_SET_TIMING(__lut,	\
    353 			HDMI_VFRMT_1440x576i50_4_3);	\
    354 		MSM_HDMI_MODES_SET_TIMING(__lut,	\
    355 			HDMI_VFRMT_1440x576i50_16_9);	\
    356 		MSM_HDMI_MODES_SET_TIMING(__lut,	\
    357 			HDMI_VFRMT_1920x1080p50_16_9);	\
    358 		MSM_HDMI_MODES_SET_TIMING(__lut,	\
    359 			HDMI_VFRMT_1920x1080p24_16_9);	\
    360 		MSM_HDMI_MODES_SET_TIMING(__lut,	\
    361 			HDMI_VFRMT_1920x1080p25_16_9);	\
    362 		MSM_HDMI_MODES_SET_TIMING(__lut,	\
    363 			HDMI_VFRMT_1920x1080p30_16_9);	\
    364 	}	\
    365 	if (__type & MSM_HDMI_MODES_XTND) {	\
    366 		MSM_HDMI_MODES_SET_TIMING(__lut,	\
    367 			HDMI_VFRMT_3840x2160p30_16_9);	\
    368 		MSM_HDMI_MODES_SET_TIMING(__lut,	\
    369 			HDMI_VFRMT_3840x2160p25_16_9);	\
    370 		MSM_HDMI_MODES_SET_TIMING(__lut,	\
    371 			HDMI_VFRMT_3840x2160p24_16_9);	\
    372 		MSM_HDMI_MODES_SET_TIMING(__lut,	\
    373 			HDMI_VFRMT_4096x2160p24_16_9);	\
    374 	}	\
    375 	if (__type & MSM_HDMI_MODES_DVI) {	\
    376 		MSM_HDMI_MODES_SET_TIMING(__lut,	\
    377 			HDMI_VFRMT_1024x768p60_4_3);	\
    378 		MSM_HDMI_MODES_SET_TIMING(__lut,	\
    379 			HDMI_VFRMT_1280x1024p60_5_4);	\
    380 		MSM_HDMI_MODES_SET_TIMING(__lut,	\
    381 			HDMI_VFRMT_2560x1600p60_16_9);	\
    382 		MSM_HDMI_MODES_SET_TIMING(__lut,	\
    383 			HDMI_VFRMT_800x600p60_4_3);	\
    384 		MSM_HDMI_MODES_SET_TIMING(__lut,	\
    385 			HDMI_VFRMT_848x480p60_16_9);	\
    386 		MSM_HDMI_MODES_SET_TIMING(__lut,	\
    387 			HDMI_VFRMT_1280x960p60_4_3);	\
    388 		MSM_HDMI_MODES_SET_TIMING(__lut,	\
    389 			HDMI_VFRMT_1360x768p60_16_9);	\
    390 		MSM_HDMI_MODES_SET_TIMING(__lut,	\
    391 			HDMI_VFRMT_1440x900p60_16_10);	\
    392 		MSM_HDMI_MODES_SET_TIMING(__lut,	\
    393 			HDMI_VFRMT_1400x1050p60_4_3);	\
    394 		MSM_HDMI_MODES_SET_TIMING(__lut,	\
    395 			HDMI_VFRMT_1680x1050p60_16_10);	\
    396 		MSM_HDMI_MODES_SET_TIMING(__lut,	\
    397 			HDMI_VFRMT_1600x1200p60_4_3);	\
    398 		MSM_HDMI_MODES_SET_TIMING(__lut,	\
    399 			HDMI_VFRMT_1920x1200p60_16_10);	\
    400 		MSM_HDMI_MODES_SET_TIMING(__lut,	\
    401 			HDMI_VFRMT_1366x768p60_16_10);	\
    402 		MSM_HDMI_MODES_SET_TIMING(__lut,	\
    403 			HDMI_VFRMT_1280x800p60_16_10);	\
    404 	}	\
    405 } while (0)
    406 
    407 #define MSM_HDMI_MODES_GET_DETAILS(mode, MODE) do {		\
    408 	struct msm_hdmi_mode_timing_info info = MODE##_TIMING;	\
    409 	*mode = info;						\
    410 	} while (0)
    411 
    412 #endif /* _UAPI_MSM_HDMI_MODES_H__ */
    413