From 5b8f017ee311decd664582b7a780b01faae3e40d Mon Sep 17 00:00:00 2001 From: Chaoyi Chen Date: Tue, 25 Mar 2025 11:18:46 +0000 Subject: [PATCH] drm/rockchip: vop: Add MCU support for RV1126B Change-Id: Ic91e167930d92a7cb13f345199a5ee5560df1fa8 Signed-off-by: Chaoyi Chen --- drivers/gpu/drm/rockchip/rockchip_drm_vop.c | 6 ++++-- drivers/gpu/drm/rockchip/rockchip_drm_vop.h | 1 + drivers/gpu/drm/rockchip/rockchip_vop_reg.c | 4 +++- 3 files changed, 8 insertions(+), 3 deletions(-) diff --git a/drivers/gpu/drm/rockchip/rockchip_drm_vop.c b/drivers/gpu/drm/rockchip/rockchip_drm_vop.c index 85ef072e4065..51bccd6cdd57 100644 --- a/drivers/gpu/drm/rockchip/rockchip_drm_vop.c +++ b/drivers/gpu/drm/rockchip/rockchip_drm_vop.c @@ -4144,8 +4144,10 @@ static void vop_crtc_atomic_enable(struct drm_crtc *crtc, vop_crtc_load_lut(crtc); if (vop->mcu_timing.mcu_pix_total) { - if (vop->version == VOP_VERSION_RK3576_LITE || - vop->version == VOP_VERSION_RK3506) + /* + * For RK3576_LITE/RK3506/RV1126B + */ + if (vop->version >= VOP_VERSION_RK3576_LITE && vop->version <= VOP_VERSION_RK3288) vop_set_out_mode(vop, s->output_mode); else vop_set_out_mode(vop, ROCKCHIP_OUT_MODE_P888); diff --git a/drivers/gpu/drm/rockchip/rockchip_drm_vop.h b/drivers/gpu/drm/rockchip/rockchip_drm_vop.h index d7473994fbab..8a701fb77903 100644 --- a/drivers/gpu/drm/rockchip/rockchip_drm_vop.h +++ b/drivers/gpu/drm/rockchip/rockchip_drm_vop.h @@ -31,6 +31,7 @@ #define VOP_VERSION_RV1106 VOP_VERSION(2, 0xc) #define VOP_VERSION_RK3576_LITE VOP_VERSION(2, 0xd) #define VOP_VERSION_RK3506 VOP_VERSION(2, 0xe) +#define VOP_VERSION_RV1126B VOP_VERSION(2, 0xf) #define VOP_VERSION_RK3288 VOP_VERSION(3, 0) #define VOP_VERSION_RK3288W VOP_VERSION(3, 1) #define VOP_VERSION_RK3368 VOP_VERSION(3, 2) diff --git a/drivers/gpu/drm/rockchip/rockchip_vop_reg.c b/drivers/gpu/drm/rockchip/rockchip_vop_reg.c index 2a4351bc15fd..4c394987a884 100644 --- a/drivers/gpu/drm/rockchip/rockchip_vop_reg.c +++ b/drivers/gpu/drm/rockchip/rockchip_vop_reg.c @@ -35,6 +35,7 @@ VOP_REG_VER_MASK(off, _mask, s, false, \ _major, _begin_minor, _end_minor) +static const struct vop_mcu_bypass_cfg rk3576_lit_mcu_bypass_cfg; static const uint32_t formats_win_full[] = { DRM_FORMAT_XRGB8888, @@ -2040,7 +2041,7 @@ static const struct vop_wb_data rv1126b_vop_wb_data = { static const struct vop_data rv1126b_vop = { .soc_id = 0x1126b, .vop_id = 0, - .version = VOP_VERSION(2, 5), + .version = VOP_VERSION(2, 0xf), .max_input = {1920, 1920}, .max_output = {1920, 1080}, .ctrl = &rv1126b_ctrl_data, @@ -2050,6 +2051,7 @@ static const struct vop_data rv1126b_vop = { .grf = &rv1126b_grf_ctrl, .win = rv1126_vop_win_data, .win_size = ARRAY_SIZE(rv1126_vop_win_data), + .mcu_bypass_cfg = &rk3576_lit_mcu_bypass_cfg, }; static const struct vop_ctrl rv1106_ctrl_data = {