mirror of https://lore.kernel.org/lkml/
 help / color / mirror / Atom feed
* [PATCH 0/3] MediaTek MMSYS: Split out MT8173 and add MT6795
@ 2023-03-09 10:26 AngeloGioacchino Del Regno
  2023-03-09 10:26 ` [PATCH 1/3] soc: mediatek: mtk-mmsys: Split out MT8173 mmsys DDP routing table AngeloGioacchino Del Regno
                   ` (3 more replies)
  0 siblings, 4 replies; 5+ messages in thread
From: AngeloGioacchino Del Regno @ 2023-03-09 10:26 UTC (permalink / raw)
  To: matthias.bgg
  Cc: angelogioacchino.delregno, linux-kernel, linux-arm-kernel,
	linux-mediatek, kernel

This series migrates MT8173 to use its own mmsys DDP routing table
and introduces support for the MediaTek Helio X10 MT6795 using the
same routing table as MT8173.

Broader explanation goes to that MT6795 addition: 

Both MT6795 and MT8173 can support more usecases than the ones in
the current routing tables and the ones that are actually supported
in mediatek-drm!
This is mostly about MERGE, dual-DSI, WDMA (for command mode panels)
and others, but, again, right now, these are not supported.

I could have created a mt6795-mmsys.h, but that would've been a 1:1
clone of mt8173-mmsys.h, creating unnecessary code duplication hence
raising code (and kernel) size for no practical reason.

As a side note, if more MTK Smartphone SoCs land upstream, I expect
to see more re-using of MTK Chromebook SoCs mmsys routing tables.

P.S.: MT6795 dt-bindings are already upstream in v6.1 [1].

This series was tested on:
 - MT8173 Acer Chromebook R13 (Elm)
 - MT6795 Sony Xperia M5 (Holly)

Also, this series depends on [2]

[1]: https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git/tree/Documentation/devicetree/bindings/arm/mediatek/mediatek,mmsys.yaml?h=v6.1.15#n28
[2]: https://patchwork.kernel.org/project/linux-mediatek/list/?series=724014

AngeloGioacchino Del Regno (3):
  soc: mediatek: mtk-mmsys: Split out MT8173 mmsys DDP routing table
  soc: mediatek: mtk-mmsys: Change MT8173 num_resets to 64
  soc: mediatek: mtk-mmsys: Add support for MT6795 Helio X10

 drivers/soc/mediatek/mt8173-mmsys.h | 95 +++++++++++++++++++++++++++++
 drivers/soc/mediatek/mtk-mmsys.c    | 16 ++++-
 drivers/soc/mediatek/mtk-mmsys.h    |  2 +-
 3 files changed, 109 insertions(+), 4 deletions(-)
 create mode 100644 drivers/soc/mediatek/mt8173-mmsys.h

-- 
2.39.2


^ permalink raw reply	[flat|nested] 5+ messages in thread

* [PATCH 1/3] soc: mediatek: mtk-mmsys: Split out MT8173 mmsys DDP routing table
  2023-03-09 10:26 [PATCH 0/3] MediaTek MMSYS: Split out MT8173 and add MT6795 AngeloGioacchino Del Regno
@ 2023-03-09 10:26 ` AngeloGioacchino Del Regno
  2023-03-09 10:26 ` [PATCH 2/3] soc: mediatek: mtk-mmsys: Change MT8173 num_resets to 64 AngeloGioacchino Del Regno
                   ` (2 subsequent siblings)
  3 siblings, 0 replies; 5+ messages in thread
From: AngeloGioacchino Del Regno @ 2023-03-09 10:26 UTC (permalink / raw)
  To: matthias.bgg
  Cc: angelogioacchino.delregno, linux-kernel, linux-arm-kernel,
	linux-mediatek, kernel

MT2701, MT2712 and MT8173 were relying on a "default" DDP I/O routing
table, describing all of the possible connections between display block
components: while this is definitely working it's suboptimal for the
actual routing description, as we may be enabling outputs and inputs
that are not needed, possibly impacting on actual DDP performance other
than slightly prolonging boot times by having to parse a table that is
bigger than needed.

Seen that all of the other supported SoCs have got their own table and
seen that a comment in mtk-mmsys.h explicitly mentions that the wanted
way is to have one table per SoC, create a new routing table that is
specifically tailored to MT8173 and, while at it, remove mentions to
said SoC from the comment in mtk-mmsys.h.

Signed-off-by: AngeloGioacchino Del Regno <angelogioacchino.delregno@collabora.com>
---
 drivers/soc/mediatek/mt8173-mmsys.h | 95 +++++++++++++++++++++++++++++
 drivers/soc/mediatek/mtk-mmsys.c    |  5 +-
 drivers/soc/mediatek/mtk-mmsys.h    |  2 +-
 3 files changed, 99 insertions(+), 3 deletions(-)
 create mode 100644 drivers/soc/mediatek/mt8173-mmsys.h

diff --git a/drivers/soc/mediatek/mt8173-mmsys.h b/drivers/soc/mediatek/mt8173-mmsys.h
new file mode 100644
index 000000000000..9d24e381271e
--- /dev/null
+++ b/drivers/soc/mediatek/mt8173-mmsys.h
@@ -0,0 +1,95 @@
+/* SPDX-License-Identifier: GPL-2.0-only */
+
+#ifndef __SOC_MEDIATEK_MT8173_MMSYS_H
+#define __SOC_MEDIATEK_MT8173_MMSYS_H
+
+#define MT8173_DISP_REG_CONFIG_DISP_OVL0_MOUT_EN	0x040
+#define MT8173_DISP_REG_CONFIG_DISP_OVL1_MOUT_EN	0x044
+#define MT8173_DISP_REG_CONFIG_DISP_OD_MOUT_EN		0x048
+#define MT8173_DISP_REG_CONFIG_DISP_GAMMA_MOUT_EN	0x04c
+#define MT8173_DISP_REG_CONFIG_DISP_UFOE_MOUT_EN	0x050
+#define MT8173_DISP_REG_CONFIG_DISP_COLOR0_SEL_IN	0x084
+#define MT8173_DISP_REG_CONFIG_DISP_COLOR1_SEL_IN	0x088
+#define MT8173_DISP_REG_CONFIG_DISP_AAL_SEL_IN		0x08c
+#define MT8173_DISP_REG_CONFIG_DISP_UFOE_SEL_IN		0x0a0
+#define MT8173_DISP_REG_CONFIG_DSI0_SEL_IN		0x0a4
+#define MT8173_DISP_REG_CONFIG_DPI_SEL_IN		0x0ac
+#define MT8173_DISP_REG_CONFIG_DISP_RDMA0_SOUT_SEL_IN	0x0b0
+#define MT8173_DISP_REG_CONFIG_DISP_RDMA1_SOUT_EN	0x0c8
+#define MT8173_DISP_REG_CONFIG_DISP_COLOR0_SOUT_SEL_IN	0x0bc
+
+#define MT8173_AAL_SEL_IN_MERGE				BIT(0)
+#define MT8173_COLOR0_SEL_IN_OVL0			BIT(0)
+#define MT8173_COLOR0_SOUT_MERGE			BIT(0)
+#define MT8173_DPI0_SEL_IN_MASK				GENMASK(1, 0)
+#define MT8173_DPI0_SEL_IN_RDMA1			BIT(0)
+#define MT8173_DSI0_SEL_IN_UFOE				BIT(0)
+#define MT8173_GAMMA_MOUT_EN_RDMA1			BIT(0)
+#define MT8173_OD0_MOUT_EN_RDMA0			BIT(0)
+#define MT8173_OVL0_MOUT_EN_COLOR0			BIT(0)
+#define MT8173_OVL1_MOUT_EN_COLOR1			BIT(0)
+#define MT8173_UFOE_MOUT_EN_DSI0			BIT(0)
+#define MT8173_UFOE_SEL_IN_RDMA0			BIT(0)
+#define MT8173_RDMA0_SOUT_COLOR0			BIT(0)
+
+static const struct mtk_mmsys_routes mt8173_mmsys_routing_table[] = {
+	{
+		DDP_COMPONENT_OVL0, DDP_COMPONENT_COLOR0,
+		MT8173_DISP_REG_CONFIG_DISP_OVL0_MOUT_EN,
+		MT8173_OVL0_MOUT_EN_COLOR0, MT8173_OVL0_MOUT_EN_COLOR0
+	}, {
+		DDP_COMPONENT_OD0, DDP_COMPONENT_RDMA0,
+		MT8173_DISP_REG_CONFIG_DISP_OD_MOUT_EN,
+		MT8173_OD0_MOUT_EN_RDMA0, MT8173_OD0_MOUT_EN_RDMA0
+	}, {
+		DDP_COMPONENT_UFOE, DDP_COMPONENT_DSI0,
+		MT8173_DISP_REG_CONFIG_DISP_UFOE_MOUT_EN,
+		MT8173_UFOE_MOUT_EN_DSI0, MT8173_UFOE_MOUT_EN_DSI0
+	}, {
+		DDP_COMPONENT_COLOR0, DDP_COMPONENT_AAL0,
+		MT8173_DISP_REG_CONFIG_DISP_COLOR0_SOUT_SEL_IN,
+		MT8173_COLOR0_SOUT_MERGE, 0 /* SOUT to AAL */
+	}, {
+		DDP_COMPONENT_RDMA0, DDP_COMPONENT_UFOE,
+		MT8173_DISP_REG_CONFIG_DISP_RDMA0_SOUT_SEL_IN,
+		MT8173_RDMA0_SOUT_COLOR0, 0 /* SOUT to UFOE */
+	}, {
+		DDP_COMPONENT_OVL0, DDP_COMPONENT_COLOR0,
+		MT8173_DISP_REG_CONFIG_DISP_COLOR0_SEL_IN,
+		MT8173_COLOR0_SEL_IN_OVL0, MT8173_COLOR0_SEL_IN_OVL0
+	}, {
+		DDP_COMPONENT_AAL0, DDP_COMPONENT_COLOR0,
+		MT8173_DISP_REG_CONFIG_DISP_AAL_SEL_IN,
+		MT8173_AAL_SEL_IN_MERGE, 0 /* SEL_IN from COLOR0 */
+	}, {
+		DDP_COMPONENT_RDMA0, DDP_COMPONENT_UFOE,
+		MT8173_DISP_REG_CONFIG_DISP_UFOE_SEL_IN,
+		MT8173_UFOE_SEL_IN_RDMA0, 0 /* SEL_IN from RDMA0 */
+	}, {
+		DDP_COMPONENT_UFOE, DDP_COMPONENT_DSI0,
+		MT8173_DISP_REG_CONFIG_DSI0_SEL_IN,
+		MT8173_DSI0_SEL_IN_UFOE, 0, /* SEL_IN from UFOE */
+	}, {
+		DDP_COMPONENT_OVL1, DDP_COMPONENT_COLOR1,
+		MT8173_DISP_REG_CONFIG_DISP_OVL1_MOUT_EN,
+		MT8173_OVL1_MOUT_EN_COLOR1, MT8173_OVL1_MOUT_EN_COLOR1
+	}, {
+		DDP_COMPONENT_GAMMA, DDP_COMPONENT_RDMA1,
+		MT8173_DISP_REG_CONFIG_DISP_GAMMA_MOUT_EN,
+		MT8173_GAMMA_MOUT_EN_RDMA1, MT8173_GAMMA_MOUT_EN_RDMA1
+	}, {
+		DDP_COMPONENT_RDMA1, DDP_COMPONENT_DPI0,
+		MT8173_DISP_REG_CONFIG_DISP_RDMA1_SOUT_EN,
+		RDMA1_SOUT_MASK, RDMA1_SOUT_DPI0
+	}, {
+		DDP_COMPONENT_OVL1, DDP_COMPONENT_COLOR1,
+		MT8173_DISP_REG_CONFIG_DISP_COLOR1_SEL_IN,
+		COLOR1_SEL_IN_OVL1, COLOR1_SEL_IN_OVL1
+	}, {
+		DDP_COMPONENT_RDMA1, DDP_COMPONENT_DPI0,
+		MT8173_DISP_REG_CONFIG_DPI_SEL_IN,
+		MT8173_DPI0_SEL_IN_MASK, MT8173_DPI0_SEL_IN_RDMA1
+	}
+};
+
+#endif /* __SOC_MEDIATEK_MT8173_MMSYS_H */
diff --git a/drivers/soc/mediatek/mtk-mmsys.c b/drivers/soc/mediatek/mtk-mmsys.c
index b84485670f91..d5844aff0621 100644
--- a/drivers/soc/mediatek/mtk-mmsys.c
+++ b/drivers/soc/mediatek/mtk-mmsys.c
@@ -15,6 +15,7 @@
 
 #include "mtk-mmsys.h"
 #include "mt8167-mmsys.h"
+#include "mt8173-mmsys.h"
 #include "mt8183-mmsys.h"
 #include "mt8186-mmsys.h"
 #include "mt8188-mmsys.h"
@@ -52,8 +53,8 @@ static const struct mtk_mmsys_driver_data mt8167_mmsys_driver_data = {
 
 static const struct mtk_mmsys_driver_data mt8173_mmsys_driver_data = {
 	.clk_driver = "clk-mt8173-mm",
-	.routes = mmsys_default_routing_table,
-	.num_routes = ARRAY_SIZE(mmsys_default_routing_table),
+	.routes = mt8173_mmsys_routing_table,
+	.num_routes = ARRAY_SIZE(mt8173_mmsys_routing_table),
 	.sw0_rst_offset = MT8183_MMSYS_SW0_RST_B,
 	.num_resets = 32,
 };
diff --git a/drivers/soc/mediatek/mtk-mmsys.h b/drivers/soc/mediatek/mtk-mmsys.h
index 56f8cc3a97b7..6725403d2e3a 100644
--- a/drivers/soc/mediatek/mtk-mmsys.h
+++ b/drivers/soc/mediatek/mtk-mmsys.h
@@ -96,7 +96,7 @@ struct mtk_mmsys_driver_data {
 };
 
 /*
- * Routes in mt8173, mt2701, mt2712 are different. That means
+ * Routes in mt2701 and mt2712 are different. That means
  * in the same register address, it controls different input/output
  * selection for each SoC. But, right now, they use the same table as
  * default routes meet their requirements. But we don't have the complete
-- 
2.39.2


^ permalink raw reply	[flat|nested] 5+ messages in thread

* [PATCH 2/3] soc: mediatek: mtk-mmsys: Change MT8173 num_resets to 64
  2023-03-09 10:26 [PATCH 0/3] MediaTek MMSYS: Split out MT8173 and add MT6795 AngeloGioacchino Del Regno
  2023-03-09 10:26 ` [PATCH 1/3] soc: mediatek: mtk-mmsys: Split out MT8173 mmsys DDP routing table AngeloGioacchino Del Regno
@ 2023-03-09 10:26 ` AngeloGioacchino Del Regno
  2023-03-09 10:26 ` [PATCH 3/3] soc: mediatek: mtk-mmsys: Add support for MT6795 Helio X10 AngeloGioacchino Del Regno
  2023-04-02 17:02 ` [PATCH 0/3] MediaTek MMSYS: Split out MT8173 and add MT6795 Matthias Brugger
  3 siblings, 0 replies; 5+ messages in thread
From: AngeloGioacchino Del Regno @ 2023-03-09 10:26 UTC (permalink / raw)
  To: matthias.bgg
  Cc: angelogioacchino.delregno, linux-kernel, linux-arm-kernel,
	linux-mediatek, kernel

The MT8173 SoC has 64 MMSYS resets, split in two contiguous 32-bits
registers, MMSYS_SW0_RST_B (0x140) and MMSYS_SW1_RST_B (0x144), as
also stated in the downstream kernel for the Amazon Fire TV 2
(Sloane) in the ddp_reg.h header.

Please note that managing more than 32 reset bits is supported since commit
2004f8be8483 ("soc: mediatek: mmsys: add mmsys for support 64 reset bits")

This commit brings no functional changes.

Signed-off-by: AngeloGioacchino Del Regno <angelogioacchino.delregno@collabora.com>
---
 drivers/soc/mediatek/mtk-mmsys.c | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/drivers/soc/mediatek/mtk-mmsys.c b/drivers/soc/mediatek/mtk-mmsys.c
index d5844aff0621..c4eeab99756b 100644
--- a/drivers/soc/mediatek/mtk-mmsys.c
+++ b/drivers/soc/mediatek/mtk-mmsys.c
@@ -56,7 +56,7 @@ static const struct mtk_mmsys_driver_data mt8173_mmsys_driver_data = {
 	.routes = mt8173_mmsys_routing_table,
 	.num_routes = ARRAY_SIZE(mt8173_mmsys_routing_table),
 	.sw0_rst_offset = MT8183_MMSYS_SW0_RST_B,
-	.num_resets = 32,
+	.num_resets = 64,
 };
 
 static const struct mtk_mmsys_driver_data mt8183_mmsys_driver_data = {
-- 
2.39.2


^ permalink raw reply	[flat|nested] 5+ messages in thread

* [PATCH 3/3] soc: mediatek: mtk-mmsys: Add support for MT6795 Helio X10
  2023-03-09 10:26 [PATCH 0/3] MediaTek MMSYS: Split out MT8173 and add MT6795 AngeloGioacchino Del Regno
  2023-03-09 10:26 ` [PATCH 1/3] soc: mediatek: mtk-mmsys: Split out MT8173 mmsys DDP routing table AngeloGioacchino Del Regno
  2023-03-09 10:26 ` [PATCH 2/3] soc: mediatek: mtk-mmsys: Change MT8173 num_resets to 64 AngeloGioacchino Del Regno
@ 2023-03-09 10:26 ` AngeloGioacchino Del Regno
  2023-04-02 17:02 ` [PATCH 0/3] MediaTek MMSYS: Split out MT8173 and add MT6795 Matthias Brugger
  3 siblings, 0 replies; 5+ messages in thread
From: AngeloGioacchino Del Regno @ 2023-03-09 10:26 UTC (permalink / raw)
  To: matthias.bgg
  Cc: angelogioacchino.delregno, linux-kernel, linux-arm-kernel,
	linux-mediatek, kernel

Add MMSYS support for the MT6795 SoC using the same mmsys routing
table as MT8173 as, for the currently supported usecases (DSI0, DPI0
with no WDMA), these are identical.

Signed-off-by: AngeloGioacchino Del Regno <angelogioacchino.delregno@collabora.com>
---
 drivers/soc/mediatek/mtk-mmsys.c | 9 +++++++++
 1 file changed, 9 insertions(+)

diff --git a/drivers/soc/mediatek/mtk-mmsys.c b/drivers/soc/mediatek/mtk-mmsys.c
index c4eeab99756b..9619faa796e8 100644
--- a/drivers/soc/mediatek/mtk-mmsys.c
+++ b/drivers/soc/mediatek/mtk-mmsys.c
@@ -41,6 +41,14 @@ static const struct mtk_mmsys_driver_data mt6779_mmsys_driver_data = {
 	.clk_driver = "clk-mt6779-mm",
 };
 
+static const struct mtk_mmsys_driver_data mt6795_mmsys_driver_data = {
+	.clk_driver = "clk-mt6795-mm",
+	.routes = mt8173_mmsys_routing_table,
+	.num_routes = ARRAY_SIZE(mt8173_mmsys_routing_table),
+	.sw0_rst_offset = MT8183_MMSYS_SW0_RST_B,
+	.num_resets = 64,
+};
+
 static const struct mtk_mmsys_driver_data mt6797_mmsys_driver_data = {
 	.clk_driver = "clk-mt6797-mm",
 };
@@ -416,6 +424,7 @@ static const struct of_device_id of_match_mtk_mmsys[] = {
 	{ .compatible = "mediatek,mt2701-mmsys", .data = &mt2701_mmsys_driver_data },
 	{ .compatible = "mediatek,mt2712-mmsys", .data = &mt2712_mmsys_driver_data },
 	{ .compatible = "mediatek,mt6779-mmsys", .data = &mt6779_mmsys_driver_data },
+	{ .compatible = "mediatek,mt6795-mmsys", .data = &mt6795_mmsys_driver_data },
 	{ .compatible = "mediatek,mt6797-mmsys", .data = &mt6797_mmsys_driver_data },
 	{ .compatible = "mediatek,mt8167-mmsys", .data = &mt8167_mmsys_driver_data },
 	{ .compatible = "mediatek,mt8173-mmsys", .data = &mt8173_mmsys_driver_data },
-- 
2.39.2


^ permalink raw reply	[flat|nested] 5+ messages in thread

* Re: [PATCH 0/3] MediaTek MMSYS: Split out MT8173 and add MT6795
  2023-03-09 10:26 [PATCH 0/3] MediaTek MMSYS: Split out MT8173 and add MT6795 AngeloGioacchino Del Regno
                   ` (2 preceding siblings ...)
  2023-03-09 10:26 ` [PATCH 3/3] soc: mediatek: mtk-mmsys: Add support for MT6795 Helio X10 AngeloGioacchino Del Regno
@ 2023-04-02 17:02 ` Matthias Brugger
  3 siblings, 0 replies; 5+ messages in thread
From: Matthias Brugger @ 2023-04-02 17:02 UTC (permalink / raw)
  To: AngeloGioacchino Del Regno
  Cc: linux-kernel, linux-arm-kernel, linux-mediatek, kernel



On 09/03/2023 11:26, AngeloGioacchino Del Regno wrote:
> This series migrates MT8173 to use its own mmsys DDP routing table
> and introduces support for the MediaTek Helio X10 MT6795 using the
> same routing table as MT8173.
> 
> Broader explanation goes to that MT6795 addition:
> 
> Both MT6795 and MT8173 can support more usecases than the ones in
> the current routing tables and the ones that are actually supported
> in mediatek-drm!
> This is mostly about MERGE, dual-DSI, WDMA (for command mode panels)
> and others, but, again, right now, these are not supported.
> 
> I could have created a mt6795-mmsys.h, but that would've been a 1:1
> clone of mt8173-mmsys.h, creating unnecessary code duplication hence
> raising code (and kernel) size for no practical reason.
> 
> As a side note, if more MTK Smartphone SoCs land upstream, I expect
> to see more re-using of MTK Chromebook SoCs mmsys routing tables.
> 
> P.S.: MT6795 dt-bindings are already upstream in v6.1 [1].
> 
> This series was tested on:
>   - MT8173 Acer Chromebook R13 (Elm)
>   - MT6795 Sony Xperia M5 (Holly)
> 

Applied, thanks!

> Also, this series depends on [2]
> 
> [1]: https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git/tree/Documentation/devicetree/bindings/arm/mediatek/mediatek,mmsys.yaml?h=v6.1.15#n28
> [2]: https://patchwork.kernel.org/project/linux-mediatek/list/?series=724014
> 
> AngeloGioacchino Del Regno (3):
>    soc: mediatek: mtk-mmsys: Split out MT8173 mmsys DDP routing table
>    soc: mediatek: mtk-mmsys: Change MT8173 num_resets to 64
>    soc: mediatek: mtk-mmsys: Add support for MT6795 Helio X10
> 
>   drivers/soc/mediatek/mt8173-mmsys.h | 95 +++++++++++++++++++++++++++++
>   drivers/soc/mediatek/mtk-mmsys.c    | 16 ++++-
>   drivers/soc/mediatek/mtk-mmsys.h    |  2 +-
>   3 files changed, 109 insertions(+), 4 deletions(-)
>   create mode 100644 drivers/soc/mediatek/mt8173-mmsys.h
> 

^ permalink raw reply	[flat|nested] 5+ messages in thread

end of thread, other threads:[~2023-04-02 17:02 UTC | newest]

Thread overview: 5+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2023-03-09 10:26 [PATCH 0/3] MediaTek MMSYS: Split out MT8173 and add MT6795 AngeloGioacchino Del Regno
2023-03-09 10:26 ` [PATCH 1/3] soc: mediatek: mtk-mmsys: Split out MT8173 mmsys DDP routing table AngeloGioacchino Del Regno
2023-03-09 10:26 ` [PATCH 2/3] soc: mediatek: mtk-mmsys: Change MT8173 num_resets to 64 AngeloGioacchino Del Regno
2023-03-09 10:26 ` [PATCH 3/3] soc: mediatek: mtk-mmsys: Add support for MT6795 Helio X10 AngeloGioacchino Del Regno
2023-04-02 17:02 ` [PATCH 0/3] MediaTek MMSYS: Split out MT8173 and add MT6795 Matthias Brugger

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox

all inboxes | Powered by JetHome®