4 * Copyright (c) 2010-2011 Samsung Electronics Co., Ltd.
6 * Jiun Yu <jiun.yu@samsung.com>
8 * This program is free software; you can redistribute it and/or modify
9 * it under the terms of the GNU General Public License as published
10 * by the Free Software Foundiation. either version 2 of the License,
11 * or (at your option) any later version
14 #include <linux/delay.h>
15 #include <linux/pm_runtime.h>
16 #include <plat/devs.h>
17 #include <plat/tv-core.h>
20 #include "regs-hdmi-5250.h"
22 static const struct hdmi_preset_conf hdmi_conf_480p60 = {
24 .h_blank = {0x8a, 0x00},
25 .v2_blank = {0x0d, 0x02},
26 .v1_blank = {0x2d, 0x00},
27 .v_line = {0x0d, 0x02},
28 .h_line = {0x5a, 0x03},
31 .int_pro_mode = {0x00},
32 .v_blank_f0 = {0xff, 0xff},
33 .v_blank_f1 = {0xff, 0xff},
34 .h_sync_start = {0x0e, 0x00},
35 .h_sync_end = {0x4c, 0x00},
36 .v_sync_line_bef_2 = {0x0f, 0x00},
37 .v_sync_line_bef_1 = {0x09, 0x00},
38 .v_sync_line_aft_2 = {0xff, 0xff},
39 .v_sync_line_aft_1 = {0xff, 0xff},
40 .v_sync_line_aft_pxl_2 = {0xff, 0xff},
41 .v_sync_line_aft_pxl_1 = {0xff, 0xff},
42 .v_blank_f2 = {0xff, 0xff},
43 .v_blank_f3 = {0xff, 0xff},
44 .v_blank_f4 = {0xff, 0xff},
45 .v_blank_f5 = {0xff, 0xff},
46 .v_sync_line_aft_3 = {0xff, 0xff},
47 .v_sync_line_aft_4 = {0xff, 0xff},
48 .v_sync_line_aft_5 = {0xff, 0xff},
49 .v_sync_line_aft_6 = {0xff, 0xff},
50 .v_sync_line_aft_pxl_3 = {0xff, 0xff},
51 .v_sync_line_aft_pxl_4 = {0xff, 0xff},
52 .v_sync_line_aft_pxl_5 = {0xff, 0xff},
53 .v_sync_line_aft_pxl_6 = {0xff, 0xff},
54 .vact_space_1 = {0xff, 0xff},
55 .vact_space_2 = {0xff, 0xff},
56 .vact_space_3 = {0xff, 0xff},
57 .vact_space_4 = {0xff, 0xff},
58 .vact_space_5 = {0xff, 0xff},
59 .vact_space_6 = {0xff, 0xff},
60 /* other don't care */
64 0x5a, 0x03, /* h_fsz */
65 0x8a, 0x00, 0xd0, 0x02, /* hact */
66 0x0d, 0x02, /* v_fsz */
67 0x01, 0x00, 0x33, 0x02, /* vsync */
68 0x2d, 0x00, 0xe0, 0x01, /* vact */
69 0x33, 0x02, /* field_chg */
70 0x48, 0x02, /* vact_st2 */
71 0x00, 0x00, /* vact_st3 */
72 0x00, 0x00, /* vact_st4 */
73 0x01, 0x00, 0x01, 0x00, /* vsync top/bot */
74 0x01, 0x00, 0x33, 0x02, /* field top/bot */
80 .code = V4L2_MBUS_FMT_FIXED, /* means RGB888 */
81 .field = V4L2_FIELD_NONE,
85 static const struct hdmi_preset_conf hdmi_conf_720p60 = {
87 .h_blank = {0x72, 0x01},
88 .v2_blank = {0xee, 0x02},
89 .v1_blank = {0x1e, 0x00},
90 .v_line = {0xee, 0x02},
91 .h_line = {0x72, 0x06},
94 .int_pro_mode = {0x00},
95 .v_blank_f0 = {0xff, 0xff},
96 .v_blank_f1 = {0xff, 0xff},
97 .h_sync_start = {0x6c, 0x00},
98 .h_sync_end = {0x94, 0x00},
99 .v_sync_line_bef_2 = {0x0a, 0x00},
100 .v_sync_line_bef_1 = {0x05, 0x00},
101 .v_sync_line_aft_2 = {0xff, 0xff},
102 .v_sync_line_aft_1 = {0xff, 0xff},
103 .v_sync_line_aft_pxl_2 = {0xff, 0xff},
104 .v_sync_line_aft_pxl_1 = {0xff, 0xff},
105 .v_blank_f2 = {0xff, 0xff},
106 .v_blank_f3 = {0xff, 0xff},
107 .v_blank_f4 = {0xff, 0xff},
108 .v_blank_f5 = {0xff, 0xff},
109 .v_sync_line_aft_3 = {0xff, 0xff},
110 .v_sync_line_aft_4 = {0xff, 0xff},
111 .v_sync_line_aft_5 = {0xff, 0xff},
112 .v_sync_line_aft_6 = {0xff, 0xff},
113 .v_sync_line_aft_pxl_3 = {0xff, 0xff},
114 .v_sync_line_aft_pxl_4 = {0xff, 0xff},
115 .v_sync_line_aft_pxl_5 = {0xff, 0xff},
116 .v_sync_line_aft_pxl_6 = {0xff, 0xff},
117 .vact_space_1 = {0xff, 0xff},
118 .vact_space_2 = {0xff, 0xff},
119 .vact_space_3 = {0xff, 0xff},
120 .vact_space_4 = {0xff, 0xff},
121 .vact_space_5 = {0xff, 0xff},
122 .vact_space_6 = {0xff, 0xff},
123 /* other don't care */
127 0x72, 0x06, /* h_fsz */
128 0x72, 0x01, 0x00, 0x05, /* hact */
129 0xee, 0x02, /* v_fsz */
130 0x01, 0x00, 0x33, 0x02, /* vsync */
131 0x1e, 0x00, 0xd0, 0x02, /* vact */
132 0x33, 0x02, /* field_chg */
133 0x48, 0x02, /* vact_st2 */
134 0x00, 0x00, /* vact_st3 */
135 0x00, 0x00, /* vact_st4 */
136 0x01, 0x00, 0x01, 0x00, /* vsync top/bot */
137 0x01, 0x00, 0x33, 0x02, /* field top/bot */
143 .code = V4L2_MBUS_FMT_FIXED, /* means RGB888 */
144 .field = V4L2_FIELD_NONE,
148 static const struct hdmi_preset_conf hdmi_conf_1080i60 = {
150 .h_blank = {0x18, 0x01},
151 .v2_blank = {0x32, 0x02},
152 .v1_blank = {0x16, 0x00},
153 .v_line = {0x65, 0x04},
154 .h_line = {0x98, 0x08},
157 .int_pro_mode = {0x01},
158 .v_blank_f0 = {0x49, 0x02},
159 .v_blank_f1 = {0x65, 0x04},
160 .h_sync_start = {0x56, 0x00},
161 .h_sync_end = {0x82, 0x00},
162 .v_sync_line_bef_2 = {0x07, 0x00},
163 .v_sync_line_bef_1 = {0x02, 0x00},
164 .v_sync_line_aft_2 = {0x39, 0x02},
165 .v_sync_line_aft_1 = {0x34, 0x02},
166 .v_sync_line_aft_pxl_2 = {0xa4, 0x04},
167 .v_sync_line_aft_pxl_1 = {0xa4, 0x04},
168 .v_blank_f2 = {0xff, 0xff},
169 .v_blank_f3 = {0xff, 0xff},
170 .v_blank_f4 = {0xff, 0xff},
171 .v_blank_f5 = {0xff, 0xff},
172 .v_sync_line_aft_3 = {0xff, 0xff},
173 .v_sync_line_aft_4 = {0xff, 0xff},
174 .v_sync_line_aft_5 = {0xff, 0xff},
175 .v_sync_line_aft_6 = {0xff, 0xff},
176 .v_sync_line_aft_pxl_3 = {0xff, 0xff},
177 .v_sync_line_aft_pxl_4 = {0xff, 0xff},
178 .v_sync_line_aft_pxl_5 = {0xff, 0xff},
179 .v_sync_line_aft_pxl_6 = {0xff, 0xff},
180 .vact_space_1 = {0xff, 0xff},
181 .vact_space_2 = {0xff, 0xff},
182 .vact_space_3 = {0xff, 0xff},
183 .vact_space_4 = {0xff, 0xff},
184 .vact_space_5 = {0xff, 0xff},
185 .vact_space_6 = {0xff, 0xff},
186 /* other don't care */
190 0x98, 0x08, /* h_fsz */
191 0x18, 0x01, 0x80, 0x07, /* hact */
192 0x65, 0x04, /* v_fsz */
193 0x01, 0x00, 0x33, 0x02, /* vsync */
194 0x16, 0x00, 0x1c, 0x02, /* vact */
195 0x33, 0x02, /* field_chg */
196 0x49, 0x02, /* vact_st2 */
197 0x00, 0x00, /* vact_st3 */
198 0x00, 0x00, /* vact_st4 */
199 0x01, 0x00, 0x33, 0x02, /* vsync top/bot */
200 0x01, 0x00, 0x33, 0x02, /* field top/bot */
206 .code = V4L2_MBUS_FMT_FIXED, /* means RGB888 */
207 .field = V4L2_FIELD_NONE,
211 static const struct hdmi_preset_conf hdmi_conf_1080p60 = {
213 .h_blank = {0x18, 0x01},
214 .v2_blank = {0x65, 0x04},
215 .v1_blank = {0x2d, 0x00},
216 .v_line = {0x65, 0x04},
217 .h_line = {0x98, 0x08},
220 .int_pro_mode = {0x00},
221 .v_blank_f0 = {0xff, 0xff},
222 .v_blank_f1 = {0xff, 0xff},
223 .h_sync_start = {0x56, 0x00},
224 .h_sync_end = {0x82, 0x00},
225 .v_sync_line_bef_2 = {0x09, 0x00},
226 .v_sync_line_bef_1 = {0x04, 0x00},
227 .v_sync_line_aft_2 = {0xff, 0xff},
228 .v_sync_line_aft_1 = {0xff, 0xff},
229 .v_sync_line_aft_pxl_2 = {0xff, 0xff},
230 .v_sync_line_aft_pxl_1 = {0xff, 0xff},
231 .v_blank_f2 = {0xff, 0xff},
232 .v_blank_f3 = {0xff, 0xff},
233 .v_blank_f4 = {0xff, 0xff},
234 .v_blank_f5 = {0xff, 0xff},
235 .v_sync_line_aft_3 = {0xff, 0xff},
236 .v_sync_line_aft_4 = {0xff, 0xff},
237 .v_sync_line_aft_5 = {0xff, 0xff},
238 .v_sync_line_aft_6 = {0xff, 0xff},
239 .v_sync_line_aft_pxl_3 = {0xff, 0xff},
240 .v_sync_line_aft_pxl_4 = {0xff, 0xff},
241 .v_sync_line_aft_pxl_5 = {0xff, 0xff},
242 .v_sync_line_aft_pxl_6 = {0xff, 0xff},
243 /* other don't care */
247 0x98, 0x08, /* h_fsz */
248 0x18, 0x01, 0x80, 0x07, /* hact */
249 0x65, 0x04, /* v_fsz */
250 0x01, 0x00, 0x33, 0x02, /* vsync */
251 0x2d, 0x00, 0x38, 0x04, /* vact */
252 0x33, 0x02, /* field_chg */
253 0x48, 0x02, /* vact_st2 */
254 0x00, 0x00, /* vact_st3 */
255 0x00, 0x00, /* vact_st4 */
256 0x01, 0x00, 0x01, 0x00, /* vsync top/bot */
257 0x01, 0x00, 0x33, 0x02, /* field top/bot */
263 .code = V4L2_MBUS_FMT_FIXED, /* means RGB888 */
264 .field = V4L2_FIELD_NONE,
268 static const struct hdmi_preset_conf hdmi_conf_576p50 = {
270 .h_blank = {0x90, 0x00},
271 .v2_blank = {0x71, 0x02},
272 .v1_blank = {0x31, 0x00},
273 .v_line = {0x71, 0x02},
274 .h_line = {0x60, 0x03},
277 .int_pro_mode = {0x00},
278 .v_blank_f0 = {0xff, 0xff},
279 .v_blank_f1 = {0xff, 0xff},
280 .h_sync_start = {0x0a, 0x00},
281 .h_sync_end = {0x4a, 0x00},
282 .v_sync_line_bef_2 = {0x0a, 0x00},
283 .v_sync_line_bef_1 = {0x05, 0x00},
284 .v_sync_line_aft_2 = {0xff, 0xff},
285 .v_sync_line_aft_1 = {0xff, 0xff},
286 .v_sync_line_aft_pxl_2 = {0xff, 0xff},
287 .v_sync_line_aft_pxl_1 = {0xff, 0xff},
288 .v_blank_f2 = {0xff, 0xff},
289 .v_blank_f3 = {0xff, 0xff},
290 .v_blank_f4 = {0xff, 0xff},
291 .v_blank_f5 = {0xff, 0xff},
292 .v_sync_line_aft_3 = {0xff, 0xff},
293 .v_sync_line_aft_4 = {0xff, 0xff},
294 .v_sync_line_aft_5 = {0xff, 0xff},
295 .v_sync_line_aft_6 = {0xff, 0xff},
296 .v_sync_line_aft_pxl_3 = {0xff, 0xff},
297 .v_sync_line_aft_pxl_4 = {0xff, 0xff},
298 .v_sync_line_aft_pxl_5 = {0xff, 0xff},
299 .v_sync_line_aft_pxl_6 = {0xff, 0xff},
300 /* other don't care */
304 0x60, 0x03, /* h_fsz */
305 0x90, 0x00, 0xd0, 0x02, /* hact */
306 0x71, 0x02, /* v_fsz */
307 0x01, 0x00, 0x33, 0x02, /* vsync */
308 0x31, 0x00, 0x40, 0x02, /* vact */
309 0x33, 0x02, /* field_chg */
310 0x48, 0x02, /* vact_st2 */
311 0x00, 0x00, /* vact_st3 */
312 0x00, 0x00, /* vact_st4 */
313 0x01, 0x00, 0x01, 0x00, /* vsync top/bot */
314 0x01, 0x00, 0x33, 0x02, /* field top/bot */
320 .code = V4L2_MBUS_FMT_FIXED, /* means RGB888 */
321 .field = V4L2_FIELD_NONE,
325 static const struct hdmi_preset_conf hdmi_conf_720p50 = {
327 .h_blank = {0xbc, 0x02},
328 .v2_blank = {0xee, 0x02},
329 .v1_blank = {0x1e, 0x00},
330 .v_line = {0xee, 0x02},
331 .h_line = {0xbc, 0x07},
334 .int_pro_mode = {0x00},
335 .v_blank_f0 = {0xff, 0xff},
336 .v_blank_f1 = {0xff, 0xff},
337 .h_sync_start = {0xb6, 0x01},
338 .h_sync_end = {0xde, 0x01},
339 .v_sync_line_bef_2 = {0x0a, 0x00},
340 .v_sync_line_bef_1 = {0x05, 0x00},
341 .v_sync_line_aft_2 = {0xff, 0xff},
342 .v_sync_line_aft_1 = {0xff, 0xff},
343 .v_sync_line_aft_pxl_2 = {0xff, 0xff},
344 .v_sync_line_aft_pxl_1 = {0xff, 0xff},
345 .v_blank_f2 = {0xff, 0xff},
346 .v_blank_f3 = {0xff, 0xff},
347 .v_blank_f4 = {0xff, 0xff},
348 .v_blank_f5 = {0xff, 0xff},
349 .v_sync_line_aft_3 = {0xff, 0xff},
350 .v_sync_line_aft_4 = {0xff, 0xff},
351 .v_sync_line_aft_5 = {0xff, 0xff},
352 .v_sync_line_aft_6 = {0xff, 0xff},
353 .v_sync_line_aft_pxl_3 = {0xff, 0xff},
354 .v_sync_line_aft_pxl_4 = {0xff, 0xff},
355 .v_sync_line_aft_pxl_5 = {0xff, 0xff},
356 .v_sync_line_aft_pxl_6 = {0xff, 0xff},
357 .vact_space_1 = {0xff, 0xff},
358 .vact_space_2 = {0xff, 0xff},
359 .vact_space_3 = {0xff, 0xff},
360 .vact_space_4 = {0xff, 0xff},
361 .vact_space_5 = {0xff, 0xff},
362 .vact_space_6 = {0xff, 0xff},
363 /* other don't care */
367 0xbc, 0x07, /* h_fsz */
368 0xbc, 0x02, 0x00, 0x05, /* hact */
369 0xee, 0x02, /* v_fsz */
370 0x01, 0x00, 0x33, 0x02, /* vsync */
371 0x1e, 0x00, 0xd0, 0x02, /* vact */
372 0x33, 0x02, /* field_chg */
373 0x48, 0x02, /* vact_st2 */
374 0x00, 0x00, /* vact_st3 */
375 0x00, 0x00, /* vact_st4 */
376 0x01, 0x00, 0x01, 0x00, /* vsync top/bot */
377 0x01, 0x00, 0x33, 0x02, /* field top/bot */
383 .code = V4L2_MBUS_FMT_FIXED, /* means RGB888 */
384 .field = V4L2_FIELD_NONE,
388 static const struct hdmi_preset_conf hdmi_conf_1080i50 = {
390 .h_blank = {0xd0, 0x02},
391 .v2_blank = {0x32, 0x02},
392 .v1_blank = {0x16, 0x00},
393 .v_line = {0x65, 0x04},
394 .h_line = {0x50, 0x0a},
397 .int_pro_mode = {0x01},
398 .v_blank_f0 = {0x49, 0x02},
399 .v_blank_f1 = {0x65, 0x04},
400 .h_sync_start = {0x0e, 0x02},
401 .h_sync_end = {0x3a, 0x02},
402 .v_sync_line_bef_2 = {0x07, 0x00},
403 .v_sync_line_bef_1 = {0x02, 0x00},
404 .v_sync_line_aft_2 = {0x39, 0x02},
405 .v_sync_line_aft_1 = {0x34, 0x02},
406 .v_sync_line_aft_pxl_2 = {0x38, 0x07},
407 .v_sync_line_aft_pxl_1 = {0x38, 0x07},
408 .v_blank_f2 = {0xff, 0xff},
409 .v_blank_f3 = {0xff, 0xff},
410 .v_blank_f4 = {0xff, 0xff},
411 .v_blank_f5 = {0xff, 0xff},
412 .v_sync_line_aft_3 = {0xff, 0xff},
413 .v_sync_line_aft_4 = {0xff, 0xff},
414 .v_sync_line_aft_5 = {0xff, 0xff},
415 .v_sync_line_aft_6 = {0xff, 0xff},
416 .v_sync_line_aft_pxl_3 = {0xff, 0xff},
417 .v_sync_line_aft_pxl_4 = {0xff, 0xff},
418 .v_sync_line_aft_pxl_5 = {0xff, 0xff},
419 .v_sync_line_aft_pxl_6 = {0xff, 0xff},
420 .vact_space_1 = {0xff, 0xff},
421 .vact_space_2 = {0xff, 0xff},
422 .vact_space_3 = {0xff, 0xff},
423 .vact_space_4 = {0xff, 0xff},
424 .vact_space_5 = {0xff, 0xff},
425 .vact_space_6 = {0xff, 0xff},
426 /* other don't care */
430 0x50, 0x0a, /* h_fsz */
431 0xd0, 0x02, 0x80, 0x07, /* hact */
432 0x65, 0x04, /* v_fsz */
433 0x01, 0x00, 0x33, 0x02, /* vsync */
434 0x16, 0x00, 0x1c, 0x02, /* vact */
435 0x33, 0x02, /* field_chg */
436 0x49, 0x02, /* vact_st2 */
437 0x00, 0x00, /* vact_st3 */
438 0x00, 0x00, /* vact_st4 */
439 0x01, 0x00, 0x33, 0x02, /* vsync top/bot */
440 0x01, 0x00, 0x33, 0x02, /* field top/bot */
446 .code = V4L2_MBUS_FMT_FIXED, /* means RGB888 */
447 .field = V4L2_FIELD_NONE,
451 static const struct hdmi_preset_conf hdmi_conf_1080p50 = {
453 .h_blank = {0xd0, 0x02},
454 .v2_blank = {0x65, 0x04},
455 .v1_blank = {0x2d, 0x00},
456 .v_line = {0x65, 0x04},
457 .h_line = {0x50, 0x0a},
460 .int_pro_mode = {0x00},
461 .v_blank_f0 = {0xff, 0xff},
462 .v_blank_f1 = {0xff, 0xff},
463 .h_sync_start = {0x0e, 0x02},
464 .h_sync_end = {0x3a, 0x02},
465 .v_sync_line_bef_2 = {0x09, 0x00},
466 .v_sync_line_bef_1 = {0x04, 0x00},
467 .v_sync_line_aft_2 = {0xff, 0xff},
468 .v_sync_line_aft_1 = {0xff, 0xff},
469 .v_sync_line_aft_pxl_2 = {0xff, 0xff},
470 .v_sync_line_aft_pxl_1 = {0xff, 0xff},
471 .v_blank_f2 = {0xff, 0xff},
472 .v_blank_f3 = {0xff, 0xff},
473 .v_blank_f4 = {0xff, 0xff},
474 .v_blank_f5 = {0xff, 0xff},
475 .v_sync_line_aft_3 = {0xff, 0xff},
476 .v_sync_line_aft_4 = {0xff, 0xff},
477 .v_sync_line_aft_5 = {0xff, 0xff},
478 .v_sync_line_aft_6 = {0xff, 0xff},
479 .v_sync_line_aft_pxl_3 = {0xff, 0xff},
480 .v_sync_line_aft_pxl_4 = {0xff, 0xff},
481 .v_sync_line_aft_pxl_5 = {0xff, 0xff},
482 .v_sync_line_aft_pxl_6 = {0xff, 0xff},
483 .vact_space_1 = {0xff, 0xff},
484 .vact_space_2 = {0xff, 0xff},
485 .vact_space_3 = {0xff, 0xff},
486 .vact_space_4 = {0xff, 0xff},
487 .vact_space_5 = {0xff, 0xff},
488 .vact_space_6 = {0xff, 0xff},
489 /* other don't care */
493 0x50, 0x0a, /* h_fsz */
494 0xd0, 0x02, 0x80, 0x07, /* hact */
495 0x65, 0x04, /* v_fsz */
496 0x01, 0x00, 0x33, 0x02, /* vsync */
497 0x2d, 0x00, 0x38, 0x04, /* vact */
498 0x33, 0x02, /* field_chg */
499 0x48, 0x02, /* vact_st2 */
500 0x00, 0x00, /* vact_st3 */
501 0x00, 0x00, /* vact_st4 */
502 0x01, 0x00, 0x01, 0x00, /* vsync top/bot */
503 0x01, 0x00, 0x33, 0x02, /* field top/bot */
509 .code = V4L2_MBUS_FMT_FIXED, /* means RGB888 */
510 .field = V4L2_FIELD_NONE,
514 static const struct hdmi_preset_conf hdmi_conf_1080p30 = {
516 .h_blank = {0x18, 0x01},
517 .v2_blank = {0x65, 0x04},
518 .v1_blank = {0x2d, 0x00},
519 .v_line = {0x65, 0x04},
520 .h_line = {0x98, 0x08},
523 .int_pro_mode = {0x00},
524 .v_blank_f0 = {0xff, 0xff},
525 .v_blank_f1 = {0xff, 0xff},
526 .h_sync_start = {0x56, 0x00},
527 .h_sync_end = {0x82, 0x00},
528 .v_sync_line_bef_2 = {0x09, 0x00},
529 .v_sync_line_bef_1 = {0x04, 0x00},
530 .v_sync_line_aft_2 = {0xff, 0xff},
531 .v_sync_line_aft_1 = {0xff, 0xff},
532 .v_sync_line_aft_pxl_2 = {0xff, 0xff},
533 .v_sync_line_aft_pxl_1 = {0xff, 0xff},
534 .v_blank_f2 = {0xff, 0xff},
535 .v_blank_f3 = {0xff, 0xff},
536 .v_blank_f4 = {0xff, 0xff},
537 .v_blank_f5 = {0xff, 0xff},
538 .v_sync_line_aft_3 = {0xff, 0xff},
539 .v_sync_line_aft_4 = {0xff, 0xff},
540 .v_sync_line_aft_5 = {0xff, 0xff},
541 .v_sync_line_aft_6 = {0xff, 0xff},
542 .v_sync_line_aft_pxl_3 = {0xff, 0xff},
543 .v_sync_line_aft_pxl_4 = {0xff, 0xff},
544 .v_sync_line_aft_pxl_5 = {0xff, 0xff},
545 .v_sync_line_aft_pxl_6 = {0xff, 0xff},
546 .vact_space_1 = {0xff, 0xff},
547 .vact_space_2 = {0xff, 0xff},
548 .vact_space_3 = {0xff, 0xff},
549 .vact_space_4 = {0xff, 0xff},
550 .vact_space_5 = {0xff, 0xff},
551 .vact_space_6 = {0xff, 0xff},
552 /* other don't care */
556 0x98, 0x08, /* h_fsz */
557 0x18, 0x01, 0x80, 0x07, /* hact */
558 0x65, 0x04, /* v_fsz */
559 0x01, 0x00, 0x33, 0x02, /* vsync */
560 0x2d, 0x00, 0x38, 0x04, /* vact */
561 0x33, 0x02, /* field_chg */
562 0x48, 0x02, /* vact_st2 */
563 0x00, 0x00, /* vact_st3 */
564 0x00, 0x00, /* vact_st4 */
565 0x01, 0x00, 0x01, 0x00, /* vsync top/bot */
566 0x01, 0x00, 0x33, 0x02, /* field top/bot */
572 .code = V4L2_MBUS_FMT_FIXED, /* means RGB888 */
573 .field = V4L2_FIELD_NONE,
577 static const struct hdmi_preset_conf hdmi_conf_1080p24 = {
579 .h_blank = {0x3e, 0x03},
580 .v2_blank = {0x65, 0x04},
581 .v1_blank = {0x2d, 0x00},
582 .v_line = {0x65, 0x04},
583 .h_line = {0xbe, 0x0a},
586 .int_pro_mode = {0x00},
587 .v_blank_f0 = {0xff, 0xff},
588 .v_blank_f1 = {0xff, 0xff},
589 .h_sync_start = {0x7c, 0x02},
590 .h_sync_end = {0xa8, 0x02},
591 .v_sync_line_bef_2 = {0x09, 0x00},
592 .v_sync_line_bef_1 = {0x04, 0x00},
593 .v_sync_line_aft_2 = {0xff, 0xff},
594 .v_sync_line_aft_1 = {0xff, 0xff},
595 .v_sync_line_aft_pxl_2 = {0xff, 0xff},
596 .v_sync_line_aft_pxl_1 = {0xff, 0xff},
597 .v_blank_f2 = {0xff, 0xff},
598 .v_blank_f3 = {0xff, 0xff},
599 .v_blank_f4 = {0xff, 0xff},
600 .v_blank_f5 = {0xff, 0xff},
601 .v_sync_line_aft_3 = {0xff, 0xff},
602 .v_sync_line_aft_4 = {0xff, 0xff},
603 .v_sync_line_aft_5 = {0xff, 0xff},
604 .v_sync_line_aft_6 = {0xff, 0xff},
605 .v_sync_line_aft_pxl_3 = {0xff, 0xff},
606 .v_sync_line_aft_pxl_4 = {0xff, 0xff},
607 .v_sync_line_aft_pxl_5 = {0xff, 0xff},
608 .v_sync_line_aft_pxl_6 = {0xff, 0xff},
609 .vact_space_1 = {0xff, 0xff},
610 .vact_space_2 = {0xff, 0xff},
611 .vact_space_3 = {0xff, 0xff},
612 .vact_space_4 = {0xff, 0xff},
613 .vact_space_5 = {0xff, 0xff},
614 .vact_space_6 = {0xff, 0xff},
615 /* other don't care */
619 0xbe, 0x0a, /* h_fsz */
620 0x3e, 0x03, 0x80, 0x07, /* hact */
621 0x65, 0x04, /* v_fsz */
622 0x01, 0x00, 0x33, 0x02, /* vsync */
623 0x2d, 0x00, 0x38, 0x04, /* vact */
624 0x33, 0x02, /* field_chg */
625 0x48, 0x02, /* vact_st2 */
626 0x00, 0x00, /* vact_st3 */
627 0x00, 0x00, /* vact_st4 */
628 0x01, 0x00, 0x01, 0x00, /* vsync top/bot */
629 0x01, 0x00, 0x33, 0x02, /* field top/bot */
635 .code = V4L2_MBUS_FMT_FIXED, /* means RGB888 */
636 .field = V4L2_FIELD_NONE,
640 static const struct hdmi_preset_conf hdmi_conf_1080p25 = {
642 .h_blank = {0xd0, 0x02},
643 .v2_blank = {0x65, 0x04},
644 .v1_blank = {0x2d, 0x00},
645 .v_line = {0x65, 0x04},
646 .h_line = {0x50, 0x0a},
649 .int_pro_mode = {0x00},
650 .v_blank_f0 = {0xff, 0xff},
651 .v_blank_f1 = {0xff, 0xff},
652 .h_sync_start = {0x0e, 0x02},
653 .h_sync_end = {0x3a, 0x02},
654 .v_sync_line_bef_2 = {0x09, 0x00},
655 .v_sync_line_bef_1 = {0x04, 0x00},
656 .v_sync_line_aft_2 = {0xff, 0xff},
657 .v_sync_line_aft_1 = {0xff, 0xff},
658 .v_sync_line_aft_pxl_2 = {0xff, 0xff},
659 .v_sync_line_aft_pxl_1 = {0xff, 0xff},
660 .v_blank_f2 = {0xff, 0xff},
661 .v_blank_f3 = {0xff, 0xff},
662 .v_blank_f4 = {0xff, 0xff},
663 .v_blank_f5 = {0xff, 0xff},
664 .v_sync_line_aft_3 = {0xff, 0xff},
665 .v_sync_line_aft_4 = {0xff, 0xff},
666 .v_sync_line_aft_5 = {0xff, 0xff},
667 .v_sync_line_aft_6 = {0xff, 0xff},
668 .v_sync_line_aft_pxl_3 = {0xff, 0xff},
669 .v_sync_line_aft_pxl_4 = {0xff, 0xff},
670 .v_sync_line_aft_pxl_5 = {0xff, 0xff},
671 .v_sync_line_aft_pxl_6 = {0xff, 0xff},
672 .vact_space_1 = {0xff, 0xff},
673 .vact_space_2 = {0xff, 0xff},
674 .vact_space_3 = {0xff, 0xff},
675 .vact_space_4 = {0xff, 0xff},
676 .vact_space_5 = {0xff, 0xff},
677 .vact_space_6 = {0xff, 0xff},
678 /* other don't care */
682 0x50, 0x0a, /* h_fsz */
683 0xd0, 0x02, 0x80, 0x07, /* hact */
684 0x65, 0x04, /* v_fsz */
685 0x01, 0x00, 0x33, 0x02, /* vsync */
686 0x2d, 0x00, 0x38, 0x04, /* vact */
687 0x33, 0x02, /* field_chg */
688 0x48, 0x02, /* vact_st2 */
689 0x00, 0x00, /* vact_st3 */
690 0x00, 0x00, /* vact_st4 */
691 0x01, 0x00, 0x01, 0x00, /* vsync top/bot */
692 0x01, 0x00, 0x33, 0x02, /* field top/bot */
698 .code = V4L2_MBUS_FMT_FIXED, /* means RGB888 */
699 .field = V4L2_FIELD_NONE,
703 static const struct hdmi_preset_conf hdmi_conf_480p59_94 = {
705 .h_blank = {0x8a, 0x00},
706 .v2_blank = {0x0d, 0x02},
707 .v1_blank = {0x2d, 0x00},
708 .v_line = {0x0d, 0x02},
709 .h_line = {0x5a, 0x03},
712 .int_pro_mode = {0x00},
713 .v_blank_f0 = {0xff, 0xff},
714 .v_blank_f1 = {0xff, 0xff},
715 .h_sync_start = {0x0e, 0x00},
716 .h_sync_end = {0x4c, 0x00},
717 .v_sync_line_bef_2 = {0x0f, 0x00},
718 .v_sync_line_bef_1 = {0x09, 0x00},
719 .v_sync_line_aft_2 = {0xff, 0xff},
720 .v_sync_line_aft_1 = {0xff, 0xff},
721 .v_sync_line_aft_pxl_2 = {0xff, 0xff},
722 .v_sync_line_aft_pxl_1 = {0xff, 0xff},
723 .v_blank_f2 = {0xff, 0xff},
724 .v_blank_f3 = {0xff, 0xff},
725 .v_blank_f4 = {0xff, 0xff},
726 .v_blank_f5 = {0xff, 0xff},
727 .v_sync_line_aft_3 = {0xff, 0xff},
728 .v_sync_line_aft_4 = {0xff, 0xff},
729 .v_sync_line_aft_5 = {0xff, 0xff},
730 .v_sync_line_aft_6 = {0xff, 0xff},
731 .v_sync_line_aft_pxl_3 = {0xff, 0xff},
732 .v_sync_line_aft_pxl_4 = {0xff, 0xff},
733 .v_sync_line_aft_pxl_5 = {0xff, 0xff},
734 .v_sync_line_aft_pxl_6 = {0xff, 0xff},
735 .vact_space_1 = {0xff, 0xff},
736 .vact_space_2 = {0xff, 0xff},
737 .vact_space_3 = {0xff, 0xff},
738 .vact_space_4 = {0xff, 0xff},
739 .vact_space_5 = {0xff, 0xff},
740 .vact_space_6 = {0xff, 0xff},
741 /* other don't care */
745 0x5a, 0x03, /* h_fsz */
746 0x8a, 0x00, 0xd0, 0x02, /* hact */
747 0x0d, 0x02, /* v_fsz */
748 0x01, 0x00, 0x33, 0x02, /* vsync */
749 0x2d, 0x00, 0xe0, 0x01, /* vact */
750 0x33, 0x02, /* field_chg */
751 0x48, 0x02, /* vact_st2 */
752 0x00, 0x00, /* vact_st3 */
753 0x00, 0x00, /* vact_st4 */
754 0x01, 0x00, 0x01, 0x00, /* vsync top/bot */
755 0x01, 0x00, 0x33, 0x02, /* field top/bot */
761 .code = V4L2_MBUS_FMT_FIXED, /* means RGB888 */
762 .field = V4L2_FIELD_NONE,
766 static const struct hdmi_preset_conf hdmi_conf_720p59_94 = {
768 .h_blank = {0x72, 0x01},
769 .v2_blank = {0xee, 0x02},
770 .v1_blank = {0x1e, 0x00},
771 .v_line = {0xee, 0x02},
772 .h_line = {0x72, 0x06},
775 .int_pro_mode = {0x00},
776 .v_blank_f0 = {0xff, 0xff},
777 .v_blank_f1 = {0xff, 0xff},
778 .h_sync_start = {0x6c, 0x00},
779 .h_sync_end = {0x94, 0x00},
780 .v_sync_line_bef_2 = {0x0a, 0x00},
781 .v_sync_line_bef_1 = {0x05, 0x00},
782 .v_sync_line_aft_2 = {0xff, 0xff},
783 .v_sync_line_aft_1 = {0xff, 0xff},
784 .v_sync_line_aft_pxl_2 = {0xff, 0xff},
785 .v_sync_line_aft_pxl_1 = {0xff, 0xff},
786 .v_blank_f2 = {0xff, 0xff},
787 .v_blank_f3 = {0xff, 0xff},
788 .v_blank_f4 = {0xff, 0xff},
789 .v_blank_f5 = {0xff, 0xff},
790 .v_sync_line_aft_3 = {0xff, 0xff},
791 .v_sync_line_aft_4 = {0xff, 0xff},
792 .v_sync_line_aft_5 = {0xff, 0xff},
793 .v_sync_line_aft_6 = {0xff, 0xff},
794 .v_sync_line_aft_pxl_3 = {0xff, 0xff},
795 .v_sync_line_aft_pxl_4 = {0xff, 0xff},
796 .v_sync_line_aft_pxl_5 = {0xff, 0xff},
797 .v_sync_line_aft_pxl_6 = {0xff, 0xff},
798 .vact_space_1 = {0xff, 0xff},
799 .vact_space_2 = {0xff, 0xff},
800 .vact_space_3 = {0xff, 0xff},
801 .vact_space_4 = {0xff, 0xff},
802 .vact_space_5 = {0xff, 0xff},
803 .vact_space_6 = {0xff, 0xff},
804 /* other don't care */
808 0x72, 0x06, /* h_fsz */
809 0x72, 0x01, 0x00, 0x05, /* hact */
810 0xee, 0x02, /* v_fsz */
811 0x01, 0x00, 0x33, 0x02, /* vsync */
812 0x1e, 0x00, 0xd0, 0x02, /* vact */
813 0x33, 0x02, /* field_chg */
814 0x48, 0x02, /* vact_st2 */
815 0x00, 0x00, /* vact_st3 */
816 0x00, 0x00, /* vact_st4 */
817 0x01, 0x00, 0x01, 0x00, /* vsync top/bot */
818 0x01, 0x00, 0x33, 0x02, /* field top/bot */
824 .code = V4L2_MBUS_FMT_FIXED, /* means RGB888 */
825 .field = V4L2_FIELD_NONE,
829 static const struct hdmi_preset_conf hdmi_conf_1080i59_94 = {
831 .h_blank = {0x18, 0x01},
832 .v2_blank = {0x32, 0x02},
833 .v1_blank = {0x16, 0x00},
834 .v_line = {0x65, 0x04},
835 .h_line = {0x98, 0x08},
838 .int_pro_mode = {0x01},
839 .v_blank_f0 = {0x49, 0x02},
840 .v_blank_f1 = {0x65, 0x04},
841 .h_sync_start = {0x56, 0x00},
842 .h_sync_end = {0x82, 0x00},
843 .v_sync_line_bef_2 = {0x07, 0x00},
844 .v_sync_line_bef_1 = {0x02, 0x00},
845 .v_sync_line_aft_2 = {0x39, 0x02},
846 .v_sync_line_aft_1 = {0x34, 0x02},
847 .v_sync_line_aft_pxl_2 = {0xa4, 0x04},
848 .v_sync_line_aft_pxl_1 = {0xa4, 0x04},
849 .v_blank_f2 = {0xff, 0xff},
850 .v_blank_f3 = {0xff, 0xff},
851 .v_blank_f4 = {0xff, 0xff},
852 .v_blank_f5 = {0xff, 0xff},
853 .v_sync_line_aft_3 = {0xff, 0xff},
854 .v_sync_line_aft_4 = {0xff, 0xff},
855 .v_sync_line_aft_5 = {0xff, 0xff},
856 .v_sync_line_aft_6 = {0xff, 0xff},
857 .v_sync_line_aft_pxl_3 = {0xff, 0xff},
858 .v_sync_line_aft_pxl_4 = {0xff, 0xff},
859 .v_sync_line_aft_pxl_5 = {0xff, 0xff},
860 .v_sync_line_aft_pxl_6 = {0xff, 0xff},
861 .vact_space_1 = {0xff, 0xff},
862 .vact_space_2 = {0xff, 0xff},
863 .vact_space_3 = {0xff, 0xff},
864 .vact_space_4 = {0xff, 0xff},
865 .vact_space_5 = {0xff, 0xff},
866 .vact_space_6 = {0xff, 0xff},
867 /* other don't care */
871 0x98, 0x08, /* h_fsz */
872 0x18, 0x01, 0x80, 0x07, /* hact */
873 0x65, 0x04, /* v_fsz */
874 0x01, 0x00, 0x33, 0x02, /* vsync */
875 0x16, 0x00, 0x1c, 0x02, /* vact */
876 0x33, 0x02, /* field_chg */
877 0x49, 0x02, /* vact_st2 */
878 0x00, 0x00, /* vact_st3 */
879 0x00, 0x00, /* vact_st4 */
880 0x01, 0x00, 0x33, 0x02, /* vsync top/bot */
881 0x01, 0x00, 0x33, 0x02, /* field top/bot */
887 .code = V4L2_MBUS_FMT_FIXED, /* means RGB888 */
888 .field = V4L2_FIELD_NONE,
892 static const struct hdmi_preset_conf hdmi_conf_1080p59_94 = {
894 .h_blank = {0x18, 0x01},
895 .v2_blank = {0x65, 0x04},
896 .v1_blank = {0x2d, 0x00},
897 .v_line = {0x65, 0x04},
898 .h_line = {0x98, 0x08},
901 .int_pro_mode = {0x00},
902 .v_blank_f0 = {0xff, 0xff},
903 .v_blank_f1 = {0xff, 0xff},
904 .h_sync_start = {0x56, 0x00},
905 .h_sync_end = {0x82, 0x00},
906 .v_sync_line_bef_2 = {0x09, 0x00},
907 .v_sync_line_bef_1 = {0x04, 0x00},
908 .v_sync_line_aft_2 = {0xff, 0xff},
909 .v_sync_line_aft_1 = {0xff, 0xff},
910 .v_sync_line_aft_pxl_2 = {0xff, 0xff},
911 .v_sync_line_aft_pxl_1 = {0xff, 0xff},
912 .v_blank_f2 = {0xff, 0xff},
913 .v_blank_f3 = {0xff, 0xff},
914 .v_blank_f4 = {0xff, 0xff},
915 .v_blank_f5 = {0xff, 0xff},
916 .v_sync_line_aft_3 = {0xff, 0xff},
917 .v_sync_line_aft_4 = {0xff, 0xff},
918 .v_sync_line_aft_5 = {0xff, 0xff},
919 .v_sync_line_aft_6 = {0xff, 0xff},
920 .v_sync_line_aft_pxl_3 = {0xff, 0xff},
921 .v_sync_line_aft_pxl_4 = {0xff, 0xff},
922 .v_sync_line_aft_pxl_5 = {0xff, 0xff},
923 .v_sync_line_aft_pxl_6 = {0xff, 0xff},
924 .vact_space_1 = {0xff, 0xff},
925 .vact_space_2 = {0xff, 0xff},
926 .vact_space_3 = {0xff, 0xff},
927 .vact_space_4 = {0xff, 0xff},
928 .vact_space_5 = {0xff, 0xff},
929 .vact_space_6 = {0xff, 0xff},
930 /* other don't care */
934 0x98, 0x08, /* h_fsz */
935 0x18, 0x01, 0x80, 0x07, /* hact */
936 0x65, 0x04, /* v_fsz */
937 0x01, 0x00, 0x33, 0x02, /* vsync */
938 0x2d, 0x00, 0x38, 0x04, /* vact */
939 0x33, 0x02, /* field_chg */
940 0x48, 0x02, /* vact_st2 */
941 0x00, 0x00, /* vact_st3 */
942 0x00, 0x00, /* vact_st4 */
943 0x01, 0x00, 0x01, 0x00, /* vsync top/bot */
944 0x01, 0x00, 0x33, 0x02, /* field top/bot */
950 .code = V4L2_MBUS_FMT_FIXED, /* means RGB888 */
951 .field = V4L2_FIELD_NONE,
955 static const struct hdmi_preset_conf hdmi_conf_720p60_sb_half = {
957 .h_blank = {0x72, 0x01},
958 .v2_blank = {0xee, 0x02},
959 .v1_blank = {0x1e, 0x00},
960 .v_line = {0xee, 0x02},
961 .h_line = {0x72, 0x06},
964 .int_pro_mode = {0x00},
965 .v_blank_f0 = {0xff, 0xff},
966 .v_blank_f1 = {0xff, 0xff},
967 .h_sync_start = {0x6c, 0x00},
968 .h_sync_end = {0x94, 0x00},
969 .v_sync_line_bef_2 = {0x0a, 0x00},
970 .v_sync_line_bef_1 = {0x05, 0x00},
971 .v_sync_line_aft_2 = {0xff, 0xff},
972 .v_sync_line_aft_1 = {0xff, 0xff},
973 .v_sync_line_aft_pxl_2 = {0xff, 0xff},
974 .v_sync_line_aft_pxl_1 = {0xff, 0xff},
975 .v_blank_f2 = {0xff, 0xff},
976 .v_blank_f3 = {0xff, 0xff},
977 .v_blank_f4 = {0xff, 0xff},
978 .v_blank_f5 = {0xff, 0xff},
979 .v_sync_line_aft_3 = {0xff, 0xff},
980 .v_sync_line_aft_4 = {0xff, 0xff},
981 .v_sync_line_aft_5 = {0xff, 0xff},
982 .v_sync_line_aft_6 = {0xff, 0xff},
983 .v_sync_line_aft_pxl_3 = {0xff, 0xff},
984 .v_sync_line_aft_pxl_4 = {0xff, 0xff},
985 .v_sync_line_aft_pxl_5 = {0xff, 0xff},
986 .v_sync_line_aft_pxl_6 = {0xff, 0xff},
987 .vact_space_1 = {0xff, 0xff},
988 .vact_space_2 = {0xff, 0xff},
989 .vact_space_3 = {0xff, 0xff},
990 .vact_space_4 = {0xff, 0xff},
991 .vact_space_5 = {0xff, 0xff},
992 .vact_space_6 = {0xff, 0xff},
993 /* other don't care */
997 0x72, 0x06, /* h_fsz */
998 0x72, 0x01, 0x00, 0x05, /* hact */
999 0xee, 0x02, /* v_fsz */
1000 0x01, 0x00, 0x33, 0x02, /* vsync */
1001 0x1e, 0x00, 0xd0, 0x02, /* vact */
1002 0x33, 0x02, /* field_chg */
1003 0x0c, 0x03, /* vact_st2 */
1004 0x00, 0x00, /* vact_st3 */
1005 0x00, 0x00, /* vact_st4 */
1006 0x01, 0x00, 0x01, 0x00, /* vsync top/bot */
1007 0x01, 0x00, 0x33, 0x02, /* field top/bot */
1013 .code = V4L2_MBUS_FMT_FIXED, /* means RGB888 */
1014 .field = V4L2_FIELD_NONE,
1018 static const struct hdmi_preset_conf hdmi_conf_720p60_tb = {
1020 .h_blank = {0x72, 0x01},
1021 .v2_blank = {0xee, 0x02},
1022 .v1_blank = {0x1e, 0x00},
1023 .v_line = {0xee, 0x02},
1024 .h_line = {0x72, 0x06},
1025 .hsync_pol = {0x00},
1026 .vsync_pol = {0x00},
1027 .int_pro_mode = {0x00},
1028 .v_blank_f0 = {0xff, 0xff},
1029 .v_blank_f1 = {0xff, 0xff},
1030 .h_sync_start = {0x6c, 0x00},
1031 .h_sync_end = {0x94, 0x00},
1032 .v_sync_line_bef_2 = {0x0a, 0x00},
1033 .v_sync_line_bef_1 = {0x05, 0x00},
1034 .v_sync_line_aft_2 = {0xff, 0xff},
1035 .v_sync_line_aft_1 = {0xff, 0xff},
1036 .v_sync_line_aft_pxl_2 = {0xff, 0xff},
1037 .v_sync_line_aft_pxl_1 = {0xff, 0xff},
1038 .v_blank_f2 = {0xff, 0xff},
1039 .v_blank_f3 = {0xff, 0xff},
1040 .v_blank_f4 = {0xff, 0xff},
1041 .v_blank_f5 = {0xff, 0xff},
1042 .v_sync_line_aft_3 = {0xff, 0xff},
1043 .v_sync_line_aft_4 = {0xff, 0xff},
1044 .v_sync_line_aft_5 = {0xff, 0xff},
1045 .v_sync_line_aft_6 = {0xff, 0xff},
1046 .v_sync_line_aft_pxl_3 = {0xff, 0xff},
1047 .v_sync_line_aft_pxl_4 = {0xff, 0xff},
1048 .v_sync_line_aft_pxl_5 = {0xff, 0xff},
1049 .v_sync_line_aft_pxl_6 = {0xff, 0xff},
1050 .vact_space_1 = {0xff, 0xff},
1051 .vact_space_2 = {0xff, 0xff},
1052 .vact_space_3 = {0xff, 0xff},
1053 .vact_space_4 = {0xff, 0xff},
1054 .vact_space_5 = {0xff, 0xff},
1055 .vact_space_6 = {0xff, 0xff},
1056 /* other don't care */
1060 0x72, 0x06, /* h_fsz */
1061 0x72, 0x01, 0x00, 0x05, /* hact */
1062 0xee, 0x02, /* v_fsz */
1063 0x01, 0x00, 0x33, 0x02, /* vsync */
1064 0x1e, 0x00, 0xd0, 0x02, /* vact */
1065 0x33, 0x02, /* field_chg */
1066 0x0c, 0x03, /* vact_st2 */
1067 0x00, 0x00, /* vact_st3 */
1068 0x00, 0x00, /* vact_st4 */
1069 0x01, 0x00, 0x01, 0x00, /* vsync top/bot */
1070 0x01, 0x00, 0x33, 0x02, /* field top/bot */
1076 .code = V4L2_MBUS_FMT_FIXED, /* means RGB888 */
1077 .field = V4L2_FIELD_NONE,
1081 static const struct hdmi_preset_conf hdmi_conf_720p59_94_sb_half = {
1083 .h_blank = {0x72, 0x01},
1084 .v2_blank = {0xee, 0x02},
1085 .v1_blank = {0x1e, 0x00},
1086 .v_line = {0xee, 0x02},
1087 .h_line = {0x72, 0x06},
1088 .hsync_pol = {0x00},
1089 .vsync_pol = {0x00},
1090 .int_pro_mode = {0x00},
1091 .v_blank_f0 = {0xff, 0xff},
1092 .v_blank_f1 = {0xff, 0xff},
1093 .h_sync_start = {0x6c, 0x00},
1094 .h_sync_end = {0x94, 0x00},
1095 .v_sync_line_bef_2 = {0x0a, 0x00},
1096 .v_sync_line_bef_1 = {0x05, 0x00},
1097 .v_sync_line_aft_2 = {0xff, 0xff},
1098 .v_sync_line_aft_1 = {0xff, 0xff},
1099 .v_sync_line_aft_pxl_2 = {0xff, 0xff},
1100 .v_sync_line_aft_pxl_1 = {0xff, 0xff},
1101 .v_blank_f2 = {0xff, 0xff},
1102 .v_blank_f3 = {0xff, 0xff},
1103 .v_blank_f4 = {0xff, 0xff},
1104 .v_blank_f5 = {0xff, 0xff},
1105 .v_sync_line_aft_3 = {0xff, 0xff},
1106 .v_sync_line_aft_4 = {0xff, 0xff},
1107 .v_sync_line_aft_5 = {0xff, 0xff},
1108 .v_sync_line_aft_6 = {0xff, 0xff},
1109 .v_sync_line_aft_pxl_3 = {0xff, 0xff},
1110 .v_sync_line_aft_pxl_4 = {0xff, 0xff},
1111 .v_sync_line_aft_pxl_5 = {0xff, 0xff},
1112 .v_sync_line_aft_pxl_6 = {0xff, 0xff},
1113 .vact_space_1 = {0xff, 0xff},
1114 .vact_space_2 = {0xff, 0xff},
1115 .vact_space_3 = {0xff, 0xff},
1116 .vact_space_4 = {0xff, 0xff},
1117 .vact_space_5 = {0xff, 0xff},
1118 .vact_space_6 = {0xff, 0xff},
1119 /* other don't care */
1123 0x72, 0x06, /* h_fsz */
1124 0x72, 0x01, 0x00, 0x05, /* hact */
1125 0xee, 0x02, /* v_fsz */
1126 0x01, 0x00, 0x33, 0x02, /* vsync */
1127 0x1e, 0x00, 0xd0, 0x02, /* vact */
1128 0x00, 0x00, /* field_chg */
1129 0x0c, 0x03, /* vact_st2 */
1130 0x00, 0x00, /* vact_st3 */
1131 0x00, 0x00, /* vact_st4 */
1132 0x01, 0x00, 0x01, 0x00, /* vsync top/bot */
1133 0x01, 0x00, 0x33, 0x02, /* field top/bot */
1139 .code = V4L2_MBUS_FMT_FIXED, /* means RGB888 */
1140 .field = V4L2_FIELD_NONE,
1144 static const struct hdmi_preset_conf hdmi_conf_720p59_94_tb = {
1146 .h_blank = {0x72, 0x01},
1147 .v2_blank = {0xee, 0x02},
1148 .v1_blank = {0x1e, 0x00},
1149 .v_line = {0xee, 0x02},
1150 .h_line = {0x72, 0x06},
1151 .hsync_pol = {0x00},
1152 .vsync_pol = {0x00},
1153 .int_pro_mode = {0x00},
1154 .v_blank_f0 = {0xff, 0xff},
1155 .v_blank_f1 = {0xff, 0xff},
1156 .h_sync_start = {0x6c, 0x00},
1157 .h_sync_end = {0x94, 0x00},
1158 .v_sync_line_bef_2 = {0x0a, 0x00},
1159 .v_sync_line_bef_1 = {0x05, 0x00},
1160 .v_sync_line_aft_2 = {0xff, 0xff},
1161 .v_sync_line_aft_1 = {0xff, 0xff},
1162 .v_sync_line_aft_pxl_2 = {0xff, 0xff},
1163 .v_sync_line_aft_pxl_1 = {0xff, 0xff},
1164 .v_blank_f2 = {0xff, 0xff},
1165 .v_blank_f3 = {0xff, 0xff},
1166 .v_blank_f4 = {0xff, 0xff},
1167 .v_blank_f5 = {0xff, 0xff},
1168 .v_sync_line_aft_3 = {0xff, 0xff},
1169 .v_sync_line_aft_4 = {0xff, 0xff},
1170 .v_sync_line_aft_5 = {0xff, 0xff},
1171 .v_sync_line_aft_6 = {0xff, 0xff},
1172 .v_sync_line_aft_pxl_3 = {0xff, 0xff},
1173 .v_sync_line_aft_pxl_4 = {0xff, 0xff},
1174 .v_sync_line_aft_pxl_5 = {0xff, 0xff},
1175 .v_sync_line_aft_pxl_6 = {0xff, 0xff},
1176 .vact_space_1 = {0xff, 0xff},
1177 .vact_space_2 = {0xff, 0xff},
1178 .vact_space_3 = {0xff, 0xff},
1179 .vact_space_4 = {0xff, 0xff},
1180 .vact_space_5 = {0xff, 0xff},
1181 .vact_space_6 = {0xff, 0xff},
1182 /* other don't care */
1186 0x72, 0x06, /* h_fsz */
1187 0x72, 0x01, 0x00, 0x05, /* hact */
1188 0xee, 0x02, /* v_fsz */
1189 0x01, 0x00, 0x33, 0x02, /* vsync */
1190 0x1e, 0x00, 0xd0, 0x02, /* vact */
1191 0x00, 0x00, /* field_chg */
1192 0x0c, 0x03, /* vact_st2 */
1193 0x00, 0x00, /* vact_st3 */
1194 0x00, 0x00, /* vact_st4 */
1195 0x01, 0x00, 0x01, 0x00, /* vsync top/bot */
1196 0x01, 0x00, 0x33, 0x02, /* field top/bot */
1202 .code = V4L2_MBUS_FMT_FIXED, /* means RGB888 */
1203 .field = V4L2_FIELD_NONE,
1207 static const struct hdmi_preset_conf hdmi_conf_720p50_sb_half = {
1209 .h_blank = {0xbc, 0x02},
1210 .v2_blank = {0xdc, 0x05},
1211 .v1_blank = {0x1e, 0x00},
1212 .v_line = {0xdc, 0x05},
1213 .h_line = {0xbc, 0x07},
1214 .hsync_pol = {0x00},
1215 .vsync_pol = {0x00},
1216 .int_pro_mode = {0x00},
1217 .v_blank_f0 = {0xff, 0xff},
1218 .v_blank_f1 = {0xff, 0xff},
1219 .h_sync_start = {0xb6, 0x01},
1220 .h_sync_end = {0xde, 0x01},
1221 .v_sync_line_bef_2 = {0x0a, 0x00},
1222 .v_sync_line_bef_1 = {0x05, 0x00},
1223 .v_sync_line_aft_2 = {0xff, 0xff},
1224 .v_sync_line_aft_1 = {0xff, 0xff},
1225 .v_sync_line_aft_pxl_2 = {0xff, 0xff},
1226 .v_sync_line_aft_pxl_1 = {0xff, 0xff},
1227 .v_blank_f2 = {0xff, 0xff},
1228 .v_blank_f3 = {0xff, 0xff},
1229 .v_blank_f4 = {0xff, 0xff},
1230 .v_blank_f5 = {0xff, 0xff},
1231 .v_sync_line_aft_3 = {0xff, 0xff},
1232 .v_sync_line_aft_4 = {0xff, 0xff},
1233 .v_sync_line_aft_5 = {0xff, 0xff},
1234 .v_sync_line_aft_6 = {0xff, 0xff},
1235 .v_sync_line_aft_pxl_3 = {0xff, 0xff},
1236 .v_sync_line_aft_pxl_4 = {0xff, 0xff},
1237 .v_sync_line_aft_pxl_5 = {0xff, 0xff},
1238 .v_sync_line_aft_pxl_6 = {0xff, 0xff},
1239 .vact_space_1 = {0xee, 0x02},
1240 .vact_space_2 = {0x0c, 0x03},
1241 .vact_space_3 = {0xff, 0xff},
1242 .vact_space_4 = {0xff, 0xff},
1243 .vact_space_5 = {0xff, 0xff},
1244 .vact_space_6 = {0xff, 0xff},
1245 /* other don't care */
1249 0xbc, 0x07, /* h_fsz */
1250 0xbc, 0x02, 0x00, 0x05, /* hact */
1251 0xee, 0x02, /* v_fsz */
1252 0x01, 0x00, 0x33, 0x02, /* vsync */
1253 0x1e, 0x00, 0xd0, 0x02, /* vact */
1254 0x00, 0x00, /* field_chg */
1255 0x0c, 0x03, /* vact_st2 */
1256 0x00, 0x00, /* vact_st3 */
1257 0x00, 0x00, /* vact_st4 */
1258 0x01, 0x00, 0x01, 0x00, /* vsync top/bot */
1259 0x01, 0x00, 0x33, 0x02, /* field top/bot */
1265 .code = V4L2_MBUS_FMT_FIXED, /* means RGB888 */
1266 .field = V4L2_FIELD_NONE,
1270 static const struct hdmi_preset_conf hdmi_conf_720p50_tb = {
1272 .h_blank = {0xbc, 0x02},
1273 .v2_blank = {0xdc, 0x05},
1274 .v1_blank = {0x1e, 0x00},
1275 .v_line = {0xdc, 0x05},
1276 .h_line = {0xbc, 0x07},
1277 .hsync_pol = {0x00},
1278 .vsync_pol = {0x00},
1279 .int_pro_mode = {0x00},
1280 .v_blank_f0 = {0xff, 0xff},
1281 .v_blank_f1 = {0xff, 0xff},
1282 .h_sync_start = {0xb6, 0x01},
1283 .h_sync_end = {0xde, 0x01},
1284 .v_sync_line_bef_2 = {0x0a, 0x00},
1285 .v_sync_line_bef_1 = {0x05, 0x00},
1286 .v_sync_line_aft_2 = {0xff, 0xff},
1287 .v_sync_line_aft_1 = {0xff, 0xff},
1288 .v_sync_line_aft_pxl_2 = {0xff, 0xff},
1289 .v_sync_line_aft_pxl_1 = {0xff, 0xff},
1290 .v_blank_f2 = {0xff, 0xff},
1291 .v_blank_f3 = {0xff, 0xff},
1292 .v_blank_f4 = {0xff, 0xff},
1293 .v_blank_f5 = {0xff, 0xff},
1294 .v_sync_line_aft_3 = {0xff, 0xff},
1295 .v_sync_line_aft_4 = {0xff, 0xff},
1296 .v_sync_line_aft_5 = {0xff, 0xff},
1297 .v_sync_line_aft_6 = {0xff, 0xff},
1298 .v_sync_line_aft_pxl_3 = {0xff, 0xff},
1299 .v_sync_line_aft_pxl_4 = {0xff, 0xff},
1300 .v_sync_line_aft_pxl_5 = {0xff, 0xff},
1301 .v_sync_line_aft_pxl_6 = {0xff, 0xff},
1302 .vact_space_1 = {0xee, 0x02},
1303 .vact_space_2 = {0x0c, 0x03},
1304 .vact_space_3 = {0xff, 0xff},
1305 .vact_space_4 = {0xff, 0xff},
1306 .vact_space_5 = {0xff, 0xff},
1307 .vact_space_6 = {0xff, 0xff},
1308 /* other don't care */
1312 0xbc, 0x07, /* h_fsz */
1313 0xbc, 0x02, 0x00, 0x05, /* hact */
1314 0xee, 0x02, /* v_fsz */
1315 0x01, 0x00, 0x33, 0x02, /* vsync */
1316 0x1e, 0x00, 0xd0, 0x02, /* vact */
1317 0x00, 0x00, /* field_chg */
1318 0x0c, 0x03, /* vact_st2 */
1319 0x00, 0x00, /* vact_st3 */
1320 0x00, 0x00, /* vact_st4 */
1321 0x01, 0x00, 0x01, 0x00, /* vsync top/bot */
1322 0x01, 0x00, 0x33, 0x02, /* field top/bot */
1328 .code = V4L2_MBUS_FMT_FIXED, /* means RGB888 */
1329 .field = V4L2_FIELD_NONE,
1333 static const struct hdmi_preset_conf hdmi_conf_1080p24_fp = {
1335 .h_blank = {0x3e, 0x03},
1336 .v2_blank = {0xca, 0x08},
1337 .v1_blank = {0x2d, 0x00},
1338 .v_line = {0xca, 0x08},
1339 .h_line = {0xbe, 0x0a},
1340 .hsync_pol = {0x00},
1341 .vsync_pol = {0x00},
1342 .int_pro_mode = {0x00},
1343 .v_blank_f0 = {0xff, 0xff},
1344 .v_blank_f1 = {0xff, 0xff},
1345 .h_sync_start = {0x7c, 0x02},
1346 .h_sync_end = {0xa8, 0x02},
1347 .v_sync_line_bef_2 = {0x09, 0x00},
1348 .v_sync_line_bef_1 = {0x04, 0x00},
1349 .v_sync_line_aft_2 = {0xff, 0xff},
1350 .v_sync_line_aft_1 = {0xff, 0xff},
1351 .v_sync_line_aft_pxl_2 = {0xff, 0xff},
1352 .v_sync_line_aft_pxl_1 = {0xff, 0xff},
1353 .v_blank_f2 = {0xff, 0xff},
1354 .v_blank_f3 = {0xff, 0xff},
1355 .v_blank_f4 = {0xff, 0xff},
1356 .v_blank_f5 = {0xff, 0xff},
1357 .v_sync_line_aft_3 = {0xff, 0xff},
1358 .v_sync_line_aft_4 = {0xff, 0xff},
1359 .v_sync_line_aft_5 = {0xff, 0xff},
1360 .v_sync_line_aft_6 = {0xff, 0xff},
1361 .v_sync_line_aft_pxl_3 = {0xff, 0xff},
1362 .v_sync_line_aft_pxl_4 = {0xff, 0xff},
1363 .v_sync_line_aft_pxl_5 = {0xff, 0xff},
1364 .v_sync_line_aft_pxl_6 = {0xff, 0xff},
1365 .vact_space_1 = {0x65, 0x04},
1366 .vact_space_2 = {0x92, 0x04},
1367 .vact_space_3 = {0xff, 0xff},
1368 .vact_space_4 = {0xff, 0xff},
1369 .vact_space_5 = {0xff, 0xff},
1370 .vact_space_6 = {0xff, 0xff},
1371 /* other don't care */
1375 0xbe, 0x0a, /* h_fsz */
1376 0x3e, 0x03, 0x80, 0x07, /* hact */
1377 0xca, 0x08, /* v_fsz */
1378 0x01, 0x00, 0x33, 0x02, /* vsync */
1379 0x2d, 0x00, 0x38, 0x04, /* vact */
1380 0x33, 0x02, /* field_chg */
1381 0x92, 0x04, /* vact_st2 */
1382 0x00, 0x00, /* vact_st3 */
1383 0x00, 0x00, /* vact_st4 */
1384 0x01, 0x00, 0x01, 0x00, /* vsync top/bot */
1385 0x01, 0x00, 0x33, 0x02, /* field top/bot */
1391 .code = V4L2_MBUS_FMT_FIXED, /* means RGB888 */
1392 .field = V4L2_FIELD_NONE,
1396 static const struct hdmi_preset_conf hdmi_conf_1080p24_sb_half = {
1398 .h_blank = {0x3e, 0x03},
1399 .v2_blank = {0x65, 0x04},
1400 .v1_blank = {0x2d, 0x00},
1401 .v_line = {0x65, 0x04},
1402 .h_line = {0xbe, 0x0a},
1403 .hsync_pol = {0x00},
1404 .vsync_pol = {0x00},
1405 .int_pro_mode = {0x00},
1406 .v_blank_f0 = {0xff, 0xff},
1407 .v_blank_f1 = {0xff, 0xff},
1408 .h_sync_start = {0x7c, 0x02},
1409 .h_sync_end = {0xa8, 0x02},
1410 .v_sync_line_bef_2 = {0x09, 0x00},
1411 .v_sync_line_bef_1 = {0x04, 0x00},
1412 .v_sync_line_aft_2 = {0xff, 0xff},
1413 .v_sync_line_aft_1 = {0xff, 0xff},
1414 .v_sync_line_aft_pxl_2 = {0xff, 0xff},
1415 .v_sync_line_aft_pxl_1 = {0xff, 0xff},
1416 .v_blank_f2 = {0xff, 0xff},
1417 .v_blank_f3 = {0xff, 0xff},
1418 .v_blank_f4 = {0xff, 0xff},
1419 .v_blank_f5 = {0xff, 0xff},
1420 .v_sync_line_aft_3 = {0xff, 0xff},
1421 .v_sync_line_aft_4 = {0xff, 0xff},
1422 .v_sync_line_aft_5 = {0xff, 0xff},
1423 .v_sync_line_aft_6 = {0xff, 0xff},
1424 .v_sync_line_aft_pxl_3 = {0xff, 0xff},
1425 .v_sync_line_aft_pxl_4 = {0xff, 0xff},
1426 .v_sync_line_aft_pxl_5 = {0xff, 0xff},
1427 .v_sync_line_aft_pxl_6 = {0xff, 0xff},
1428 .vact_space_1 = {0xff, 0xff},
1429 .vact_space_2 = {0xff, 0xff},
1430 .vact_space_3 = {0xff, 0xff},
1431 .vact_space_4 = {0xff, 0xff},
1432 .vact_space_5 = {0xff, 0xff},
1433 .vact_space_6 = {0xff, 0xff},
1434 /* other don't care */
1438 0xbe, 0x0a, /* h_fsz */
1439 0x3e, 0x03, 0x80, 0x07, /* hact */
1440 0x65, 0x04, /* v_fsz */
1441 0x01, 0x00, 0x33, 0x02, /* vsync */
1442 0x2d, 0x00, 0x38, 0x04, /* vact */
1443 0x33, 0x02, /* field_chg */
1444 0x48, 0x02, /* vact_st2 */
1445 0x00, 0x00, /* vact_st3 */
1446 0x00, 0x00, /* vact_st4 */
1447 0x01, 0x00, 0x01, 0x00, /* vsync top/bot */
1448 0x01, 0x00, 0x33, 0x02, /* field top/bot */
1454 .code = V4L2_MBUS_FMT_FIXED, /* means RGB888 */
1455 .field = V4L2_FIELD_NONE,
1459 static const struct hdmi_preset_conf hdmi_conf_1080p24_tb = {
1461 .h_blank = {0x3e, 0x03},
1462 .v2_blank = {0x65, 0x04},
1463 .v1_blank = {0x2d, 0x00},
1464 .v_line = {0x65, 0x04},
1465 .h_line = {0xbe, 0x0a},
1466 .hsync_pol = {0x00},
1467 .vsync_pol = {0x00},
1468 .int_pro_mode = {0x00},
1469 .v_blank_f0 = {0xff, 0xff},
1470 .v_blank_f1 = {0xff, 0xff},
1471 .h_sync_start = {0x7c, 0x02},
1472 .h_sync_end = {0xa8, 0x02},
1473 .v_sync_line_bef_2 = {0x09, 0x00},
1474 .v_sync_line_bef_1 = {0x04, 0x00},
1475 .v_sync_line_aft_2 = {0xff, 0xff},
1476 .v_sync_line_aft_1 = {0xff, 0xff},
1477 .v_sync_line_aft_pxl_2 = {0xff, 0xff},
1478 .v_sync_line_aft_pxl_1 = {0xff, 0xff},
1479 .v_blank_f2 = {0xff, 0xff},
1480 .v_blank_f3 = {0xff, 0xff},
1481 .v_blank_f4 = {0xff, 0xff},
1482 .v_blank_f5 = {0xff, 0xff},
1483 .v_sync_line_aft_3 = {0xff, 0xff},
1484 .v_sync_line_aft_4 = {0xff, 0xff},
1485 .v_sync_line_aft_5 = {0xff, 0xff},
1486 .v_sync_line_aft_6 = {0xff, 0xff},
1487 .v_sync_line_aft_pxl_3 = {0xff, 0xff},
1488 .v_sync_line_aft_pxl_4 = {0xff, 0xff},
1489 .v_sync_line_aft_pxl_5 = {0xff, 0xff},
1490 .v_sync_line_aft_pxl_6 = {0xff, 0xff},
1491 .vact_space_1 = {0xff, 0xff},
1492 .vact_space_2 = {0xff, 0xff},
1493 .vact_space_3 = {0xff, 0xff},
1494 .vact_space_4 = {0xff, 0xff},
1495 .vact_space_5 = {0xff, 0xff},
1496 .vact_space_6 = {0xff, 0xff},
1497 /* other don't care */
1501 0xbe, 0x0a, /* h_fsz */
1502 0x3e, 0x03, 0x80, 0x07, /* hact */
1503 0x65, 0x04, /* v_fsz */
1504 0x01, 0x00, 0x33, 0x02, /* vsync */
1505 0x2d, 0x00, 0x38, 0x04, /* vact */
1506 0x33, 0x02, /* field_chg */
1507 0x48, 0x02, /* vact_st2 */
1508 0x00, 0x00, /* vact_st3 */
1509 0x00, 0x00, /* vact_st4 */
1510 0x01, 0x00, 0x01, 0x00, /* vsync top/bot */
1511 0x01, 0x00, 0x33, 0x02, /* field top/bot */
1517 .code = V4L2_MBUS_FMT_FIXED, /* means RGB888 */
1518 .field = V4L2_FIELD_NONE,
1522 static const struct hdmi_preset_conf hdmi_conf_1080p23_98_fp = {
1524 .h_blank = {0x3e, 0x03},
1525 .v2_blank = {0xca, 0x08},
1526 .v1_blank = {0x2d, 0x00},
1527 .v_line = {0xca, 0x08},
1528 .h_line = {0xbe, 0x0a},
1529 .hsync_pol = {0x00},
1530 .vsync_pol = {0x00},
1531 .int_pro_mode = {0x00},
1532 .v_blank_f0 = {0xff, 0xff},
1533 .v_blank_f1 = {0xff, 0xff},
1534 .h_sync_start = {0x7c, 0x02},
1535 .h_sync_end = {0xa8, 0x02},
1536 .v_sync_line_bef_2 = {0x09, 0x00},
1537 .v_sync_line_bef_1 = {0x04, 0x00},
1538 .v_sync_line_aft_2 = {0xff, 0xff},
1539 .v_sync_line_aft_1 = {0xff, 0xff},
1540 .v_sync_line_aft_pxl_2 = {0xff, 0xff},
1541 .v_sync_line_aft_pxl_1 = {0xff, 0xff},
1542 .v_blank_f2 = {0xff, 0xff},
1543 .v_blank_f3 = {0xff, 0xff},
1544 .v_blank_f4 = {0xff, 0xff},
1545 .v_blank_f5 = {0xff, 0xff},
1546 .v_sync_line_aft_3 = {0xff, 0xff},
1547 .v_sync_line_aft_4 = {0xff, 0xff},
1548 .v_sync_line_aft_5 = {0xff, 0xff},
1549 .v_sync_line_aft_6 = {0xff, 0xff},
1550 .v_sync_line_aft_pxl_3 = {0xff, 0xff},
1551 .v_sync_line_aft_pxl_4 = {0xff, 0xff},
1552 .v_sync_line_aft_pxl_5 = {0xff, 0xff},
1553 .v_sync_line_aft_pxl_6 = {0xff, 0xff},
1554 .vact_space_1 = {0x65, 0x04},
1555 .vact_space_2 = {0x92, 0x04},
1556 .vact_space_3 = {0xff, 0xff},
1557 .vact_space_4 = {0xff, 0xff},
1558 .vact_space_5 = {0xff, 0xff},
1559 .vact_space_6 = {0xff, 0xff},
1560 /* other don't care */
1564 0xbe, 0x0a, /* h_fsz */
1565 0x3e, 0x03, 0x80, 0x07, /* hact */
1566 0xca, 0x08, /* v_fsz */
1567 0x01, 0x00, 0x33, 0x02, /* vsync */
1568 0x2d, 0x00, 0x38, 0x04, /* vact */
1569 0x33, 0x02, /* field_chg */
1570 0x92, 0x04, /* vact_st2 */
1571 0x00, 0x00, /* vact_st3 */
1572 0x00, 0x00, /* vact_st4 */
1573 0x01, 0x00, 0x01, 0x00, /* vsync top/bot */
1574 0x01, 0x00, 0x33, 0x02, /* field top/bot */
1580 .code = V4L2_MBUS_FMT_FIXED, /* means RGB888 */
1581 .field = V4L2_FIELD_NONE,
1585 static const struct hdmi_preset_conf hdmi_conf_1080p23_98_sb_half = {
1587 .h_blank = {0x3e, 0x03},
1588 .v2_blank = {0x65, 0x04},
1589 .v1_blank = {0x2d, 0x00},
1590 .v_line = {0x65, 0x04},
1591 .h_line = {0xbe, 0x0a},
1592 .hsync_pol = {0x00},
1593 .vsync_pol = {0x00},
1594 .int_pro_mode = {0x00},
1595 .v_blank_f0 = {0xff, 0xff},
1596 .v_blank_f1 = {0xff, 0xff},
1597 .h_sync_start = {0x7c, 0x02},
1598 .h_sync_end = {0xa8, 0x02},
1599 .v_sync_line_bef_2 = {0x09, 0x00},
1600 .v_sync_line_bef_1 = {0x04, 0x00},
1601 .v_sync_line_aft_2 = {0xff, 0xff},
1602 .v_sync_line_aft_1 = {0xff, 0xff},
1603 .v_sync_line_aft_pxl_2 = {0xff, 0xff},
1604 .v_sync_line_aft_pxl_1 = {0xff, 0xff},
1605 .v_blank_f2 = {0xff, 0xff},
1606 .v_blank_f3 = {0xff, 0xff},
1607 .v_blank_f4 = {0xff, 0xff},
1608 .v_blank_f5 = {0xff, 0xff},
1609 .v_sync_line_aft_3 = {0xff, 0xff},
1610 .v_sync_line_aft_4 = {0xff, 0xff},
1611 .v_sync_line_aft_5 = {0xff, 0xff},
1612 .v_sync_line_aft_6 = {0xff, 0xff},
1613 .v_sync_line_aft_pxl_3 = {0xff, 0xff},
1614 .v_sync_line_aft_pxl_4 = {0xff, 0xff},
1615 .v_sync_line_aft_pxl_5 = {0xff, 0xff},
1616 .v_sync_line_aft_pxl_6 = {0xff, 0xff},
1617 .vact_space_1 = {0xff, 0xff},
1618 .vact_space_2 = {0xff, 0xff},
1619 .vact_space_3 = {0xff, 0xff},
1620 .vact_space_4 = {0xff, 0xff},
1621 .vact_space_5 = {0xff, 0xff},
1622 .vact_space_6 = {0xff, 0xff},
1623 /* other don't care */
1627 0xbe, 0x0a, /* h_fsz */
1628 0x3e, 0x03, 0x80, 0x07, /* hact */
1629 0x65, 0x04, /* v_fsz */
1630 0x01, 0x00, 0x33, 0x02, /* vsync */
1631 0x2d, 0x00, 0x38, 0x04, /* vact */
1632 0x33, 0x02, /* field_chg */
1633 0x48, 0x02, /* vact_st2 */
1634 0x00, 0x00, /* vact_st3 */
1635 0x00, 0x00, /* vact_st4 */
1636 0x01, 0x00, 0x01, 0x00, /* vsync top/bot */
1637 0x01, 0x00, 0x33, 0x02, /* field top/bot */
1643 .code = V4L2_MBUS_FMT_FIXED, /* means RGB888 */
1644 .field = V4L2_FIELD_NONE,
1648 static const struct hdmi_preset_conf hdmi_conf_1080p23_98_tb = {
1650 .h_blank = {0x3e, 0x03},
1651 .v2_blank = {0x65, 0x04},
1652 .v1_blank = {0x2d, 0x00},
1653 .v_line = {0x65, 0x04},
1654 .h_line = {0xbe, 0x0a},
1655 .hsync_pol = {0x00},
1656 .vsync_pol = {0x00},
1657 .int_pro_mode = {0x00},
1658 .v_blank_f0 = {0xff, 0xff},
1659 .v_blank_f1 = {0xff, 0xff},
1660 .h_sync_start = {0x7c, 0x02},
1661 .h_sync_end = {0xa8, 0x02},
1662 .v_sync_line_bef_2 = {0x09, 0x00},
1663 .v_sync_line_bef_1 = {0x04, 0x00},
1664 .v_sync_line_aft_2 = {0xff, 0xff},
1665 .v_sync_line_aft_1 = {0xff, 0xff},
1666 .v_sync_line_aft_pxl_2 = {0xff, 0xff},
1667 .v_sync_line_aft_pxl_1 = {0xff, 0xff},
1668 .v_blank_f2 = {0xff, 0xff},
1669 .v_blank_f3 = {0xff, 0xff},
1670 .v_blank_f4 = {0xff, 0xff},
1671 .v_blank_f5 = {0xff, 0xff},
1672 .v_sync_line_aft_3 = {0xff, 0xff},
1673 .v_sync_line_aft_4 = {0xff, 0xff},
1674 .v_sync_line_aft_5 = {0xff, 0xff},
1675 .v_sync_line_aft_6 = {0xff, 0xff},
1676 .v_sync_line_aft_pxl_3 = {0xff, 0xff},
1677 .v_sync_line_aft_pxl_4 = {0xff, 0xff},
1678 .v_sync_line_aft_pxl_5 = {0xff, 0xff},
1679 .v_sync_line_aft_pxl_6 = {0xff, 0xff},
1680 .vact_space_1 = {0xff, 0xff},
1681 .vact_space_2 = {0xff, 0xff},
1682 .vact_space_3 = {0xff, 0xff},
1683 .vact_space_4 = {0xff, 0xff},
1684 .vact_space_5 = {0xff, 0xff},
1685 .vact_space_6 = {0xff, 0xff},
1686 /* other don't care */
1690 0xbe, 0x0a, /* h_fsz */
1691 0x3e, 0x03, 0x80, 0x07, /* hact */
1692 0x65, 0x04, /* v_fsz */
1693 0x01, 0x00, 0x33, 0x02, /* vsync */
1694 0x2d, 0x00, 0x38, 0x04, /* vact */
1695 0x33, 0x02, /* field_chg */
1696 0x48, 0x02, /* vact_st2 */
1697 0x00, 0x00, /* vact_st3 */
1698 0x00, 0x00, /* vact_st4 */
1699 0x01, 0x00, 0x01, 0x00, /* vsync top/bot */
1700 0x01, 0x00, 0x33, 0x02, /* field top/bot */
1706 .code = V4L2_MBUS_FMT_FIXED, /* means RGB888 */
1707 .field = V4L2_FIELD_NONE,
1711 static const struct hdmi_preset_conf hdmi_conf_1080i60_sb_half = {
1713 .h_blank = {0x18, 0x01},
1714 .v2_blank = {0x32, 0x02},
1715 .v1_blank = {0x16, 0x00},
1716 .v_line = {0x65, 0x04},
1717 .h_line = {0x98, 0x08},
1718 .hsync_pol = {0x00},
1719 .vsync_pol = {0x00},
1720 .int_pro_mode = {0x01},
1721 .v_blank_f0 = {0x49, 0x02},
1722 .v_blank_f1 = {0x65, 0x04},
1723 .h_sync_start = {0x56, 0x00},
1724 .h_sync_end = {0x82, 0x00},
1725 .v_sync_line_bef_2 = {0x07, 0x00},
1726 .v_sync_line_bef_1 = {0x02, 0x00},
1727 .v_sync_line_aft_2 = {0x39, 0x02},
1728 .v_sync_line_aft_1 = {0x34, 0x02},
1729 .v_sync_line_aft_pxl_2 = {0xa4, 0x04},
1730 .v_sync_line_aft_pxl_1 = {0xa4, 0x04},
1731 .v_blank_f2 = {0xff, 0xff},
1732 .v_blank_f3 = {0xff, 0xff},
1733 .v_blank_f4 = {0xff, 0xff},
1734 .v_blank_f5 = {0xff, 0xff},
1735 .v_sync_line_aft_3 = {0xff, 0xff},
1736 .v_sync_line_aft_4 = {0xff, 0xff},
1737 .v_sync_line_aft_5 = {0xff, 0xff},
1738 .v_sync_line_aft_6 = {0xff, 0xff},
1739 .v_sync_line_aft_pxl_3 = {0xff, 0xff},
1740 .v_sync_line_aft_pxl_4 = {0xff, 0xff},
1741 .v_sync_line_aft_pxl_5 = {0xff, 0xff},
1742 .v_sync_line_aft_pxl_6 = {0xff, 0xff},
1743 .vact_space_1 = {0xff, 0xff},
1744 .vact_space_2 = {0xff, 0xff},
1745 .vact_space_3 = {0xff, 0xff},
1746 .vact_space_4 = {0xff, 0xff},
1747 .vact_space_5 = {0xff, 0xff},
1748 .vact_space_6 = {0xff, 0xff},
1749 /* other don't care */
1753 0x98, 0x08, /* h_fsz */
1754 0x18, 0x01, 0x80, 0x07, /* hact */
1755 0x64, 0x04, /* v_fsz */
1756 0x01, 0x00, 0x33, 0x02, /* vsync */
1757 0x16, 0x00, 0x1c, 0x02, /* vact */
1758 0x65, 0x04, /* field_chg */
1759 0x49, 0x02, /* vact_st2 */
1760 0x7b, 0x04, /* vact_st3 */
1761 0xae, 0x06, /* vact_st4 */
1762 0x01, 0x00, 0x33, 0x02, /* vsync top/bot */
1763 0x01, 0x00, 0x33, 0x02, /* field top/bot */
1769 .code = V4L2_MBUS_FMT_FIXED, /* means RGB888 */
1770 .field = V4L2_FIELD_NONE,
1774 static const struct hdmi_preset_conf hdmi_conf_1080i59_94_sb_half = {
1776 .h_blank = {0x18, 0x01},
1777 .v2_blank = {0x32, 0x02},
1778 .v1_blank = {0x16, 0x00},
1779 .v_line = {0x65, 0x04},
1780 .h_line = {0x98, 0x08},
1781 .hsync_pol = {0x00},
1782 .vsync_pol = {0x00},
1783 .int_pro_mode = {0x01},
1784 .v_blank_f0 = {0x49, 0x02},
1785 .v_blank_f1 = {0x65, 0x04},
1786 .h_sync_start = {0x56, 0x00},
1787 .h_sync_end = {0x82, 0x00},
1788 .v_sync_line_bef_2 = {0x07, 0x00},
1789 .v_sync_line_bef_1 = {0x02, 0x00},
1790 .v_sync_line_aft_2 = {0x39, 0x02},
1791 .v_sync_line_aft_1 = {0x34, 0x02},
1792 .v_sync_line_aft_pxl_2 = {0xa4, 0x04},
1793 .v_sync_line_aft_pxl_1 = {0xa4, 0x04},
1794 .v_blank_f2 = {0xff, 0xff},
1795 .v_blank_f3 = {0xff, 0xff},
1796 .v_blank_f4 = {0xff, 0xff},
1797 .v_blank_f5 = {0xff, 0xff},
1798 .v_sync_line_aft_3 = {0xff, 0xff},
1799 .v_sync_line_aft_4 = {0xff, 0xff},
1800 .v_sync_line_aft_5 = {0xff, 0xff},
1801 .v_sync_line_aft_6 = {0xff, 0xff},
1802 .v_sync_line_aft_pxl_3 = {0xff, 0xff},
1803 .v_sync_line_aft_pxl_4 = {0xff, 0xff},
1804 .v_sync_line_aft_pxl_5 = {0xff, 0xff},
1805 .v_sync_line_aft_pxl_6 = {0xff, 0xff},
1806 .vact_space_1 = {0xff, 0xff},
1807 .vact_space_2 = {0xff, 0xff},
1808 .vact_space_3 = {0xff, 0xff},
1809 .vact_space_4 = {0xff, 0xff},
1810 .vact_space_5 = {0xff, 0xff},
1811 .vact_space_6 = {0xff, 0xff},
1812 /* other don't care */
1816 0x98, 0x08, /* h_fsz */
1817 0x18, 0x01, 0x80, 0x07, /* hact */
1818 0x64, 0x04, /* v_fsz */
1819 0x01, 0x00, 0x33, 0x02, /* vsync */
1820 0x16, 0x00, 0x1c, 0x02, /* vact */
1821 0x65, 0x04, /* field_chg */
1822 0x49, 0x02, /* vact_st2 */
1823 0x7b, 0x04, /* vact_st3 */
1824 0xae, 0x06, /* vact_st4 */
1825 0x01, 0x00, 0x33, 0x02, /* vsync top/bot */
1826 0x01, 0x00, 0x33, 0x02, /* field top/bot */
1832 .code = V4L2_MBUS_FMT_FIXED, /* means RGB888 */
1833 .field = V4L2_FIELD_NONE,
1837 static const struct hdmi_preset_conf hdmi_conf_1080i50_sb_half = {
1839 .h_blank = {0xd0, 0x02},
1840 .v2_blank = {0x32, 0x02},
1841 .v1_blank = {0x16, 0x00},
1842 .v_line = {0x65, 0x04},
1843 .h_line = {0x50, 0x0a},
1844 .hsync_pol = {0x00},
1845 .vsync_pol = {0x00},
1846 .int_pro_mode = {0x01},
1847 .v_blank_f0 = {0x49, 0x02},
1848 .v_blank_f1 = {0x65, 0x04},
1849 .h_sync_start = {0x0e, 0x02},
1850 .h_sync_end = {0x3a, 0x02},
1851 .v_sync_line_bef_2 = {0x07, 0x00},
1852 .v_sync_line_bef_1 = {0x02, 0x00},
1853 .v_sync_line_aft_2 = {0x39, 0x02},
1854 .v_sync_line_aft_1 = {0x34, 0x02},
1855 .v_sync_line_aft_pxl_2 = {0x38, 0x07},
1856 .v_sync_line_aft_pxl_1 = {0x38, 0x07},
1857 .v_blank_f2 = {0xff, 0xff},
1858 .v_blank_f3 = {0xff, 0xff},
1859 .v_blank_f4 = {0xff, 0xff},
1860 .v_blank_f5 = {0xff, 0xff},
1861 .v_sync_line_aft_3 = {0xff, 0xff},
1862 .v_sync_line_aft_4 = {0xff, 0xff},
1863 .v_sync_line_aft_5 = {0xff, 0xff},
1864 .v_sync_line_aft_6 = {0xff, 0xff},
1865 .v_sync_line_aft_pxl_3 = {0xff, 0xff},
1866 .v_sync_line_aft_pxl_4 = {0xff, 0xff},
1867 .v_sync_line_aft_pxl_5 = {0xff, 0xff},
1868 .v_sync_line_aft_pxl_6 = {0xff, 0xff},
1869 .vact_space_1 = {0xff, 0xff},
1870 .vact_space_2 = {0xff, 0xff},
1871 .vact_space_3 = {0xff, 0xff},
1872 .vact_space_4 = {0xff, 0xff},
1873 .vact_space_5 = {0xff, 0xff},
1874 .vact_space_6 = {0xff, 0xff},
1875 /* other don't care */
1879 0x50, 0x0a, /* h_fsz */
1880 0xd0, 0x02, 0x80, 0x07, /* hact */
1881 0x64, 0x04, /* v_fsz */
1882 0x01, 0x00, 0x33, 0x02, /* vsync */
1883 0x16, 0x00, 0x1c, 0x02, /* vact */
1884 0x65, 0x04, /* field_chg */
1885 0x49, 0x02, /* vact_st2 */
1886 0x7b, 0x04, /* vact_st3 */
1887 0xae, 0x06, /* vact_st4 */
1888 0x01, 0x00, 0x33, 0x02, /* vsync top/bot */
1889 0x01, 0x00, 0x33, 0x02, /* field top/bot */
1895 .code = V4L2_MBUS_FMT_FIXED, /* means RGB888 */
1896 .field = V4L2_FIELD_NONE,
1900 static const struct hdmi_preset_conf hdmi_conf_1080p60_sb_half = {
1902 .h_blank = {0x18, 0x01},
1903 .v2_blank = {0x65, 0x04},
1904 .v1_blank = {0x2d, 0x00},
1905 .v_line = {0x65, 0x04},
1906 .h_line = {0x98, 0x08},
1907 .hsync_pol = {0x00},
1908 .vsync_pol = {0x00},
1909 .int_pro_mode = {0x00},
1910 .v_blank_f0 = {0xff, 0xff},
1911 .v_blank_f1 = {0xff, 0xff},
1912 .h_sync_start = {0x56, 0x00},
1913 .h_sync_end = {0x82, 0x00},
1914 .v_sync_line_bef_2 = {0x09, 0x00},
1915 .v_sync_line_bef_1 = {0x04, 0x00},
1916 .v_sync_line_aft_2 = {0xff, 0xff},
1917 .v_sync_line_aft_1 = {0xff, 0xff},
1918 .v_sync_line_aft_pxl_2 = {0xff, 0xff},
1919 .v_sync_line_aft_pxl_1 = {0xff, 0xff},
1920 .v_blank_f2 = {0xff, 0xff},
1921 .v_blank_f3 = {0xff, 0xff},
1922 .v_blank_f4 = {0xff, 0xff},
1923 .v_blank_f5 = {0xff, 0xff},
1924 .v_sync_line_aft_3 = {0xff, 0xff},
1925 .v_sync_line_aft_4 = {0xff, 0xff},
1926 .v_sync_line_aft_5 = {0xff, 0xff},
1927 .v_sync_line_aft_6 = {0xff, 0xff},
1928 .v_sync_line_aft_pxl_3 = {0xff, 0xff},
1929 .v_sync_line_aft_pxl_4 = {0xff, 0xff},
1930 .v_sync_line_aft_pxl_5 = {0xff, 0xff},
1931 .v_sync_line_aft_pxl_6 = {0xff, 0xff},
1932 .vact_space_1 = {0xff, 0xff},
1933 .vact_space_2 = {0xff, 0xff},
1934 .vact_space_3 = {0xff, 0xff},
1935 .vact_space_4 = {0xff, 0xff},
1936 .vact_space_5 = {0xff, 0xff},
1937 .vact_space_6 = {0xff, 0xff},
1938 /* other don't care */
1942 0x98, 0x08, /* h_fsz */
1943 0x18, 0x01, 0x80, 0x07, /* hact */
1944 0x65, 0x04, /* v_fsz */
1945 0x01, 0x00, 0x33, 0x02, /* vsync */
1946 0x2d, 0x00, 0x38, 0x04, /* vact */
1947 0x33, 0x02, /* field_chg */
1948 0x48, 0x02, /* vact_st2 */
1949 0x00, 0x00, /* vact_st3 */
1950 0x00, 0x00, /* vact_st4 */
1951 0x01, 0x00, 0x01, 0x00, /* vsync top/bot */
1952 0x01, 0x00, 0x33, 0x02, /* field top/bot */
1958 .code = V4L2_MBUS_FMT_FIXED, /* means RGB888 */
1959 .field = V4L2_FIELD_NONE,
1963 static const struct hdmi_preset_conf hdmi_conf_1080p60_tb = {
1965 .h_blank = {0x18, 0x01},
1966 .v2_blank = {0x65, 0x04},
1967 .v1_blank = {0x2d, 0x00},
1968 .v_line = {0x65, 0x04},
1969 .h_line = {0x98, 0x08},
1970 .hsync_pol = {0x00},
1971 .vsync_pol = {0x00},
1972 .int_pro_mode = {0x00},
1973 .v_blank_f0 = {0xff, 0xff},
1974 .v_blank_f1 = {0xff, 0xff},
1975 .h_sync_start = {0x56, 0x00},
1976 .h_sync_end = {0x82, 0x00},
1977 .v_sync_line_bef_2 = {0x09, 0x00},
1978 .v_sync_line_bef_1 = {0x04, 0x00},
1979 .v_sync_line_aft_2 = {0xff, 0xff},
1980 .v_sync_line_aft_1 = {0xff, 0xff},
1981 .v_sync_line_aft_pxl_2 = {0xff, 0xff},
1982 .v_sync_line_aft_pxl_1 = {0xff, 0xff},
1983 .v_blank_f2 = {0xff, 0xff},
1984 .v_blank_f3 = {0xff, 0xff},
1985 .v_blank_f4 = {0xff, 0xff},
1986 .v_blank_f5 = {0xff, 0xff},
1987 .v_sync_line_aft_3 = {0xff, 0xff},
1988 .v_sync_line_aft_4 = {0xff, 0xff},
1989 .v_sync_line_aft_5 = {0xff, 0xff},
1990 .v_sync_line_aft_6 = {0xff, 0xff},
1991 .v_sync_line_aft_pxl_3 = {0xff, 0xff},
1992 .v_sync_line_aft_pxl_4 = {0xff, 0xff},
1993 .v_sync_line_aft_pxl_5 = {0xff, 0xff},
1994 .v_sync_line_aft_pxl_6 = {0xff, 0xff},
1995 .vact_space_1 = {0xff, 0xff},
1996 .vact_space_2 = {0xff, 0xff},
1997 .vact_space_3 = {0xff, 0xff},
1998 .vact_space_4 = {0xff, 0xff},
1999 .vact_space_5 = {0xff, 0xff},
2000 .vact_space_6 = {0xff, 0xff},
2001 /* other don't care */
2005 0x98, 0x08, /* h_fsz */
2006 0x18, 0x01, 0x80, 0x07, /* hact */
2007 0x65, 0x04, /* v_fsz */
2008 0x01, 0x00, 0x33, 0x02, /* vsync */
2009 0x2d, 0x00, 0x38, 0x04, /* vact */
2010 0x33, 0x02, /* field_chg */
2011 0x48, 0x02, /* vact_st2 */
2012 0x00, 0x00, /* vact_st3 */
2013 0x00, 0x00, /* vact_st4 */
2014 0x01, 0x00, 0x01, 0x00, /* vsync top/bot */
2015 0x01, 0x00, 0x33, 0x02, /* field top/bot */
2021 .code = V4L2_MBUS_FMT_FIXED, /* means RGB888 */
2022 .field = V4L2_FIELD_NONE,
2026 static const struct hdmi_preset_conf hdmi_conf_1080p30_sb_half = {
2028 .h_blank = {0x18, 0x01},
2029 .v2_blank = {0x65, 0x04},
2030 .v1_blank = {0x2d, 0x00},
2031 .v_line = {0x65, 0x04},
2032 .h_line = {0x98, 0x08},
2033 .hsync_pol = {0x00},
2034 .vsync_pol = {0x00},
2035 .int_pro_mode = {0x00},
2036 .v_blank_f0 = {0xff, 0xff},
2037 .v_blank_f1 = {0xff, 0xff},
2038 .h_sync_start = {0x56, 0x00},
2039 .h_sync_end = {0x82, 0x00},
2040 .v_sync_line_bef_2 = {0x09, 0x00},
2041 .v_sync_line_bef_1 = {0x04, 0x00},
2042 .v_sync_line_aft_2 = {0xff, 0xff},
2043 .v_sync_line_aft_1 = {0xff, 0xff},
2044 .v_sync_line_aft_pxl_2 = {0xff, 0xff},
2045 .v_sync_line_aft_pxl_1 = {0xff, 0xff},
2046 .v_blank_f2 = {0xff, 0xff},
2047 .v_blank_f3 = {0xff, 0xff},
2048 .v_blank_f4 = {0xff, 0xff},
2049 .v_blank_f5 = {0xff, 0xff},
2050 .v_sync_line_aft_3 = {0xff, 0xff},
2051 .v_sync_line_aft_4 = {0xff, 0xff},
2052 .v_sync_line_aft_5 = {0xff, 0xff},
2053 .v_sync_line_aft_6 = {0xff, 0xff},
2054 .v_sync_line_aft_pxl_3 = {0xff, 0xff},
2055 .v_sync_line_aft_pxl_4 = {0xff, 0xff},
2056 .v_sync_line_aft_pxl_5 = {0xff, 0xff},
2057 .v_sync_line_aft_pxl_6 = {0xff, 0xff},
2058 .vact_space_1 = {0xff, 0xff},
2059 .vact_space_2 = {0xff, 0xff},
2060 .vact_space_3 = {0xff, 0xff},
2061 .vact_space_4 = {0xff, 0xff},
2062 .vact_space_5 = {0xff, 0xff},
2063 .vact_space_6 = {0xff, 0xff},
2064 /* other don't care */
2068 0x98, 0x08, /* h_fsz */
2069 0x18, 0x01, 0x80, 0x07, /* hact */
2070 0x65, 0x04, /* v_fsz */
2071 0x01, 0x00, 0x33, 0x02, /* vsync */
2072 0x2d, 0x00, 0x38, 0x04, /* vact */
2073 0x33, 0x02, /* field_chg */
2074 0x48, 0x02, /* vact_st2 */
2075 0x00, 0x00, /* vact_st3 */
2076 0x00, 0x00, /* vact_st4 */
2077 0x01, 0x00, 0x01, 0x00, /* vsync top/bot */
2078 0x01, 0x00, 0x33, 0x02, /* field top/bot */
2084 .code = V4L2_MBUS_FMT_FIXED, /* means RGB888 */
2085 .field = V4L2_FIELD_NONE,
2089 static const struct hdmi_preset_conf hdmi_conf_1080p30_tb = {
2091 .h_blank = {0x18, 0x01},
2092 .v2_blank = {0x65, 0x04},
2093 .v1_blank = {0x2d, 0x00},
2094 .v_line = {0x65, 0x04},
2095 .h_line = {0x98, 0x08},
2096 .hsync_pol = {0x00},
2097 .vsync_pol = {0x00},
2098 .int_pro_mode = {0x00},
2099 .v_blank_f0 = {0xff, 0xff},
2100 .v_blank_f1 = {0xff, 0xff},
2101 .h_sync_start = {0x56, 0x00},
2102 .h_sync_end = {0x82, 0x00},
2103 .v_sync_line_bef_2 = {0x09, 0x00},
2104 .v_sync_line_bef_1 = {0x04, 0x00},
2105 .v_sync_line_aft_2 = {0xff, 0xff},
2106 .v_sync_line_aft_1 = {0xff, 0xff},
2107 .v_sync_line_aft_pxl_2 = {0xff, 0xff},
2108 .v_sync_line_aft_pxl_1 = {0xff, 0xff},
2109 .v_blank_f2 = {0xff, 0xff},
2110 .v_blank_f3 = {0xff, 0xff},
2111 .v_blank_f4 = {0xff, 0xff},
2112 .v_blank_f5 = {0xff, 0xff},
2113 .v_sync_line_aft_3 = {0xff, 0xff},
2114 .v_sync_line_aft_4 = {0xff, 0xff},
2115 .v_sync_line_aft_5 = {0xff, 0xff},
2116 .v_sync_line_aft_6 = {0xff, 0xff},
2117 .v_sync_line_aft_pxl_3 = {0xff, 0xff},
2118 .v_sync_line_aft_pxl_4 = {0xff, 0xff},
2119 .v_sync_line_aft_pxl_5 = {0xff, 0xff},
2120 .v_sync_line_aft_pxl_6 = {0xff, 0xff},
2121 .vact_space_1 = {0xff, 0xff},
2122 .vact_space_2 = {0xff, 0xff},
2123 .vact_space_3 = {0xff, 0xff},
2124 .vact_space_4 = {0xff, 0xff},
2125 .vact_space_5 = {0xff, 0xff},
2126 .vact_space_6 = {0xff, 0xff},
2127 /* other don't care */
2131 0x98, 0x08, /* h_fsz */
2132 0x18, 0x01, 0x80, 0x07, /* hact */
2133 0x65, 0x04, /* v_fsz */
2134 0x01, 0x00, 0x33, 0x02, /* vsync */
2135 0x2d, 0x00, 0x38, 0x04, /* vact */
2136 0x33, 0x02, /* field_chg */
2137 0x48, 0x02, /* vact_st2 */
2138 0x00, 0x00, /* vact_st3 */
2139 0x00, 0x00, /* vact_st4 */
2140 0x01, 0x00, 0x01, 0x00, /* vsync top/bot */
2141 0x01, 0x00, 0x33, 0x02, /* field top/bot */
2147 .code = V4L2_MBUS_FMT_FIXED, /* means RGB888 */
2148 .field = V4L2_FIELD_NONE,
2152 static const struct hdmi_3d_info info_2d = {
2153 .is_3d = HDMI_VIDEO_FORMAT_2D,
2156 static const struct hdmi_3d_info info_3d_sb_h = {
2157 .is_3d = HDMI_VIDEO_FORMAT_3D,
2158 .fmt_3d = HDMI_3D_FORMAT_SB_HALF,
2161 static const struct hdmi_3d_info info_3d_tb = {
2162 .is_3d = HDMI_VIDEO_FORMAT_3D,
2163 .fmt_3d = HDMI_3D_FORMAT_TB,
2166 static const struct hdmi_3d_info info_3d_fp = {
2167 .is_3d = HDMI_VIDEO_FORMAT_3D,
2168 .fmt_3d = HDMI_3D_FORMAT_FP,
2171 const struct hdmi_conf hdmi_conf[] = {
2172 { V4L2_DV_480P59_94, &hdmi_conf_480p59_94, &info_2d },
2173 { V4L2_DV_480P60, &hdmi_conf_480p60, &info_2d },
2174 { V4L2_DV_576P50, &hdmi_conf_576p50, &info_2d },
2175 { V4L2_DV_720P50, &hdmi_conf_720p50, &info_2d },
2176 { V4L2_DV_720P59_94, &hdmi_conf_720p59_94, &info_2d },
2177 { V4L2_DV_720P60, &hdmi_conf_720p60, &info_2d },
2178 { V4L2_DV_1080I50, &hdmi_conf_1080i50, &info_2d },
2179 { V4L2_DV_1080I59_94, &hdmi_conf_1080i59_94, &info_2d },
2180 { V4L2_DV_1080I60, &hdmi_conf_1080i60, &info_2d },
2181 { V4L2_DV_1080P24, &hdmi_conf_1080p24, &info_2d },
2182 { V4L2_DV_1080P25, &hdmi_conf_1080p25, &info_2d },
2183 { V4L2_DV_1080P30, &hdmi_conf_1080p30, &info_2d },
2184 { V4L2_DV_1080P50, &hdmi_conf_1080p50, &info_2d },
2185 { V4L2_DV_1080P59_94, &hdmi_conf_1080p59_94, &info_2d },
2186 { V4L2_DV_1080P60, &hdmi_conf_1080p60, &info_2d },
2187 { V4L2_DV_720P60_SB_HALF, &hdmi_conf_720p60_sb_half, &info_3d_sb_h },
2188 { V4L2_DV_720P60_TB, &hdmi_conf_720p60_tb, &info_3d_tb },
2189 { V4L2_DV_720P59_94_SB_HALF, &hdmi_conf_720p59_94_sb_half,
2191 { V4L2_DV_720P59_94_TB, &hdmi_conf_720p59_94_tb, &info_3d_tb },
2192 { V4L2_DV_720P50_SB_HALF, &hdmi_conf_720p50_sb_half, &info_3d_sb_h },
2193 { V4L2_DV_720P50_TB, &hdmi_conf_720p50_tb, &info_3d_tb },
2194 { V4L2_DV_1080P24_FP, &hdmi_conf_1080p24_fp, &info_3d_fp },
2195 { V4L2_DV_1080P24_SB_HALF, &hdmi_conf_1080p24_sb_half, &info_3d_sb_h },
2196 { V4L2_DV_1080P24_TB, &hdmi_conf_1080p24_tb, &info_3d_tb },
2197 { V4L2_DV_1080P23_98_FP, &hdmi_conf_1080p23_98_fp, &info_3d_fp },
2198 { V4L2_DV_1080P23_98_SB_HALF, &hdmi_conf_1080p23_98_sb_half,
2200 { V4L2_DV_1080P23_98_TB, &hdmi_conf_1080p23_98_tb, &info_3d_tb },
2201 { V4L2_DV_1080I60_SB_HALF, &hdmi_conf_1080i60_sb_half, &info_3d_sb_h },
2202 { V4L2_DV_1080I59_94_SB_HALF, &hdmi_conf_1080i59_94_sb_half,
2204 { V4L2_DV_1080I50_SB_HALF, &hdmi_conf_1080i50_sb_half, &info_3d_sb_h },
2205 { V4L2_DV_1080P60_SB_HALF, &hdmi_conf_1080p60_sb_half, &info_3d_sb_h },
2206 { V4L2_DV_1080P60_TB, &hdmi_conf_1080p60_tb, &info_3d_tb },
2207 { V4L2_DV_1080P30_SB_HALF, &hdmi_conf_1080p30_sb_half, &info_3d_sb_h },
2208 { V4L2_DV_1080P30_TB, &hdmi_conf_1080p30_tb, &info_3d_tb },
2211 const int hdmi_pre_cnt = ARRAY_SIZE(hdmi_conf);
2213 irqreturn_t hdmi_irq_handler(int irq, void *dev_data)
2215 struct hdmi_device *hdev = dev_data;
2218 if (!pm_runtime_suspended(hdev->dev)) {
2219 intc_flag = hdmi_read(hdev, HDMI_INTC_FLAG_0);
2220 /* clearing flags for HPD plug/unplug */
2221 if (intc_flag & HDMI_INTC_FLAG_HPD_UNPLUG) {
2222 printk(KERN_INFO "unplugged\n");
2223 if (hdev->hdcp_info.hdcp_enable)
2225 hdmi_write_mask(hdev, HDMI_INTC_FLAG_0, ~0,
2226 HDMI_INTC_FLAG_HPD_UNPLUG);
2227 atomic_set(&hdev->hpd_state, HPD_LOW);
2229 if (intc_flag & HDMI_INTC_FLAG_HPD_PLUG) {
2230 printk(KERN_INFO "plugged\n");
2231 hdmi_write_mask(hdev, HDMI_INTC_FLAG_0, ~0,
2232 HDMI_INTC_FLAG_HPD_PLUG);
2233 atomic_set(&hdev->hpd_state, HPD_HIGH);
2235 if (intc_flag & HDMI_INTC_FLAG_HDCP) {
2236 printk(KERN_INFO "hdcp interrupt occur\n");
2237 hdcp_irq_handler(hdev);
2238 hdmi_write_mask(hdev, HDMI_INTC_FLAG_0, ~0,
2239 HDMI_INTC_FLAG_HDCP);
2242 if (s5p_v4l2_hpd_read_gpio())
2243 atomic_set(&hdev->hpd_state, HPD_HIGH);
2245 atomic_set(&hdev->hpd_state, HPD_LOW);
2248 queue_work(hdev->hpd_wq, &hdev->hpd_work);
2253 void hdmi_reg_init(struct hdmi_device *hdev)
2255 /* enable HPD interrupts */
2256 hdmi_write_mask(hdev, HDMI_INTC_CON_0, ~0, HDMI_INTC_EN_GLOBAL |
2257 HDMI_INTC_EN_HPD_PLUG | HDMI_INTC_EN_HPD_UNPLUG);
2258 /* choose HDMI mode */
2259 hdmi_write_mask(hdev, HDMI_MODE_SEL,
2260 HDMI_MODE_HDMI_EN, HDMI_MODE_MASK);
2261 /* disable bluescreen */
2262 hdmi_write_mask(hdev, HDMI_CON_0, 0, HDMI_BLUE_SCR_EN);
2263 /* enable AVI packet every vsync, fixes purple line problem */
2264 hdmi_writeb(hdev, HDMI_AVI_CON, 0x02);
2265 /* RGB888 is default output format of HDMI,
2266 * look to CEA-861-D, table 7 for more detail */
2267 hdmi_writeb(hdev, HDMI_AVI_BYTE(1), 0 << 5);
2268 hdmi_write_mask(hdev, HDMI_CON_1, 2, 3 << 5);
2271 void hdmi_timing_apply(struct hdmi_device *hdev,
2272 const struct hdmi_preset_conf *conf)
2274 const struct hdmi_core_regs *core = &conf->core;
2275 const struct hdmi_tg_regs *tg = &conf->tg;
2277 /* setting core registers */
2278 hdmi_writeb(hdev, HDMI_H_BLANK_0, core->h_blank[0]);
2279 hdmi_writeb(hdev, HDMI_H_BLANK_1, core->h_blank[1]);
2280 hdmi_writeb(hdev, HDMI_V2_BLANK_0, core->v2_blank[0]);
2281 hdmi_writeb(hdev, HDMI_V2_BLANK_1, core->v2_blank[1]);
2282 hdmi_writeb(hdev, HDMI_V1_BLANK_0, core->v1_blank[0]);
2283 hdmi_writeb(hdev, HDMI_V1_BLANK_1, core->v1_blank[1]);
2284 hdmi_writeb(hdev, HDMI_V_LINE_0, core->v_line[0]);
2285 hdmi_writeb(hdev, HDMI_V_LINE_1, core->v_line[1]);
2286 hdmi_writeb(hdev, HDMI_H_LINE_0, core->h_line[0]);
2287 hdmi_writeb(hdev, HDMI_H_LINE_1, core->h_line[1]);
2288 hdmi_writeb(hdev, HDMI_HSYNC_POL, core->hsync_pol[0]);
2289 hdmi_writeb(hdev, HDMI_VSYNC_POL, core->vsync_pol[0]);
2290 hdmi_writeb(hdev, HDMI_INT_PRO_MODE, core->int_pro_mode[0]);
2291 hdmi_writeb(hdev, HDMI_V_BLANK_F0_0, core->v_blank_f0[0]);
2292 hdmi_writeb(hdev, HDMI_V_BLANK_F0_1, core->v_blank_f0[1]);
2293 hdmi_writeb(hdev, HDMI_V_BLANK_F1_0, core->v_blank_f1[0]);
2294 hdmi_writeb(hdev, HDMI_V_BLANK_F1_1, core->v_blank_f1[1]);
2295 hdmi_writeb(hdev, HDMI_H_SYNC_START_0, core->h_sync_start[0]);
2296 hdmi_writeb(hdev, HDMI_H_SYNC_START_1, core->h_sync_start[1]);
2297 hdmi_writeb(hdev, HDMI_H_SYNC_END_0, core->h_sync_end[0]);
2298 hdmi_writeb(hdev, HDMI_H_SYNC_END_1, core->h_sync_end[1]);
2299 hdmi_writeb(hdev, HDMI_V_SYNC_LINE_BEF_2_0, core->v_sync_line_bef_2[0]);
2300 hdmi_writeb(hdev, HDMI_V_SYNC_LINE_BEF_2_1, core->v_sync_line_bef_2[1]);
2301 hdmi_writeb(hdev, HDMI_V_SYNC_LINE_BEF_1_0, core->v_sync_line_bef_1[0]);
2302 hdmi_writeb(hdev, HDMI_V_SYNC_LINE_BEF_1_1, core->v_sync_line_bef_1[1]);
2303 hdmi_writeb(hdev, HDMI_V_SYNC_LINE_AFT_2_0, core->v_sync_line_aft_2[0]);
2304 hdmi_writeb(hdev, HDMI_V_SYNC_LINE_AFT_2_1, core->v_sync_line_aft_2[1]);
2305 hdmi_writeb(hdev, HDMI_V_SYNC_LINE_AFT_1_0, core->v_sync_line_aft_1[0]);
2306 hdmi_writeb(hdev, HDMI_V_SYNC_LINE_AFT_1_1, core->v_sync_line_aft_1[1]);
2307 hdmi_writeb(hdev, HDMI_V_SYNC_LINE_AFT_PXL_2_0,
2308 core->v_sync_line_aft_pxl_2[0]);
2309 hdmi_writeb(hdev, HDMI_V_SYNC_LINE_AFT_PXL_2_1,
2310 core->v_sync_line_aft_pxl_2[1]);
2311 hdmi_writeb(hdev, HDMI_V_SYNC_LINE_AFT_PXL_1_0,
2312 core->v_sync_line_aft_pxl_1[0]);
2313 hdmi_writeb(hdev, HDMI_V_SYNC_LINE_AFT_PXL_1_1,
2314 core->v_sync_line_aft_pxl_1[1]);
2315 hdmi_writeb(hdev, HDMI_V_BLANK_F2_0, core->v_blank_f2[0]);
2316 hdmi_writeb(hdev, HDMI_V_BLANK_F2_1, core->v_blank_f2[1]);
2317 hdmi_writeb(hdev, HDMI_V_BLANK_F3_0, core->v_blank_f3[0]);
2318 hdmi_writeb(hdev, HDMI_V_BLANK_F3_1, core->v_blank_f3[1]);
2319 hdmi_writeb(hdev, HDMI_V_BLANK_F4_0, core->v_blank_f4[0]);
2320 hdmi_writeb(hdev, HDMI_V_BLANK_F4_1, core->v_blank_f4[1]);
2321 hdmi_writeb(hdev, HDMI_V_BLANK_F5_0, core->v_blank_f5[0]);
2322 hdmi_writeb(hdev, HDMI_V_BLANK_F5_1, core->v_blank_f5[1]);
2323 hdmi_writeb(hdev, HDMI_V_SYNC_LINE_AFT_3_0, core->v_sync_line_aft_3[0]);
2324 hdmi_writeb(hdev, HDMI_V_SYNC_LINE_AFT_3_1, core->v_sync_line_aft_3[1]);
2325 hdmi_writeb(hdev, HDMI_V_SYNC_LINE_AFT_4_0, core->v_sync_line_aft_4[0]);
2326 hdmi_writeb(hdev, HDMI_V_SYNC_LINE_AFT_4_1, core->v_sync_line_aft_4[1]);
2327 hdmi_writeb(hdev, HDMI_V_SYNC_LINE_AFT_5_0, core->v_sync_line_aft_5[0]);
2328 hdmi_writeb(hdev, HDMI_V_SYNC_LINE_AFT_5_1, core->v_sync_line_aft_5[1]);
2329 hdmi_writeb(hdev, HDMI_V_SYNC_LINE_AFT_6_0, core->v_sync_line_aft_6[0]);
2330 hdmi_writeb(hdev, HDMI_V_SYNC_LINE_AFT_6_1, core->v_sync_line_aft_6[1]);
2331 hdmi_writeb(hdev, HDMI_V_SYNC_LINE_AFT_PXL_3_0,
2332 core->v_sync_line_aft_pxl_3[0]);
2333 hdmi_writeb(hdev, HDMI_V_SYNC_LINE_AFT_PXL_3_1,
2334 core->v_sync_line_aft_pxl_3[1]);
2335 hdmi_writeb(hdev, HDMI_V_SYNC_LINE_AFT_PXL_4_0,
2336 core->v_sync_line_aft_pxl_4[0]);
2337 hdmi_writeb(hdev, HDMI_V_SYNC_LINE_AFT_PXL_4_1,
2338 core->v_sync_line_aft_pxl_4[1]);
2339 hdmi_writeb(hdev, HDMI_V_SYNC_LINE_AFT_PXL_5_0,
2340 core->v_sync_line_aft_pxl_5[0]);
2341 hdmi_writeb(hdev, HDMI_V_SYNC_LINE_AFT_PXL_5_1,
2342 core->v_sync_line_aft_pxl_5[1]);
2343 hdmi_writeb(hdev, HDMI_V_SYNC_LINE_AFT_PXL_6_0,
2344 core->v_sync_line_aft_pxl_6[0]);
2345 hdmi_writeb(hdev, HDMI_V_SYNC_LINE_AFT_PXL_6_1,
2346 core->v_sync_line_aft_pxl_6[1]);
2347 hdmi_writeb(hdev, HDMI_VACT_SPACE_1_0, core->vact_space_1[0]);
2348 hdmi_writeb(hdev, HDMI_VACT_SPACE_1_1, core->vact_space_1[1]);
2349 hdmi_writeb(hdev, HDMI_VACT_SPACE_2_0, core->vact_space_2[0]);
2350 hdmi_writeb(hdev, HDMI_VACT_SPACE_2_1, core->vact_space_2[1]);
2351 hdmi_writeb(hdev, HDMI_VACT_SPACE_3_0, core->vact_space_3[0]);
2352 hdmi_writeb(hdev, HDMI_VACT_SPACE_3_1, core->vact_space_3[1]);
2353 hdmi_writeb(hdev, HDMI_VACT_SPACE_4_0, core->vact_space_4[0]);
2354 hdmi_writeb(hdev, HDMI_VACT_SPACE_4_1, core->vact_space_4[1]);
2355 hdmi_writeb(hdev, HDMI_VACT_SPACE_5_0, core->vact_space_5[0]);
2356 hdmi_writeb(hdev, HDMI_VACT_SPACE_5_1, core->vact_space_5[1]);
2357 hdmi_writeb(hdev, HDMI_VACT_SPACE_6_0, core->vact_space_6[0]);
2358 hdmi_writeb(hdev, HDMI_VACT_SPACE_6_1, core->vact_space_6[1]);
2360 /* Timing generator registers */
2361 hdmi_writeb(hdev, HDMI_TG_H_FSZ_L, tg->h_fsz_l);
2362 hdmi_writeb(hdev, HDMI_TG_H_FSZ_H, tg->h_fsz_h);
2363 hdmi_writeb(hdev, HDMI_TG_HACT_ST_L, tg->hact_st_l);
2364 hdmi_writeb(hdev, HDMI_TG_HACT_ST_H, tg->hact_st_h);
2365 hdmi_writeb(hdev, HDMI_TG_HACT_SZ_L, tg->hact_sz_l);
2366 hdmi_writeb(hdev, HDMI_TG_HACT_SZ_H, tg->hact_sz_h);
2367 hdmi_writeb(hdev, HDMI_TG_V_FSZ_L, tg->v_fsz_l);
2368 hdmi_writeb(hdev, HDMI_TG_V_FSZ_H, tg->v_fsz_h);
2369 hdmi_writeb(hdev, HDMI_TG_VSYNC_L, tg->vsync_l);
2370 hdmi_writeb(hdev, HDMI_TG_VSYNC_H, tg->vsync_h);
2371 hdmi_writeb(hdev, HDMI_TG_VSYNC2_L, tg->vsync2_l);
2372 hdmi_writeb(hdev, HDMI_TG_VSYNC2_H, tg->vsync2_h);
2373 hdmi_writeb(hdev, HDMI_TG_VACT_ST_L, tg->vact_st_l);
2374 hdmi_writeb(hdev, HDMI_TG_VACT_ST_H, tg->vact_st_h);
2375 hdmi_writeb(hdev, HDMI_TG_VACT_SZ_L, tg->vact_sz_l);
2376 hdmi_writeb(hdev, HDMI_TG_VACT_SZ_H, tg->vact_sz_h);
2377 hdmi_writeb(hdev, HDMI_TG_FIELD_CHG_L, tg->field_chg_l);
2378 hdmi_writeb(hdev, HDMI_TG_FIELD_CHG_H, tg->field_chg_h);
2379 hdmi_writeb(hdev, HDMI_TG_VACT_ST2_L, tg->vact_st2_l);
2380 hdmi_writeb(hdev, HDMI_TG_VACT_ST2_H, tg->vact_st2_h);
2381 hdmi_writeb(hdev, HDMI_TG_VACT_ST3_L, tg->vact_st3_l);
2382 hdmi_writeb(hdev, HDMI_TG_VACT_ST3_H, tg->vact_st3_h);
2383 hdmi_writeb(hdev, HDMI_TG_VACT_ST4_L, tg->vact_st4_l);
2384 hdmi_writeb(hdev, HDMI_TG_VACT_ST4_H, tg->vact_st4_h);
2385 hdmi_writeb(hdev, HDMI_TG_VSYNC_TOP_HDMI_L, tg->vsync_top_hdmi_l);
2386 hdmi_writeb(hdev, HDMI_TG_VSYNC_TOP_HDMI_H, tg->vsync_top_hdmi_h);
2387 hdmi_writeb(hdev, HDMI_TG_VSYNC_BOT_HDMI_L, tg->vsync_bot_hdmi_l);
2388 hdmi_writeb(hdev, HDMI_TG_VSYNC_BOT_HDMI_H, tg->vsync_bot_hdmi_h);
2389 hdmi_writeb(hdev, HDMI_TG_FIELD_TOP_HDMI_L, tg->field_top_hdmi_l);
2390 hdmi_writeb(hdev, HDMI_TG_FIELD_TOP_HDMI_H, tg->field_top_hdmi_h);
2391 hdmi_writeb(hdev, HDMI_TG_FIELD_BOT_HDMI_L, tg->field_bot_hdmi_l);
2392 hdmi_writeb(hdev, HDMI_TG_FIELD_BOT_HDMI_H, tg->field_bot_hdmi_h);
2393 hdmi_writeb(hdev, HDMI_TG_3D, tg->tg_3d);
2396 int hdmi_conf_apply(struct hdmi_device *hdmi_dev)
2398 struct device *dev = hdmi_dev->dev;
2399 const struct hdmi_preset_conf *conf = hdmi_dev->cur_conf;
2400 struct v4l2_dv_preset preset;
2403 dev_dbg(dev, "%s\n", __func__);
2405 /* configure presets */
2406 preset.preset = hdmi_dev->cur_preset;
2407 ret = v4l2_subdev_call(hdmi_dev->phy_sd, video, s_dv_preset, &preset);
2409 dev_err(dev, "failed to set preset (%u)\n", preset.preset);
2413 hdmi_reg_init(hdmi_dev);
2415 /* setting core registers */
2416 hdmi_timing_apply(hdmi_dev, conf);
2421 int is_hdmiphy_ready(struct hdmi_device *hdev)
2423 u32 val = hdmi_read(hdev, HDMI_PHY_STATUS);
2424 if (val & HDMI_PHY_STATUS_READY)
2430 void hdmi_enable(struct hdmi_device *hdev, int on)
2433 hdmi_write_mask(hdev, HDMI_CON_0, ~0, HDMI_EN);
2435 hdmi_write_mask(hdev, HDMI_CON_0, 0, HDMI_EN);
2438 void hdmi_hpd_enable(struct hdmi_device *hdev, int on)
2440 /* enable HPD interrupts */
2441 hdmi_write_mask(hdev, HDMI_INTC_CON_0, ~0, HDMI_INTC_EN_GLOBAL |
2442 HDMI_INTC_EN_HPD_PLUG | HDMI_INTC_EN_HPD_UNPLUG);
2445 void hdmi_tg_enable(struct hdmi_device *hdev, int on)
2449 mask = (hdev->cur_conf->mbus_fmt.field == V4L2_FIELD_INTERLACED) ?
2450 HDMI_TG_EN | HDMI_FIELD_EN : HDMI_TG_EN;
2453 hdmi_write_mask(hdev, HDMI_TG_CMD, ~0, mask);
2455 hdmi_write_mask(hdev, HDMI_TG_CMD, 0, mask);
2458 static u8 hdmi_chksum(struct hdmi_device *hdev, u32 start, u8 len, u32 hdr_sum)
2462 /* hdr_sum : header0 + header1 + header2
2463 * start : start address of packet byte1
2464 * len : packet bytes - 1 */
2465 for (i = 0; i < len; ++i)
2466 hdr_sum += hdmi_read(hdev, start + i * 4);
2468 return (u8)(0x100 - (hdr_sum & 0xff));
2471 void hdmi_reg_stop_vsi(struct hdmi_device *hdev)
2473 hdmi_writeb(hdev, HDMI_VSI_CON, HDMI_VSI_CON_DO_NOT_TRANSMIT);
2476 void hdmi_reg_infoframe(struct hdmi_device *hdev,
2477 struct hdmi_infoframe *infoframe)
2479 struct device *dev = hdev->dev;
2480 const struct hdmi_3d_info *info = hdmi_preset2info(hdev->cur_preset);
2483 dev_dbg(dev, "%s: InfoFrame type = 0x%x\n", __func__, infoframe->type);
2485 switch (infoframe->type) {
2486 case HDMI_PACKET_TYPE_VSI:
2487 hdmi_writeb(hdev, HDMI_VSI_CON, HDMI_VSI_CON_EVERY_VSYNC);
2488 hdmi_writeb(hdev, HDMI_VSI_HEADER0, infoframe->type);
2489 hdmi_writeb(hdev, HDMI_VSI_HEADER1, infoframe->ver);
2490 /* 0x000C03 : 24-bit IEEE Registration Identifier */
2491 hdmi_writeb(hdev, HDMI_VSI_DATA(1), 0x03);
2492 hdmi_writeb(hdev, HDMI_VSI_DATA(2), 0x0c);
2493 hdmi_writeb(hdev, HDMI_VSI_DATA(3), 0x00);
2494 hdmi_writeb(hdev, HDMI_VSI_DATA(4),
2495 HDMI_VSI_DATA04_VIDEO_FORMAT(info->is_3d));
2496 hdmi_writeb(hdev, HDMI_VSI_DATA(5),
2497 HDMI_VSI_DATA05_3D_STRUCTURE(info->fmt_3d));
2498 if (info->fmt_3d == HDMI_3D_FORMAT_SB_HALF) {
2499 infoframe->len += 1;
2500 hdmi_writeb(hdev, HDMI_VSI_DATA(6),
2501 (u8)HDMI_VSI_DATA06_3D_EXT_DATA(HDMI_H_SUB_SAMPLE));
2503 hdmi_writeb(hdev, HDMI_VSI_HEADER2, infoframe->len);
2504 hdr_sum = infoframe->type + infoframe->ver + infoframe->len;
2505 chksum = hdmi_chksum(hdev, HDMI_VSI_DATA(1), infoframe->len, hdr_sum);
2506 dev_dbg(dev, "VSI checksum = 0x%x\n", chksum);
2507 hdmi_writeb(hdev, HDMI_VSI_DATA(0), chksum);
2509 case HDMI_PACKET_TYPE_AVI:
2510 hdmi_writeb(hdev, HDMI_AVI_CON, HDMI_AVI_CON_EVERY_VSYNC);
2511 hdmi_writeb(hdev, HDMI_AVI_HEADER0, infoframe->type);
2512 hdmi_writeb(hdev, HDMI_AVI_HEADER1, infoframe->ver);
2513 hdmi_writeb(hdev, HDMI_AVI_HEADER2, infoframe->len);
2514 hdmi_writeb(hdev, HDMI_AVI_BYTE(1), hdev->output_fmt << 5);
2515 hdr_sum = infoframe->type + infoframe->ver + infoframe->len;
2516 chksum = hdmi_chksum(hdev, HDMI_AVI_BYTE(1), infoframe->len, hdr_sum);
2517 dev_dbg(dev, "AVI checksum = 0x%x\n", chksum);
2518 hdmi_writeb(hdev, HDMI_AVI_CHECK_SUM, chksum);
2525 void hdmi_reg_set_acr(struct hdmi_device *hdev)
2528 int sample_rate = hdev->sample_rate;
2530 if (sample_rate == 32000) {
2533 } else if (sample_rate == 44100) {
2536 } else if (sample_rate == 48000) {
2539 } else if (sample_rate == 88200) {
2542 } else if (sample_rate == 96000) {
2545 } else if (sample_rate == 176400) {
2548 } else if (sample_rate == 192000) {
2556 hdmi_write(hdev, HDMI_ACR_N0, HDMI_ACR_N0_VAL(n));
2557 hdmi_write(hdev, HDMI_ACR_N1, HDMI_ACR_N1_VAL(n));
2558 hdmi_write(hdev, HDMI_ACR_N2, HDMI_ACR_N2_VAL(n));
2560 /* transfer ACR packet */
2561 hdmi_write(hdev, HDMI_ACR_CON, HDMI_ACR_CON_TX_MODE_MESURED_CTS);
2564 void hdmi_reg_spdif_audio_init(struct hdmi_device *hdev)
2569 hdmi_write(hdev, HDMI_I2S_CLK_CON, HDMI_I2S_CLK_ENABLE);
2571 val = HDMI_SPDIFIN_CFG_NOISE_FILTER_2_SAMPLE |
2572 HDMI_SPDIFIN_CFG_PCPD_MANUAL |
2573 HDMI_SPDIFIN_CFG_WORD_LENGTH_MANUAL |
2574 HDMI_SPDIFIN_CFG_UVCP_REPORT |
2575 HDMI_SPDIFIN_CFG_HDMI_2_BURST |
2576 HDMI_SPDIFIN_CFG_DATA_ALIGN_32;
2577 hdmi_write(hdev, HDMI_SPDIFIN_CONFIG_1, val);
2578 hdmi_write(hdev, HDMI_SPDIFIN_CONFIG_2, 0);
2580 bps = hdev->audio_codec == HDMI_AUDIO_PCM ? hdev->bits_per_sample : 16;
2581 rep_time = hdev->audio_codec == HDMI_AUDIO_AC3 ? 1536 * 2 - 1 : 0;
2582 val = HDMI_SPDIFIN_USER_VAL_REPETITION_TIME_LOW(rep_time) |
2583 HDMI_SPDIFIN_USER_VAL_WORD_LENGTH_24;
2584 hdmi_write(hdev, HDMI_SPDIFIN_USER_VALUE_1, val);
2585 val = HDMI_SPDIFIN_USER_VAL_REPETITION_TIME_HIGH(rep_time);
2586 hdmi_write(hdev, HDMI_SPDIFIN_USER_VALUE_2, val);
2587 hdmi_write(hdev, HDMI_SPDIFIN_USER_VALUE_3, 0);
2588 hdmi_write(hdev, HDMI_SPDIFIN_USER_VALUE_4, 0);
2590 val = HDMI_I2S_IN_ENABLE | HDMI_I2S_AUD_SPDIF | HDMI_I2S_MUX_ENABLE;
2591 hdmi_write(hdev, HDMI_I2S_IN_MUX_CON, val);
2593 hdmi_write(hdev, HDMI_I2S_MUX_CH, HDMI_I2S_CH_ALL_EN);
2594 hdmi_write(hdev, HDMI_I2S_MUX_CUV, HDMI_I2S_CUV_RL_EN);
2596 hdmi_write_mask(hdev, HDMI_SPDIFIN_CLK_CTRL, 0, HDMI_SPDIFIN_CLK_ON);
2597 hdmi_write_mask(hdev, HDMI_SPDIFIN_CLK_CTRL, ~0, HDMI_SPDIFIN_CLK_ON);
2599 hdmi_write(hdev, HDMI_SPDIFIN_OP_CTRL, HDMI_SPDIFIN_STATUS_CHECK_MODE);
2600 hdmi_write(hdev, HDMI_SPDIFIN_OP_CTRL,
2601 HDMI_SPDIFIN_STATUS_CHECK_MODE_HDMI);
2604 void hdmi_reg_i2s_audio_init(struct hdmi_device *hdev)
2606 u32 data_num, bit_ch, sample_frq, val;
2607 int sample_rate = hdev->sample_rate;
2608 int bits_per_sample = hdev->bits_per_sample;
2610 if (bits_per_sample == 16) {
2613 } else if (bits_per_sample == 20) {
2616 } else if (bits_per_sample == 24) {
2619 } else if (bits_per_sample == 32) {
2628 hdmi_write(hdev, HDMI_I2S_CLK_CON, HDMI_I2S_CLK_DISABLE);
2629 hdmi_write(hdev, HDMI_I2S_CLK_CON, HDMI_I2S_CLK_ENABLE);
2631 hdmi_write_mask(hdev, HDMI_I2S_DSD_CON, 0, HDMI_I2S_DSD_ENABLE);
2633 /* Configuration I2S input ports. Configure I2S_PIN_SEL_0~4 */
2634 val = HDMI_I2S_SEL_SCLK(5) | HDMI_I2S_SEL_LRCK(6);
2635 hdmi_write(hdev, HDMI_I2S_PIN_SEL_0, val);
2636 val = HDMI_I2S_SEL_SDATA1(3) | HDMI_I2S_SEL_SDATA0(4);
2637 hdmi_write(hdev, HDMI_I2S_PIN_SEL_1, val);
2638 val = HDMI_I2S_SEL_SDATA3(1) | HDMI_I2S_SEL_SDATA2(2);
2639 hdmi_write(hdev, HDMI_I2S_PIN_SEL_2, val);
2640 hdmi_write(hdev, HDMI_I2S_PIN_SEL_3, HDMI_I2S_SEL_DSD(0));
2643 val = HDMI_I2S_SCLK_FALLING_EDGE | HDMI_I2S_L_CH_LOW_POL;
2644 hdmi_write(hdev, HDMI_I2S_CON_1, val);
2645 val = HDMI_I2S_MSB_FIRST_MODE | HDMI_I2S_SET_BIT_CH(bit_ch) |
2646 HDMI_I2S_SET_SDATA_BIT(data_num) | HDMI_I2S_BASIC_FORMAT;
2647 hdmi_write(hdev, HDMI_I2S_CON_2, val);
2649 if (sample_rate == 32000)
2651 else if (sample_rate == 44100)
2653 else if (sample_rate == 48000)
2655 else if (sample_rate == 96000)
2660 /* Configure register related to CUV information */
2661 val = HDMI_I2S_CH_STATUS_MODE_0 | HDMI_I2S_2AUD_CH_WITHOUT_PREEMPH |
2662 HDMI_I2S_COPYRIGHT | HDMI_I2S_LINEAR_PCM |
2663 HDMI_I2S_CONSUMER_FORMAT;
2664 hdmi_write(hdev, HDMI_I2S_CH_ST_0, val);
2665 hdmi_write(hdev, HDMI_I2S_CH_ST_1, HDMI_I2S_CD_PLAYER);
2666 hdmi_write(hdev, HDMI_I2S_CH_ST_2, HDMI_I2S_SET_SOURCE_NUM(0));
2667 val = HDMI_I2S_CLK_ACCUR_LEVEL_1 |
2668 HDMI_I2S_SET_SAMPLING_FREQ(sample_frq);
2669 hdmi_write(hdev, HDMI_I2S_CH_ST_3, val);
2670 val = HDMI_I2S_ORG_SAMPLING_FREQ_44_1 |
2671 HDMI_I2S_WORD_LENGTH_MAX24_20BITS |
2672 HDMI_I2S_WORD_LENGTH_MAX_20BITS;
2673 hdmi_write(hdev, HDMI_I2S_CH_ST_4, val);
2675 hdmi_write(hdev, HDMI_I2S_CH_ST_CON, HDMI_I2S_CH_STATUS_RELOAD);
2677 val = HDMI_I2S_IN_ENABLE | HDMI_I2S_AUD_I2S | HDMI_I2S_CUV_I2S_ENABLE
2678 | HDMI_I2S_MUX_ENABLE;
2679 hdmi_write(hdev, HDMI_I2S_IN_MUX_CON, val);
2681 val = HDMI_I2S_CH0_L_EN | HDMI_I2S_CH0_R_EN | HDMI_I2S_CH1_L_EN |
2682 HDMI_I2S_CH1_R_EN | HDMI_I2S_CH2_L_EN | HDMI_I2S_CH2_R_EN |
2683 HDMI_I2S_CH3_L_EN | HDMI_I2S_CH3_R_EN;
2684 hdmi_write(hdev, HDMI_I2S_MUX_CH, val);
2686 val = HDMI_I2S_CUV_L_EN | HDMI_I2S_CUV_R_EN;
2687 hdmi_write(hdev, HDMI_I2S_MUX_CUV, val);
2690 void hdmi_audio_enable(struct hdmi_device *hdev, int on)
2693 hdmi_write(hdev, HDMI_AUI_CON, HDMI_AUI_CON_TRANS_EVERY_VSYNC);
2694 hdmi_write_mask(hdev, HDMI_CON_0, ~0, HDMI_ASP_ENABLE);
2696 hdmi_write(hdev, HDMI_AUI_CON, HDMI_AUI_CON_NO_TRAN);
2697 hdmi_write_mask(hdev, HDMI_CON_0, 0, HDMI_ASP_ENABLE);
2701 void hdmi_bluescreen_enable(struct hdmi_device *hdev, int on)
2704 hdmi_write_mask(hdev, HDMI_CON_0, ~0, HDMI_BLUE_SCR_EN);
2706 hdmi_write_mask(hdev, HDMI_CON_0, 0, HDMI_BLUE_SCR_EN);
2709 void hdmi_reg_mute(struct hdmi_device *hdev, int on)
2711 hdmi_bluescreen_enable(hdev, on);
2712 hdmi_audio_enable(hdev, !on);
2715 int hdmi_hpd_status(struct hdmi_device *hdev)
2717 return hdmi_read(hdev, HDMI_HPD_STATUS);
2720 int is_hdmi_streaming(struct hdmi_device *hdev)
2722 if (hdmi_hpd_status(hdev) && hdev->streaming)
2727 u8 hdmi_get_int_mask(struct hdmi_device *hdev)
2729 return hdmi_readb(hdev, HDMI_INTC_CON_0);
2732 void hdmi_set_int_mask(struct hdmi_device *hdev, u8 mask, int en)
2735 mask |= HDMI_INTC_EN_GLOBAL;
2736 hdmi_write_mask(hdev, HDMI_INTC_CON_0, ~0, mask);
2738 hdmi_write_mask(hdev, HDMI_INTC_CON_0, 0,
2739 HDMI_INTC_EN_GLOBAL);
2742 void hdmi_sw_hpd_enable(struct hdmi_device *hdev, int en)
2745 hdmi_write_mask(hdev, HDMI_HPD, ~0, HDMI_HPD_SEL_I_HPD);
2747 hdmi_write_mask(hdev, HDMI_HPD, 0, HDMI_HPD_SEL_I_HPD);
2750 void hdmi_sw_hpd_plug(struct hdmi_device *hdev, int en)
2753 hdmi_write_mask(hdev, HDMI_HPD, ~0, HDMI_SW_HPD_PLUGGED);
2755 hdmi_write_mask(hdev, HDMI_HPD, 0, HDMI_SW_HPD_PLUGGED);
2758 void hdmi_phy_sw_reset(struct hdmi_device *hdev)
2760 hdmi_write_mask(hdev, HDMI_PHY_RSTOUT, ~0, HDMI_PHY_SW_RSTOUT);
2762 hdmi_write_mask(hdev, HDMI_PHY_RSTOUT, 0, HDMI_PHY_SW_RSTOUT);
2765 void hdmi_dumpregs(struct hdmi_device *hdev, char *prefix)
2767 #define DUMPREG(reg_id) \
2768 dev_dbg(hdev->dev, "%s:" #reg_id " = %08x\n", prefix, \
2769 readl(hdev->regs + reg_id))
2773 dev_dbg(hdev->dev, "%s: ---- CONTROL REGISTERS ----\n", prefix);
2774 DUMPREG(HDMI_INTC_CON_0);
2775 DUMPREG(HDMI_INTC_FLAG_0);
2776 DUMPREG(HDMI_HPD_STATUS);
2777 DUMPREG(HDMI_INTC_CON_1);
2778 DUMPREG(HDMI_INTC_FLAG_1);
2779 DUMPREG(HDMI_PHY_STATUS_0);
2780 DUMPREG(HDMI_PHY_STATUS_PLL);
2781 DUMPREG(HDMI_PHY_CON_0);
2782 DUMPREG(HDMI_PHY_RSTOUT);
2783 DUMPREG(HDMI_PHY_VPLL);
2784 DUMPREG(HDMI_PHY_CMU);
2785 DUMPREG(HDMI_CORE_RSTOUT);
2787 dev_dbg(hdev->dev, "%s: ---- CORE REGISTERS ----\n", prefix);
2788 DUMPREG(HDMI_CON_0);
2789 DUMPREG(HDMI_CON_1);
2790 DUMPREG(HDMI_CON_2);
2791 DUMPREG(HDMI_STATUS);
2792 DUMPREG(HDMI_PHY_STATUS);
2793 DUMPREG(HDMI_STATUS_EN);
2795 DUMPREG(HDMI_MODE_SEL);
2796 DUMPREG(HDMI_ENC_EN);
2797 DUMPREG(HDMI_DC_CONTROL);
2798 DUMPREG(HDMI_VIDEO_PATTERN_GEN);
2800 dev_dbg(hdev->dev, "%s: ---- CORE SYNC REGISTERS ----\n", prefix);
2801 DUMPREG(HDMI_H_BLANK_0);
2802 DUMPREG(HDMI_H_BLANK_1);
2803 DUMPREG(HDMI_V2_BLANK_0);
2804 DUMPREG(HDMI_V2_BLANK_1);
2805 DUMPREG(HDMI_V1_BLANK_0);
2806 DUMPREG(HDMI_V1_BLANK_1);
2807 DUMPREG(HDMI_V_LINE_0);
2808 DUMPREG(HDMI_V_LINE_1);
2809 DUMPREG(HDMI_H_LINE_0);
2810 DUMPREG(HDMI_H_LINE_1);
2811 DUMPREG(HDMI_HSYNC_POL);
2813 DUMPREG(HDMI_VSYNC_POL);
2814 DUMPREG(HDMI_INT_PRO_MODE);
2815 DUMPREG(HDMI_V_BLANK_F0_0);
2816 DUMPREG(HDMI_V_BLANK_F0_1);
2817 DUMPREG(HDMI_V_BLANK_F1_0);
2818 DUMPREG(HDMI_V_BLANK_F1_1);
2820 DUMPREG(HDMI_H_SYNC_START_0);
2821 DUMPREG(HDMI_H_SYNC_START_1);
2822 DUMPREG(HDMI_H_SYNC_END_0);
2823 DUMPREG(HDMI_H_SYNC_END_1);
2825 DUMPREG(HDMI_V_SYNC_LINE_BEF_2_0);
2826 DUMPREG(HDMI_V_SYNC_LINE_BEF_2_1);
2827 DUMPREG(HDMI_V_SYNC_LINE_BEF_1_0);
2828 DUMPREG(HDMI_V_SYNC_LINE_BEF_1_1);
2830 DUMPREG(HDMI_V_SYNC_LINE_AFT_2_0);
2831 DUMPREG(HDMI_V_SYNC_LINE_AFT_2_1);
2832 DUMPREG(HDMI_V_SYNC_LINE_AFT_1_0);
2833 DUMPREG(HDMI_V_SYNC_LINE_AFT_1_1);
2835 DUMPREG(HDMI_V_SYNC_LINE_AFT_PXL_2_0);
2836 DUMPREG(HDMI_V_SYNC_LINE_AFT_PXL_2_1);
2837 DUMPREG(HDMI_V_SYNC_LINE_AFT_PXL_1_0);
2838 DUMPREG(HDMI_V_SYNC_LINE_AFT_PXL_1_1);
2840 DUMPREG(HDMI_V_BLANK_F2_0);
2841 DUMPREG(HDMI_V_BLANK_F2_1);
2842 DUMPREG(HDMI_V_BLANK_F3_0);
2843 DUMPREG(HDMI_V_BLANK_F3_1);
2844 DUMPREG(HDMI_V_BLANK_F4_0);
2845 DUMPREG(HDMI_V_BLANK_F4_1);
2846 DUMPREG(HDMI_V_BLANK_F5_0);
2847 DUMPREG(HDMI_V_BLANK_F5_1);
2849 DUMPREG(HDMI_V_SYNC_LINE_AFT_3_0);
2850 DUMPREG(HDMI_V_SYNC_LINE_AFT_3_1);
2851 DUMPREG(HDMI_V_SYNC_LINE_AFT_4_0);
2852 DUMPREG(HDMI_V_SYNC_LINE_AFT_4_1);
2853 DUMPREG(HDMI_V_SYNC_LINE_AFT_5_0);
2854 DUMPREG(HDMI_V_SYNC_LINE_AFT_5_1);
2855 DUMPREG(HDMI_V_SYNC_LINE_AFT_6_0);
2856 DUMPREG(HDMI_V_SYNC_LINE_AFT_6_1);
2858 DUMPREG(HDMI_V_SYNC_LINE_AFT_PXL_3_0);
2859 DUMPREG(HDMI_V_SYNC_LINE_AFT_PXL_3_1);
2860 DUMPREG(HDMI_V_SYNC_LINE_AFT_PXL_4_0);
2861 DUMPREG(HDMI_V_SYNC_LINE_AFT_PXL_4_1);
2862 DUMPREG(HDMI_V_SYNC_LINE_AFT_PXL_5_0);
2863 DUMPREG(HDMI_V_SYNC_LINE_AFT_PXL_5_1);
2864 DUMPREG(HDMI_V_SYNC_LINE_AFT_PXL_6_0);
2865 DUMPREG(HDMI_V_SYNC_LINE_AFT_PXL_6_1);
2867 DUMPREG(HDMI_VACT_SPACE_1_0);
2868 DUMPREG(HDMI_VACT_SPACE_1_1);
2869 DUMPREG(HDMI_VACT_SPACE_2_0);
2870 DUMPREG(HDMI_VACT_SPACE_2_1);
2871 DUMPREG(HDMI_VACT_SPACE_3_0);
2872 DUMPREG(HDMI_VACT_SPACE_3_1);
2873 DUMPREG(HDMI_VACT_SPACE_4_0);
2874 DUMPREG(HDMI_VACT_SPACE_4_1);
2875 DUMPREG(HDMI_VACT_SPACE_5_0);
2876 DUMPREG(HDMI_VACT_SPACE_5_1);
2877 DUMPREG(HDMI_VACT_SPACE_6_0);
2878 DUMPREG(HDMI_VACT_SPACE_6_1);
2880 dev_dbg(hdev->dev, "%s: ---- TG REGISTERS ----\n", prefix);
2881 DUMPREG(HDMI_TG_CMD);
2882 DUMPREG(HDMI_TG_H_FSZ_L);
2883 DUMPREG(HDMI_TG_H_FSZ_H);
2884 DUMPREG(HDMI_TG_HACT_ST_L);
2885 DUMPREG(HDMI_TG_HACT_ST_H);
2886 DUMPREG(HDMI_TG_HACT_SZ_L);
2887 DUMPREG(HDMI_TG_HACT_SZ_H);
2888 DUMPREG(HDMI_TG_V_FSZ_L);
2889 DUMPREG(HDMI_TG_V_FSZ_H);
2890 DUMPREG(HDMI_TG_VSYNC_L);
2891 DUMPREG(HDMI_TG_VSYNC_H);
2892 DUMPREG(HDMI_TG_VSYNC2_L);
2893 DUMPREG(HDMI_TG_VSYNC2_H);
2894 DUMPREG(HDMI_TG_VACT_ST_L);
2895 DUMPREG(HDMI_TG_VACT_ST_H);
2896 DUMPREG(HDMI_TG_VACT_SZ_L);
2897 DUMPREG(HDMI_TG_VACT_SZ_H);
2898 DUMPREG(HDMI_TG_FIELD_CHG_L);
2899 DUMPREG(HDMI_TG_FIELD_CHG_H);
2900 DUMPREG(HDMI_TG_VACT_ST2_L);
2901 DUMPREG(HDMI_TG_VACT_ST2_H);
2902 DUMPREG(HDMI_TG_VACT_ST3_L);
2903 DUMPREG(HDMI_TG_VACT_ST3_H);
2904 DUMPREG(HDMI_TG_VACT_ST4_L);
2905 DUMPREG(HDMI_TG_VACT_ST4_H);
2906 DUMPREG(HDMI_TG_VSYNC_TOP_HDMI_L);
2907 DUMPREG(HDMI_TG_VSYNC_TOP_HDMI_H);
2908 DUMPREG(HDMI_TG_VSYNC_BOT_HDMI_L);
2909 DUMPREG(HDMI_TG_VSYNC_BOT_HDMI_H);
2910 DUMPREG(HDMI_TG_FIELD_TOP_HDMI_L);
2911 DUMPREG(HDMI_TG_FIELD_TOP_HDMI_H);
2912 DUMPREG(HDMI_TG_FIELD_BOT_HDMI_L);
2913 DUMPREG(HDMI_TG_FIELD_BOT_HDMI_H);
2914 DUMPREG(HDMI_TG_3D);
2916 dev_dbg(hdev->dev, "%s: ---- PACKET REGISTERS ----\n", prefix);
2917 DUMPREG(HDMI_AVI_CON);
2918 DUMPREG(HDMI_AVI_HEADER0);
2919 DUMPREG(HDMI_AVI_HEADER1);
2920 DUMPREG(HDMI_AVI_HEADER2);
2921 DUMPREG(HDMI_AVI_CHECK_SUM);
2922 DUMPREG(HDMI_AVI_BYTE(1));
2923 DUMPREG(HDMI_VSI_CON);
2924 DUMPREG(HDMI_VSI_HEADER0);
2925 DUMPREG(HDMI_VSI_HEADER1);
2926 DUMPREG(HDMI_VSI_HEADER2);
2927 for (i = 0; i < 7; ++i)
2928 DUMPREG(HDMI_VSI_DATA(i));