Back to home page

OSCL-LXR

 
 

    


0001 /* SPDX-License-Identifier: GPL-2.0-only */
0002 /*
0003  * Copyright (C) Fuzhou Rockchip Electronics Co.Ltd
0004  * Author:Mark Yao <mark.yao@rock-chips.com>
0005  */
0006 
0007 #ifndef _ROCKCHIP_DRM_VOP2_H
0008 #define _ROCKCHIP_DRM_VOP2_H
0009 
0010 #include "rockchip_drm_vop.h"
0011 
0012 #include <linux/regmap.h>
0013 #include <drm/drm_modes.h>
0014 
0015 #define VOP_FEATURE_OUTPUT_10BIT        BIT(0)
0016 
0017 #define WIN_FEATURE_AFBDC       BIT(0)
0018 #define WIN_FEATURE_CLUSTER     BIT(1)
0019 
0020 /*
0021  *  the delay number of a window in different mode.
0022  */
0023 enum win_dly_mode {
0024     VOP2_DLY_MODE_DEFAULT,   /**< default mode */
0025     VOP2_DLY_MODE_HISO_S,    /** HDR in SDR out mode, as a SDR window */
0026     VOP2_DLY_MODE_HIHO_H,    /** HDR in HDR out mode, as a HDR window */
0027     VOP2_DLY_MODE_MAX,
0028 };
0029 
0030 struct vop_rect {
0031     int width;
0032     int height;
0033 };
0034 
0035 enum vop2_scale_up_mode {
0036     VOP2_SCALE_UP_NRST_NBOR,
0037     VOP2_SCALE_UP_BIL,
0038     VOP2_SCALE_UP_BIC,
0039 };
0040 
0041 enum vop2_scale_down_mode {
0042     VOP2_SCALE_DOWN_NRST_NBOR,
0043     VOP2_SCALE_DOWN_BIL,
0044     VOP2_SCALE_DOWN_AVG,
0045 };
0046 
0047 enum vop2_win_regs {
0048     VOP2_WIN_ENABLE,
0049     VOP2_WIN_FORMAT,
0050     VOP2_WIN_CSC_MODE,
0051     VOP2_WIN_XMIRROR,
0052     VOP2_WIN_YMIRROR,
0053     VOP2_WIN_RB_SWAP,
0054     VOP2_WIN_UV_SWAP,
0055     VOP2_WIN_ACT_INFO,
0056     VOP2_WIN_DSP_INFO,
0057     VOP2_WIN_DSP_ST,
0058     VOP2_WIN_YRGB_MST,
0059     VOP2_WIN_UV_MST,
0060     VOP2_WIN_YRGB_VIR,
0061     VOP2_WIN_UV_VIR,
0062     VOP2_WIN_YUV_CLIP,
0063     VOP2_WIN_Y2R_EN,
0064     VOP2_WIN_R2Y_EN,
0065     VOP2_WIN_COLOR_KEY,
0066     VOP2_WIN_COLOR_KEY_EN,
0067     VOP2_WIN_DITHER_UP,
0068 
0069     /* scale regs */
0070     VOP2_WIN_SCALE_YRGB_X,
0071     VOP2_WIN_SCALE_YRGB_Y,
0072     VOP2_WIN_SCALE_CBCR_X,
0073     VOP2_WIN_SCALE_CBCR_Y,
0074     VOP2_WIN_YRGB_HOR_SCL_MODE,
0075     VOP2_WIN_YRGB_HSCL_FILTER_MODE,
0076     VOP2_WIN_YRGB_VER_SCL_MODE,
0077     VOP2_WIN_YRGB_VSCL_FILTER_MODE,
0078     VOP2_WIN_CBCR_VER_SCL_MODE,
0079     VOP2_WIN_CBCR_HSCL_FILTER_MODE,
0080     VOP2_WIN_CBCR_HOR_SCL_MODE,
0081     VOP2_WIN_CBCR_VSCL_FILTER_MODE,
0082     VOP2_WIN_VSD_CBCR_GT2,
0083     VOP2_WIN_VSD_CBCR_GT4,
0084     VOP2_WIN_VSD_YRGB_GT2,
0085     VOP2_WIN_VSD_YRGB_GT4,
0086     VOP2_WIN_BIC_COE_SEL,
0087 
0088     /* cluster regs */
0089     VOP2_WIN_CLUSTER_ENABLE,
0090     VOP2_WIN_AFBC_ENABLE,
0091     VOP2_WIN_CLUSTER_LB_MODE,
0092 
0093     /* afbc regs */
0094     VOP2_WIN_AFBC_FORMAT,
0095     VOP2_WIN_AFBC_RB_SWAP,
0096     VOP2_WIN_AFBC_UV_SWAP,
0097     VOP2_WIN_AFBC_AUTO_GATING_EN,
0098     VOP2_WIN_AFBC_BLOCK_SPLIT_EN,
0099     VOP2_WIN_AFBC_PIC_VIR_WIDTH,
0100     VOP2_WIN_AFBC_TILE_NUM,
0101     VOP2_WIN_AFBC_PIC_OFFSET,
0102     VOP2_WIN_AFBC_PIC_SIZE,
0103     VOP2_WIN_AFBC_DSP_OFFSET,
0104     VOP2_WIN_AFBC_TRANSFORM_OFFSET,
0105     VOP2_WIN_AFBC_HDR_PTR,
0106     VOP2_WIN_AFBC_HALF_BLOCK_EN,
0107     VOP2_WIN_AFBC_ROTATE_270,
0108     VOP2_WIN_AFBC_ROTATE_90,
0109     VOP2_WIN_MAX_REG,
0110 };
0111 
0112 struct vop2_win_data {
0113     const char *name;
0114     unsigned int phys_id;
0115 
0116     u32 base;
0117     enum drm_plane_type type;
0118 
0119     u32 nformats;
0120     const u32 *formats;
0121     const uint64_t *format_modifiers;
0122     const unsigned int supported_rotations;
0123 
0124     /**
0125      * @layer_sel_id: defined by register OVERLAY_LAYER_SEL of VOP2
0126      */
0127     unsigned int layer_sel_id;
0128     uint64_t feature;
0129 
0130     unsigned int max_upscale_factor;
0131     unsigned int max_downscale_factor;
0132     const u8 dly[VOP2_DLY_MODE_MAX];
0133 };
0134 
0135 struct vop2_video_port_data {
0136     unsigned int id;
0137     u32 feature;
0138     u16 gamma_lut_len;
0139     u16 cubic_lut_len;
0140     struct vop_rect max_output;
0141     const u8 pre_scan_max_dly[4];
0142     const struct vop2_video_port_regs *regs;
0143     unsigned int offset;
0144 };
0145 
0146 struct vop2_data {
0147     u8 nr_vps;
0148     const struct vop2_ctrl *ctrl;
0149     const struct vop2_win_data *win;
0150     const struct vop2_video_port_data *vp;
0151     const struct vop_csc_table *csc_table;
0152     struct vop_rect max_input;
0153     struct vop_rect max_output;
0154 
0155     unsigned int win_size;
0156     unsigned int soc_id;
0157 };
0158 
0159 /* interrupt define */
0160 #define FS_NEW_INTR         BIT(4)
0161 #define ADDR_SAME_INTR          BIT(5)
0162 #define LINE_FLAG1_INTR         BIT(6)
0163 #define WIN0_EMPTY_INTR         BIT(7)
0164 #define WIN1_EMPTY_INTR         BIT(8)
0165 #define WIN2_EMPTY_INTR         BIT(9)
0166 #define WIN3_EMPTY_INTR         BIT(10)
0167 #define HWC_EMPTY_INTR          BIT(11)
0168 #define POST_BUF_EMPTY_INTR     BIT(12)
0169 #define PWM_GEN_INTR            BIT(13)
0170 #define DMA_FINISH_INTR         BIT(14)
0171 #define FS_FIELD_INTR           BIT(15)
0172 #define FE_INTR             BIT(16)
0173 #define WB_UV_FIFO_FULL_INTR        BIT(17)
0174 #define WB_YRGB_FIFO_FULL_INTR      BIT(18)
0175 #define WB_COMPLETE_INTR        BIT(19)
0176 
0177 /*
0178  * display output interface supported by rockchip lcdc
0179  */
0180 #define ROCKCHIP_OUT_MODE_P888      0
0181 #define ROCKCHIP_OUT_MODE_BT1120    0
0182 #define ROCKCHIP_OUT_MODE_P666      1
0183 #define ROCKCHIP_OUT_MODE_P565      2
0184 #define ROCKCHIP_OUT_MODE_BT656     5
0185 #define ROCKCHIP_OUT_MODE_S888      8
0186 #define ROCKCHIP_OUT_MODE_S888_DUMMY    12
0187 #define ROCKCHIP_OUT_MODE_YUV420    14
0188 /* for use special outface */
0189 #define ROCKCHIP_OUT_MODE_AAAA      15
0190 
0191 enum vop_csc_format {
0192     CSC_BT601L,
0193     CSC_BT709L,
0194     CSC_BT601F,
0195     CSC_BT2020,
0196 };
0197 
0198 enum src_factor_mode {
0199     SRC_FAC_ALPHA_ZERO,
0200     SRC_FAC_ALPHA_ONE,
0201     SRC_FAC_ALPHA_DST,
0202     SRC_FAC_ALPHA_DST_INVERSE,
0203     SRC_FAC_ALPHA_SRC,
0204     SRC_FAC_ALPHA_SRC_GLOBAL,
0205 };
0206 
0207 enum dst_factor_mode {
0208     DST_FAC_ALPHA_ZERO,
0209     DST_FAC_ALPHA_ONE,
0210     DST_FAC_ALPHA_SRC,
0211     DST_FAC_ALPHA_SRC_INVERSE,
0212     DST_FAC_ALPHA_DST,
0213     DST_FAC_ALPHA_DST_GLOBAL,
0214 };
0215 
0216 #define RK3568_GRF_VO_CON1          0x0364
0217 /* System registers definition */
0218 #define RK3568_REG_CFG_DONE         0x000
0219 #define RK3568_VERSION_INFO         0x004
0220 #define RK3568_SYS_AUTO_GATING_CTRL     0x008
0221 #define RK3568_SYS_AXI_LUT_CTRL         0x024
0222 #define RK3568_DSP_IF_EN            0x028
0223 #define RK3568_DSP_IF_CTRL          0x02c
0224 #define RK3568_DSP_IF_POL           0x030
0225 #define RK3568_WB_CTRL              0x40
0226 #define RK3568_WB_XSCAL_FACTOR          0x44
0227 #define RK3568_WB_YRGB_MST          0x48
0228 #define RK3568_WB_CBR_MST           0x4C
0229 #define RK3568_OTP_WIN_EN           0x050
0230 #define RK3568_LUT_PORT_SEL         0x058
0231 #define RK3568_SYS_STATUS0          0x060
0232 #define RK3568_VP_LINE_FLAG(vp)         (0x70 + (vp) * 0x4)
0233 #define RK3568_SYS0_INT_EN          0x80
0234 #define RK3568_SYS0_INT_CLR         0x84
0235 #define RK3568_SYS0_INT_STATUS          0x88
0236 #define RK3568_SYS1_INT_EN          0x90
0237 #define RK3568_SYS1_INT_CLR         0x94
0238 #define RK3568_SYS1_INT_STATUS          0x98
0239 #define RK3568_VP_INT_EN(vp)            (0xA0 + (vp) * 0x10)
0240 #define RK3568_VP_INT_CLR(vp)           (0xA4 + (vp) * 0x10)
0241 #define RK3568_VP_INT_STATUS(vp)        (0xA8 + (vp) * 0x10)
0242 #define RK3568_VP_INT_RAW_STATUS(vp)        (0xAC + (vp) * 0x10)
0243 
0244 /* Video Port registers definition */
0245 #define RK3568_VP_DSP_CTRL          0x00
0246 #define RK3568_VP_MIPI_CTRL         0x04
0247 #define RK3568_VP_COLOR_BAR_CTRL        0x08
0248 #define RK3568_VP_3D_LUT_CTRL           0x10
0249 #define RK3568_VP_3D_LUT_MST            0x20
0250 #define RK3568_VP_DSP_BG            0x2C
0251 #define RK3568_VP_PRE_SCAN_HTIMING      0x30
0252 #define RK3568_VP_POST_DSP_HACT_INFO        0x34
0253 #define RK3568_VP_POST_DSP_VACT_INFO        0x38
0254 #define RK3568_VP_POST_SCL_FACTOR_YRGB      0x3C
0255 #define RK3568_VP_POST_SCL_CTRL         0x40
0256 #define RK3568_VP_POST_DSP_VACT_INFO_F1     0x44
0257 #define RK3568_VP_DSP_HTOTAL_HS_END     0x48
0258 #define RK3568_VP_DSP_HACT_ST_END       0x4C
0259 #define RK3568_VP_DSP_VTOTAL_VS_END     0x50
0260 #define RK3568_VP_DSP_VACT_ST_END       0x54
0261 #define RK3568_VP_DSP_VS_ST_END_F1      0x58
0262 #define RK3568_VP_DSP_VACT_ST_END_F1        0x5C
0263 #define RK3568_VP_BCSH_CTRL         0x60
0264 #define RK3568_VP_BCSH_BCS          0x64
0265 #define RK3568_VP_BCSH_H            0x68
0266 #define RK3568_VP_BCSH_COLOR_BAR        0x6C
0267 
0268 /* Overlay registers definition    */
0269 #define RK3568_OVL_CTRL             0x600
0270 #define RK3568_OVL_LAYER_SEL            0x604
0271 #define RK3568_OVL_PORT_SEL         0x608
0272 #define RK3568_CLUSTER0_MIX_SRC_COLOR_CTRL  0x610
0273 #define RK3568_CLUSTER0_MIX_DST_COLOR_CTRL  0x614
0274 #define RK3568_CLUSTER0_MIX_SRC_ALPHA_CTRL  0x618
0275 #define RK3568_CLUSTER0_MIX_DST_ALPHA_CTRL  0x61C
0276 #define RK3568_MIX0_SRC_COLOR_CTRL      0x650
0277 #define RK3568_MIX0_DST_COLOR_CTRL      0x654
0278 #define RK3568_MIX0_SRC_ALPHA_CTRL      0x658
0279 #define RK3568_MIX0_DST_ALPHA_CTRL      0x65C
0280 #define RK3568_HDR0_SRC_COLOR_CTRL      0x6C0
0281 #define RK3568_HDR0_DST_COLOR_CTRL      0x6C4
0282 #define RK3568_HDR0_SRC_ALPHA_CTRL      0x6C8
0283 #define RK3568_HDR0_DST_ALPHA_CTRL      0x6CC
0284 #define RK3568_VP_BG_MIX_CTRL(vp)       (0x6E0 + (vp) * 4)
0285 #define RK3568_CLUSTER_DLY_NUM          0x6F0
0286 #define RK3568_SMART_DLY_NUM            0x6F8
0287 
0288 /* Cluster register definition, offset relative to window base */
0289 #define RK3568_CLUSTER_WIN_CTRL0        0x00
0290 #define RK3568_CLUSTER_WIN_CTRL1        0x04
0291 #define RK3568_CLUSTER_WIN_YRGB_MST     0x10
0292 #define RK3568_CLUSTER_WIN_CBR_MST      0x14
0293 #define RK3568_CLUSTER_WIN_VIR          0x18
0294 #define RK3568_CLUSTER_WIN_ACT_INFO     0x20
0295 #define RK3568_CLUSTER_WIN_DSP_INFO     0x24
0296 #define RK3568_CLUSTER_WIN_DSP_ST       0x28
0297 #define RK3568_CLUSTER_WIN_SCL_FACTOR_YRGB  0x30
0298 #define RK3568_CLUSTER_WIN_AFBCD_TRANSFORM_OFFSET   0x3C
0299 #define RK3568_CLUSTER_WIN_AFBCD_OUTPUT_CTRL    0x50
0300 #define RK3568_CLUSTER_WIN_AFBCD_ROTATE_MODE    0x54
0301 #define RK3568_CLUSTER_WIN_AFBCD_HDR_PTR    0x58
0302 #define RK3568_CLUSTER_WIN_AFBCD_VIR_WIDTH  0x5C
0303 #define RK3568_CLUSTER_WIN_AFBCD_PIC_SIZE   0x60
0304 #define RK3568_CLUSTER_WIN_AFBCD_PIC_OFFSET 0x64
0305 #define RK3568_CLUSTER_WIN_AFBCD_DSP_OFFSET 0x68
0306 #define RK3568_CLUSTER_WIN_AFBCD_CTRL       0x6C
0307 
0308 #define RK3568_CLUSTER_CTRL         0x100
0309 
0310 /* (E)smart register definition, offset relative to window base */
0311 #define RK3568_SMART_CTRL0          0x00
0312 #define RK3568_SMART_CTRL1          0x04
0313 #define RK3568_SMART_REGION0_CTRL       0x10
0314 #define RK3568_SMART_REGION0_YRGB_MST       0x14
0315 #define RK3568_SMART_REGION0_CBR_MST        0x18
0316 #define RK3568_SMART_REGION0_VIR        0x1C
0317 #define RK3568_SMART_REGION0_ACT_INFO       0x20
0318 #define RK3568_SMART_REGION0_DSP_INFO       0x24
0319 #define RK3568_SMART_REGION0_DSP_ST     0x28
0320 #define RK3568_SMART_REGION0_SCL_CTRL       0x30
0321 #define RK3568_SMART_REGION0_SCL_FACTOR_YRGB    0x34
0322 #define RK3568_SMART_REGION0_SCL_FACTOR_CBR 0x38
0323 #define RK3568_SMART_REGION0_SCL_OFFSET     0x3C
0324 #define RK3568_SMART_REGION1_CTRL       0x40
0325 #define RK3568_SMART_REGION1_YRGB_MST       0x44
0326 #define RK3568_SMART_REGION1_CBR_MST        0x48
0327 #define RK3568_SMART_REGION1_VIR        0x4C
0328 #define RK3568_SMART_REGION1_ACT_INFO       0x50
0329 #define RK3568_SMART_REGION1_DSP_INFO       0x54
0330 #define RK3568_SMART_REGION1_DSP_ST     0x58
0331 #define RK3568_SMART_REGION1_SCL_CTRL       0x60
0332 #define RK3568_SMART_REGION1_SCL_FACTOR_YRGB    0x64
0333 #define RK3568_SMART_REGION1_SCL_FACTOR_CBR 0x68
0334 #define RK3568_SMART_REGION1_SCL_OFFSET     0x6C
0335 #define RK3568_SMART_REGION2_CTRL       0x70
0336 #define RK3568_SMART_REGION2_YRGB_MST       0x74
0337 #define RK3568_SMART_REGION2_CBR_MST        0x78
0338 #define RK3568_SMART_REGION2_VIR        0x7C
0339 #define RK3568_SMART_REGION2_ACT_INFO       0x80
0340 #define RK3568_SMART_REGION2_DSP_INFO       0x84
0341 #define RK3568_SMART_REGION2_DSP_ST     0x88
0342 #define RK3568_SMART_REGION2_SCL_CTRL       0x90
0343 #define RK3568_SMART_REGION2_SCL_FACTOR_YRGB    0x94
0344 #define RK3568_SMART_REGION2_SCL_FACTOR_CBR 0x98
0345 #define RK3568_SMART_REGION2_SCL_OFFSET     0x9C
0346 #define RK3568_SMART_REGION3_CTRL       0xA0
0347 #define RK3568_SMART_REGION3_YRGB_MST       0xA4
0348 #define RK3568_SMART_REGION3_CBR_MST        0xA8
0349 #define RK3568_SMART_REGION3_VIR        0xAC
0350 #define RK3568_SMART_REGION3_ACT_INFO       0xB0
0351 #define RK3568_SMART_REGION3_DSP_INFO       0xB4
0352 #define RK3568_SMART_REGION3_DSP_ST     0xB8
0353 #define RK3568_SMART_REGION3_SCL_CTRL       0xC0
0354 #define RK3568_SMART_REGION3_SCL_FACTOR_YRGB    0xC4
0355 #define RK3568_SMART_REGION3_SCL_FACTOR_CBR 0xC8
0356 #define RK3568_SMART_REGION3_SCL_OFFSET     0xCC
0357 #define RK3568_SMART_COLOR_KEY_CTRL     0xD0
0358 
0359 /* HDR register definition */
0360 #define RK3568_HDR_LUT_CTRL         0x2000
0361 #define RK3568_HDR_LUT_MST          0x2004
0362 #define RK3568_SDR2HDR_CTRL         0x2010
0363 #define RK3568_HDR2SDR_CTRL         0x2020
0364 #define RK3568_HDR2SDR_SRC_RANGE        0x2024
0365 #define RK3568_HDR2SDR_NORMFACEETF      0x2028
0366 #define RK3568_HDR2SDR_DST_RANGE        0x202C
0367 #define RK3568_HDR2SDR_NORMFACCGAMMA        0x2030
0368 #define RK3568_HDR_EETF_OETF_Y0         0x203C
0369 #define RK3568_HDR_SAT_Y0           0x20C0
0370 #define RK3568_HDR_EOTF_OETF_Y0         0x20F0
0371 #define RK3568_HDR_OETF_DX_POW1         0x2200
0372 #define RK3568_HDR_OETF_XN1         0x2300
0373 
0374 #define RK3568_REG_CFG_DONE__GLB_CFG_DONE_EN        BIT(15)
0375 
0376 #define RK3568_VP_DSP_CTRL__STANDBY         BIT(31)
0377 #define RK3568_VP_DSP_CTRL__DITHER_DOWN_MODE        BIT(20)
0378 #define RK3568_VP_DSP_CTRL__DITHER_DOWN_SEL     GENMASK(19, 18)
0379 #define RK3568_VP_DSP_CTRL__DITHER_DOWN_EN      BIT(17)
0380 #define RK3568_VP_DSP_CTRL__PRE_DITHER_DOWN_EN      BIT(16)
0381 #define RK3568_VP_DSP_CTRL__POST_DSP_OUT_R2Y        BIT(15)
0382 #define RK3568_VP_DSP_CTRL__DSP_RB_SWAP         BIT(9)
0383 #define RK3568_VP_DSP_CTRL__DSP_INTERLACE       BIT(7)
0384 #define RK3568_VP_DSP_CTRL__DSP_FILED_POL       BIT(6)
0385 #define RK3568_VP_DSP_CTRL__P2I_EN          BIT(5)
0386 #define RK3568_VP_DSP_CTRL__CORE_DCLK_DIV       BIT(4)
0387 #define RK3568_VP_DSP_CTRL__OUT_MODE            GENMASK(3, 0)
0388 
0389 #define RK3568_VP_POST_SCL_CTRL__VSCALEDOWN     BIT(1)
0390 #define RK3568_VP_POST_SCL_CTRL__HSCALEDOWN     BIT(0)
0391 
0392 #define RK3568_SYS_DSP_INFACE_EN_LVDS1_MUX      GENMASK(26, 25)
0393 #define RK3568_SYS_DSP_INFACE_EN_LVDS1          BIT(24)
0394 #define RK3568_SYS_DSP_INFACE_EN_MIPI1_MUX      GENMASK(22, 21)
0395 #define RK3568_SYS_DSP_INFACE_EN_MIPI1          BIT(20)
0396 #define RK3568_SYS_DSP_INFACE_EN_LVDS0_MUX      GENMASK(19, 18)
0397 #define RK3568_SYS_DSP_INFACE_EN_MIPI0_MUX      GENMASK(17, 16)
0398 #define RK3568_SYS_DSP_INFACE_EN_EDP_MUX        GENMASK(15, 14)
0399 #define RK3568_SYS_DSP_INFACE_EN_HDMI_MUX       GENMASK(11, 10)
0400 #define RK3568_SYS_DSP_INFACE_EN_RGB_MUX        GENMASK(9, 8)
0401 #define RK3568_SYS_DSP_INFACE_EN_LVDS0          BIT(5)
0402 #define RK3568_SYS_DSP_INFACE_EN_MIPI0          BIT(4)
0403 #define RK3568_SYS_DSP_INFACE_EN_EDP            BIT(3)
0404 #define RK3568_SYS_DSP_INFACE_EN_HDMI           BIT(1)
0405 #define RK3568_SYS_DSP_INFACE_EN_RGB            BIT(0)
0406 
0407 #define RK3568_DSP_IF_POL__MIPI_PIN_POL         GENMASK(19, 16)
0408 #define RK3568_DSP_IF_POL__EDP_PIN_POL          GENMASK(15, 12)
0409 #define RK3568_DSP_IF_POL__HDMI_PIN_POL         GENMASK(7, 4)
0410 #define RK3568_DSP_IF_POL__RGB_LVDS_PIN_POL     GENMASK(3, 0)
0411 
0412 #define RK3568_VP0_MIPI_CTRL__DCLK_DIV2_PHASE_LOCK  BIT(5)
0413 #define RK3568_VP0_MIPI_CTRL__DCLK_DIV2         BIT(4)
0414 
0415 #define RK3568_SYS_AUTO_GATING_CTRL__AUTO_GATING_EN BIT(31)
0416 
0417 #define RK3568_DSP_IF_POL__CFG_DONE_IMD         BIT(28)
0418 
0419 #define VOP2_SYS_AXI_BUS_NUM                2
0420 
0421 #define VOP2_CLUSTER_YUV444_10              0x12
0422 
0423 #define VOP2_COLOR_KEY_MASK             BIT(31)
0424 
0425 #define RK3568_OVL_CTRL__LAYERSEL_REGDONE_IMD       BIT(28)
0426 
0427 #define RK3568_VP_BG_MIX_CTRL__BG_DLY           GENMASK(31, 24)
0428 
0429 #define RK3568_OVL_PORT_SEL__SEL_PORT           GENMASK(31, 16)
0430 #define RK3568_OVL_PORT_SEL__SMART1         GENMASK(31, 30)
0431 #define RK3568_OVL_PORT_SEL__SMART0         GENMASK(29, 28)
0432 #define RK3568_OVL_PORT_SEL__ESMART1            GENMASK(27, 26)
0433 #define RK3568_OVL_PORT_SEL__ESMART0            GENMASK(25, 24)
0434 #define RK3568_OVL_PORT_SEL__CLUSTER1           GENMASK(19, 18)
0435 #define RK3568_OVL_PORT_SEL__CLUSTER0           GENMASK(17, 16)
0436 #define RK3568_OVL_PORT_SET__PORT2_MUX          GENMASK(11, 8)
0437 #define RK3568_OVL_PORT_SET__PORT1_MUX          GENMASK(7, 4)
0438 #define RK3568_OVL_PORT_SET__PORT0_MUX          GENMASK(3, 0)
0439 #define RK3568_OVL_LAYER_SEL__LAYER(layer, x)       ((x) << ((layer) * 4))
0440 
0441 #define RK3568_CLUSTER_DLY_NUM__CLUSTER1_1      GENMASK(31, 24)
0442 #define RK3568_CLUSTER_DLY_NUM__CLUSTER1_0      GENMASK(23, 16)
0443 #define RK3568_CLUSTER_DLY_NUM__CLUSTER0_1      GENMASK(15, 8)
0444 #define RK3568_CLUSTER_DLY_NUM__CLUSTER0_0      GENMASK(7, 0)
0445 
0446 #define RK3568_SMART_DLY_NUM__SMART1            GENMASK(31, 24)
0447 #define RK3568_SMART_DLY_NUM__SMART0            GENMASK(23, 16)
0448 #define RK3568_SMART_DLY_NUM__ESMART1           GENMASK(15, 8)
0449 #define RK3568_SMART_DLY_NUM__ESMART0           GENMASK(7, 0)
0450 
0451 #define VP_INT_DSP_HOLD_VALID   BIT(6)
0452 #define VP_INT_FS_FIELD     BIT(5)
0453 #define VP_INT_POST_BUF_EMPTY   BIT(4)
0454 #define VP_INT_LINE_FLAG1   BIT(3)
0455 #define VP_INT_LINE_FLAG0   BIT(2)
0456 #define VOP2_INT_BUS_ERRPR  BIT(1)
0457 #define VP_INT_FS       BIT(0)
0458 
0459 #define POLFLAG_DCLK_INV    BIT(3)
0460 
0461 enum vop2_layer_phy_id {
0462     ROCKCHIP_VOP2_CLUSTER0 = 0,
0463     ROCKCHIP_VOP2_CLUSTER1,
0464     ROCKCHIP_VOP2_ESMART0,
0465     ROCKCHIP_VOP2_ESMART1,
0466     ROCKCHIP_VOP2_SMART0,
0467     ROCKCHIP_VOP2_SMART1,
0468     ROCKCHIP_VOP2_CLUSTER2,
0469     ROCKCHIP_VOP2_CLUSTER3,
0470     ROCKCHIP_VOP2_ESMART2,
0471     ROCKCHIP_VOP2_ESMART3,
0472     ROCKCHIP_VOP2_PHY_ID_INVALID = -1,
0473 };
0474 
0475 extern const struct component_ops vop2_component_ops;
0476 
0477 #endif /* _ROCKCHIP_DRM_VOP2_H */