1. Mediatek has its own implementation for wrapper interrupts and
power management. Add the SoC specific compatible for MT8196
implementing arm,smmu-v3.
2. APU SMMU need wait until its power is ready, thus add a phandle
smmu-mediatek-parents to its power node.
Signed-off-by: Xueqi Zhang <xueqi.zhang@mediatek.com>
---
.../bindings/iommu/arm,smmu-v3.yaml | 24 ++++++++++++++++++-
1 file changed, 23 insertions(+), 1 deletion(-)
diff --git a/Documentation/devicetree/bindings/iommu/arm,smmu-v3.yaml b/Documentation/devicetree/bindings/iommu/arm,smmu-v3.yaml
index 75fcf4cb52d9..c9a99e54de69 100644
--- a/Documentation/devicetree/bindings/iommu/arm,smmu-v3.yaml
+++ b/Documentation/devicetree/bindings/iommu/arm,smmu-v3.yaml
@@ -20,7 +20,12 @@ properties:
$nodename:
pattern: "^iommu@[0-9a-f]*"
compatible:
- const: arm,smmu-v3
+ - description: MediaTek SoCs implementing "arm,smmu-v3"
+ items:
+ - enum:
+ - mediatek,mt8196-apu-smmu
+ - mediatek,mt8196-mm-smmu
+ - const: arm,smmu-v3
reg:
maxItems: 1
@@ -69,11 +74,28 @@ properties:
register access with page 0 offsets. Set for Cavium ThunderX2 silicon that
doesn't support SMMU page1 register space.
+ mediatek,smmu-parents:
+ $ref: /schemas/types.yaml#/definitions/phandle
+ description:
+ A phandle to the SMMU's power node. The SMMU should wait until its power
+ is ready
+
required:
- compatible
- reg
- '#iommu-cells'
+allOf:
+ - if: # for SMMU need to wait its power node
+ properties:
+ compatible:
+ contains:
+ enum:
+ - mediatek,mt8196-apu-smmu
+ then:
+ required:
+ - mediatek,smmu-parents
+
additionalProperties: false
examples:
--
2.46.0
On Mon, Jun 16, 2025 at 10:56:07AM GMT, Xueqi Zhang wrote: > 1. Mediatek has its own implementation for wrapper interrupts and > power management. Add the SoC specific compatible for MT8196 > implementing arm,smmu-v3. > 2. APU SMMU need wait until its power is ready, thus add a phandle > smmu-mediatek-parents to its power node. > > Signed-off-by: Xueqi Zhang <xueqi.zhang@mediatek.com> > --- > .../bindings/iommu/arm,smmu-v3.yaml | 24 ++++++++++++++++++- > 1 file changed, 23 insertions(+), 1 deletion(-) > > diff --git a/Documentation/devicetree/bindings/iommu/arm,smmu-v3.yaml b/Documentation/devicetree/bindings/iommu/arm,smmu-v3.yaml > index 75fcf4cb52d9..c9a99e54de69 100644 > --- a/Documentation/devicetree/bindings/iommu/arm,smmu-v3.yaml > +++ b/Documentation/devicetree/bindings/iommu/arm,smmu-v3.yaml > @@ -20,7 +20,12 @@ properties: > $nodename: > pattern: "^iommu@[0-9a-f]*" > compatible: > - const: arm,smmu-v3 > + - description: MediaTek SoCs implementing "arm,smmu-v3" > + items: > + - enum: > + - mediatek,mt8196-apu-smmu > + - mediatek,mt8196-mm-smmu > + - const: arm,smmu-v3 You just broke every existing user, so this was not tested. Limited review follows - test your patches first. > > reg: > maxItems: 1 > @@ -69,11 +74,28 @@ properties: > register access with page 0 offsets. Set for Cavium ThunderX2 silicon that > doesn't support SMMU page1 register space. > > + mediatek,smmu-parents: > + $ref: /schemas/types.yaml#/definitions/phandle > + description: > + A phandle to the SMMU's power node. The SMMU should wait until its power > + is ready No, power domains express power relationship. Or some other existing properties or simply parent-child relationships. Best regards, Krzysztof
On Mon, Jun 16, 2025 at 10:56:07AM +0800, Xueqi Zhang wrote: > 1. Mediatek has its own implementation for wrapper interrupts and > power management. Add the SoC specific compatible for MT8196 > implementing arm,smmu-v3. > 2. APU SMMU need wait until its power is ready, thus add a phandle > smmu-mediatek-parents to its power node. > > Signed-off-by: Xueqi Zhang <xueqi.zhang@mediatek.com> > --- > .../bindings/iommu/arm,smmu-v3.yaml | 24 ++++++++++++++++++- > 1 file changed, 23 insertions(+), 1 deletion(-) > > diff --git a/Documentation/devicetree/bindings/iommu/arm,smmu-v3.yaml b/Documentation/devicetree/bindings/iommu/arm,smmu-v3.yaml > index 75fcf4cb52d9..c9a99e54de69 100644 > --- a/Documentation/devicetree/bindings/iommu/arm,smmu-v3.yaml > +++ b/Documentation/devicetree/bindings/iommu/arm,smmu-v3.yaml > @@ -20,7 +20,12 @@ properties: > $nodename: > pattern: "^iommu@[0-9a-f]*" > compatible: > - const: arm,smmu-v3 > + - description: MediaTek SoCs implementing "arm,smmu-v3" > + items: > + - enum: > + - mediatek,mt8196-apu-smmu > + - mediatek,mt8196-mm-smmu > + - const: arm,smmu-v3 > > reg: > maxItems: 1 > @@ -69,11 +74,28 @@ properties: > register access with page 0 offsets. Set for Cavium ThunderX2 silicon that > doesn't support SMMU page1 register space. > > + mediatek,smmu-parents: > + $ref: /schemas/types.yaml#/definitions/phandle > + description: > + A phandle to the SMMU's power node. The SMMU should wait until its power > + is ready What's wrong with the power-domains binding? Don't add vendor specific properties to a common IP block. Rob
On Mon, 16 Jun 2025 10:56:07 +0800, Xueqi Zhang wrote: > 1. Mediatek has its own implementation for wrapper interrupts and > power management. Add the SoC specific compatible for MT8196 > implementing arm,smmu-v3. > 2. APU SMMU need wait until its power is ready, thus add a phandle > smmu-mediatek-parents to its power node. > > Signed-off-by: Xueqi Zhang <xueqi.zhang@mediatek.com> > --- > .../bindings/iommu/arm,smmu-v3.yaml | 24 ++++++++++++++++++- > 1 file changed, 23 insertions(+), 1 deletion(-) > My bot found errors running 'make dt_binding_check' on your patch: yamllint warnings/errors: dtschema/dtc warnings/errors: /builds/robherring/dt-review-ci/linux/Documentation/devicetree/bindings/iommu/arm,smmu-v3.yaml: ignoring, error in schema: properties: compatible /builds/robherring/dt-review-ci/linux/Documentation/devicetree/bindings/iommu/arm,smmu-v3.yaml: properties:compatible: [{'description': 'MediaTek SoCs implementing "arm,smmu-v3"', 'items': [{'enum': ['mediatek,mt8196-apu-smmu', 'mediatek,mt8196-mm-smmu']}, {'const': 'arm,smmu-v3'}]}] is not of type 'object', 'boolean' from schema $id: http://json-schema.org/draft-07/schema# /builds/robherring/dt-review-ci/linux/Documentation/devicetree/bindings/iommu/arm,smmu-v3.yaml: properties:compatible: [{'description': 'MediaTek SoCs implementing "arm,smmu-v3"', 'items': [{'enum': ['mediatek,mt8196-apu-smmu', 'mediatek,mt8196-mm-smmu']}, {'const': 'arm,smmu-v3'}]}] is not of type 'object', 'boolean' from schema $id: http://devicetree.org/meta-schemas/keywords.yaml# Documentation/devicetree/bindings/iommu/arm,smmu-v3.example.dtb: /example-0/iommu@2b400000: failed to match any schema with compatible: ['arm,smmu-v3'] doc reference errors (make refcheckdocs): See https://patchwork.ozlabs.org/project/devicetree-bindings/patch/20250616025628.25454-2-xueqi.zhang@mediatek.com The base for the series is generally the latest rc1. A different dependency should be noted in *this* patch. If you already ran 'make dt_binding_check' and didn't see the above error(s), then make sure 'yamllint' is installed and dt-schema is up to date: pip3 install dtschema --upgrade Please check and re-submit after running the above command yourself. Note that DT_SCHEMA_FILES can be set to your schema file to speed up checking your schema. However, it must be unset to test all examples with your schema.
© 2016 - 2025 Red Hat, Inc.