drm/rockchip: vop2: add support rk3576

RK3576 VOP have 2 Cluster win and 4 Esmart win, this win be used
by 3 video ports as following roles:
 * VP0 can use Cluster0/1 and Esmart0/2
 * VP1 can use Cluster0/1 and Esmart1/3
 * VP2 can use Esmart0/1/2/3

In additions, RK3576 VOP can support DCI/ACM/CSC/HDR/SHARP/GAMMA/3D LUT/POST SCALE/BCSH
etc. post process.

Signed-off-by: Sandy Huang <hjc@rock-chips.com>
Change-Id: I89f656e847f758f9d3d57ee0c137b29196de6737
This commit is contained in:
Sandy Huang
2023-09-13 17:17:21 +08:00
committed by Tao Huang
parent d59406a0fc
commit 8379fd7555
5 changed files with 2012 additions and 84 deletions

View File

@@ -53,6 +53,7 @@ struct iommu_domain;
#define VOP_OUTPUT_IF_DP1 BIT(10)
#define VOP_OUTPUT_IF_HDMI0 BIT(11)
#define VOP_OUTPUT_IF_HDMI1 BIT(12)
#define VOP_OUTPUT_IF_DP2 BIT(13)
#ifndef DRM_FORMAT_NV20
#define DRM_FORMAT_NV20 fourcc_code('N', 'V', '2', '0') /* 2x1 subsampled Cr:Cb plane */

View File

@@ -29,6 +29,7 @@
#define VOP_VERSION_RK3528 VOP2_VERSION(0x50, 0x17, 0x1263)
#define VOP_VERSION_RK3562 VOP2_VERSION(0x50, 0x17, 0x4350)
#define VOP_VERSION_RK3568 VOP2_VERSION(0x40, 0x15, 0x8023)
#define VOP_VERSION_RK3576 VOP2_VERSION(0x50, 0x19, 0x9765)
#define VOP_VERSION_RK3588 VOP2_VERSION(0x40, 0x17, 0x6786)
/* register one connector */
@@ -56,6 +57,8 @@
#define VOP_FEATURE_VIVID_HDR BIT(7)
#define VOP_FEATURE_POST_ACM BIT(8)
#define VOP_FEATURE_POST_CSC BIT(9)
#define VOP_FEATURE_POST_FRC_V2 BIT(10)
#define VOP_FEATURE_POST_SHARP BIT(11)
#define VOP_FEATURE_OUTPUT_10BIT VOP_FEATURE_OUTPUT_RGB10
@@ -78,6 +81,7 @@
#define WIN_FEATURE_MIRROR BIT(6)
#define WIN_FEATURE_MULTI_AREA BIT(7)
#define WIN_FEATURE_Y2R_13BIT_DEPTH BIT(8)
#define WIN_FEATURE_DCI BIT(9)
#define VOP2_SOC_VARIANT 4
@@ -124,6 +128,8 @@ enum vop3_esmart_lb_mode {
VOP3_ESMART_4K_4K_MODE,
VOP3_ESMART_4K_2K_2K_MODE,
VOP3_ESMART_2K_2K_2K_2K_MODE,
VOP3_ESMART_4K_4K_4K_MODE,
VOP3_ESMART_4K_4K_2K_2K_MODE,
};
/*
@@ -144,6 +150,7 @@ enum vop3_esmart_lb_mode {
#define VOP2_PD_DSC_8K BIT(5)
#define VOP2_PD_DSC_4K BIT(6)
#define VOP2_PD_ESMART BIT(7)
#define VOP2_PD_CLUSTER BIT(8)
/*
* vop2 submem power gate,
@@ -238,6 +245,10 @@ struct vop_afbc {
struct vop_reg transform_offset;
struct vop_reg hdr_ptr;
struct vop_reg half_block_en;
struct vop_reg pld_offset_en;
struct vop_reg pld_ptr_offset;
struct vop_reg pld_range_en;
struct vop_reg pld_ptr_range;
struct vop_reg xmirror;
struct vop_reg ymirror;
struct vop_reg rotate_270;
@@ -725,6 +736,8 @@ struct vop2_scl_regs {
struct vop_reg cbcr_hscl_filter_mode;
struct vop_reg cbcr_hor_scl_mode;
struct vop_reg cbcr_vscl_filter_mode;
struct vop_reg zme_dering_en;
struct vop_reg zme_dering_para;
struct vop_reg vsd_cbcr_gt2;
struct vop_reg vsd_cbcr_gt4;
struct vop_reg vsd_yrgb_gt2;
@@ -745,6 +758,7 @@ struct vop2_win_regs {
struct vop_reg gate;
struct vop_reg enable;
struct vop_reg format;
struct vop_reg format_argb1555;
struct vop_reg tile_mode;
struct vop_reg csc_mode;
struct vop_reg csc_13bit_en;
@@ -762,6 +776,7 @@ struct vop2_win_regs {
struct vop_reg yuv_clip;
struct vop_reg lb_mode;
struct vop_reg y2r_en;
struct vop_reg csc_y2r_path_sel;
struct vop_reg r2y_en;
struct vop_reg channel;
struct vop_reg dst_alpha_ctl;
@@ -811,14 +826,15 @@ struct vop2_video_port_regs {
struct vop_reg dither_up_en;
struct vop_reg bg_dly;
struct vop_reg core_dclk_div;
struct vop_reg p2i_en;
struct vop_reg dual_channel_en;
struct vop_reg dual_channel_swap;
struct vop_reg dsp_lut_en;
struct vop_reg dclk_div2;
struct vop_reg dclk_div2_phase_lock;
struct vop_reg core_dclk_div; /* dclk core */
struct vop_reg dclk_div2; /* dclk out */
struct vop_reg dclk_div2_phase_lock; /* used to adjust phase when yuv420 output */
struct vop_reg hdr10_en;
struct vop_reg hdr_lut_update_en;
@@ -937,6 +953,7 @@ struct vop2_power_domain_regs {
struct vop_reg pd;
struct vop_reg status;
struct vop_reg bisr_en_status;
struct vop_reg otp_bisr_en_status;
struct vop_reg pmu_status;
};
@@ -995,11 +1012,15 @@ struct vop2_wb_regs {
struct vop_reg scale_y_en;
struct vop_reg axi_yrgb_id;
struct vop_reg axi_uv_id;
struct vop_reg vir_stride;
struct vop_reg vir_stride_en;
struct vop_reg act_width;
struct vop_reg one_frame_mode;
};
struct vop2_power_domain_data {
uint8_t id;
uint8_t parent_id;
uint16_t id;
uint16_t parent_id;
/*
* @module_id_mask: module id of which module this power domain is belongs to.
* PD_CLUSTER0,1,2,3 only belongs to CLUSTER0/1/2/3, PD_Esmart0 shared by Esmart1/2/3
@@ -1029,7 +1050,7 @@ struct vop2_win_data {
const char *name;
uint8_t phys_id;
uint8_t splice_win_id;
uint8_t pd_id;
uint16_t pd_id;
uint8_t axi_id;
uint8_t axi_yrgb_id;
uint8_t axi_uv_id;
@@ -1074,7 +1095,7 @@ struct dsc_error_info {
struct vop2_dsc_data {
uint8_t id;
uint8_t pd_id;
uint16_t pd_id;
uint8_t max_slice_num;
uint8_t max_linebuf_depth; /* used to generate the bitstream */
uint8_t min_bits_per_pixel; /* bit num after encoder compress */
@@ -1103,6 +1124,7 @@ struct vop3_ovl_mix_regs {
struct vop3_ovl_regs {
const struct vop3_ovl_mix_regs *layer_mix_regs;
const struct vop3_ovl_mix_regs *hdr_mix_regs;
const struct vop3_ovl_mix_regs *extra_mix_regs;
};
struct vop2_video_port_data {
@@ -1121,6 +1143,7 @@ struct vop2_video_port_data {
const u8 layer_mix_dly;
const u8 hdr_mix_dly;
const u8 win_dly;
const u8 pixel_rate;
const struct vop_intr *intr;
const struct vop_hdr_table *hdr_table;
const struct vop2_video_port_regs *regs;
@@ -1208,16 +1231,21 @@ struct vop2_ctrl {
struct vop_reg version;
struct vop_reg standby;
struct vop_reg dma_stop;
struct vop_reg rkmmu_v2_en;
struct vop_reg rkmmu_v2_sel_axi;
struct vop_reg dsp_vs_t_sel;
struct vop_reg lut_dma_en;
struct vop_reg axi_outstanding_max_num;
struct vop_reg axi_max_outstanding_en;
struct vop_reg hdmi_dclk_out_en;
struct vop_reg hdmi0_r2y_en;
struct vop_reg hdmi0_r2y_mode;
struct vop_reg rgb_en;
struct vop_reg hdmi0_en;
struct vop_reg hdmi1_en;
struct vop_reg dp0_en;
struct vop_reg dp1_en;
struct vop_reg dp2_en;
struct vop_reg edp0_en;
struct vop_reg edp1_en;
struct vop_reg mipi0_en;
@@ -1244,10 +1272,13 @@ struct vop2_ctrl {
struct vop_reg dp0_pin_pol;
struct vop_reg dp1_dclk_pol;
struct vop_reg dp1_pin_pol;
struct vop_reg dp2_dclk_pol;
struct vop_reg dp2_pin_pol;
/* This will be reference by win_phy_id */
struct vop_reg win_vp_id[16];
struct vop_reg win_dly[16];
struct vop_reg win_alpha_map[16];
/* connector mux */
struct vop_reg rgb_mux;
@@ -1255,6 +1286,7 @@ struct vop2_ctrl {
struct vop_reg hdmi1_mux;
struct vop_reg dp0_mux;
struct vop_reg dp1_mux;
struct vop_reg dp2_mux;
struct vop_reg edp0_mux;
struct vop_reg edp1_mux;
struct vop_reg mipi0_mux;
@@ -1270,9 +1302,10 @@ struct vop2_ctrl {
struct vop_reg edp_dual_en;
struct vop_reg hdmi_dual_en;
struct vop_reg mipi_dual_en;
struct vop_reg rgb_dual_en;
struct vop_reg hdmi0_dclk_div;
struct vop_reg hdmi0_pixclk_div;
struct vop_reg hdmi0_pixclk_div;/* crtc last pipeline clk to connector */
struct vop_reg edp0_dclk_div;
struct vop_reg edp0_pixclk_div;
@@ -1286,6 +1319,18 @@ struct vop2_ctrl {
struct vop_reg mipi0_ds_mode;
struct vop_reg mipi1_ds_mode;
struct vop_reg hdmi0_dclk_sel;/* sel from dclk_core or dclk_out */
struct vop_reg edp0_dclk_sel;
struct vop_reg mipi0_dclk_sel;
struct vop_reg rgb_dclk_sel;
struct vop_reg dp0_dclk_sel;
struct vop_reg dp1_dclk_sel;
struct vop_reg dp2_dclk_sel;
struct vop_reg dp0_pixclk_div;/* crtc last pipeline clk to connector */
struct vop_reg dp1_pixclk_div;
struct vop_reg dp2_pixclk_div;
struct vop_reg src_color_ctrl;
struct vop_reg dst_color_ctrl;
struct vop_reg src_alpha_ctrl;
@@ -1296,8 +1341,31 @@ struct vop2_ctrl {
struct vop_reg gamma_port_sel;
struct vop_reg pd_off_imd;
struct vop_reg mipi0_regdone_imd_en;
struct vop_reg mipi0_data1_sel;
struct vop_reg mipi0_dclk_out_en;
struct vop_reg hdmi0_regdone_imd_en;
struct vop_reg hdmi0_data1_sel;
struct vop_reg hdmi0_dclk_out_en;
struct vop_reg edp0_regdone_imd_en;
struct vop_reg edp0_data1_sel;
struct vop_reg edp0_dclk_out_en;
struct vop_reg dp0_regdone_imd_en;
struct vop_reg dp0_data1_sel;
struct vop_reg dp0_dclk_out_en;
struct vop_reg dp1_regdone_imd_en;
struct vop_reg dp1_data1_sel;
struct vop_reg dp1_dclk_out_en;
struct vop_reg dp2_regdone_imd_en;
struct vop_reg dp2_data1_sel;
struct vop_reg dp2_dclk_out_en;
struct vop_reg rgb_regdone_imd_en;
struct vop_reg rgb_data1_sel;
struct vop_reg rgb_dclk_out_en;
struct vop_reg otp_en;
struct vop_reg esmart_lb_mode;
struct vop_reg vp_intr_merge_en;
struct vop_reg reg_done_frm;
struct vop_reg cfg_done;
};
@@ -1307,6 +1375,7 @@ struct vop_dump_regs {
const char *name;
struct vop_reg state;
bool enable_state;
uint32_t size;
};
struct vop2_vp_plane_mask {
@@ -1315,6 +1384,11 @@ struct vop2_vp_plane_mask {
u8 attached_layers[ROCKCHIP_MAX_LAYER];
};
struct vop2_esmart_lb_map {
u8 lb_mode;
u8 lb_map_value;
};
/**
* VOP2 data structe
*
@@ -1337,6 +1411,8 @@ struct vop2_data {
uint8_t nr_mem_pgs;
uint8_t esmart_lb_mode;
bool delayed_pd;
uint8_t esmart_lb_mode_num;
const struct vop2_esmart_lb_map *esmart_lb_mode_map;
const struct vop_intr *axi_intr;
const struct vop2_ctrl *ctrl;
const struct vop2_dsc_data *dsc;
@@ -1355,6 +1431,7 @@ struct vop2_data {
const struct vop_grf_ctrl *grf;
const struct vop_grf_ctrl *vo0_grf;
const struct vop_grf_ctrl *vo1_grf;
const struct vop_grf_ctrl *ioc_grf;
const struct vop_dump_regs *dump_regs;
uint32_t dump_regs_size;
struct vop_rect max_input;
@@ -1388,6 +1465,7 @@ struct vop2_data {
#define WB_UV_FIFO_FULL_INTR BIT(17)
#define WB_YRGB_FIFO_FULL_INTR BIT(18)
#define WB_COMPLETE_INTR BIT(19)
#define MMU_EN_INTR BIT(20)
#define INTR_MASK (DSP_HOLD_VALID_INTR | FS_INTR | \
LINE_FLAG_INTR | BUS_ERROR_INTR | \
@@ -1397,7 +1475,7 @@ struct vop2_data {
HWC_EMPTY_INTR | \
POST_BUF_EMPTY_INTR | \
DMA_FINISH_INTR | FS_FIELD_INTR | \
FE_INTR)
FE_INTR | WB_COMPLETE_INTR | MMU_EN_INTR)
#define DSP_HOLD_VALID_INTR_EN(x) ((x) << 4)
#define FS_INTR_EN(x) ((x) << 5)
#define LINE_FLAG_INTR_EN(x) ((x) << 6)
@@ -1525,12 +1603,14 @@ enum vop2_scale_up_mode {
VOP2_SCALE_UP_NRST_NBOR,
VOP2_SCALE_UP_BIL,
VOP2_SCALE_UP_BIC,
VOP2_SCALE_UP_ZME,
};
enum vop2_scale_down_mode {
VOP2_SCALE_DOWN_NRST_NBOR,
VOP2_SCALE_DOWN_BIL,
VOP2_SCALE_DOWN_AVG,
VOP2_SCALE_DOWN_ZME,
};
enum vop3_pre_scale_down_mode {

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

View File

@@ -1050,9 +1050,12 @@
#define RK3568_VOP2_GLB_CFG_DONE_EN BIT(15)
#define RK3568_VERSION_INFO 0x004
#define RK3568_SYS_AUTO_GATING_CTRL 0x008
#define RK3576_SYS_MMU_CTRL_IMD 0x020
#define RK3568_SYS_AXI_LUT_CTRL 0x024
#define RK3568_DSP_IF_EN 0x028
#define RK3576_SYS_PORT_CTRL_IMD 0x028
#define RK3568_DSP_IF_CTRL 0x02c
#define RK3576_SYS_CLUSTER_PD_CTRL_IMD 0x030
#define RK3568_DSP_IF_POL 0x030
#define RK3568_SYS_PD_CTRL 0x034
#define RK3588_SYS_VAR_FREQ_CTRL 0x038
@@ -1091,6 +1094,19 @@
#define RK3588_VP3_INT_EN 0xD0
#define RK3588_VP3_INT_CLR 0xD4
#define RK3588_VP3_INT_STATUS 0xD8
#define RK3576_WB_CTRL 0x100
#define RK3576_WB_XSCAL_FACTOR 0x104
#define RK3576_WB_YRGB_MST 0x108
#define RK3576_WB_CBR_MST 0x10C
#define RK3576_WB_VIR_STRIDE 0x110
#define RK3576_WB_TIMEOUT_CTRL 0x114
#define RK3576_MIPI0_IF_CTRL 0x180
#define RK3576_HDMI0_IF_CTRL 0x184
#define RK3576_EDP0_IF_CTRL 0x188
#define RK3576_DP0_IF_CTRL 0x18C
#define RK3576_RGB_IF_CTRL 0x194
#define RK3576_DP1_IF_CTRL 0x1A4
#define RK3576_DP2_IF_CTRL 0x1B0
#define RK3588_DSC_8K_SYS_CTRL 0x200
#define RK3588_DSC_8K_RST 0x204
@@ -1202,6 +1218,8 @@
#define RK3568_VP2_BCSH_BCS 0xE64
#define RK3568_VP2_BCSH_H 0xE68
#define RK3568_VP2_BCSH_COLOR_BAR 0xE6C
#define RK3576_VP2_MCU_CTRL 0xEF8
#define RK3576_VP2_MCU_RW_BYPASS_PORT 0xEFC
#define RK3588_VP3_DSP_CTRL 0xF00
#define RK3588_VP3_DUAL_CHANNEL_CTRL 0xF04
@@ -1238,6 +1256,10 @@
#define RK3528_CLUSTER0_MIX_DST_COLOR_CTRL 0x534
#define RK3528_CLUSTER0_MIX_SRC_ALPHA_CTRL 0x538
#define RK3528_CLUSTER0_MIX_DST_ALPHA_CTRL 0x53c
#define RK3576_CLUSTER1_MIX_SRC_COLOR_CTRL 0x540
#define RK3576_CLUSTER1_MIX_DST_COLOR_CTRL 0x544
#define RK3576_CLUSTER1_MIX_SRC_ALPHA_CTRL 0x548
#define RK3576_CLUSTER1_MIX_DST_ALPHA_CTRL 0x54c
#define RK3528_OVL_PORT0_CTRL 0x600
#define RK3528_OVL_PORT0_LAYER_SEL 0x604
#define RK3528_OVL_PORT0_MIX0_SRC_COLOR_CTRL 0x620
@@ -1252,6 +1274,10 @@
#define RK3528_OVL_PORT0_MIX2_DST_COLOR_CTRL 0x644
#define RK3528_OVL_PORT0_MIX2_SRC_ALPHA_CTRL 0x648
#define RK3528_OVL_PORT0_MIX2_DST_ALPHA_CTRL 0x64C
#define RK3576_EXTRA_SRC_COLOR_CTRL 0x650
#define RK3576_EXTRA_DST_COLOR_CTRL 0x654
#define RK3576_EXTRA_SRC_ALPHA_CTRL 0x658
#define RK3576_EXTRA_DST_ALPHA_CTRL 0x65C
#define RK3528_HDR_SRC_COLOR_CTRL 0x660
#define RK3528_HDR_DST_COLOR_CTRL 0x664
#define RK3528_HDR_SRC_ALPHA_CTRL 0x668
@@ -1272,6 +1298,13 @@
#define RK3528_OVL_PORT1_MIX2_SRC_ALPHA_CTRL 0x748
#define RK3528_OVL_PORT1_MIX2_DST_ALPHA_CTRL 0x74C
#define RK3528_OVL_PORT1_BG_MIX_CTRL 0x770
#define RK3576_OVL_PORT2_CTRL 0x800
#define RK3576_OVL_PORT2_LAYER_SEL 0x804
#define RK3576_OVL_PORT2_MIX0_SRC_COLOR_CTRL 0x820
#define RK3576_OVL_PORT2_MIX0_DST_COLOR_CTRL 0x824
#define RK3576_OVL_PORT2_MIX0_SRC_ALPHA_CTRL 0x828
#define RK3576_OVL_PORT2_MIX0_DST_ALPHA_CTRL 0x82C
#define RK3576_OVL_PORT2_BG_MIX_CTRL 0x870
/* Overlay registers definition */
#define RK3568_OVL_CTRL 0x600
@@ -1327,6 +1360,8 @@
#define RK3568_CLUSTER0_WIN0_DSP_ST 0x1028
#define RK3568_CLUSTER0_WIN0_SCL_FACTOR_YRGB 0x1030
#define RK3568_CLUSTER0_WIN0_AFBCD_TRANSFORM_OFFSET 0x103C
#define RK3576_CLUSTER0_WIN0_ZME_CTRL 0x1040
#define RK3576_CLUSTER0_WIN0_ZME_DERING_PARA 0x1044
#define RK3568_CLUSTER0_WIN0_AFBCD_OUTPUT_CTRL 0x1050
#define RK3568_CLUSTER0_WIN0_AFBCD_ROTATE_MODE 0x1054
#define RK3568_CLUSTER0_WIN0_AFBCD_HDR_PTR 0x1058
@@ -1335,6 +1370,8 @@
#define RK3568_CLUSTER0_WIN0_AFBCD_PIC_OFFSET 0x1064
#define RK3568_CLUSTER0_WIN0_AFBCD_DSP_OFFSET 0x1068
#define RK3568_CLUSTER0_WIN0_AFBCD_CTRL 0x106C
#define RK3576_CLUSTER0_WIN0_PLD_PTR_OFFSET 0x1078
#define RK3576_CLUSTER0_WIN0_PLD_PTR_RANGE 0x107C
#define RK3568_CLUSTER0_WIN1_CTRL0 0x1080
#define RK3568_CLUSTER0_WIN1_CTRL1 0x1084
@@ -1355,8 +1392,12 @@
#define RK3568_CLUSTER0_WIN1_AFBCD_PIC_OFFSET 0x10E4
#define RK3568_CLUSTER0_WIN1_AFBCD_DSP_OFFSET 0x10E8
#define RK3568_CLUSTER0_WIN1_AFBCD_CTRL 0x10EC
#define RK3576_CLUSTER0_WIN1_PLD_PTR_OFFSET 0x10F8
#define RK3576_CLUSTER0_WIN1_PLD_PTR_RANGE 0x10FC
#define RK3568_CLUSTER0_CTRL 0x1100
#define RK3576_CLUSTER0_PORT_SEL_IMD 0x11F4
#define RK3576_CLUSTER0_DLY_NUM 0x11F8
#define RK3568_CLUSTER1_WIN0_CTRL0 0x1200
#define RK3568_CLUSTER1_WIN0_CTRL1 0x1204
@@ -1369,6 +1410,8 @@
#define RK3568_CLUSTER1_WIN0_DSP_ST 0x1228
#define RK3568_CLUSTER1_WIN0_SCL_FACTOR_YRGB 0x1230
#define RK3568_CLUSTER1_WIN0_AFBCD_TRANSFORM_OFFSET 0x123C
#define RK3576_CLUSTER1_WIN0_ZME_CTRL 0x1240
#define RK3576_CLUSTER1_WIN0_ZME_DERING_PARA 0x1244
#define RK3568_CLUSTER1_WIN0_AFBCD_OUTPUT_CTRL 0x1250
#define RK3568_CLUSTER1_WIN0_AFBCD_ROTATE_MODE 0x1254
#define RK3568_CLUSTER1_WIN0_AFBCD_HDR_PTR 0x1258
@@ -1377,6 +1420,8 @@
#define RK3568_CLUSTER1_WIN0_AFBCD_PIC_OFFSET 0x1264
#define RK3568_CLUSTER1_WIN0_AFBCD_DSP_OFFSET 0x1268
#define RK3568_CLUSTER1_WIN0_AFBCD_CTRL 0x126C
#define RK3576_CLUSTER1_WIN0_PLD_PTR_OFFSET 0x1278
#define RK3576_CLUSTER1_WIN0_PLD_PTR_RANGE 0x127C
#define RK3568_CLUSTER1_WIN1_CTRL0 0x1280
#define RK3568_CLUSTER1_WIN1_CTRL1 0x1284
@@ -1395,8 +1440,12 @@
#define RK3568_CLUSTER1_WIN1_AFBCD_PIC_OFFSET 0x12E4
#define RK3568_CLUSTER1_WIN1_AFBCD_DSP_OFFSET 0x12E8
#define RK3568_CLUSTER1_WIN1_AFBCD_CTRL 0x12EC
#define RK3576_CLUSTER1_WIN1_PLD_PTR_OFFSET 0x12F8
#define RK3576_CLUSTER1_WIN1_PLD_PTR_RANGE 0x12FC
#define RK3568_CLUSTER1_CTRL 0x1300
#define RK3576_CLUSTER1_PORT_SEL_IMD 0x13F4
#define RK3576_CLUSTER1_DLY_NUM 0x13F8
#define RK3588_CLUSTER2_WIN0_CTRL0 0x1400
#define RK3588_CLUSTER2_WIN0_CTRL1 0x1404
@@ -1527,6 +1576,9 @@
#define RK3568_ESMART0_REGION3_SCL_FACTOR_CBR 0x18C8
#define RK3568_ESMART0_REGION3_SCL_OFFSET 0x18CC
#define RK3568_ESMART0_COLOR_KEY_CTRL 0x18D0
#define RK3576_ESMART0_ALPHA_MAP 0x18D8
#define RK3576_ESMART0_PORT_SEL_IMD 0x18F4
#define RK3576_ESMART0_DLY_NUM 0x18F8
#define RK3568_ESMART1_CTRL0 0x1A00
#define RK3568_ESMART1_CTRL1 0x1A04
@@ -1574,6 +1626,9 @@
#define RK3568_ESMART1_REGION3_SCL_FACTOR_YRGB 0x1AC4
#define RK3568_ESMART1_REGION3_SCL_FACTOR_CBR 0x1AC8
#define RK3568_ESMART1_REGION3_SCL_OFFSET 0x1ACC
#define RK3576_ESMART1_ALPHA_MAP 0x1AD8
#define RK3576_ESMART1_PORT_SEL_IMD 0x1AF4
#define RK3576_ESMART1_DLY_NUM 0x1AF8
#define RK3568_SMART0_CTRL0 0x1C00
#define RK3568_SMART0_CTRL1 0x1C04
@@ -1621,6 +1676,9 @@
#define RK3568_SMART0_REGION3_SCL_FACTOR_YRGB 0x1CC4
#define RK3568_SMART0_REGION3_SCL_FACTOR_CBR 0x1CC8
#define RK3568_SMART0_REGION3_SCL_OFFSET 0x1CCC
#define RK3576_ESMART2_ALPHA_MAP 0x1CD8
#define RK3576_ESMART2_PORT_SEL_IMD 0x1CF4
#define RK3576_ESMART2_DLY_NUM 0x1CF8
#define RK3568_SMART1_CTRL0 0x1E00
#define RK3568_SMART1_CTRL1 0x1E04
@@ -1668,6 +1726,9 @@
#define RK3568_SMART1_REGION3_SCL_FACTOR_YRGB 0x1EC4
#define RK3568_SMART1_REGION3_SCL_FACTOR_CBR 0x1EC8
#define RK3568_SMART1_REGION3_SCL_OFFSET 0x1ECC
#define RK3576_ESMART3_ALPHA_MAP 0x1ED8
#define RK3576_ESMART3_PORT_SEL_IMD 0x1EF4
#define RK3576_ESMART3_DLY_NUM 0x1EF8
/* HDR register definition */
#define RK3568_HDR_LUT_CTRL 0x2000
@@ -1700,11 +1761,21 @@
#define RK3588_DSC_4K_STS0 0x41A8
#define RK3588_DSC_4K_ERS 0x41C4
/* Base SYS_GRF: 0x2600a000 */
#define RK3576_SYS_GRF_MEMFAULT_STATUS0 0x0148
/* Base IOC_GRF: 0x26040000 */
#define RK3576_VCCIO_IOC_MISC_CON8 0x6420
/* Base PMU2: 0x27380000 */
#define RK3576_PMU_PWR_GATE_STS 0x0230
#define RK3576_PMU_BISR_PDGEN_CON0 0x0510
#define RK3576_PMU_BISR_PWR_REPAIR_STATUS0 0x0570
#define RK3588_GRF_SOC_CON1 0x0304
#define RK3588_GRF_VOP_CON2 0x08
#define RK3588_GRF_VO1_CON0 0x00
#define RK3588_PMU_PWR_GATE_CON1 0x150
#define RK3588_PMU_SUBMEM_PWR_GATE_CON1 0x1B4
#define RK3588_PMU_SUBMEM_PWR_GATE_CON2 0x1B8