Skip to content

Commit 32f645a

Browse files
committed
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>
1 parent 52ca39c commit 32f645a

File tree

1 file changed

+5
-56
lines changed

1 file changed

+5
-56
lines changed

drivers/gpu/drm/starfive/starfive_drm_lcdc.c

Lines changed: 5 additions & 56 deletions
Original file line numberDiff line numberDiff line change
@@ -396,66 +396,15 @@ void lcdc_run(struct starfive_crtc *sf_crtc, uint32_t winMode, uint32_t lcdTrig)
396396

397397
static int sf_fb_lcdc_clk_cfg(struct starfive_crtc *sf_crtc, struct drm_crtc_state *state)
398398
{
399-
u32 reg_val = clk_get_rate(sf_crtc->clk_vout_src) / (state->mode.clock * HZ_PER_KHZ);
400399
u32 tmp_val;
400+
u32 reg_val = clk_get_rate(sf_crtc->clk_vout_src) / (state->mode.clock * HZ_PER_KHZ);
401401

402402
dev_dbg(sf_crtc->dev, "%s: reg_val = %u\n", __func__, reg_val);
403403

404-
switch (state->adjusted_mode.crtc_hdisplay) {
405-
case 640:
406-
tmp_val = sf_fb_clkread32(sf_crtc, CLK_LCDC_OCLK_CTRL);
407-
tmp_val &= ~(0x3F);
408-
tmp_val |= (59 & 0x3F);
409-
sf_fb_clkwrite32(sf_crtc, CLK_LCDC_OCLK_CTRL, tmp_val);
410-
break;
411-
case 840:
412-
tmp_val = sf_fb_clkread32(sf_crtc, CLK_LCDC_OCLK_CTRL);
413-
tmp_val &= ~(0x3F);
414-
tmp_val |= (54 & 0x3F);
415-
sf_fb_clkwrite32(sf_crtc, CLK_LCDC_OCLK_CTRL, tmp_val);
416-
break;
417-
case 1024:
418-
tmp_val = sf_fb_clkread32(sf_crtc, CLK_LCDC_OCLK_CTRL);
419-
tmp_val &= ~(0x3F);
420-
tmp_val |= (30 & 0x3F);
421-
sf_fb_clkwrite32(sf_crtc, CLK_LCDC_OCLK_CTRL, tmp_val);
422-
break;
423-
case 1280:
424-
tmp_val = sf_fb_clkread32(sf_crtc, CLK_LCDC_OCLK_CTRL);
425-
tmp_val &= ~(0x3F);
426-
tmp_val |= (30 & 0x3F);
427-
sf_fb_clkwrite32(sf_crtc, CLK_LCDC_OCLK_CTRL, tmp_val);
428-
break;
429-
case 1440:
430-
tmp_val = sf_fb_clkread32(sf_crtc, CLK_LCDC_OCLK_CTRL);
431-
tmp_val &= ~(0x3F);
432-
tmp_val |= (30 & 0x3F);
433-
sf_fb_clkwrite32(sf_crtc, CLK_LCDC_OCLK_CTRL, tmp_val);
434-
break;
435-
case 1680:
436-
tmp_val = sf_fb_clkread32(sf_crtc, CLK_LCDC_OCLK_CTRL);
437-
tmp_val &= ~(0x3F);
438-
tmp_val |= (24 & 0x3F); //24 30MHZ
439-
sf_fb_clkwrite32(sf_crtc, CLK_LCDC_OCLK_CTRL, tmp_val);
440-
break;
441-
case 1920:
442-
tmp_val = sf_fb_clkread32(sf_crtc, CLK_LCDC_OCLK_CTRL);
443-
tmp_val &= ~(0x3F);
444-
tmp_val |= (10 & 0x3F); //20 30MHz , 15 40Mhz, 10 60Mhz
445-
sf_fb_clkwrite32(sf_crtc, CLK_LCDC_OCLK_CTRL, tmp_val);
446-
break;
447-
case 2048:
448-
tmp_val = sf_fb_clkread32(sf_crtc, CLK_LCDC_OCLK_CTRL);
449-
tmp_val &= ~(0x3F);
450-
tmp_val |= (10 & 0x3F);
451-
sf_fb_clkwrite32(sf_crtc, CLK_LCDC_OCLK_CTRL, tmp_val);
452-
break;
453-
default:
454-
tmp_val = sf_fb_clkread32(sf_crtc, CLK_LCDC_OCLK_CTRL);
455-
tmp_val &= ~(0x3F);
456-
tmp_val |= (reg_val & 0x3F);
457-
sf_fb_clkwrite32(sf_crtc, CLK_LCDC_OCLK_CTRL, tmp_val);
458-
}
404+
tmp_val = sf_fb_clkread32(sf_crtc, CLK_LCDC_OCLK_CTRL);
405+
tmp_val &= ~(0x3F);
406+
tmp_val |= (reg_val & 0x3F);
407+
sf_fb_clkwrite32(sf_crtc, CLK_LCDC_OCLK_CTRL, tmp_val);
459408

460409
return 0;
461410
}

0 commit comments

Comments
 (0)