summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMichaelZhuxx <michael.zhu@starfivetech.com>2021-12-22 11:36:24 +0300
committerMichaelZhuxx <michael.zhu@starfivetech.com>2021-12-30 08:52:29 +0300
commit32f645aaf3b1fb8c47ae9dfb50a6ab642b6fa5b4 (patch)
treee74772590bf50f139dba61ce82cb3b632067b2e3
parent52ca39c92857443259cc503e6788a6fab398949d (diff)
downloadlinux-32f645aaf3b1fb8c47ae9dfb50a6ab642b6fa5b4.tar.xz
drm/starfive: update clk configuration for lcdc
Remove this part of the code that was originally intended for screen adaptation under the framebuffer framework, meanwhile, fix the problem that switching to some resolutions is not successful. Signed-off-by: keith.zhao <keith.zhao@starfivetech.com>
-rw-r--r--drivers/gpu/drm/starfive/starfive_drm_lcdc.c61
1 files changed, 5 insertions, 56 deletions
diff --git a/drivers/gpu/drm/starfive/starfive_drm_lcdc.c b/drivers/gpu/drm/starfive/starfive_drm_lcdc.c
index 1e3c0156c0f6..a78483711698 100644
--- a/drivers/gpu/drm/starfive/starfive_drm_lcdc.c
+++ b/drivers/gpu/drm/starfive/starfive_drm_lcdc.c
@@ -396,66 +396,15 @@ void lcdc_run(struct starfive_crtc *sf_crtc, uint32_t winMode, uint32_t lcdTrig)
static int sf_fb_lcdc_clk_cfg(struct starfive_crtc *sf_crtc, struct drm_crtc_state *state)
{
- u32 reg_val = clk_get_rate(sf_crtc->clk_vout_src) / (state->mode.clock * HZ_PER_KHZ);
u32 tmp_val;
+ u32 reg_val = clk_get_rate(sf_crtc->clk_vout_src) / (state->mode.clock * HZ_PER_KHZ);
dev_dbg(sf_crtc->dev, "%s: reg_val = %u\n", __func__, reg_val);
- switch (state->adjusted_mode.crtc_hdisplay) {
- case 640:
- tmp_val = sf_fb_clkread32(sf_crtc, CLK_LCDC_OCLK_CTRL);
- tmp_val &= ~(0x3F);
- tmp_val |= (59 & 0x3F);
- sf_fb_clkwrite32(sf_crtc, CLK_LCDC_OCLK_CTRL, tmp_val);
- break;
- case 840:
- tmp_val = sf_fb_clkread32(sf_crtc, CLK_LCDC_OCLK_CTRL);
- tmp_val &= ~(0x3F);
- tmp_val |= (54 & 0x3F);
- sf_fb_clkwrite32(sf_crtc, CLK_LCDC_OCLK_CTRL, tmp_val);
- break;
- case 1024:
- tmp_val = sf_fb_clkread32(sf_crtc, CLK_LCDC_OCLK_CTRL);
- tmp_val &= ~(0x3F);
- tmp_val |= (30 & 0x3F);
- sf_fb_clkwrite32(sf_crtc, CLK_LCDC_OCLK_CTRL, tmp_val);
- break;
- case 1280:
- tmp_val = sf_fb_clkread32(sf_crtc, CLK_LCDC_OCLK_CTRL);
- tmp_val &= ~(0x3F);
- tmp_val |= (30 & 0x3F);
- sf_fb_clkwrite32(sf_crtc, CLK_LCDC_OCLK_CTRL, tmp_val);
- break;
- case 1440:
- tmp_val = sf_fb_clkread32(sf_crtc, CLK_LCDC_OCLK_CTRL);
- tmp_val &= ~(0x3F);
- tmp_val |= (30 & 0x3F);
- sf_fb_clkwrite32(sf_crtc, CLK_LCDC_OCLK_CTRL, tmp_val);
- break;
- case 1680:
- tmp_val = sf_fb_clkread32(sf_crtc, CLK_LCDC_OCLK_CTRL);
- tmp_val &= ~(0x3F);
- tmp_val |= (24 & 0x3F); //24 30MHZ
- sf_fb_clkwrite32(sf_crtc, CLK_LCDC_OCLK_CTRL, tmp_val);
- break;
- case 1920:
- tmp_val = sf_fb_clkread32(sf_crtc, CLK_LCDC_OCLK_CTRL);
- tmp_val &= ~(0x3F);
- tmp_val |= (10 & 0x3F); //20 30MHz , 15 40Mhz, 10 60Mhz
- sf_fb_clkwrite32(sf_crtc, CLK_LCDC_OCLK_CTRL, tmp_val);
- break;
- case 2048:
- tmp_val = sf_fb_clkread32(sf_crtc, CLK_LCDC_OCLK_CTRL);
- tmp_val &= ~(0x3F);
- tmp_val |= (10 & 0x3F);
- sf_fb_clkwrite32(sf_crtc, CLK_LCDC_OCLK_CTRL, tmp_val);
- break;
- default:
- tmp_val = sf_fb_clkread32(sf_crtc, CLK_LCDC_OCLK_CTRL);
- tmp_val &= ~(0x3F);
- tmp_val |= (reg_val & 0x3F);
- sf_fb_clkwrite32(sf_crtc, CLK_LCDC_OCLK_CTRL, tmp_val);
- }
+ tmp_val = sf_fb_clkread32(sf_crtc, CLK_LCDC_OCLK_CTRL);
+ tmp_val &= ~(0x3F);
+ tmp_val |= (reg_val & 0x3F);
+ sf_fb_clkwrite32(sf_crtc, CLK_LCDC_OCLK_CTRL, tmp_val);
return 0;
}