Skip to content

Commit 5c6186a

Browse files
AngeloGioacchino Del RegnoChun-Kuang Hu
authored andcommitted
drm/mediatek: dsi: Cleanup functions mtk_dsi_ps_control{_vact}()
Function mtk_dsi_ps_control() is a subset of mtk_dsi_ps_control_vact(): merge the two in one mtk_dsi_ps_control() function by adding one function parameter `config_vact` which, when true, writes the VACT related registers. Reviewed-by: Fei Shao <fshao@chromium.org> Reviewed-by: Alexandre Mergnat <amergnat@baylibre.com> Reviewed-by: CK Hu <ck.hu@mediatek.com> Signed-off-by: AngeloGioacchino Del Regno <angelogioacchino.delregno@collabora.com> Link: https://patchwork.kernel.org/project/dri-devel/patch/20240215085316.56835-4-angelogioacchino.delregno@collabora.com/ Signed-off-by: Chun-Kuang Hu <chunkuang.hu@kernel.org>
1 parent fae6f81 commit 5c6186a

File tree

1 file changed

+25
-53
lines changed

1 file changed

+25
-53
lines changed

drivers/gpu/drm/mediatek/mtk_dsi.c

Lines changed: 25 additions & 53 deletions
Original file line numberDiff line numberDiff line change
@@ -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-
388354
static 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

451423
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)
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

527499
static 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

Comments
 (0)