singe/thirdparty/rockchip-mpp/mpp/vproc/vdpp/vdpp2_reg.h
2026-09-10 20:17:28 -05:00

1346 lines
39 KiB
C

/* SPDX-License-Identifier: Apache-2.0 OR MIT */
/*
* Copyright (c) 2024 Rockchip Electronics Co., Ltd.
*/
#ifndef VDPP2_REG_H
#define VDPP2_REG_H
#include "vdpp_reg.h"
#define VDPP2_REG_OFF_DMSR (0x0080) // 0x1080
#define VDPP2_REG_OFF_DCI_HIST (0x00E0) // 0x10E0
#define VDPP2_REG_OFF_ES (0x0100) // 0x1100
#define VDPP2_REG_OFF_SHARP (0x0200) // 0x1200
#define VDPP2_REG_OFF_YRGB_HOR_COE (0x2000)
#define VDPP2_REG_OFF_YRGB_VER_COE (0x2200)
#define VDPP2_REG_OFF_CBCR_HOR_COE (0x2400)
#define VDPP2_REG_OFF_CBCR_VER_COE (0x2600)
#define VDPP2_REG_OFF_ZME_COMMON (0x2800)
typedef struct vdpp2_com2_reg {
struct {
RK_U32 sw_vep_frm_en : 1;
} reg0; // 0x0000
struct {
RK_U32 sw_vep_src_fmt : 2;
RK_U32 sw_reserved_1 : 2;
RK_U32 sw_vep_src_yuv_swap : 2;
RK_U32 sw_reserved_2 : 2;
RK_U32 sw_vep_dst_fmt : 2;
RK_U32 sw_vep_yuvout_diff_en : 1;
RK_U32 sw_reserved_3 : 1;
RK_U32 sw_vep_dst_yuv_swap : 2;
RK_U32 sw_reserved_4 : 2;
RK_U32 sw_vep_debug_data_en : 1;
RK_U32 sw_reserved_5 : 3;
RK_U32 sw_vep_rst_protect_dis : 1;
RK_U32 sys_vep_sreset_p : 1;
RK_U32 sw_vep_init_dis : 1;
RK_U32 sw_reserved_6 : 1;
RK_U32 sw_vep_dbmsr_en : 1;
RK_U32 sw_dci_en : 1;
} reg1; // 0x0004
struct {
RK_U32 sw_vdpp_working_mode : 2;
} reg2; // 0x0008
struct {
RK_U32 sw_vep_arqos_en : 1;
RK_U32 sw_vep_awqos_en : 1;
RK_U32 sw_reserved_1 : 2;
RK_U32 sw_ar_mmu_qos3 : 4;
} reg3; // 0x000C
struct {
RK_U32 sw_vep_clk_on : 1;
RK_U32 sw_md_clk_on : 1;
RK_U32 sw_dect_clk_on : 1;
RK_U32 sw_me_clk_on : 1;
RK_U32 sw_mc_clk_on : 1;
RK_U32 sw_eedi_clk_on : 1;
RK_U32 sw_ble_clk_on : 1;
RK_U32 sw_out_clk_on : 1;
RK_U32 sw_ctrl_clk_on : 1;
RK_U32 sw_ram_clk_on : 1;
RK_U32 sw_dma_clk_on : 1;
RK_U32 sw_reg_clk_on : 1;
} reg4; // 0x0010
struct {
RK_U32 ro_arst_finish_done : 1;
} reg5; // 0x0014
struct {
RK_U32 sw_ar_y_qos1 : 4;
RK_U32 sw_ar_y_qos2 : 4;
RK_U32 sw_ar_uv_qos1 : 4;
RK_U32 sw_ar_uv_qos2 : 4;
} reg6; // 0x0018
struct {
RK_U32 sw_aw_id7_qos : 4;
RK_U32 sw_aw_id8_qos : 4;
RK_U32 sw_aw_id9_qos : 4;
RK_U32 sw_aw_id10_qos : 4;
} reg7; // 0x001c
struct {
RK_U32 sw_vep_frm_done_en : 1;
RK_U32 sw_vep_osd_max_en : 1;
RK_U32 sw_reserved_1 : 2;
RK_U32 sw_vep_bus_error_en : 1;
RK_U32 sw_vep_timeout_int_en : 1;
RK_U32 sw_vep_config_error_en : 1;
} reg8; // 0x0020
struct {
RK_U32 sw_vep_frm_done_clr : 1;
RK_U32 sw_vep_osd_max_clr : 1;
RK_U32 sw_reserved_1 : 2;
RK_U32 sw_vep_bus_error_clr : 1;
RK_U32 sw_vep_timeout_int_clr : 1;
RK_U32 sw_vep_config_error_clr : 1;
} reg9; // 0x0024
struct {
RK_U32 ro_frm_done_sts : 1;
RK_U32 ro_osd_max_sts : 1;
RK_U32 sw_reserved_1 : 2;
RK_U32 ro_bus_error_sts : 1;
RK_U32 ro_timeout_sts : 1;
RK_U32 ro_config_error_sts : 1;
} reg10; // 0x0028, read only
struct {
RK_U32 ro_frm_done_raw : 1;
RK_U32 ro_osd_max_raw : 1;
RK_U32 sw_reserved_1 : 2;
RK_U32 ro_bus_error_raw : 1;
RK_U32 ro_timeout_raw : 1;
RK_U32 ro_config_error_raw : 1;
} reg11; // 0x002C, read only
struct {
RK_U32 sw_vep_src_vir_y_stride : 16;
} reg12; // 0x0030
struct {
RK_U32 sw_vep_dst_vir_y_stride : 16;
RK_U32 sw_vep_dst_vir_c_stride : 16;
} reg13; // 0x0034
struct {
RK_U32 sw_vep_src_pic_width : 11;
RK_U32 sw_reserved_1 : 1;
RK_U32 sw_vep_src_right_redundant : 4;
RK_U32 sw_vep_src_pic_height : 11;
RK_U32 sw_reserved_2 : 1;
RK_U32 sw_vep_src_down_redundant : 3;
} reg14; // 0x0038
struct {
RK_U32 sw_vep_dst_pic_width : 11;
RK_U32 sw_reserved_1 : 1;
RK_U32 sw_vep_dst_right_redundant : 4;
RK_U32 sw_vep_dst_pic_height : 11;
} reg15; // 0x003C
struct {
RK_U32 sw_vep_dst_pic_width_c : 11;
RK_U32 reserved1 : 1;
RK_U32 sw_vep_dst_right_redundant_c : 4;
RK_U32 sw_vep_dst_pic_height_c : 11;
} reg16; // 0x0040
RK_U32 reg17; // 0x0044
RK_U32 reg18; // 0x0048
RK_U32 reg19; // 0x004C
struct {
RK_U32 sw_vep_timeout_cnt : 31;
RK_U32 sw_vep_timeout_en : 1;
} reg20; // 0x0050
struct {
RK_U32 svnbuild : 20;
RK_U32 minor : 8;
RK_U32 major : 4;
} reg21; // 0x0054
struct {
RK_U32 dbg_frm_cnt : 16;
} reg22; // 0x0058
RK_U32 reg23; // 0x005C
struct {
RK_U32 sw_vep_src_addr_y : 32;
} reg24; // 0x0060
struct {
RK_U32 sw_vep_src_addr_uv : 32;
} reg25; // 0x0064
struct {
RK_U32 sw_vep_dst_addr_y : 32;
} reg26; // 0x0068
struct {
RK_U32 sw_vep_dst_addr_uv : 32;
} reg27; // 0x006C
} RegCom2; // 0x0000 ~ 0x006C, 28 regs
typedef struct vdpp2_hist_reg {
struct {
RK_U32 sw_dci_yrgb_addr : 32;
} reg0; // 0x00E0
struct {
RK_U32 sw_dci_yrgb_vir_stride : 16;
RK_U32 sw_dci_yrgb_gather_num : 4;
RK_U32 sw_dci_yrgb_gather_en : 1;
} reg1; // 0x00E4
struct {
RK_U32 sw_vep_src_pic_width : 12;
RK_U32 reserved1 : 4;
RK_U32 sw_vep_src_pic_height : 12;
} reg2; // 0x00E8
struct {
RK_U32 sw_dci_data_format : 3;
RK_U32 sw_dci_csc_range : 1;
RK_U32 sw_dci_vsd_mode : 2;
RK_U32 sw_dci_hsd_mode : 1;
RK_U32 sw_dci_alpha_swap : 1;
RK_U32 sw_dci_rb_swap : 1;
RK_U32 reserved1 : 7;
RK_U32 sw_dci_blk_hsize : 8;
RK_U32 sw_dci_blk_vsize : 8;
} reg3; // 0x00EC
struct {
RK_U32 sw_dci_hist_addr : 32;
} reg4; // 0x00F0
} RegHist; // 0x10E0 -> 0x00F0, 5 regs
typedef struct vdpp2_es_reg {
struct {
RK_U32 es_enable : 1;
} reg0; // 0x0100
struct {
RK_U32 flat_th : 8;
RK_U32 dir_th : 8;
} reg1; // 0x0104
struct {
RK_U32 tan_hi_th : 9;
RK_U32 reserved1 : 7;
RK_U32 tan_lo_th : 9;
} reg2; // 0x0108
struct {
RK_U32 ep_chk_en : 1;
RK_U32 reserved1 : 7;
RK_U32 mem_gat_en : 1;
} reg3; // 0x010C
struct {
RK_U32 diff_gain0 : 16;
RK_U32 diff_limit : 16;
} reg4; // 0x0110
struct {
RK_U32 lut_x0 : 16;
RK_U32 diff_gain1 : 16;
} reg5; // 0x0114
struct {
RK_U32 lut_x2 : 16;
RK_U32 lut_x1 : 16;
} reg6; // 0x0118
struct {
RK_U32 lut_x4 : 16;
RK_U32 lut_x3 : 16;
} reg7; // 0x011C
struct {
RK_U32 lut_x6 : 16;
RK_U32 lut_x5 : 16;
} reg8; // 0x0120
struct {
RK_U32 lut_x8 : 16;
RK_U32 lut_x7 : 16;
} reg9; // 0x0124
struct {
RK_U32 lut_y0 : 8;
RK_U32 lut_y1 : 8;
RK_U32 lut_y2 : 8;
RK_U32 lut_y3 : 8;
} reg10; // 0x0128
struct {
RK_U32 lut_y4 : 8;
RK_U32 lut_y5 : 8;
RK_U32 lut_y6 : 8;
RK_U32 lut_y7 : 8;
} reg11; // 0x012C
struct {
RK_U32 lut_y8 : 8;
} reg12; // 0x0130
struct {
RK_U32 lut_k0 : 8;
RK_U32 lut_k1 : 8;
RK_U32 lut_k2 : 8;
RK_U32 lut_k3 : 8;
} reg13; // 0x0134
struct {
RK_U32 lut_k4 : 8;
RK_U32 lut_k5 : 8;
RK_U32 lut_k6 : 8;
RK_U32 lut_k7 : 8;
} reg14; // 0x0138
struct {
RK_U32 wgt_decay : 8;
RK_U32 wgt_gain : 8;
} reg15; // 0x013C
struct {
RK_U32 conf_mean_th : 8;
RK_U32 conf_cnt_th : 4;
RK_U32 reserved1 : 4;
RK_U32 low_conf_ratio : 8;
RK_U32 low_conf_th : 8;
} reg16; // 0x0140
struct {
RK_U32 ink_en : 1;
RK_U32 reserved1 : 3;
RK_U32 ink_mode : 4;
} reg17; // 0x0144
RK_U32 reg_018_027[10];
struct {
RK_U32 in_rdy : 1;
RK_U32 reserved1 : 3;
RK_U32 mem_in_vsync : 1;
RK_U32 reserved2 : 3;
RK_U32 in_hsync : 1;
RK_U32 reserved3 : 3;
RK_U32 in_vld : 1;
RK_U32 reserved4 : 3;
RK_U32 mem_in_line_cnt : 11;
} reg28; // 0x0170
struct {
RK_U32 in_pix : 16;
RK_U32 in_dir : 6;
RK_U32 reserved1 : 2;
RK_U32 in_flat : 2;
} reg29; // 0x0174
struct {
RK_U32 out_rdy : 1;
RK_U32 reserved1 : 3;
RK_U32 out_vsync : 1;
RK_U32 reserved2 : 3;
RK_U32 out_hsync : 1;
RK_U32 reserved3 : 3;
RK_U32 out_vld : 1;
RK_U32 reserved4 : 3;
RK_U32 out_line_cnt : 11;
} reg30; // 0x0178
struct {
RK_U32 out_pix : 16;
} reg31; // 0x017C
} RegEs; // 0x1100 ~ 0x117C, 32 regs
typedef struct vdpp2_shp_reg {
struct {
RK_U32 sw_sharp_enable : 1;
RK_U32 sw_lti_enable : 1;
RK_U32 sw_cti_enable : 1;
RK_U32 sw_peaking_enable : 1;
RK_U32 sw_peaking_ctrl_enable : 1;
RK_U32 reserved1 : 1;
RK_U32 sw_edge_proc_enable : 1;
RK_U32 sw_shoot_ctrl_enable : 1;
RK_U32 sw_gain_ctrl_enable : 1;
RK_U32 sw_color_adj_enable : 1;
RK_U32 sw_texture_adj_enable: 1;
RK_U32 sw_coloradj_bypass_en: 1;
RK_U32 sw_ink_enable : 1;
RK_U32 sw_sharp_redundent_bypass : 1;
} reg0; // 0x0200
struct {
RK_U32 sw_mem_gating_en : 1;
RK_U32 sw_lti_gating_en : 1;
RK_U32 sw_cti_gating_en : 1;
RK_U32 sw_peaking_gating_en : 1;
RK_U32 sw_peaking_ctrl_gating_en : 1;
RK_U32 reserved1 : 1;
RK_U32 sw_edge_proc_gating_en : 1;
RK_U32 sw_shoot_ctrl_gating_en : 1;
RK_U32 sw_gain_ctrl_gating_en : 1;
RK_U32 sw_color_adj_gating_en : 1;
RK_U32 sw_texture_adj_gating_en : 1;
} reg1; // 0x0204
struct {
RK_U32 sw_peaking_v00 : 4;
RK_U32 sw_peaking_v01 : 4;
RK_U32 sw_peaking_v02 : 4;
RK_U32 sw_peaking_v10 : 4;
RK_U32 sw_peaking_v11 : 4;
RK_U32 sw_peaking_v12 : 4;
} reg2; // 0x0208
struct {
RK_U32 sw_peaking_v20 : 4;
RK_U32 sw_peaking_v21 : 4;
RK_U32 sw_peaking_v22 : 4;
RK_U32 sw_peaking_usm0 : 4;
RK_U32 sw_peaking_usm1 : 4;
RK_U32 sw_peaking_usm2 : 4;
RK_U32 sw_diag_coef : 3;
} reg3; // 0x020C
struct {
RK_U32 sw_peaking_h00 : 6;
RK_U32 reserved1 : 2;
RK_U32 sw_peaking_h01 : 6;
RK_U32 reserved2 : 2;
RK_U32 sw_peaking_h02 : 6;
} reg4; // 0x0210
RK_U32 reg5;
struct {
RK_U32 sw_peaking_h10 : 6;
RK_U32 reserved1 : 2;
RK_U32 sw_peaking_h11 : 6;
RK_U32 reserved2 : 2;
RK_U32 sw_peaking_h12 : 6;
} reg6; // 0x0218
RK_U32 reg7;
struct {
RK_U32 sw_peaking_h20 : 6;
RK_U32 reserved1 : 2;
RK_U32 sw_peaking_h21 : 6;
RK_U32 reserved2 : 2;
RK_U32 sw_peaking_h22 : 6;
} reg8; // 0x0220
RK_U32 reg_9_11[3];
struct {
RK_U32 sw_peaking0_idx_n0 : 9;
RK_U32 reserved1 : 7;
RK_U32 sw_peaking0_idx_n1 : 9;
} reg12; // 0x0230
struct {
RK_U32 sw_peaking0_idx_n2 : 9;
RK_U32 reserved1 : 7;
RK_U32 sw_peaking0_idx_n3 : 9;
} reg13; // 0x0234
struct {
RK_U32 sw_peaking0_idx_p0 : 9;
RK_U32 reserved1 : 7;
RK_U32 sw_peaking0_idx_p1 : 9;
} reg14; // 0x0238
struct {
RK_U32 sw_peaking0_idx_p2 : 9;
RK_U32 reserved1 : 7;
RK_U32 sw_peaking0_idx_p3 : 9;
} reg15; // 0x023C
struct {
RK_U32 sw_peaking0_value_n1 : 9;
RK_U32 reserved1 : 7;
RK_U32 sw_peaking0_value_n2 : 9;
} reg16; // 0x0240
struct {
RK_U32 sw_peaking0_value_n3 : 9;
RK_U32 reserved1 : 7;
RK_U32 sw_peaking0_value_p1 : 9;
} reg17; // 0x0244
struct {
RK_U32 sw_peaking0_value_p2 : 9;
RK_U32 reserved1 : 7;
RK_U32 sw_peaking0_value_p3 : 9;
} reg18; // 0x0248
struct {
RK_U32 sw_peaking0_ratio_n01: 12;
RK_U32 reserved1 : 4;
RK_U32 sw_peaking0_ratio_n12: 12;
} reg19; // 0x024C
struct {
RK_U32 sw_peaking0_ratio_n23: 12;
RK_U32 reserved1 : 4;
RK_U32 sw_peaking0_ratio_p01: 12;
} reg20; // 0x0250
struct {
RK_U32 sw_peaking0_ratio_p12: 12;
RK_U32 sw_peaking0_ratio_p23: 12;
} reg21; // 0x0254
RK_U32 reg22;
struct {
RK_U32 sw_peaking1_idx_n0 : 9;
RK_U32 reserved1 : 7;
RK_U32 sw_peaking1_idx_n1 : 9;
} reg23; // 0x025C
struct {
RK_U32 sw_peaking1_idx_n2 : 9;
RK_U32 reserved1 : 7;
RK_U32 sw_peaking1_idx_n3 : 9;
} reg24; // 0x0260
struct {
RK_U32 sw_peaking1_idx_p0 : 9;
RK_U32 reserved1 : 7;
RK_U32 sw_peaking1_idx_p1 : 9;
} reg25; // 0x0264
struct {
RK_U32 sw_peaking1_idx_p2 : 9;
RK_U32 reserved1 : 7;
RK_U32 sw_peaking1_idx_p3 : 9;
} reg26; // 0x0268
struct {
RK_U32 sw_peaking1_value_n1 : 9;
RK_U32 reserved1 : 7;
RK_U32 sw_peaking1_value_n2 : 9;
} reg27; // 0x026C
struct {
RK_U32 sw_peaking1_value_n3 : 9;
RK_U32 reserved1 : 7;
RK_U32 sw_peaking1_value_p1 : 9;
} reg28; // 0x0270
struct {
RK_U32 sw_peaking1_value_p2 : 9;
RK_U32 reserved1 : 7;
RK_U32 sw_peaking1_value_p3 : 9;
} reg29; // 0x0274
struct {
RK_U32 sw_peaking1_ratio_n01: 12;
RK_U32 reserved1 : 4;
RK_U32 sw_peaking1_ratio_n12: 12;
} reg30; // 0x0278
struct {
RK_U32 sw_peaking1_ratio_n23: 12;
RK_U32 reserved1 : 4;
RK_U32 sw_peaking1_ratio_p01: 12;
} reg31; // 0x027C
struct {
RK_U32 sw_peaking1_ratio_p12: 12;
RK_U32 sw_peaking1_ratio_p23: 12;
} reg32; // 0x0280
RK_U32 reg33;
struct {
RK_U32 sw_peaking2_idx_n0 : 9;
RK_U32 reserved1 : 7;
RK_U32 sw_peaking2_idx_n1 : 9;
} reg34; // 0x0288
struct {
RK_U32 sw_peaking2_idx_n2 : 9;
RK_U32 reserved1 : 7;
RK_U32 sw_peaking2_idx_n3 : 9;
} reg35; // 0x028C
struct {
RK_U32 sw_peaking2_idx_p0 : 9;
RK_U32 reserved1 : 7;
RK_U32 sw_peaking2_idx_p1 : 9;
} reg36; // 0x0290
struct {
RK_U32 sw_peaking2_idx_p2 : 9;
RK_U32 reserved1 : 7;
RK_U32 sw_peaking2_idx_p3 : 9;
} reg37; // 0x0294
struct {
RK_U32 sw_peaking2_value_n1 : 9;
RK_U32 reserved1 : 7;
RK_U32 sw_peaking2_value_n2 : 9;
} reg38; // 0x0298
struct {
RK_U32 sw_peaking2_value_n3 : 9;
RK_U32 reserved1 : 7;
RK_U32 sw_peaking2_value_p1 : 9;
} reg39; // 0x029C
struct {
RK_U32 sw_peaking2_value_p2 : 9;
RK_U32 reserved1 : 7;
RK_U32 sw_peaking2_value_p3 : 9;
} reg40; // 0x02A0
struct {
RK_U32 sw_peaking2_ratio_n01: 12;
RK_U32 reserved1 : 4;
RK_U32 sw_peaking2_ratio_n12: 12;
} reg41; // 0x02A4
struct {
RK_U32 sw_peaking2_ratio_n23: 12;
RK_U32 reserved1 : 4;
RK_U32 sw_peaking2_ratio_p01: 12;
} reg42; // 0x02A8
struct {
RK_U32 sw_peaking2_ratio_p12: 12;
RK_U32 sw_peaking2_ratio_p23: 12;
} reg43; // 0x02AC
RK_U32 reg44;
struct {
RK_U32 sw_peaking3_idx_n0 : 9;
RK_U32 reserved1 : 7;
RK_U32 sw_peaking3_idx_n1 : 9;
} reg45; // 0x02B4
struct {
RK_U32 sw_peaking3_idx_n2 : 9;
RK_U32 reserved1 : 7;
RK_U32 sw_peaking3_idx_n3 : 9;
} reg46; // 0x02B8
struct {
RK_U32 sw_peaking3_idx_p0 : 9;
RK_U32 reserved1 : 7;
RK_U32 sw_peaking3_idx_p1 : 9;
} reg47; // 0x02BC
struct {
RK_U32 sw_peaking3_idx_p2 : 9;
RK_U32 reserved1 : 7;
RK_U32 sw_peaking3_idx_p3 : 9;
} reg48; // 0x02C0
struct {
RK_U32 sw_peaking3_value_n1 : 9;
RK_U32 reserved1 : 7;
RK_U32 sw_peaking3_value_n2 : 9;
} reg49; // 0x02C4
struct {
RK_U32 sw_peaking3_value_n3 : 9;
RK_U32 reserved1 : 7;
RK_U32 sw_peaking3_value_p1 : 9;
} reg50; // 0x02C8
struct {
RK_U32 sw_peaking3_value_p2 : 9;
RK_U32 reserved1 : 7;
RK_U32 sw_peaking3_value_p3 : 9;
} reg51; // 0x02CC
struct {
RK_U32 sw_peaking3_ratio_n01: 12;
RK_U32 reserved1 : 4;
RK_U32 sw_peaking3_ratio_n12: 12;
} reg52; // 0x02D0
struct {
RK_U32 sw_peaking3_ratio_n23: 12;
RK_U32 reserved1 : 4;
RK_U32 sw_peaking3_ratio_p01: 12;
} reg53; // 0x02D4
struct {
RK_U32 sw_peaking3_ratio_p12: 12;
RK_U32 sw_peaking3_ratio_p23: 12;
} reg54; // 0x02D8
RK_U32 reg55;
struct {
RK_U32 sw_peaking4_idx_n0 : 9;
RK_U32 reserved1 : 7;
RK_U32 sw_peaking4_idx_n1 : 9;
} reg56; // 0x02E0
struct {
RK_U32 sw_peaking4_idx_n2 : 9;
RK_U32 reserved1 : 7;
RK_U32 sw_peaking4_idx_n3 : 9;
} reg57; // 0x02E4
struct {
RK_U32 sw_peaking4_idx_p0 : 9;
RK_U32 reserved1 : 7;
RK_U32 sw_peaking4_idx_p1 : 9;
} reg58; // 0x02E8
struct {
RK_U32 sw_peaking4_idx_p2 : 9;
RK_U32 reserved1 : 7;
RK_U32 sw_peaking4_idx_p3 : 9;
} reg59; // 0x02EC
struct {
RK_U32 sw_peaking4_value_n1 : 9;
RK_U32 reserved1 : 7;
RK_U32 sw_peaking4_value_n2 : 9;
} reg60; // 0x02F0
struct {
RK_U32 sw_peaking4_value_n3 : 9;
RK_U32 reserved1 : 7;
RK_U32 sw_peaking4_value_p1 : 9;
} reg61; // 0x02F4
struct {
RK_U32 sw_peaking4_value_p2 : 9;
RK_U32 reserved1 : 7;
RK_U32 sw_peaking4_value_p3 : 9;
} reg62; // 0x02F8
struct {
RK_U32 sw_peaking4_ratio_n01: 12;
RK_U32 reserved1 : 4;
RK_U32 sw_peaking4_ratio_n12: 12;
} reg63; // 0x02FC
struct {
RK_U32 sw_peaking4_ratio_n23: 12;
RK_U32 reserved1 : 4;
RK_U32 sw_peaking4_ratio_p01: 12;
} reg64; // 0x0300
struct {
RK_U32 sw_peaking4_ratio_p12: 12;
RK_U32 sw_peaking4_ratio_p23: 12;
} reg65; // 0x0304
RK_U32 reg66;
struct {
RK_U32 sw_peaking5_idx_n0 : 9;
RK_U32 reserved1 : 7;
RK_U32 sw_peaking5_idx_n1 : 9;
} reg67; // 0x030C
struct {
RK_U32 sw_peaking5_idx_n2 : 9;
RK_U32 reserved1 : 7;
RK_U32 sw_peaking5_idx_n3 : 9;
} reg68; // 0x0310
struct {
RK_U32 sw_peaking5_idx_p0 : 9;
RK_U32 reserved1 : 7;
RK_U32 sw_peaking5_idx_p1 : 9;
} reg69; // 0x0314
struct {
RK_U32 sw_peaking5_idx_p2 : 9;
RK_U32 reserved1 : 7;
RK_U32 sw_peaking5_idx_p3 : 9;
} reg70; // 0x0318
struct {
RK_U32 sw_peaking5_value_n1 : 9;
RK_U32 reserved1 : 7;
RK_U32 sw_peaking5_value_n2 : 9;
} reg71; // 0x031C
struct {
RK_U32 sw_peaking5_value_n3 : 9;
RK_U32 reserved1 : 7;
RK_U32 sw_peaking5_value_p1 : 9;
} reg72; // 0x0320
struct {
RK_U32 sw_peaking5_value_p2 : 9;
RK_U32 reserved1 : 7;
RK_U32 sw_peaking5_value_p3 : 9;
} reg73; // 0x0324
struct {
RK_U32 sw_peaking5_ratio_n01: 12;
RK_U32 reserved1 : 4;
RK_U32 sw_peaking5_ratio_n12: 12;
} reg74; // 0x0328
struct {
RK_U32 sw_peaking5_ratio_n23: 12;
RK_U32 reserved1 : 4;
RK_U32 sw_peaking5_ratio_p01: 12;
} reg75; // 0x032C
struct {
RK_U32 sw_peaking5_ratio_p12: 12;
RK_U32 sw_peaking5_ratio_p23: 12;
} reg76; // 0x0330
RK_U32 reg77;
struct {
RK_U32 sw_peaking6_idx_n0 : 9;
RK_U32 reserved1 : 7;
RK_U32 sw_peaking6_idx_n1 : 9;
} reg78; // 0x0338
struct {
RK_U32 sw_peaking6_idx_n2 : 9;
RK_U32 reserved1 : 7;
RK_U32 sw_peaking6_idx_n3 : 9;
} reg79; // 0x033C
struct {
RK_U32 sw_peaking6_idx_p0 : 9;
RK_U32 reserved1 : 7;
RK_U32 sw_peaking6_idx_p1 : 9;
} reg80; // 0x0340
struct {
RK_U32 sw_peaking6_idx_p2 : 9;
RK_U32 reserved1 : 7;
RK_U32 sw_peaking6_idx_p3 : 9;
} reg81; // 0x0344
struct {
RK_U32 sw_peaking6_value_n1 : 9;
RK_U32 reserved1 : 7;
RK_U32 sw_peaking6_value_n2 : 9;
} reg82; // 0x0348
struct {
RK_U32 sw_peaking6_value_n3 : 9;
RK_U32 reserved1 : 7;
RK_U32 sw_peaking6_value_p1 : 9;
} reg83; // 0x034C
struct {
RK_U32 sw_peaking6_value_p2 : 9;
RK_U32 reserved1 : 7;
RK_U32 sw_peaking6_value_p3 : 9;
} reg84; // 0x0350
struct {
RK_U32 sw_peaking6_ratio_n01: 12;
RK_U32 reserved1 : 4;
RK_U32 sw_peaking6_ratio_n12: 12;
} reg85; // 0x0354
struct {
RK_U32 sw_peaking6_ratio_n23: 12;
RK_U32 reserved1 : 4;
RK_U32 sw_peaking6_ratio_p01: 12;
} reg86; // 0x0358
struct {
RK_U32 sw_peaking6_ratio_p12: 12;
RK_U32 sw_peaking6_ratio_p23: 12;
} reg87; // 0x035C
RK_U32 reg_88_99[12];
struct {
RK_U32 sw_peaking_gain : 10;
RK_U32 reserved1 : 2;
RK_U32 sw_nondir_thr : 7;
RK_U32 reserved2 : 1;
RK_U32 sw_dir_cmp_ratio : 4;
RK_U32 sw_nondir_wgt_ratio : 5;
} reg100; // 0x0390
struct {
RK_U32 sw_nondir_wgt_offset : 8;
RK_U32 sw_dir_cnt_thr : 4;
RK_U32 sw_dir_cnt_avg : 3;
RK_U32 reserved1 : 1;
RK_U32 sw_dir_cnt_offset : 4;
RK_U32 sw_diag_dir_thr : 7;
} reg101; // 0x0394
struct {
RK_U32 sw_diag_adjgain_tab0 : 4;
RK_U32 sw_diag_adjgain_tab1 : 4;
RK_U32 sw_diag_adjgain_tab2 : 4;
RK_U32 sw_diag_adjgain_tab3 : 4;
RK_U32 sw_diag_adjgain_tab4 : 4;
RK_U32 sw_diag_adjgain_tab5 : 4;
RK_U32 sw_diag_adjgain_tab6 : 4;
RK_U32 sw_diag_adjgain_tab7 : 4;
} reg102; // 0x0398
struct {
RK_U32 sw_edge_alpha_over_non : 7;
RK_U32 reserved1 : 1;
RK_U32 sw_edge_alpha_under_non : 7;
RK_U32 reserved2 : 1;
RK_U32 sw_edge_alpha_over_unlimit_non : 7;
RK_U32 reserved3 : 1;
RK_U32 sw_edge_alpha_under_unlimit_non : 7;
} reg103; // 0x039C
struct {
RK_U32 sw_edge_alpha_over_v : 7;
RK_U32 reserved1 : 1;
RK_U32 sw_edge_alpha_under_v: 7;
RK_U32 reserved2 : 1;
RK_U32 sw_edge_alpha_over_unlimit_v : 7;
RK_U32 reserved3 : 1;
RK_U32 sw_edge_alpha_under_unlimit_v: 7;
} reg104; // 0x03A0
struct {
RK_U32 sw_edge_alpha_over_h : 7;
RK_U32 reserved1 : 1;
RK_U32 sw_edge_alpha_under_h: 7;
RK_U32 reserved2 : 1;
RK_U32 sw_edge_alpha_over_unlimit_h : 7;
RK_U32 reserved3 : 1;
RK_U32 sw_edge_alpha_under_unlimit_h: 7;
} reg105; // 0x03A4
struct {
RK_U32 sw_edge_alpha_over_d0: 7;
RK_U32 reserved1 : 1;
RK_U32 sw_edge_alpha_under_d0 : 7;
RK_U32 reserved2 : 1;
RK_U32 sw_edge_alpha_over_unlimit_d0: 7;
RK_U32 reserved3 : 1;
RK_U32 sw_edge_alpha_under_unlimit_d0 : 7;
} reg106; // 0x03A8
struct {
RK_U32 sw_edge_alpha_over_d1: 7;
RK_U32 reserved1 : 1;
RK_U32 sw_edge_alpha_under_d1 : 7;
RK_U32 reserved2 : 1;
RK_U32 sw_edge_alpha_over_unlimit_d1: 7;
RK_U32 reserved3 : 1;
RK_U32 sw_edge_alpha_under_unlimit_d1 : 7;
} reg107; // 0x03AC
struct {
RK_U32 sw_edge_delta_offset_non : 8;
RK_U32 sw_edge_delta_offset_v : 8;
RK_U32 sw_edge_delta_offset_h : 8;
} reg108; // 0x03B0
struct {
RK_U32 sw_edge_delta_offset_d0 : 8;
RK_U32 sw_edge_delta_offset_d1 : 8;
} reg109; // 0x03B4
struct {
RK_U32 sw_shoot_filt_radius : 1;
RK_U32 reserved1 : 3;
RK_U32 sw_shoot_delta_offset: 8;
RK_U32 sw_shoot_alpha_over : 7;
RK_U32 reserved2 : 1;
RK_U32 sw_shoot_alpha_under : 7;
} reg110; // 0x03B8
struct {
RK_U32 sw_shoot_alpha_over_unlimit : 7;
RK_U32 reserved1 : 1;
RK_U32 sw_shoot_alpha_under_unlimit : 7;
} reg111; // 0x03BC
struct {
RK_U32 sw_adp_idx0 : 8;
RK_U32 reserved1 : 2;
RK_U32 sw_adp_idx1 : 8;
RK_U32 reserved2 : 2;
RK_U32 sw_adp_idx2 : 8;
} reg112; // 0x03C0
struct {
RK_U32 sw_adp_idx3 : 8;
RK_U32 reserved1 : 4;
RK_U32 sw_adp_gain0 : 7;
RK_U32 reserved2 : 1;
RK_U32 sw_adp_gain1 : 7;
} reg113; // 0x03C4
struct {
RK_U32 sw_adp_gain2 : 7;
RK_U32 reserved1 : 1;
RK_U32 sw_adp_gain3 : 7;
RK_U32 reserved2 : 1;
RK_U32 sw_adp_gain4 : 7;
} reg114; // 0x03C8
struct {
RK_U32 sw_adp_slp01 : 11;
RK_U32 reserved1 : 1;
RK_U32 sw_adp_slp12 : 11;
} reg115; // 0x03CC
RK_U32 reg_116_127[12];
struct {
RK_U32 sw_adp_slp23 : 11;
RK_U32 reserved1 : 1;
RK_U32 sw_adp_slp34 : 11;
} reg128; // 0x0400
struct {
RK_U32 sw_adp_slp45 : 11;
RK_U32 sw_var_idx0 : 8;
RK_U32 reserved1 : 2;
RK_U32 sw_var_idx1 : 8;
} reg129; // 0x0404
struct {
RK_U32 sw_var_idx2 : 8;
RK_U32 reserved1 : 4;
RK_U32 sw_var_idx3 : 8;
RK_U32 reserved2 : 4;
RK_U32 sw_var_gain0 : 7;
} reg130; // 0x0408
struct {
RK_U32 sw_var_gain1 : 7;
RK_U32 reserved1 : 1;
RK_U32 sw_var_gain2 : 7;
RK_U32 reserved2 : 1;
RK_U32 sw_var_gain3 : 7;
RK_U32 reserved3 : 1;
RK_U32 sw_var_gain4 : 7;
} reg131; // 0x040C
struct {
RK_U32 sw_var_slp01 : 11;
RK_U32 reserved1 : 1;
RK_U32 sw_var_slp12 : 11;
} reg132; // 0x0410
struct {
RK_U32 sw_var_slp23 : 11;
RK_U32 reserved1 : 1;
RK_U32 sw_var_slp34 : 11;
} reg133; // 0x0414
struct {
RK_U32 sw_var_slp45 : 11;
RK_U32 reserved1 : 5;
RK_U32 sw_lum_select : 2;
RK_U32 reserved2 : 2;
RK_U32 sw_lum_idx0 : 8;
} reg134; // 0x0418
struct {
RK_U32 sw_lum_idx1 : 8;
RK_U32 reserved1 : 2;
RK_U32 sw_lum_idx2 : 8;
RK_U32 reserved2 : 2;
RK_U32 sw_lum_idx3 : 8;
} reg135; // 0x041C
struct {
RK_U32 sw_lum_gain0 : 7;
RK_U32 reserved1 : 1;
RK_U32 sw_lum_gain1 : 7;
RK_U32 reserved2 : 1;
RK_U32 sw_lum_gain2 : 7;
RK_U32 reserved3 : 1;
RK_U32 sw_lum_gain3 : 7;
} reg136; // 0x0420
struct {
RK_U32 sw_lum_gain4 : 7;
RK_U32 reserved1 : 1;
RK_U32 sw_lum_slp01 : 11;
RK_U32 reserved2 : 1;
RK_U32 sw_lum_slp12 : 11;
} reg137; // 0x0424
struct {
RK_U32 sw_lum_slp23 : 11;
RK_U32 reserved1 : 1;
RK_U32 sw_lum_slp34 : 11;
} reg138; // 0x0428
struct {
RK_U32 sw_lum_slp45 : 11;
} reg139; // 0x042C
struct {
RK_U32 sw_adj_point_x0 : 8;
RK_U32 reserved1 : 4;
RK_U32 sw_adj_point_y0 : 8;
RK_U32 reserved2 : 4;
RK_U32 sw_adj_scaling_coef0 : 3;
} reg140; // 0x0430
struct {
RK_U32 sw_coloradj_tab0_0 : 5;
RK_U32 sw_coloradj_tab0_1 : 5;
RK_U32 sw_coloradj_tab0_2 : 5;
RK_U32 sw_coloradj_tab0_3 : 5;
RK_U32 sw_coloradj_tab0_4 : 5;
RK_U32 sw_coloradj_tab0_5 : 5;
} reg141; // 0x0434
struct {
RK_U32 sw_coloradj_tab0_6 : 5;
RK_U32 sw_coloradj_tab0_7 : 5;
RK_U32 sw_coloradj_tab0_8 : 5;
RK_U32 sw_coloradj_tab0_9 : 5;
RK_U32 sw_coloradj_tab0_10 : 5;
RK_U32 sw_coloradj_tab0_11 : 5;
} reg142; // 0x0438
struct {
RK_U32 sw_coloradj_tab0_12 : 5;
RK_U32 sw_coloradj_tab0_13 : 5;
RK_U32 sw_coloradj_tab0_14 : 5;
RK_U32 sw_coloradj_tab0_15 : 5;
} reg143; // 0x043C
struct {
RK_U32 sw_adj_point_x1 : 8;
RK_U32 reserved1 : 4;
RK_U32 sw_adj_point_y1 : 8;
RK_U32 reserved2 : 4;
RK_U32 sw_adj_scaling_coef1 : 3;
} reg144; // 0x0440
struct {
RK_U32 sw_coloradj_tab1_0 : 5;
RK_U32 sw_coloradj_tab1_1 : 5;
RK_U32 sw_coloradj_tab1_2 : 5;
RK_U32 sw_coloradj_tab1_3 : 5;
RK_U32 sw_coloradj_tab1_4 : 5;
RK_U32 sw_coloradj_tab1_5 : 5;
} reg145; // 0x0444
struct {
RK_U32 sw_coloradj_tab1_6 : 5;
RK_U32 sw_coloradj_tab1_7 : 5;
RK_U32 sw_coloradj_tab1_8 : 5;
RK_U32 sw_coloradj_tab1_9 : 5;
RK_U32 sw_coloradj_tab1_10 : 5;
RK_U32 sw_coloradj_tab1_11 : 5;
} reg146; // 0x0448
struct {
RK_U32 sw_coloradj_tab1_12 : 5;
RK_U32 sw_coloradj_tab1_13 : 5;
RK_U32 sw_coloradj_tab1_14 : 5;
RK_U32 sw_coloradj_tab1_15 : 5;
} reg147; // 0x044C
struct {
RK_U32 sw_adj_point_x2 : 8;
RK_U32 reserved1 : 4;
RK_U32 sw_adj_point_y2 : 8;
RK_U32 reserved2 : 4;
RK_U32 sw_adj_scaling_coef2 : 3;
} reg148; // 0x0450
struct {
RK_U32 sw_coloradj_tab2_0 : 5;
RK_U32 sw_coloradj_tab2_1 : 5;
RK_U32 sw_coloradj_tab2_2 : 5;
RK_U32 sw_coloradj_tab2_3 : 5;
RK_U32 sw_coloradj_tab2_4 : 5;
RK_U32 sw_coloradj_tab2_5 : 5;
} reg149; // 0x0454
struct {
RK_U32 sw_coloradj_tab2_6 : 5;
RK_U32 sw_coloradj_tab2_7 : 5;
RK_U32 sw_coloradj_tab2_8 : 5;
RK_U32 sw_coloradj_tab2_9 : 5;
RK_U32 sw_coloradj_tab2_10 : 5;
RK_U32 sw_coloradj_tab2_11 : 5;
} reg150; // 0x0458
struct {
RK_U32 sw_coloradj_tab2_12 : 5;
RK_U32 sw_coloradj_tab2_13 : 5;
RK_U32 sw_coloradj_tab2_14 : 5;
RK_U32 sw_coloradj_tab2_15 : 5;
} reg151; // 0x045C
struct {
RK_U32 sw_adj_point_x3 : 8;
RK_U32 reserved1 : 4;
RK_U32 sw_adj_point_y3 : 8;
RK_U32 reserved2 : 4;
RK_U32 sw_adj_scaling_coef3 : 3;
} reg152; // 0x0460
struct {
RK_U32 sw_coloradj_tab3_0 : 5;
RK_U32 sw_coloradj_tab3_1 : 5;
RK_U32 sw_coloradj_tab3_2 : 5;
RK_U32 sw_coloradj_tab3_3 : 5;
RK_U32 sw_coloradj_tab3_4 : 5;
RK_U32 sw_coloradj_tab3_5 : 5;
} reg153; // 0x0464
struct {
RK_U32 sw_coloradj_tab3_6 : 5;
RK_U32 sw_coloradj_tab3_7 : 5;
RK_U32 sw_coloradj_tab3_8 : 5;
RK_U32 sw_coloradj_tab3_9 : 5;
RK_U32 sw_coloradj_tab3_10 : 5;
RK_U32 sw_coloradj_tab3_11 : 5;
} reg154; // 0x0468
struct {
RK_U32 sw_coloradj_tab3_12 : 5;
RK_U32 sw_coloradj_tab3_13 : 5;
RK_U32 sw_coloradj_tab3_14 : 5;
RK_U32 sw_coloradj_tab3_15 : 5;
} reg155; // 0x046C
struct {
RK_U32 sw_idxmode_select : 1;
RK_U32 sw_ymode_select : 2;
RK_U32 reserved1 : 1;
RK_U32 sw_tex_idx0 : 8;
RK_U32 reserved2 : 4;
RK_U32 sw_tex_idx1 : 8;
} reg156; // 0x0470
struct {
RK_U32 sw_tex_idx2 : 8;
RK_U32 reserved1 : 4;
RK_U32 sw_tex_idx3 : 8;
RK_U32 reserved2 : 4;
RK_U32 sw_tex_gain0 : 7;
} reg157; // 0x0474
struct {
RK_U32 sw_tex_gain1 : 7;
RK_U32 reserved1 : 1;
RK_U32 sw_tex_gain2 : 7;
RK_U32 reserved2 : 1;
RK_U32 sw_tex_gain3 : 7;
RK_U32 reserved3 : 1;
RK_U32 sw_tex_gain4 : 7;
} reg158; // 0x0478
struct {
RK_U32 sw_tex_slp01 : 11;
RK_U32 reserved1 : 1;
RK_U32 sw_tex_slp12 : 11;
} reg159; // 0x047C
struct {
RK_U32 sw_tex_slp23 : 11;
RK_U32 reserved1 : 1;
RK_U32 sw_tex_slp34 : 11;
} reg160; // 0x0480
struct {
RK_U32 sw_tex_slp45 : 11;
} reg161; // 0x0484
struct {
RK_U32 sw_ltih_radius : 1;
RK_U32 reserved1 : 3;
RK_U32 sw_ltih_slp1 : 9;
RK_U32 reserved2 : 3;
RK_U32 sw_ltih_thr1 : 9;
} reg162; // 0x0488
struct {
RK_U32 sw_ltih_noisethrneg : 10;
RK_U32 reserved1 : 2;
RK_U32 sw_ltih_noisethrpos : 10;
RK_U32 reserved2 : 2;
RK_U32 sw_ltih_tigain : 5;
} reg163; // 0x048C
struct {
RK_U32 sw_ltiv_radius : 1;
RK_U32 reserved1 : 3;
RK_U32 sw_ltiv_slp1 : 9;
RK_U32 reserved2 : 3;
RK_U32 sw_ltiv_thr1 : 9;
} reg164; // 0x0490
struct {
RK_U32 sw_ltiv_noisethrneg : 10;
RK_U32 reserved1 : 2;
RK_U32 sw_ltiv_noisethrpos : 10;
RK_U32 reserved2 : 2;
RK_U32 sw_ltiv_tigain : 5;
} reg165; // 0x0494
struct {
RK_U32 sw_ctih_radius : 1;
RK_U32 reserved1 : 3;
RK_U32 sw_ctih_slp1 : 9;
RK_U32 reserved2 : 3;
RK_U32 sw_ctih_thr1 : 9;
} reg166; // 0x0498
struct {
RK_U32 sw_ctih_noisethrneg : 10;
RK_U32 reserved1 : 2;
RK_U32 sw_ctih_noisethrpos : 10;
RK_U32 reserved2 : 2;
RK_U32 sw_ctih_tigain : 5;
} reg167; // 0x049C
RK_U32 reg_168_169[2];
struct {
RK_U32 sw_ink_mode : 4;
} reg170; // 0x04A8
RK_U32 reg171;
} RegShp; // 0x1200 ~ 0x14a8, 171 regs
typedef struct vdpp2_reg {
RegCom2 common; /* offset: 0x1000, end: 0x106C, size: 112 */
RegDmsr dmsr; /* offset: 0x1080, end: 0x10D0, size: 84 */
RegHist hist; /* offset: 0x10E0, end: 0x10F0, size: 20 */
RegEs es; /* offset: 0x1100, end: 0x117C, size: 128 */
RegShp sharp; /* offset: 0x1200, end: 0x14a8, size: 684 */
RegZme zme; /* offset: 0x2000, end: 0x2844, size: 1160(valid)/2120(total) */
} Vdpp2Regs;
#endif /* VDPP2_REG_H */