diff --git a/drivers/gpu/drm/rockchip/rockchip_rgb.c b/drivers/gpu/drm/rockchip/rockchip_rgb.c index 2d0aff8b71e0..f5be589c3edc 100644 --- a/drivers/gpu/drm/rockchip/rockchip_rgb.c +++ b/drivers/gpu/drm/rockchip/rockchip_rgb.c @@ -45,6 +45,9 @@ #define RV1126_GRF_IOFUNC_CON3 0x1026c #define RV1126_LCDC_IO_BYPASS(v) HIWORD_UPDATE(v, 0, 0) +#define RV1126B_GRF_VOP_LCDC_CON 0x30b9c +#define RV1126B_VOP_MCU_SEL(v) HIWORD_UPDATE(v, 15, 15) + #define RK3288_GRF_SOC_CON6 0x025c #define RK3288_LVDS_LCDC_SEL(x) HIWORD_UPDATE(x, 3, 3) #define RK3288_GRF_SOC_CON7 0x0260 @@ -1201,6 +1204,20 @@ static const struct rockchip_rgb_data rv1126_rgb = { .funcs = &rv1126_rgb_funcs, }; +static void rv1126b_rgb_enable(struct rockchip_rgb *rgb) +{ + regmap_write(rgb->grf, RV1126B_GRF_VOP_LCDC_CON, + RV1126B_VOP_MCU_SEL(rgb->data_sync_bypass)); +} + +static const struct rockchip_rgb_funcs rv1126b_rgb_funcs = { + .enable = rv1126b_rgb_enable, +}; + +static const struct rockchip_rgb_data rv1126b_rgb = { + .funcs = &rv1126b_rgb_funcs, +}; + static void rv1106_rgb_enable(struct rockchip_rgb *rgb) { regmap_write(rgb->grf, RV1106_VENC_GRF_VOP_IO_WRAPPER, @@ -1235,6 +1252,7 @@ static const struct of_device_id rockchip_rgb_dt_ids[] = { { .compatible = "rockchip,rv1106-rgb", .data = &rv1106_rgb}, { .compatible = "rockchip,rv1108-rgb", }, { .compatible = "rockchip,rv1126-rgb", .data = &rv1126_rgb}, + { .compatible = "rockchip,rv1126b-rgb", .data = &rv1126b_rgb}, {} }; MODULE_DEVICE_TABLE(of, rockchip_rgb_dt_ids);