> Gesendet: Freitag, 09. Juli 2021 um 12:38 Uhr > Von: "Frank Wunderlich" <frank-w@xxxxxxxxxxxxxxx> > An: "Enric Balletbo Serra" <eballetbo@xxxxxxxxx> > Cc: "CK Hu" <ck.hu@xxxxxxxxxxxx>, "Dafna Hirschfeld" <dafna.hirschfeld@xxxxxxxxxxxxx>, "chunkuang Hu" <chunkuang.hu@xxxxxxxxxx>, "Thomas Zimmermann" <tzimmermann@xxxxxxx>, "David Airlie" <airlied@xxxxxxxx>, "linux-kernel" <linux-kernel@xxxxxxxxxxxxxxx>, "Enric Balletbo i Serra" <enric.balletbo@xxxxxxxxxxxxx>, "moderated list:ARM/Mediatek SoC support" <linux-mediatek@xxxxxxxxxxxxxxxxxxx>, "dri-devel" <dri-devel@xxxxxxxxxxxxxxxxxxxxx>, "Matthias Brugger" <matthias.bgg@xxxxxxxxx>, "Collabora Kernel ML" <kernel@xxxxxxxxxxxxx> > 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@xxxxxxxxx> > > 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/commit/?h=v5.13-next/fixes&id=db39994e0bd852c6612a9709e63c09b98b161e00 > > > > 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_drm_drv.c#L74 > > 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