@@ -351,40 +351,6 @@ static void mtk_dsi_set_vm_cmd(struct mtk_dsi *dsi)
351351 mtk_dsi_mask (dsi , DSI_VM_CMD_CON , TS_VFP_EN , TS_VFP_EN );
352352}
353353
354- static void mtk_dsi_ps_control_vact (struct mtk_dsi * dsi )
355- {
356- struct videomode * vm = & dsi -> vm ;
357- u32 dsi_buf_bpp , ps_wc ;
358- u32 ps_bpp_mode ;
359-
360- if (dsi -> format == MIPI_DSI_FMT_RGB565 )
361- dsi_buf_bpp = 2 ;
362- else
363- dsi_buf_bpp = 3 ;
364-
365- ps_wc = vm -> hactive * dsi_buf_bpp ;
366- ps_bpp_mode = ps_wc ;
367-
368- switch (dsi -> format ) {
369- case MIPI_DSI_FMT_RGB888 :
370- ps_bpp_mode |= PACKED_PS_24BIT_RGB888 ;
371- break ;
372- case MIPI_DSI_FMT_RGB666 :
373- ps_bpp_mode |= LOOSELY_PS_24BIT_RGB666 ;
374- break ;
375- case MIPI_DSI_FMT_RGB666_PACKED :
376- ps_bpp_mode |= PACKED_PS_18BIT_RGB666 ;
377- break ;
378- case MIPI_DSI_FMT_RGB565 :
379- ps_bpp_mode |= PACKED_PS_16BIT_RGB565 ;
380- break ;
381- }
382-
383- writel (vm -> vactive , dsi -> regs + DSI_VACT_NL );
384- writel (ps_bpp_mode , dsi -> regs + DSI_PSCTRL );
385- writel (ps_wc , dsi -> regs + DSI_HSTX_CKL_WC );
386- }
387-
388354static void mtk_dsi_rxtx_control (struct mtk_dsi * dsi )
389355{
390356 u32 tmp_reg ;
@@ -416,36 +382,42 @@ static void mtk_dsi_rxtx_control(struct mtk_dsi *dsi)
416382 writel (tmp_reg , dsi -> regs + DSI_TXRX_CTRL );
417383}
418384
419- static void mtk_dsi_ps_control (struct mtk_dsi * dsi )
385+ static void mtk_dsi_ps_control (struct mtk_dsi * dsi , bool config_vact )
420386{
421- u32 dsi_tmp_buf_bpp ;
422- u32 tmp_reg ;
387+ struct videomode * vm = & dsi -> vm ;
388+ u32 dsi_buf_bpp , ps_wc ;
389+ u32 ps_bpp_mode ;
390+
391+ if (dsi -> format == MIPI_DSI_FMT_RGB565 )
392+ dsi_buf_bpp = 2 ;
393+ else
394+ dsi_buf_bpp = 3 ;
395+
396+ ps_wc = vm -> hactive * dsi_buf_bpp ;
397+ ps_bpp_mode = ps_wc ;
423398
424399 switch (dsi -> format ) {
400+ default :
401+ fallthrough ;
425402 case MIPI_DSI_FMT_RGB888 :
426- tmp_reg = PACKED_PS_24BIT_RGB888 ;
427- dsi_tmp_buf_bpp = 3 ;
403+ ps_bpp_mode |= PACKED_PS_24BIT_RGB888 ;
428404 break ;
429405 case MIPI_DSI_FMT_RGB666 :
430- tmp_reg = LOOSELY_PS_24BIT_RGB666 ;
431- dsi_tmp_buf_bpp = 3 ;
406+ ps_bpp_mode |= LOOSELY_PS_24BIT_RGB666 ;
432407 break ;
433408 case MIPI_DSI_FMT_RGB666_PACKED :
434- tmp_reg = PACKED_PS_18BIT_RGB666 ;
435- dsi_tmp_buf_bpp = 3 ;
409+ ps_bpp_mode |= PACKED_PS_18BIT_RGB666 ;
436410 break ;
437411 case MIPI_DSI_FMT_RGB565 :
438- tmp_reg = PACKED_PS_16BIT_RGB565 ;
439- dsi_tmp_buf_bpp = 2 ;
440- break ;
441- default :
442- tmp_reg = PACKED_PS_24BIT_RGB888 ;
443- dsi_tmp_buf_bpp = 3 ;
412+ ps_bpp_mode |= PACKED_PS_16BIT_RGB565 ;
444413 break ;
445414 }
446415
447- tmp_reg += dsi -> vm .hactive * dsi_tmp_buf_bpp & DSI_PS_WC ;
448- writel (tmp_reg , dsi -> regs + DSI_PSCTRL );
416+ if (config_vact ) {
417+ writel (vm -> vactive , dsi -> regs + DSI_VACT_NL );
418+ writel (ps_wc , dsi -> regs + DSI_HSTX_CKL_WC );
419+ }
420+ writel (ps_bpp_mode , dsi -> regs + DSI_PSCTRL );
449421}
450422
451423static void mtk_dsi_config_vdo_timing (struct mtk_dsi * dsi )
@@ -521,7 +493,7 @@ static void mtk_dsi_config_vdo_timing(struct mtk_dsi *dsi)
521493 writel (horizontal_backporch_byte , dsi -> regs + DSI_HBP_WC );
522494 writel (horizontal_frontporch_byte , dsi -> regs + DSI_HFP_WC );
523495
524- mtk_dsi_ps_control (dsi );
496+ mtk_dsi_ps_control (dsi , false );
525497}
526498
527499static void mtk_dsi_start (struct mtk_dsi * dsi )
@@ -666,7 +638,7 @@ static int mtk_dsi_poweron(struct mtk_dsi *dsi)
666638 mtk_dsi_reset_engine (dsi );
667639 mtk_dsi_phy_timconfig (dsi );
668640
669- mtk_dsi_ps_control_vact (dsi );
641+ mtk_dsi_ps_control (dsi , true );
670642 mtk_dsi_set_vm_cmd (dsi );
671643 mtk_dsi_config_vdo_timing (dsi );
672644 mtk_dsi_set_interrupt_enable (dsi );
0 commit comments