@@ -396,66 +396,15 @@ void lcdc_run(struct starfive_crtc *sf_crtc, uint32_t winMode, uint32_t lcdTrig)
396396
397397static 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