Subject: [PATCH v4 0/5] mtk_iommu: Specify phandles to infracfg and pericfg

The IOMMU has registers in the infracfg and/or pericfg iospaces: as
for the currently supported SoCs, MT2712 and MT8173 need a phandle to
infracfg, while MT8195 needs one to pericfg.

Before this change, the driver was checking for a SoC-specific infra/peri
compatible but, sooner or later, these lists are going to grow a lot...
...and this is why it was chosen to add phandles (as it was done with
some other drivers already - look at mtk-pm-domains, mt8192-afe

Please note that, while it was necessary to update the devicetrees for
MT8173 and MT2712e, there was no update for MT8195 because there is no
IOMMU node in there yet.

Changes in v4:
- Dropped changes introducing mediatek,pericfg handle
- Fixed required property in IOMMU example in patch [1/5]
- Added a pericfg lookup flow cleanup commit

Changes in v3:
- Different squashing of dt-bindings patches (sorry for misunderstanding!)
- Removed legacy devicetree print

Changes in v2:
- Squashed dt-bindings patches as suggested by Matthias
- Removed quotes from infra/peri phandle refs
- Changed dev_warn to dev_info in patches [2/7], [3/7]

AngeloGioacchino Del Regno (5):
dt-bindings: iommu: mediatek: Add mediatek,infracfg phandle
iommu/mediatek: Lookup phandle to retrieve syscon to infracfg
arm64: dts: mediatek: mt8173: Add mediatek,infracfg phandle for IOMMU
arm64: dts: mediatek: mt2712e: Add mediatek,infracfg phandle for IOMMU
iommu/mediatek: Cleanup pericfg lookup flow

.../bindings/iommu/mediatek,iommu.yaml | 17 +++++++
arch/arm64/boot/dts/mediatek/mt2712e.dtsi | 2 +
arch/arm64/boot/dts/mediatek/mt8173.dtsi | 1 +
drivers/iommu/mtk_iommu.c | 50 +++++++++++--------
4 files changed, 49 insertions(+), 21 deletions(-)

--
2.35.1


Subject: [PATCH v4 4/5] arm64: dts: mediatek: mt2712e: Add mediatek,infracfg phandle for IOMMU

The IOMMU driver now looks for the "mediatek,infracfg" phandle as a
new way to retrieve a syscon to that:
even though the old way is retained, it has been deprecated and the
driver will write a message in kmsg advertising to use the phandle
way instead.

For this reason, assign the right phandle to mediatek,infracfg in
the iommu node.

Signed-off-by: AngeloGioacchino Del Regno <[email protected]>
Reviewed-by: Miles Chen <[email protected]>
---
arch/arm64/boot/dts/mediatek/mt2712e.dtsi | 2 ++
1 file changed, 2 insertions(+)

diff --git a/arch/arm64/boot/dts/mediatek/mt2712e.dtsi b/arch/arm64/boot/dts/mediatek/mt2712e.dtsi
index 623eb3beabf2..4797537cb368 100644
--- a/arch/arm64/boot/dts/mediatek/mt2712e.dtsi
+++ b/arch/arm64/boot/dts/mediatek/mt2712e.dtsi
@@ -329,6 +329,7 @@ iommu0: iommu@10205000 {
interrupts = <GIC_SPI 147 IRQ_TYPE_LEVEL_LOW>;
clocks = <&infracfg CLK_INFRA_M4U>;
clock-names = "bclk";
+ mediatek,infracfg = <&infracfg>;
mediatek,larbs = <&larb0>, <&larb1>, <&larb2>,
<&larb3>, <&larb6>;
#iommu-cells = <1>;
@@ -346,6 +347,7 @@ iommu1: iommu@1020a000 {
interrupts = <GIC_SPI 145 IRQ_TYPE_LEVEL_LOW>;
clocks = <&infracfg CLK_INFRA_M4U>;
clock-names = "bclk";
+ mediatek,infracfg = <&infracfg>;
mediatek,larbs = <&larb4>, <&larb5>, <&larb7>;
#iommu-cells = <1>;
};
--
2.35.1

Subject: [PATCH v4 5/5] iommu/mediatek: Cleanup pericfg lookup flow

Since only the INFRA type IOMMU needs to modify register(s) in the
pericfg iospace, it's safe to drop the pericfg_comp_str NULL check;
also, directly assign the regmap handle to data->pericfg instead of
to the infracfg variable to improve code readability.

Signed-off-by: AngeloGioacchino Del Regno <[email protected]>
---
drivers/iommu/mtk_iommu.c | 12 +++++-------
1 file changed, 5 insertions(+), 7 deletions(-)

diff --git a/drivers/iommu/mtk_iommu.c b/drivers/iommu/mtk_iommu.c
index 90685946fcbe..b2ae84046249 100644
--- a/drivers/iommu/mtk_iommu.c
+++ b/drivers/iommu/mtk_iommu.c
@@ -1217,15 +1217,13 @@ static int mtk_iommu_probe(struct platform_device *pdev)
dev_err(dev, "mm dts parse fail(%d).", ret);
goto out_runtime_disable;
}
- } else if (MTK_IOMMU_IS_TYPE(data->plat_data, MTK_IOMMU_TYPE_INFRA) &&
- data->plat_data->pericfg_comp_str) {
- infracfg = syscon_regmap_lookup_by_compatible(data->plat_data->pericfg_comp_str);
- if (IS_ERR(infracfg)) {
- ret = PTR_ERR(infracfg);
+ } else if (MTK_IOMMU_IS_TYPE(data->plat_data, MTK_IOMMU_TYPE_INFRA)) {
+ p = data->plat_data->pericfg_comp_str;
+ data->pericfg = syscon_regmap_lookup_by_compatible(p);
+ if (IS_ERR(data->pericfg)) {
+ ret = PTR_ERR(data->pericfg);
goto out_runtime_disable;
}
-
- data->pericfg = infracfg;
}

platform_set_drvdata(pdev, data);
--
2.35.1

2022-06-16 13:29:17

by Matthias Brugger

[permalink] [raw]
Subject: Re: [PATCH v4 5/5] iommu/mediatek: Cleanup pericfg lookup flow



On 16/06/2022 13:08, AngeloGioacchino Del Regno wrote:
> Since only the INFRA type IOMMU needs to modify register(s) in the
> pericfg iospace, it's safe to drop the pericfg_comp_str NULL check;
> also, directly assign the regmap handle to data->pericfg instead of
> to the infracfg variable to improve code readability.
>
> Signed-off-by: AngeloGioacchino Del Regno <[email protected]>

Reviewed-by: Matthias Brugger <[email protected]>

> ---
> drivers/iommu/mtk_iommu.c | 12 +++++-------
> 1 file changed, 5 insertions(+), 7 deletions(-)
>
> diff --git a/drivers/iommu/mtk_iommu.c b/drivers/iommu/mtk_iommu.c
> index 90685946fcbe..b2ae84046249 100644
> --- a/drivers/iommu/mtk_iommu.c
> +++ b/drivers/iommu/mtk_iommu.c
> @@ -1217,15 +1217,13 @@ static int mtk_iommu_probe(struct platform_device *pdev)
> dev_err(dev, "mm dts parse fail(%d).", ret);
> goto out_runtime_disable;
> }
> - } else if (MTK_IOMMU_IS_TYPE(data->plat_data, MTK_IOMMU_TYPE_INFRA) &&
> - data->plat_data->pericfg_comp_str) {
> - infracfg = syscon_regmap_lookup_by_compatible(data->plat_data->pericfg_comp_str);
> - if (IS_ERR(infracfg)) {
> - ret = PTR_ERR(infracfg);
> + } else if (MTK_IOMMU_IS_TYPE(data->plat_data, MTK_IOMMU_TYPE_INFRA)) {
> + p = data->plat_data->pericfg_comp_str;
> + data->pericfg = syscon_regmap_lookup_by_compatible(p);
> + if (IS_ERR(data->pericfg)) {
> + ret = PTR_ERR(data->pericfg);
> goto out_runtime_disable;
> }
> -
> - data->pericfg = infracfg;
> }
>
> platform_set_drvdata(pdev, data);

2022-06-22 14:02:35

by Joerg Roedel

[permalink] [raw]
Subject: Re: [PATCH v4 0/5] mtk_iommu: Specify phandles to infracfg and pericfg

On Thu, Jun 16, 2022 at 01:08:25PM +0200, AngeloGioacchino Del Regno wrote:
> AngeloGioacchino Del Regno (5):
> dt-bindings: iommu: mediatek: Add mediatek,infracfg phandle
> iommu/mediatek: Lookup phandle to retrieve syscon to infracfg
> arm64: dts: mediatek: mt8173: Add mediatek,infracfg phandle for IOMMU
> arm64: dts: mediatek: mt2712e: Add mediatek,infracfg phandle for IOMMU
> iommu/mediatek: Cleanup pericfg lookup flow
>
> .../bindings/iommu/mediatek,iommu.yaml | 17 +++++++
> arch/arm64/boot/dts/mediatek/mt2712e.dtsi | 2 +
> arch/arm64/boot/dts/mediatek/mt8173.dtsi | 1 +
> drivers/iommu/mtk_iommu.c | 50 +++++++++++--------
> 4 files changed, 49 insertions(+), 21 deletions(-)

Applied, thanks.

2022-06-22 14:15:20

by Matthias Brugger

[permalink] [raw]
Subject: Re: [PATCH v4 0/5] mtk_iommu: Specify phandles to infracfg and pericfg

Hi Joerg,

On 22/06/2022 15:44, Joerg Roedel wrote:
> On Thu, Jun 16, 2022 at 01:08:25PM +0200, AngeloGioacchino Del Regno wrote:
>> AngeloGioacchino Del Regno (5):
>> dt-bindings: iommu: mediatek: Add mediatek,infracfg phandle
>> iommu/mediatek: Lookup phandle to retrieve syscon to infracfg
>> arm64: dts: mediatek: mt8173: Add mediatek,infracfg phandle for IOMMU
>> arm64: dts: mediatek: mt2712e: Add mediatek,infracfg phandle for IOMMU
>> iommu/mediatek: Cleanup pericfg lookup flow
>>
>> .../bindings/iommu/mediatek,iommu.yaml | 17 +++++++
>> arch/arm64/boot/dts/mediatek/mt2712e.dtsi | 2 +
>> arch/arm64/boot/dts/mediatek/mt8173.dtsi | 1 +
>> drivers/iommu/mtk_iommu.c | 50 +++++++++++--------
>> 4 files changed, 49 insertions(+), 21 deletions(-)
>
> Applied, thanks.

I wanted to check if you took also 3 and 4, as these should go through my tree.
Unfortunately you haven't pushed your tree (yet). In case you took the whole
series, can you please drop the dts patches. I'll apply them now on my
v5.19-next/dts64 branch.

Regards.
Matthias

2022-06-22 14:25:41

by Matthias Brugger

[permalink] [raw]
Subject: Re: [PATCH v4 0/5] mtk_iommu: Specify phandles to infracfg and pericfg

Hi Joerg,

On 22/06/2022 15:44, Joerg Roedel wrote:
> On Thu, Jun 16, 2022 at 01:08:25PM +0200, AngeloGioacchino Del Regno wrote:
>> AngeloGioacchino Del Regno (5):
>> dt-bindings: iommu: mediatek: Add mediatek,infracfg phandle
>> iommu/mediatek: Lookup phandle to retrieve syscon to infracfg
>> arm64: dts: mediatek: mt8173: Add mediatek,infracfg phandle for IOMMU
>> arm64: dts: mediatek: mt2712e: Add mediatek,infracfg phandle for IOMMU
>> iommu/mediatek: Cleanup pericfg lookup flow
>>
>> .../bindings/iommu/mediatek,iommu.yaml | 17 +++++++
>> arch/arm64/boot/dts/mediatek/mt2712e.dtsi | 2 +
>> arch/arm64/boot/dts/mediatek/mt8173.dtsi | 1 +
>> drivers/iommu/mtk_iommu.c | 50 +++++++++++--------
>> 4 files changed, 49 insertions(+), 21 deletions(-)
>
> Applied, thanks.

I wanted to check if you took also 3 and 4, as these should go through my tree.
Unfortunately you haven't pushed your tree (yet). In case you took the whole
series, can you please drop the dts patches. I'll apply them now on my
v5.19-next/dts64 branch.

Regards.
Matthias

2022-06-23 07:49:42

by Joerg Roedel

[permalink] [raw]
Subject: Re: [PATCH v4 0/5] mtk_iommu: Specify phandles to infracfg and pericfg

Hi Matthias,

On Wed, Jun 22, 2022 at 04:12:47PM +0200, Matthias Brugger wrote:
> I wanted to check if you took also 3 and 4, as these should go through my
> tree. Unfortunately you haven't pushed your tree (yet). In case you took the
> whole series, can you please drop the dts patches. I'll apply them now on my
> v5.19-next/dts64 branch.

Yes, I applied the whole series, will drop patches 3 and 4 now.

Thanks,

Joerg