@@ -351,40 +351,6 @@ static void mtk_dsi_set_vm_cmd(struct mtk_dsi *dsi)
351
351
mtk_dsi_mask (dsi , DSI_VM_CMD_CON , TS_VFP_EN , TS_VFP_EN );
352
352
}
353
353
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
-
388
354
static void mtk_dsi_rxtx_control (struct mtk_dsi * dsi )
389
355
{
390
356
u32 tmp_reg ;
@@ -416,36 +382,42 @@ static void mtk_dsi_rxtx_control(struct mtk_dsi *dsi)
416
382
writel (tmp_reg , dsi -> regs + DSI_TXRX_CTRL );
417
383
}
418
384
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 )
420
386
{
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 ;
423
398
424
399
switch (dsi -> format ) {
400
+ default :
401
+ fallthrough ;
425
402
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 ;
428
404
break ;
429
405
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 ;
432
407
break ;
433
408
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 ;
436
410
break ;
437
411
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 ;
444
413
break ;
445
414
}
446
415
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 );
449
421
}
450
422
451
423
static 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)
521
493
writel (horizontal_backporch_byte , dsi -> regs + DSI_HBP_WC );
522
494
writel (horizontal_frontporch_byte , dsi -> regs + DSI_HFP_WC );
523
495
524
- mtk_dsi_ps_control (dsi );
496
+ mtk_dsi_ps_control (dsi , false );
525
497
}
526
498
527
499
static void mtk_dsi_start (struct mtk_dsi * dsi )
@@ -666,7 +638,7 @@ static int mtk_dsi_poweron(struct mtk_dsi *dsi)
666
638
mtk_dsi_reset_engine (dsi );
667
639
mtk_dsi_phy_timconfig (dsi );
668
640
669
- mtk_dsi_ps_control_vact (dsi );
641
+ mtk_dsi_ps_control (dsi , true );
670
642
mtk_dsi_set_vm_cmd (dsi );
671
643
mtk_dsi_config_vdo_timing (dsi );
672
644
mtk_dsi_set_interrupt_enable (dsi );
0 commit comments