• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1 /*
2  * Copyright (C) 2021 HiSilicon (Shanghai) Technologies CO., LIMITED.
3  *
4  * This program is free software; you can redistribute it and/or
5  * modify it under the terms of the GNU General Public License
6  * as published by the Free Software Foundation; either version 2
7  * of the License, or (at your option) any later version.
8  *
9  * This program is distributed in the hope that it will be useful,
10  * but WITHOUT ANY WARRANTY; without even the implied warranty of
11  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
12  * GNU General Public License for more details.
13  *
14  * You should have received a copy of the GNU General Public License
15  * along with this program; if not, write to the Free Software
16  * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301, USA.
17  */
18 #ifndef __HDMI_REG_VIDEO_PATH_H__
19 #define __HDMI_REG_VIDEO_PATH_H__
20 
21 #include "hi_type.h"
22 
23 typedef union {
24     struct {
25         unsigned int reg_timing_gen_en : 1;  /* [0] */
26         unsigned int reg_extmode       : 1;  /* [1] */
27         unsigned int reg_timing_sel    : 6;  /* [7:2] */
28         unsigned int reg_sync_polarity : 2;  /* [9:8] */
29         unsigned int rsv_0             : 22; /* [31:10] */
30     } bits;
31     unsigned int u32;
32 } timing_gen_ctrl;
33 
34 typedef union {
35     struct {
36         unsigned int hsync_total_count       : 13; /* [12:0] */
37         unsigned int hsync_high_to_low_count : 13; /* [25:13] */
38         unsigned int rsv_1                   : 6;  /* [31:26] */
39     } bits;
40     unsigned int u32;
41 } hsync_timing_config0;
42 
43 typedef union {
44     struct {
45         unsigned int hsync_de_start_count : 13; /* [12:0] */
46         unsigned int hsync_de_end_count   : 13; /* [25:13] */
47         unsigned int rsv_2                : 6;  /* [31:26] */
48     } bits;
49     unsigned int u32;
50 } hsync_timing_config1;
51 
52 typedef union {
53     struct {
54         unsigned int hsync_low_to_high_count : 13; /* [12:0] */
55         unsigned int rsv_3                   : 19; /* [31:13] */
56     } bits;
57     unsigned int u32;
58 } hsync_timing_config2;
59 
60 typedef union {
61     struct {
62         unsigned int vsync_total_count       : 12; /* [11:0] */
63         unsigned int vsync_high_to_low_count : 12; /* [23:12] */
64         unsigned int rsv_4                   : 8;  /* [31:24] */
65     } bits;
66     unsigned int u32;
67 } vsync_timing_config0;
68 
69 typedef union {
70     struct {
71         unsigned int vsync_de_start_count : 12; /* [11:0] */
72         unsigned int vsync_de_end_count   : 12; /* [23:12] */
73         unsigned int rsv_5                : 8;  /* [31:24] */
74     } bits;
75     unsigned int u32;
76 } vsync_timing_config1;
77 
78 typedef union {
79     struct {
80         unsigned int vsync_low_to_high_count : 12; /* [11:0] */
81         unsigned int rsv_6                   : 20; /* [31:12] */
82     } bits;
83     unsigned int u32;
84 } vsync_timing_config2;
85 
86 typedef union {
87     struct {
88         unsigned int reg_video_blank_en   : 1;  /* [0] */
89         unsigned int reg_video_lp_disable : 1;  /* [1] */
90         unsigned int rsv_6                : 30; /* [31:2] */
91     } bits;
92     unsigned int u32;
93 } video_path_ctrl;
94 
95 typedef union {
96     struct {
97         unsigned int tpg_enable          : 1;  /* [0] */
98         unsigned int video_format        : 2;  /* [2:1] */
99         unsigned int solid_pattern_en    : 1;  /* [3] */
100         unsigned int colorbar_en         : 1;  /* [4] */
101         unsigned int square_pattern_en   : 1;  /* [5] */
102         unsigned int mask_pattern_en     : 3;  /* [8:6] */
103         unsigned int replace_pattern_en  : 3;  /* [11:9] */
104         unsigned int bar_pattern_extmode : 1;  /* [12] */
105         unsigned int cbar_pattern_sel    : 2;  /* [14:13] */
106         unsigned int mix_color_en        : 1;  /* [15] */
107         unsigned int increase_en         : 1;  /* [16] */
108         unsigned int rsv_7               : 15; /* [31:17] */
109     } bits;
110     unsigned int u32;
111 } pattern_gen_ctrll;
112 
113 typedef union {
114     struct {
115         unsigned int solid_pattern_cb : 10; /* [9:0] */
116         unsigned int solid_pattern_y  : 10; /* [19:10] */
117         unsigned int solid_pattern_cr : 10; /* [29:20] */
118         unsigned int rsv_8            : 2;  /* [31:30] */
119     } bits;
120     unsigned int u32;
121 } solid_pattern_config;
122 
123 typedef union {
124     struct {
125         unsigned int mask_pattern_cb : 10; /* [9:0] */
126         unsigned int mask_pattern_y  : 10; /* [19:10] */
127         unsigned int mask_pattern_cr : 10; /* [29:20] */
128         unsigned int rsv_9           : 2;  /* [31:30] */
129     } bits;
130     unsigned int u32;
131 } mask_pattern_config;
132 
133 typedef union {
134     struct {
135         unsigned int colorbar_width : 12; /* [11:0] */
136         unsigned int square_height  : 12; /* [23:12] */
137         unsigned int rsv_10         : 8;  /* [31:24] */
138     } bits;
139     unsigned int u32;
140 } bar_ext_config;
141 
142 typedef union {
143     struct {
144         unsigned int bar_pattern_a0 : 30; /* [29:0] */
145         unsigned int rsv_11         : 2;  /* [31:30] */
146     } bits;
147     unsigned int u32;
148 } cbar_pattern_a0;
149 
150 typedef union {
151     struct {
152         unsigned int bar_pattern_a1 : 30; /* [29:0] */
153         unsigned int rsv_12         : 2;  /* [31:30] */
154     } bits;
155     unsigned int u32;
156 } cbar_pattern_a1;
157 
158 typedef union {
159     struct {
160         unsigned int bar_pattern_a2 : 30; /* [29:0] */
161         unsigned int rsv_13         : 2;  /* [31:30] */
162     } bits;
163     unsigned int u32;
164 } cbar_pattern_a2;
165 
166 typedef union {
167     struct {
168         unsigned int bar_pattern_a3 : 30; /* [29:0] */
169         unsigned int rsv_14         : 2;  /* [31:30] */
170     } bits;
171     unsigned int u32;
172 } cbar_pattern_a3;
173 
174 typedef union {
175     struct {
176         unsigned int bar_pattern_a4 : 30; /* [29:0] */
177         unsigned int rsv_15         : 2;  /* [31:30] */
178     } bits;
179     unsigned int u32;
180 } cbar_pattern_a4;
181 
182 typedef union {
183     struct {
184         unsigned int bar_pattern_a5 : 30; /* [29:0] */
185         unsigned int rsv_16         : 2;  /* [31:30] */
186     } bits;
187     unsigned int u32;
188 } cbar_pattern_a5;
189 
190 typedef union {
191     struct {
192         unsigned int bar_pattern_a6 : 30; /* [29:0] */
193         unsigned int rsv_17         : 2;  /* [31:30] */
194     } bits;
195     unsigned int u32;
196 } cbar_pattern_a6;
197 
198 typedef union {
199     struct {
200         unsigned int bar_pattern_a7 : 30; /* [29:0] */
201         unsigned int rsv_18         : 2;  /* [31:30] */
202     } bits;
203     unsigned int u32;
204 } cbar_pattern_a7;
205 
206 typedef union {
207     struct {
208         unsigned int bar_pattern_b0 : 30; /* [29:0] */
209         unsigned int rsv_19         : 2;  /* [31:30] */
210     } bits;
211     unsigned int u32;
212 } cbar_pattern_b0;
213 
214 typedef union {
215     struct {
216         unsigned int bar_pattern_b1 : 30; /* [29:0] */
217         unsigned int rsv_20         : 2;  /* [31:30] */
218     } bits;
219     unsigned int u32;
220 } cbar_pattern_b1;
221 
222 typedef union {
223     struct {
224         unsigned int bar_pattern_b2 : 30; /* [29:0] */
225         unsigned int rsv_21         : 2;  /* [31:30] */
226     } bits;
227     unsigned int u32;
228 } cbar_pattern_b2;
229 
230 typedef union {
231     struct {
232         unsigned int bar_pattern_b3 : 30; /* [29:0] */
233         unsigned int rsv_22         : 2;  /* [31:30] */
234     } bits;
235     unsigned int u32;
236 } cbar_pattern_b3;
237 
238 typedef union {
239     struct {
240         unsigned int bar_pattern_b4 : 30; /* [29:0] */
241         unsigned int rsv_23         : 2;  /* [31:30] */
242     } bits;
243     unsigned int u32;
244 } cbar_pattern_b4;
245 
246 typedef union {
247     struct {
248         unsigned int bar_pattern_b5 : 30; /* [29:0] */
249         unsigned int rsv_24         : 2;  /* [31:30] */
250     } bits;
251     unsigned int u32;
252 } cbar_pattern_b5;
253 
254 typedef union {
255     struct {
256         unsigned int bar_pattern_b6 : 30; /* [29:0] */
257         unsigned int rsv_25         : 2;  /* [31:30] */
258     } bits;
259     unsigned int u32;
260 } cbar_pattern_b6;
261 
262 typedef union {
263     struct {
264         unsigned int bar_pattern_b7 : 30; /* [29:0] */
265         unsigned int rsv_26         : 2;  /* [31:30] */
266     } bits;
267     unsigned int u32;
268 } cbar_pattern_b7;
269 
270 typedef union {
271     struct {
272         unsigned int sync_polarity_force  : 1;  /* [0] */
273         unsigned int hsync_polarity_value : 1;  /* [1] */
274         unsigned int vsync_polarity_value : 1;  /* [2] */
275         unsigned int fdt_status_clear     : 1;  /* [3] */
276         unsigned int pixel_cnt_threhold   : 4;  /* [7:4] */
277         unsigned int rsv_27               : 24; /* [31:8] */
278     } bits;
279     unsigned int u32;
280 } format_det_config;
281 
282 typedef union {
283     struct {
284         unsigned int interlaced     : 1;  /* [0] */
285         unsigned int hsync_polarity : 1;  /* [1] */
286         unsigned int vsync_polarity : 1;  /* [2] */
287         unsigned int rsv_28         : 29; /* [31:3] */
288     } bits;
289     unsigned int u32;
290 } fdet_status;
291 
292 typedef union {
293     struct {
294         unsigned int hsync_active_cnt : 13; /* [12:0] */
295         unsigned int hsync_total_cnt  : 13; /* [25:13] */
296         unsigned int rsv_29           : 6;  /* [31:26] */
297     } bits;
298     unsigned int u32;
299 } fdet_hori_res;
300 
301 typedef union {
302     struct {
303         unsigned int vsync_active_cnt : 13; /* [12:0] */
304         unsigned int vsync_total_cnt  : 13; /* [25:13] */
305         unsigned int rsv_30           : 6;  /* [31:26] */
306     } bits;
307     unsigned int u32;
308 } fdet_hori_vert_res;
309 
310 typedef union {
311     struct {
312         unsigned int dither_rnd_byp      : 1;  /* [0] */
313         unsigned int dither_mode         : 2;  /* [2:1] */
314         unsigned int dither_rnd_en       : 1;  /* [3] */
315         unsigned int dither_spatial_en   : 1;  /* [4] */
316         unsigned int dither_spatial_dual : 1;  /* [5] */
317         unsigned int rsv_31              : 26; /* [31:6] */
318     } bits;
319     unsigned int u32;
320 } dither_config;
321 
322 typedef union {
323     struct {
324         unsigned int range_clip_byp : 1;  /* [0] */
325         unsigned int clip_rgb_mode  : 1;  /* [1] */
326         unsigned int rsv_32         : 30; /* [31:2] */
327     } bits;
328     unsigned int u32;
329 } clip_ctrl;
330 
331 typedef union {
332     struct {
333         unsigned int clip_y_min : 12; /* [11:0] */
334         unsigned int clip_y_max : 12; /* [23:12] */
335         unsigned int rsv_33     : 8;  /* [31:24] */
336     } bits;
337     unsigned int u32;
338 } clip_y_config;
339 
340 typedef union {
341     struct {
342         unsigned int clip_c_min : 12; /* [11:0] */
343         unsigned int clip_c_max : 12; /* [23:12] */
344         unsigned int rsv_34     : 8;  /* [31:24] */
345     } bits;
346     unsigned int u32;
347 } clip_c_config;
348 
349 typedef union {
350     struct {
351         unsigned int auto_trigger_en : 1;  /* [0] */
352         unsigned int soft_trigger_en : 1;  /* [1] */
353         unsigned int show_point_en   : 1;  /* [2] */
354         unsigned int rsv_35          : 1;  /* [3] */
355         unsigned int cap_stat_done   : 1;  /* [4] */
356         unsigned int cap_stat_busy   : 1;  /* [5] */
357         unsigned int cap_stat_error  : 1;  /* [6] */
358         unsigned int rsv_36          : 25; /* [31:7] */
359     } bits;
360     unsigned int u32;
361 } pxl_cap_ctrl;
362 
363 typedef union {
364     struct {
365         unsigned int cap_pixel_position : 13; /* [12:0] */
366         unsigned int cap_line_position  : 13; /* [25:13] */
367         unsigned int rsv_37             : 6;  /* [31:26] */
368     } bits;
369     unsigned int u32;
370 } pxl_cap_position;
371 
372 typedef union {
373     struct {
374         unsigned int capture_y_value : 12; /* [11:0] */
375         unsigned int rsv_38          : 20; /* [31:12] */
376     } bits;
377     unsigned int u32;
378 } cap_y_value;
379 
380 typedef union {
381     struct {
382         unsigned int capture_cb_value : 12; /* [11:0] */
383         unsigned int rsv_39           : 20; /* [31:12] */
384     } bits;
385     unsigned int u32;
386 } cap_cb_value;
387 
388 typedef union {
389     struct {
390         unsigned int capture_cr_value : 12; /* [11:0] */
391         unsigned int rsv_40           : 20; /* [31:12] */
392     } bits;
393     unsigned int u32;
394 } cap_cr_value;
395 
396 typedef union {
397     struct {
398         unsigned int reg_csc_en          : 1;  /* [0] */
399         unsigned int reg_csc_coef_ext    : 1;  /* [1] */
400         unsigned int reg_csc_dither_en   : 1;  /* [2] */
401         unsigned int reg_csc_saturate_en : 1;  /* [3] */
402         unsigned int reg_csc_mode        : 8;  /* [11:4] */
403         unsigned int rsv_41              : 20; /* [31:12] */
404     } bits;
405     unsigned int u32;
406 } multi_csc_ctrl;
407 
408 typedef union {
409     struct {
410         unsigned int reg_csc_r1c1 : 16; /* [15:0] */
411         unsigned int rsv_42       : 16; /* [31:16] */
412     } bits;
413     unsigned int u32;
414 } multi_csc_coeff11;
415 
416 typedef union {
417     struct {
418         unsigned int reg_csc_r1c2 : 16; /* [15:0] */
419         unsigned int rsv_43       : 16; /* [31:16] */
420     } bits;
421     unsigned int u32;
422 } multi_csc_coeff12;
423 
424 typedef union {
425     struct {
426         unsigned int reg_csc_r1c3 : 16; /* [15:0] */
427         unsigned int rsv_44       : 16; /* [31:16] */
428     } bits;
429     unsigned int u32;
430 } multi_csc_coeff13;
431 
432 typedef union {
433     struct {
434         unsigned int reg_csc_r2c1 : 16; /* [15:0] */
435         unsigned int rsv_45       : 16; /* [31:16] */
436     } bits;
437     unsigned int u32;
438 } multi_csc_coeff21;
439 
440 typedef union {
441     struct {
442         unsigned int reg_csc_r2c2 : 16; /* [15:0] */
443         unsigned int rsv_46       : 16; /* [31:16] */
444     } bits;
445     unsigned int u32;
446 } multi_csc_coeff22;
447 
448 typedef union {
449     struct {
450         unsigned int reg_csc_r2c3 : 16; /* [15:0] */
451         unsigned int rsv_47       : 16; /* [31:16] */
452     } bits;
453     unsigned int u32;
454 } multi_csc_coeff23;
455 
456 typedef union {
457     struct {
458         unsigned int reg_csc_r3c1 : 16; /* [15:0] */
459         unsigned int rsv_48       : 16; /* [31:16] */
460     } bits;
461     unsigned int u32;
462 } multi_csc_coeff31;
463 
464 typedef union {
465     struct {
466         unsigned int reg_csc_r3c2 : 16; /* [15:0] */
467         unsigned int rsv_49       : 16; /* [31:16] */
468     } bits;
469     unsigned int u32;
470 } multi_csc_coeff32;
471 
472 typedef union {
473     struct {
474         unsigned int reg_csc_r3c3 : 16; /* [15:0] */
475         unsigned int rsv_50       : 16; /* [31:16] */
476     } bits;
477     unsigned int u32;
478 } multi_csc_coeff33;
479 
480 typedef union {
481     struct {
482         unsigned int reg_csc_inoffset_y : 13; /* [12:0] */
483         unsigned int rsv_51             : 19; /* [31:13] */
484     } bits;
485     unsigned int u32;
486 } multi_csc_inoffset_y;
487 
488 typedef union {
489     struct {
490         unsigned int reg_csc_inoffset_cb : 13; /* [12:0] */
491         unsigned int rsv_52              : 19; /* [31:13] */
492     } bits;
493     unsigned int u32;
494 } multi_csc_inoffset_cb;
495 
496 typedef union {
497     struct {
498         unsigned int reg_csc_inoffset_cr : 13; /* [12:0] */
499         unsigned int rsv_53              : 19; /* [31:13] */
500     } bits;
501     unsigned int u32;
502 } multi_csc_inoffset_cr;
503 
504 typedef union {
505     struct {
506         unsigned int reg_csc_outoffset_y : 13; /* [12:0] */
507         unsigned int rsv_54              : 19; /* [31:13] */
508     } bits;
509     unsigned int u32;
510 } multi_csc_outoffset_y;
511 
512 typedef union {
513     struct {
514         unsigned int reg_csc_outoffset_cb : 13; /* [12:0] */
515         unsigned int rsv_55               : 19; /* [31:13] */
516     } bits;
517     unsigned int u32;
518 } multi_csc_outoffset_cb;
519 
520 typedef union {
521     struct {
522         unsigned int reg_csc_outoffset_cr : 13; /* [12:0] */
523         unsigned int rsv_56               : 19; /* [31:13] */
524     } bits;
525     unsigned int u32;
526 } multi_csc_outoffset_cr;
527 
528 typedef union {
529     struct {
530         unsigned int reg_dwsm_hori_en   : 1;  /* [0] */
531         unsigned int reg_hori_filter_en : 1;  /* [1] */
532         unsigned int reg_dwsm_vert_en   : 1;  /* [2] */
533         unsigned int reg_dwsm_vert_byp  : 1;  /* [3] */
534         unsigned int reg_vert_cbcr_sel  : 1;  /* [4] */
535         unsigned int rsv_57             : 27; /* [31:5] */
536     } bits;
537     unsigned int u32;
538 } video_dwsm_ctrl;
539 
540 typedef union {
541     struct {
542         unsigned int reg_demux_420_en     : 1;  /* [0] */
543         unsigned int reg_ddr_en           : 1;  /* [1] */
544         unsigned int reg_yc_mux_en        : 1;  /* [2] */
545         unsigned int reg_blank_replace_en : 1;  /* [3] */
546         unsigned int reg_pixel_rate       : 2;  /* [5:4] */
547         unsigned int reg_ddr_polarity     : 1;  /* [6] */
548         unsigned int reg_yc_mux_polarity  : 1;  /* [7] */
549         unsigned int reg_cbcr_order       : 1;  /* [8] */
550         unsigned int reg_demux_cb_or_cr   : 1;  /* [9] */
551         unsigned int reg_pxl_div_en       : 1;  /* [10] */
552         unsigned int rsv_58               : 21; /* [31:11] */
553     } bits;
554     unsigned int u32;
555 } data_align_ctrl;
556 
557 typedef union {
558     struct {
559         unsigned int reg_blank_y : 12; /* [11:0] */
560         unsigned int rsv_59      : 20; /* [31:12] */
561     } bits;
562     unsigned int u32;
563 } blank_data_y;
564 
565 typedef union {
566     struct {
567         unsigned int reg_blank_cb : 12; /* [11:0] */
568         unsigned int rsv_60       : 20; /* [31:12] */
569     } bits;
570     unsigned int u32;
571 } blank_data_cb;
572 
573 typedef union {
574     struct {
575         unsigned int reg_blank_cr : 12; /* [11:0] */
576         unsigned int rsv_61       : 20; /* [31:12] */
577     } bits;
578     unsigned int u32;
579 } blank_data_cr;
580 
581 typedef union {
582     struct {
583         unsigned int reg_vmux_y_sel  : 3; /* [2:0] */
584         unsigned int reg_vmux_cb_sel : 3; /* [5:3] */
585         unsigned int reg_vmux_cr_sel : 3; /* [8:6] */
586         unsigned int reg_bitmask_y   : 2; /* [10:9] */
587         unsigned int reg_bitmask_cb  : 2; /* [12:11] */
588         unsigned int reg_bitmask_cr  : 2; /* [14:13] */
589         unsigned int reg_bitrev_en   : 3; /* [17:15] */
590         unsigned int reg_datamask_en : 3; /* [20:18] */
591         unsigned int reg_syncmask_en : 4; /* [24:21] */
592         unsigned int reg_inver_sync  : 4; /* [28:25] */
593         unsigned int rsv_62          : 3; /* [31:29] */
594     } bits;
595     unsigned int u32;
596 } video_dmux_ctrl;
597 
598 typedef struct {
599     volatile timing_gen_ctrl        tim_gen_ctrl;           /* 800 */
600     volatile hsync_timing_config0   hsync_timing_cfg0;      /* 804 */
601     volatile hsync_timing_config1   hsync_timing_cfg1;      /* 808 */
602     volatile hsync_timing_config2   hsync_timing_cfg2;      /* 80C */
603     volatile vsync_timing_config0   vsync_timing_cfg0;      /* 810 */
604     volatile vsync_timing_config1   vsync_timing_cfg1;      /* 814 */
605     volatile vsync_timing_config2   vsync_timing_cfg2;      /* 818 */
606     unsigned int                    reserved_0[5];          /* 81C-82C */
607     volatile video_path_ctrl        vid_path_ctrl;          /* 830 */
608     unsigned int                    reserved_1[3];          /* 834-83c */
609     volatile pattern_gen_ctrll      ptn_gen_ctrl;           /* 840 */
610     volatile solid_pattern_config   solid_ptn_ctrl;         /* 844 */
611     volatile mask_pattern_config    mask_ptn_ctrl;          /* 848 */
612     volatile bar_ext_config         bar_ext_cfg;            /* 84C */
613     volatile cbar_pattern_a0        cbar_a0;                /* 850 */
614     volatile cbar_pattern_a1        cbar_a1;                /* 854 */
615     volatile cbar_pattern_a2        cbar_a2;                /* 858 */
616     volatile cbar_pattern_a3        cbar_a3;                /* 85C */
617     volatile cbar_pattern_a4        cbar_a4;                /* 860 */
618     volatile cbar_pattern_a5        cbar_a5;                /* 864 */
619     volatile cbar_pattern_a6        cbar_a6;                /* 868 */
620     volatile cbar_pattern_a7        cbar_a7;                /* 86C */
621     volatile cbar_pattern_b0        cbar_b0;                /* 870 */
622     volatile cbar_pattern_b1        cbar_b1;                /* 874 */
623     volatile cbar_pattern_b2        cbar_b2;                /* 878 */
624     volatile cbar_pattern_b3        cbar_b3;                /* 87C */
625     volatile cbar_pattern_b4        cbar_b4;                /* 880 */
626     volatile cbar_pattern_b5        cbar_b5;                /* 884 */
627     volatile cbar_pattern_b6        cbar_b6;                /* 888 */
628     volatile cbar_pattern_b7        cbar_b7;                /* 88C */
629     unsigned int                    reserved_2[10];         /* 890-8B4 */
630     volatile format_det_config      fmt_det_cfg;            /* 8B8 */
631     volatile fdet_status            fmt_dect_status;        /* 8BC */
632     volatile fdet_hori_res          fmt_dect_hori_res;      /* 8C0 */
633     volatile fdet_hori_vert_res     fmt_dect_hori_vert_res; /* 8C4 */
634     unsigned int                    reserved_3[9];          /* 8C8-8E8 */
635     volatile dither_config          dither_cfg;             /* 8EC */
636     unsigned int                    reserved_4[2];          /* 8F0-8F4 */
637     volatile clip_ctrl              clip_ctrl;              /* 8F8 */
638     volatile clip_y_config          clip_y_cfg;             /* 8FC */
639     volatile clip_c_config          clip_c_cfg;             /* 900 */
640     unsigned int                    reserved_5[2];          /* 904-908 */
641     volatile pxl_cap_ctrl           capture_ctrl;           /* 90C */
642     volatile pxl_cap_position       capture_cfg;            /* 910 */
643     volatile cap_y_value            pxl_y_capture;          /* 914 */
644     volatile cap_cb_value           pxl_cb_capture;         /* 918 */
645     volatile cap_cr_value           pxl_cr_capture;         /* 91C */
646     unsigned int                    reserved_6[5];          /* 920-930 */
647     volatile multi_csc_ctrl         csc_ctrl;               /* 934 */
648     volatile multi_csc_coeff11      csc_coeff11;            /* 938 */
649     volatile multi_csc_coeff12      csc_coeff12;            /* 93C */
650     volatile multi_csc_coeff13      csc_coeff13;            /* 940 */
651     volatile multi_csc_coeff21      csc_coeff21;            /* 944 */
652     volatile multi_csc_coeff22      csc_coeff22;            /* 948 */
653     volatile multi_csc_coeff23      csc_coeff23;            /* 94C */
654     volatile multi_csc_coeff31      csc_coeff31;            /* 950 */
655     volatile multi_csc_coeff32      csc_coeff32;            /* 954 */
656     volatile multi_csc_coeff33      csc_coeff33;            /* 958 */
657     volatile multi_csc_inoffset_y   y_in_offset;            /* 95C */
658     volatile multi_csc_inoffset_cb  cb_in_offset;           /* 960 */
659     volatile multi_csc_inoffset_cr  cr_in_offset;           /* 964 */
660     volatile multi_csc_outoffset_y  y_out_offset;           /* 968 */
661     volatile multi_csc_outoffset_cb cb_out_offset;          /* 96C */
662     volatile multi_csc_outoffset_cr cr_out_offset;          /* 970 */
663     unsigned int                    reserved_7[3];          /* 974-97c */
664     volatile video_dwsm_ctrl        dwsm_ctrl;              /* 980 */
665     unsigned int                    reserved_8[2];          /* 984-988 */
666     volatile data_align_ctrl        align_ctrl;             /* 98C */
667     volatile blank_data_y           blk_data_y;             /* 990 */
668     volatile blank_data_cb          blk_data_cb;            /* 994 */
669     volatile blank_data_cr          blk_data_cr;            /* 998 */
670     unsigned int                    reserved_9[3];         /* 99C-9A4 */
671     volatile video_dmux_ctrl        dmux_ctrl;              /* 9A8 */
672 } video_path_reg_regs_type;
673 
674 int hdmi_reg_video_path_regs_init(hi_char *addr);
675 int hdmi_reg_video_path_regs_deinit(void);
676 int hdmi_reg_timing_gen_en_set(unsigned int reg_timing_gen_en);
677 hi_u32 hdmi_reg_timing_gen_en_get(hi_void);
678 int hdmi_reg_extmode_set(unsigned int reg_extmode);
679 hi_u32 hdmi_reg_extmode_get(hi_void);
680 int hdmi_reg_timing_sel_set(unsigned int reg_timing_sel);
681 hi_u32 hdmi_reg_timing_sel_get(hi_void);
682 int hdmi_reg_sync_polarity_set(unsigned int reg_sync_polarity);
683 hi_u32 hdmi_reg_sync_polarity_get(hi_void);
684 int hdmi_reg_video_blank_en_set(unsigned int reg_video_blank_en);
685 hi_u32 hdmi_reg_video_blank_en_get(hi_void);
686 int hdmi_reg_video_lp_disable_set(unsigned int reg_video_lp_disable);
687 int hdmi_reg_video_format_set(unsigned int video_format);
688 hi_u32 hdmi_reg_video_format_get(hi_void);
689 int hdmi_reg_solid_pattern_en_set(unsigned int solid_pattern_en);
690 hi_u32 hdmi_reg_solid_pattern_en_get(hi_void);
691 int hdmi_reg_colorbar_en_set(unsigned int colorbar_en);
692 hi_u32 hdmi_reg_colorbar_en_get(hi_void);
693 int hdmi_reg_square_pattern_en_set(unsigned int square_pattern_en);
694 hi_u32 hdmi_reg_square_pattern_en_get(hi_void);
695 int hdmi_reg_mask_pattern_en_set(unsigned int mask_pattern_en);
696 hi_u32 hdmi_reg_mask_pattern_en_get(hi_void);
697 int hdmi_reg_cbar_pattern_sel_set(unsigned int cbar_pattern_sel);
698 int hdmi_reg_solid_pattern_cb_set(unsigned int solid_pattern_cb);
699 int hdmi_reg_solid_pattern_y_set(unsigned int solid_pattern_y);
700 int hdmi_reg_solid_pattern_cr_set(unsigned int solid_pattern_cr);
701 int hdmi_reg_sync_polarity_force_set(unsigned int sync_polarity_force);
702 int hdmi_reg_fdt_status_clear_set(unsigned int fdt_status_clear);
703 hi_u32 hdmi_reg_interlaced_get(hi_void);
704 hi_u32 hdmi_reg_hsync_polarity_get(hi_void);
705 hi_u32 hdmi_reg_vsync_polarity_get(hi_void);
706 hi_u32 hdmi_reg_hsync_active_cnt_get(hi_void);
707 hi_u32 hdmi_reg_hsync_total_cnt_get(hi_void);
708 hi_u32 hdmi_reg_vsync_active_cnt_get(hi_void);
709 hi_u32 hdmi_reg_vsync_total_cnt_get(hi_void);
710 int hdmi_reg_dither_rnd_bypass_set(unsigned int dither_rnd_byp);
711 hi_u32 hdmi_reg_dither_rnd_bypass_get(hi_void);
712 int hdmi_reg_dither_mode_set(unsigned int dither_mode);
713 hi_u32 hdmi_reg_dither_mode_get(hi_void);
714 int hdmi_reg_csc_en_set(unsigned int reg_csc_en);
715 hi_u32 hdmi_reg_csc_en_get(hi_void);
716 int hdmi_reg_csc_saturate_en_set(unsigned int reg_csc_saturate_en);
717 int hdmi_reg_csc_mode_set(unsigned int reg_csc_mode);
718 hi_u32 hdmi_reg_csc_mode_get(hi_void);
719 int hdmi_reg_dwsm_hori_en_set(unsigned int reg_dwsm_hori_en);
720 hi_u32 hdmi_reg_dwsm_hori_en_get(hi_void);
721 int hdmi_reg_hori_filter_en_set(unsigned int reg_hori_filter_en);
722 hi_u32 hdmi_reg_hori_filter_en_get(hi_void);
723 int hdmi_reg_dwsm_vert_en_set(unsigned int reg_dwsm_vert_en);
724 hi_u32 hdmi_reg_dwsm_vert_en_get(hi_void);
725 int hdmi_reg_dwsm_vert_bypass_set(unsigned int reg_dwsm_vert_byp);
726 hi_u32 hdmi_reg_dwsm_vert_bypass_get(hi_void);
727 int hdmi_reg_demux_420_en_set(unsigned int reg_demux_420_en);
728 hi_u32 hdmi_reg_demux_420_en_get(hi_void);
729 int hdmi_reg_pxl_div_en_set(unsigned int reg_pxl_div_en);
730 hi_u32 hdmi_reg_pxl_div_en_get(hi_void);
731 int hdmi_reg_vmux_y_sel_set(unsigned int reg_vmux_y_sel);
732 hi_u32 hdmi_reg_vmux_y_sel_get(hi_void);
733 int hdmi_reg_vmux_cb_sel_set(unsigned int reg_vmux_cb_sel);
734 hi_u32 hdmi_reg_vmux_cb_sel_get(hi_void);
735 int hdmi_reg_vmux_cr_sel_set(unsigned int reg_vmux_cr_sel);
736 hi_u32 hdmi_reg_vmux_cr_sel_get(hi_void);
737 int hdmi_reg_syncmask_en_set(unsigned int reg_syncmask_en);
738 int hdmi_reg_inver_sync_set(unsigned int reg_inver_sync);
739 hi_u32 hdmi_reg_inver_sync_get(hi_void);
740 
741 #endif  /* __HDMI_REG_VIDEO_PATH_H__ */
742 
743