Re: [PATCH 4/4] drm/mediatek: support the DSI0 output on the MT8195 VDOSYS0

From: AngeloGioacchino Del Regno
Date: Fri Dec 01 2023 - 04:23:03 EST


Il 30/11/23 13:47, Michael Walle ha scritto:
With the latest dynamic selection of the output component, we can now
support different outputs. Move current output component into the
dynamic routes array and add the new DSI0 output.

Signed-off-by: Michael Walle <mwalle@xxxxxxxxxx>
---
 drivers/gpu/drm/mediatek/mtk_drm_drv.c | 8 +++++++-
 1 file changed, 7 insertions(+), 1 deletion(-)

diff --git a/drivers/gpu/drm/mediatek/mtk_drm_drv.c b/drivers/gpu/drm/mediatek/mtk_drm_drv.c
index 2b0c35cacbc6..6fa88976376e 100644
--- a/drivers/gpu/drm/mediatek/mtk_drm_drv.c
+++ b/drivers/gpu/drm/mediatek/mtk_drm_drv.c
@@ -222,7 +222,11 @@ static const unsigned int mt8195_mtk_ddp_main[] = {
     DDP_COMPONENT_DITHER0,
     DDP_COMPONENT_DSC0,
     DDP_COMPONENT_MERGE0,
-    DDP_COMPONENT_DP_INTF0,

Please disregard this patch (the others are ok). There must gone something
wrong during my testing. DDP_COMPONENT_MERGE0 won't work with
DDP_COMPONENT_DSI0. If anyone has more insights, I'm all ears.


I was *convinced* that the MERGE0 SOUT was connected to DSI0!!!

...but you're right, here, and thanks for catching that: there's no way to
get MERGE0 connected to DSI0; if you check in the datasheet for VDO_SEL_IN,
you can get data from MERGE0 only for DSI*1*, not 0.

The only way is to connect DSC_WRAP0 (DDP_COMPONENT_DSC0 in mtk_drm_drv btw)
directly to DSI0 (or dither to dsi0)... unless there is a way to change the
pinmux to invert the pins for DSI0/1?

You could assign the DSI1 controller to the one that is currently DSI0 for you.

That would solve the issue here.

Cheers!
Angelo

-michael

+};
+
+static const struct mtk_drm_route mt8195_mtk_ddp_main_routes[] = {
+    { 0, DDP_COMPONENT_DP_INTF0 },
+    { 0, DDP_COMPONENT_DSI0 },
 };

 static const unsigned int mt8195_mtk_ddp_ext[] = {
@@ -308,6 +312,8 @@ static const struct mtk_mmsys_driver_data mt8192_mmsys_driver_data = {
 static const struct mtk_mmsys_driver_data mt8195_vdosys0_driver_data = {
     .main_path = mt8195_mtk_ddp_main,
     .main_len = ARRAY_SIZE(mt8195_mtk_ddp_main),
+    .conn_routes = mt8195_mtk_ddp_main_routes,
+    .num_conn_routes = ARRAY_SIZE(mt8195_mtk_ddp_main_routes),
     .mmsys_dev_num = 2,
 };