From 2b2c19fc40e227ccc9f0e0d230c752a9875f26e9 Mon Sep 17 00:00:00 2001 From: "shengyang.chen" Date: Mon, 18 Apr 2022 17:58:36 +0800 Subject: riscv: linux: drm: update mipi screen parameter fix mipi screen dithering problem Signed-off-by: shengyang.chen --- drivers/gpu/drm/starfive/starfive_drm_dsi.c | 8 ++++---- drivers/gpu/drm/starfive/starfive_drm_seeedpanel.c | 17 ++++++++--------- drivers/phy/m31/phy-m31-dphy-tx0.c | 2 +- 3 files changed, 13 insertions(+), 14 deletions(-) diff --git a/drivers/gpu/drm/starfive/starfive_drm_dsi.c b/drivers/gpu/drm/starfive/starfive_drm_dsi.c index 8ab16fe5697c..73289a549fc7 100644 --- a/drivers/gpu/drm/starfive/starfive_drm_dsi.c +++ b/drivers/gpu/drm/starfive/starfive_drm_dsi.c @@ -553,9 +553,9 @@ static int cdns_dsi_mode2cfg(struct cdns_dsi *dsi, bpp, DSI_HFP_FRAME_OVERHEAD); //dpi to dsi transfer can not match , reconfig those parms if (mode->hdisplay == 800) { - dsi_cfg->hsa = 16; //30-14 - dsi_cfg->hbp = 73; //85-12 - dsi_cfg->hfp = 146; //152-6 + dsi_cfg->hsa = 31; //45-14 + dsi_cfg->hbp = 103; //115-12 + dsi_cfg->hfp = 354; //360-6 } return 0; @@ -843,7 +843,7 @@ static void cdns_dsi_bridge_enable(struct drm_bridge *bridge) dsi->regs + VID_HSIZE2); writel(VBP_LEN(mode->crtc_vtotal - mode->crtc_vsync_end - 1) | - VFP_LEN(mode->crtc_vsync_start - mode->crtc_vdisplay) | + VFP_LEN(mode->crtc_vsync_start - mode->crtc_vdisplay - 1) | VSA_LEN(mode->crtc_vsync_end - mode->crtc_vsync_start + 1), dsi->regs + VID_VSIZE1); writel(mode->crtc_vdisplay, dsi->regs + VID_VSIZE2); diff --git a/drivers/gpu/drm/starfive/starfive_drm_seeedpanel.c b/drivers/gpu/drm/starfive/starfive_drm_seeedpanel.c index 0798e50b3dcf..58e360b9cefa 100644 --- a/drivers/gpu/drm/starfive/starfive_drm_seeedpanel.c +++ b/drivers/gpu/drm/starfive/starfive_drm_seeedpanel.c @@ -220,15 +220,15 @@ static struct seeed_panel_dev *panel_to_seeed(struct drm_panel *panel) static const struct drm_display_mode seeed_panel_modes[] = { { - .clock = 33000000 / 1000, + .clock = 27000000 / 1000, .hdisplay = 800, - .hsync_start = 800 + 50, - .hsync_end = 800 + 50 + 20, - .htotal = 800 + 50 + 20 + 10, + .hsync_start = 800 + 90, + .hsync_end = 800 + 90 + 5, + .htotal = 800 + 90 + 5 + 5, .vdisplay = 480, - .vsync_start = 480 + 135, - .vsync_end = 480 + 135 + 5, - .vtotal = 480 + 135 + 5 + 5, + .vsync_start = 480 + 10, + .vsync_end = 480 + 10 + 5, + .vtotal = 480 + 10 + 5 + 5, }, }; @@ -476,8 +476,7 @@ static int seeed_dsi_probe(struct mipi_dsi_device *dsi) int ret; dsi->mode_flags = (MIPI_DSI_MODE_VIDEO | - MIPI_DSI_MODE_VIDEO_SYNC_PULSE | - MIPI_DSI_MODE_LPM); + MIPI_DSI_MODE_VIDEO_SYNC_PULSE); dsi->format = MIPI_DSI_FMT_RGB888; dsi->lanes = 1; diff --git a/drivers/phy/m31/phy-m31-dphy-tx0.c b/drivers/phy/m31/phy-m31-dphy-tx0.c index 2bd8e43f1338..aa3cfe9d0680 100644 --- a/drivers/phy/m31/phy-m31-dphy-tx0.c +++ b/drivers/phy/m31/phy-m31-dphy-tx0.c @@ -413,7 +413,7 @@ static void polling_dphy_lock(struct sf_dphy *priv) static int sf_dphy_configure(struct phy *phy, union phy_configure_opts *opts) { struct sf_dphy *dphy = phy_get_drvdata(phy); - uint32_t bit_rate = 800000000/1000000UL;//new mipi panel clock setting + uint32_t bit_rate = 700000000/1000000UL;//new mipi panel clock setting dphy_config(dphy, bit_rate); -- cgit v1.2.3