From c1b779797a465bf48524d076df7b7d79a97f6ff8 Mon Sep 17 00:00:00 2001 From: Andy Yan Date: Mon, 20 Apr 2020 18:00:08 +0800 Subject: [PATCH] drm/rockchip: rgb: Add LCDC_IO BYPASS for rv1126 The LCDC_IO bypass bit should be enabled when vop output as mcu interface. Signed-off-by: Andy Yan Change-Id: I8a1f6c3da8ec21fb76796faffb2ee74389c10f0e --- drivers/gpu/drm/rockchip/rockchip_rgb.c | 15 ++++++++++++++- 1 file changed, 14 insertions(+), 1 deletion(-) diff --git a/drivers/gpu/drm/rockchip/rockchip_rgb.c b/drivers/gpu/drm/rockchip/rockchip_rgb.c index 04a9335e8b03..82fef74b4309 100644 --- a/drivers/gpu/drm/rockchip/rockchip_rgb.c +++ b/drivers/gpu/drm/rockchip/rockchip_rgb.c @@ -41,6 +41,9 @@ #define RK1808_GRF_PD_VO_CON1 0x0444 #define RK1808_RGB_DATA_SYNC_BYPASS(v) HIWORD_UPDATE(v, 3, 3) +#define RV1126_GRF_IOFUNC_CON3 0x1026c +#define RV1126_LCDC_IO_BYPASS(v) HIWORD_UPDATE(v, 0, 0) + #define RK3288_GRF_SOC_CON6 0x025c #define RK3288_LVDS_LCDC_SEL(x) HIWORD_UPDATE(x, 3, 3) #define RK3288_GRF_SOC_CON7 0x0260 @@ -417,6 +420,16 @@ static const struct rockchip_rgb_funcs rk3288_rgb_funcs = { .disable = rk3288_rgb_disable, }; +static void rv1126_rgb_enable(struct rockchip_rgb *rgb) +{ + regmap_write(rgb->grf, RV1126_GRF_IOFUNC_CON3, + RV1126_LCDC_IO_BYPASS(rgb->data_sync_bypass)); +} + +static const struct rockchip_rgb_funcs rv1126_rgb_funcs = { + .enable = rv1126_rgb_enable, +}; + static const struct of_device_id rockchip_rgb_dt_ids[] = { { .compatible = "rockchip,px30-rgb", .data = &px30_rgb_funcs }, { .compatible = "rockchip,rk1808-rgb", .data = &rk1808_rgb_funcs }, @@ -426,7 +439,7 @@ static const struct of_device_id rockchip_rgb_dt_ids[] = { { .compatible = "rockchip,rk3308-rgb", }, { .compatible = "rockchip,rk3368-rgb", }, { .compatible = "rockchip,rv1108-rgb", }, - { .compatible = "rockchip,rv1126-rgb", }, + { .compatible = "rockchip,rv1126-rgb", .data = &rv1126_rgb_funcs}, {} }; MODULE_DEVICE_TABLE(of, rockchip_rgb_dt_ids);