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