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