Gesendet: Freitag, 09. Juli 2021 um 12:38 Uhr Von: "Frank Wunderlich" frank-w@public-files.de An: "Enric Balletbo Serra" eballetbo@gmail.com Cc: "CK Hu" ck.hu@mediatek.com, "Dafna Hirschfeld" dafna.hirschfeld@collabora.com, "chunkuang Hu" chunkuang.hu@kernel.org, "Thomas Zimmermann" tzimmermann@suse.de, "David Airlie" airlied@linux.ie, "linux-kernel" linux-kernel@vger.kernel.org, "Enric Balletbo i Serra" enric.balletbo@collabora.com, "moderated list:ARM/Mediatek SoC support" linux-mediatek@lists.infradead.org, "dri-devel" dri-devel@lists.freedesktop.org, "Matthias Brugger" matthias.bgg@gmail.com, "Collabora Kernel ML" kernel@collabora.com Betreff: Aw: Re: Re: BUG: MTK DRM/HDMI broken on 5.13 (mt7623/bpi-r2)
Gesendet: Freitag, 09. Juli 2021 um 12:24 Uhr Von: "Enric Balletbo Serra" eballetbo@gmail.com If this is the offending commit, could you try if the following patch fixes the issue for you?
https://git.kernel.org/pub/scm/linux/kernel/git/matthias.bgg/linux.git/commi...
If not, and that patch is the offending commit, it probably means that the default routing table doesn't work for mt7623. Needs a specific soc table.
Hi Eric,
thanks for response, but it does not fix the issue for me. hdmi on mt7623 is DPI not DSI. There is already a mt7623 specific routing-table defined (one for DPI/HDMI and one for external=DSI/MIPI):
https://elixir.bootlin.com/linux/latest/source/drivers/gpu/drm/mediatek/mtk_...
maybe it can be included or compared with the "default" route?
regards Frank
Hi
i tried to convert the old routing table into the new format
diff --git a/drivers/soc/mediatek/mtk-mmsys.c b/drivers/soc/mediatek/mtk-mmsys.c index 080660ef11bf..134dae13382f 100644 --- a/drivers/soc/mediatek/mtk-mmsys.c +++ b/drivers/soc/mediatek/mtk-mmsys.c @@ -20,6 +20,12 @@ static const struct mtk_mmsys_driver_data mt2701_mmsys_driver_data = { .num_routes = ARRAY_SIZE(mmsys_default_routing_table), };
+static const struct mtk_mmsys_driver_data mt7623_mmsys_driver_data = { + .clk_driver = "clk-mt2701-mm", + .routes = mmsys_mt7623_routing_table, + .num_routes = ARRAY_SIZE(mmsys_mt7623_routing_table), +}; + static const struct mtk_mmsys_driver_data mt2712_mmsys_driver_data = { .clk_driver = "clk-mt2712-mm", .routes = mmsys_default_routing_table, @@ -133,6 +139,10 @@ static const struct of_device_id of_match_mtk_mmsys[] = { .compatible = "mediatek,mt2701-mmsys", .data = &mt2701_mmsys_driver_data, }, + { + .compatible = "mediatek,mt7623-mmsys", + .data = &mt7623_mmsys_driver_data, + }, { .compatible = "mediatek,mt2712-mmsys", .data = &mt2712_mmsys_driver_data, diff --git a/drivers/soc/mediatek/mtk-mmsys.h b/drivers/soc/mediatek/mtk-mmsys.h index 11388961dded..fd397f68339c 100644 --- a/drivers/soc/mediatek/mtk-mmsys.h +++ b/drivers/soc/mediatek/mtk-mmsys.h @@ -214,5 +214,14 @@ static const struct mtk_mmsys_routes mmsys_default_routing_table[] = { DISP_REG_CONFIG_DISP_UFOE_MOUT_EN, UFOE_MOUT_EN_DSI0, } }; - +static const struct mtk_mmsys_routes mmsys_mt7623_routing_table[] = { + //HDMI + { + DDP_COMPONENT_OVL0, DDP_COMPONENT_RDMA0, + DISP_REG_CONFIG_DISP_OVL_MOUT_EN, OVL_MOUT_EN_RDMA + }, { + DDP_COMPONENT_RDMA0, DDP_COMPONENT_DPI0, + DISP_REG_CONFIG_DISP_RDMA0_SOUT_EN, RDMA0_SOUT_DPI0 + } +}; #endif /* __SOC_MEDIATEK_MTK_MMSYS_H */ :...skipping... diff --git a/drivers/soc/mediatek/mtk-mmsys.c b/drivers/soc/mediatek/mtk-mmsys.c index 080660ef11bf..134dae13382f 100644 --- a/drivers/soc/mediatek/mtk-mmsys.c +++ b/drivers/soc/mediatek/mtk-mmsys.c @@ -20,6 +20,12 @@ static const struct mtk_mmsys_driver_data mt2701_mmsys_driver_data = { .num_routes = ARRAY_SIZE(mmsys_default_routing_table), };
+static const struct mtk_mmsys_driver_data mt7623_mmsys_driver_data = { + .clk_driver = "clk-mt2701-mm",//leave clock as mt7623 is based on mt2701 + .routes = mmsys_mt7623_routing_table, + .num_routes = ARRAY_SIZE(mmsys_mt7623_routing_table), +}; + static const struct mtk_mmsys_driver_data mt2712_mmsys_driver_data = { .clk_driver = "clk-mt2712-mm", .routes = mmsys_default_routing_table, @@ -133,6 +139,10 @@ static const struct of_device_id of_match_mtk_mmsys[] = { .compatible = "mediatek,mt2701-mmsys", .data = &mt2701_mmsys_driver_data, }, + { + .compatible = "mediatek,mt7623-mmsys", + .data = &mt7623_mmsys_driver_data, + }, { .compatible = "mediatek,mt2712-mmsys", .data = &mt2712_mmsys_driver_data, diff --git a/drivers/soc/mediatek/mtk-mmsys.h b/drivers/soc/mediatek/mtk-mmsys.h index 11388961dded..fd397f68339c 100644 --- a/drivers/soc/mediatek/mtk-mmsys.h +++ b/drivers/soc/mediatek/mtk-mmsys.h @@ -214,5 +214,14 @@ static const struct mtk_mmsys_routes mmsys_default_routing_table[] = { DISP_REG_CONFIG_DISP_UFOE_MOUT_EN, UFOE_MOUT_EN_DSI0, } }; - +static const struct mtk_mmsys_routes mmsys_mt7623_routing_table[] = { + //HDMI + { + DDP_COMPONENT_OVL0, DDP_COMPONENT_RDMA0, + DISP_REG_CONFIG_DISP_OVL_MOUT_EN, OVL_MOUT_EN_RDMA + }, { + DDP_COMPONENT_RDMA0, DDP_COMPONENT_DPI0, + DISP_REG_CONFIG_DISP_RDMA0_SOUT_EN, RDMA0_SOUT_DPI0 + } +};
here i've left out COLOR0 and BLS because i have not found the 3rd (address) and 4th params (value) for the routing between them and edging components
this is the old route:
DDP_COMPONENT_OVL0, DDP_COMPONENT_RDMA0, DDP_COMPONENT_COLOR0, DDP_COMPONENT_BLS, DDP_COMPONENT_DPI0,
so i guess i need:
DISP_REG_CONFIG_DISP_RDMA0_MOUT_EN, RDMA0_MOUT_EN_COLOR0 DISP_REG_CONFIG_DISP_COLOR0_MOUT_EN, COLOR0_MOUT_EN_BLS DISP_REG_CONFIG_DISP_BLS_MOUT_EN, BLS_MOUT_EN_DPI0
thinking OUT is right for display...it's no HDMI-in but i'm unsure whats the difference between MOUT and SOUT
compatible for mmsys is already set to mediatek,mt7623-mmsys in arch/arm/boot/dts/mt7623n.dtsi but it's not working, i guess because color0 and bls are missing in route
any hint how to add them?
regards Frank