From 4427d8f5483bf3a1084e67a8b9eb48d43d24255e Mon Sep 17 00:00:00 2001 From: Damon Ding Date: Fri, 24 May 2024 18:52:40 +0800 Subject: [PATCH] drm/rockchip: rgb: add dclk_delayline config for rk3576 The dclk_delayline is to adjust the phase between dclk and data for bt1120/bt656/rgb interface. According to the rk3576 SI test report, the dclk_delayline should be 0x5 in order to improve signal quality. Change-Id: I93d3b865d0b012588ce022876af81ccc47451f32 Signed-off-by: Damon Ding --- drivers/gpu/drm/rockchip/rockchip_rgb.c | 10 ++++++++++ 1 file changed, 10 insertions(+) diff --git a/drivers/gpu/drm/rockchip/rockchip_rgb.c b/drivers/gpu/drm/rockchip/rockchip_rgb.c index abf1a63e04e7..f93511282777 100644 --- a/drivers/gpu/drm/rockchip/rockchip_rgb.c +++ b/drivers/gpu/drm/rockchip/rockchip_rgb.c @@ -62,6 +62,8 @@ #define RK3576_IOC_GRF_MISC_CON8 0x6420 #define RK3576_VOP_MCU_SEL(v) HIWORD_UPDATE(v, 10, 10) +#define RK3576_VOP_DLL_SEL(v) HIWORD_UPDATE(v, 8, 8) +#define RK3576_VOP_DCLK_DELAYLINE(v) HIWORD_UPDATE(v, 0, 6) struct rockchip_rgb; @@ -73,6 +75,7 @@ struct rockchip_rgb_funcs { struct rockchip_rgb_data { u32 rgb_max_dclk_rate; u32 mcu_max_dclk_rate; + u32 dclk_delayline; const struct rockchip_rgb_funcs *funcs; }; @@ -134,6 +137,7 @@ struct rockchip_rgb { u8 id; u32 max_dclk_rate; u32 mcu_pix_total; + u32 dclk_delayline; struct device *dev; struct device_node *np_mcu_panel; struct drm_panel *panel; @@ -984,6 +988,7 @@ static int rockchip_rgb_probe(struct platform_device *pdev) rgb->max_dclk_rate = rgb_data->mcu_max_dclk_rate; else rgb->max_dclk_rate = rgb_data->rgb_max_dclk_rate; + rgb->dclk_delayline = rgb_data->dclk_delayline; } rgb->id = id; rgb->dev = dev; @@ -1106,6 +1111,10 @@ static void rk3576_rgb_enable(struct rockchip_rgb *rgb) { regmap_write(rgb->grf, RK3576_IOC_GRF_MISC_CON8, RK3576_VOP_MCU_SEL(rgb->data_sync_bypass)); + regmap_write(rgb->grf, RK3576_IOC_GRF_MISC_CON8, + RK3576_VOP_DLL_SEL(true)); + regmap_write(rgb->grf, RK3576_IOC_GRF_MISC_CON8, + RK3576_VOP_DCLK_DELAYLINE(rgb->dclk_delayline)); } static const struct rockchip_rgb_funcs rk3576_rgb_funcs = { @@ -1113,6 +1122,7 @@ static const struct rockchip_rgb_funcs rk3576_rgb_funcs = { }; static const struct rockchip_rgb_data rk3576_rgb = { + .dclk_delayline = 5, .funcs = &rk3576_rgb_funcs, };