1#ifndef _UAPI_MSM_HDMI_MODES_H__
2#define _UAPI_MSM_HDMI_MODES_H__
3#include <linux/types.h>
4
5enum 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
14enum 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
22struct 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)	\
318do {	\
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)	\
328do {	\
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