Hi Geert-san, Thank you for your review! > From: Geert Uytterhoeven, Sent: Wednesday, April 15, 2020 11:21 PM > > Hi Shimoda-san, > > On Tue, Apr 14, 2020 at 2:26 AM Yoshihiro Shimoda > <yoshihiro.shimoda.uh@xxxxxxxxxxx> wrote: > > Convert Renesas VMSA-Compatible IOMMU bindings documentation > > to json-schema. > > > > Signed-off-by: Yoshihiro Shimoda <yoshihiro.shimoda.uh@xxxxxxxxxxx> > > > --- /dev/null > > +++ b/Documentation/devicetree/bindings/iommu/renesas,ipmmu-vmsa.yaml > > @@ -0,0 +1,90 @@ > > +# SPDX-License-Identifier: (GPL-2.0-only OR BSD-2-Clause) > > +%YAML 1.2 > > +--- > > +$id: http://devicetree.org/schemas/iommu/renesas,ipmmu-vmsa.yaml# > > +$schema: http://devicetree.org/meta-schemas/core.yaml# > > + > > +title: Renesas VMSA-Compatible IOMMU > > + > > +maintainers: > > + - Yoshihiro Shimoda <yoshihiro.shimoda.uh@xxxxxxxxxxx> > > + > > +description: > > + The IPMMU is an IOMMU implementation compatible with the ARM VMSA page tables. > > + It provides address translation for bus masters outside of the CPU, each > > + connected to the IPMMU through a port called micro-TLB. > > + > > +properties: > > + compatible: > > + oneOf: > > + - items: > > + - enum: > > + - renesas,ipmmu-r8a7743 # RZ/G1M > > + - renesas,ipmmu-r8a7744 # RZ/G1N > > + - renesas,ipmmu-r8a7745 # RZ/G1E > > + - renesas,ipmmu-r8a7790 # R-Car H2 > > + - renesas,ipmmu-r8a7791 # R-Car M2-W > > + - renesas,ipmmu-r8a7793 # R-Car M2-N > > + - renesas,ipmmu-r8a7794 # R-Car E2 > > + - renesas,ipmmu-r8a7795 # R-Car H3 > > + - const: renesas,ipmmu-vmsa # R-Car Gen2 or RZ/G1 > > + - items: > > + - enum: > > + - renesas,ipmmu-r8a73a4 # R-Mobile APE6 > > I believe the R-Mobile APE6 IPMMU is similar to the R-Car Gen2 IPMMU, > and thus belongs in the section above instead. I think so. Since the original document doesn't mention about R-Mobile APE6, I wrote this here. But, I also think R-Mobile APE6 IPMMU is similar to the R-Car Gen2 IPMMU. So, I'll change renesas,ipmmu-r8a73a4 to the above section and fix comment of renesas,ipmmu-vmsa > > + - renesas,ipmmu-r8a774a1 # RZ/G2M > > + - renesas,ipmmu-r8a774b1 # RZ/G2N > > + - renesas,ipmmu-r8a774c0 # RZ/G2E > > + - renesas,ipmmu-r8a7796 # R-Car M3-W > > + - renesas,ipmmu-r8a77965 # R-Car M3-N > > + - renesas,ipmmu-r8a77970 # R-Car V3M > > + - renesas,ipmmu-r8a77980 # R-Car V3H > > + - renesas,ipmmu-r8a77990 # R-Car E3 > > + - renesas,ipmmu-r8a77995 # R-Car D3 > > + > > + reg: > > + maxItems: 1 > > + > > + interrupts: > > + minItems: 1 > > + maxItems: 2 > > + description: > > + Specifiers for the MMU fault interrupts. For instances that support > > + secure mode two interrupts must be specified, for non-secure and secure > > + mode, in that order. For instances that don't support secure mode a > > + single interrupt must be specified. Not required for cache IPMMUs. > > items: > - description: <non-secure ...> > - description: <secure ...> I got it. I'll add items. > > + > > + '#iommu-cells': > > + const: 1 > > + > > + power-domains: > > + maxItems: 1 > > + > > + renesas,ipmmu-main: > > + $ref: /schemas/types.yaml#/definitions/phandle-array > > + description: > > + Reference to the main IPMMU instance in two cells. The first cell is > > + a phandle to the main IPMMU and the second cell is the interrupt bit > > + number associated with the particular cache IPMMU device. The interrupt > > + bit number needs to match the main IPMMU IMSSTR register. Only used by > > + cache IPMMU instances. > > This property is not valid only on R-Car Gen2 and R-Mobile APE6. That sounds good. But, since ipmmu_mm on R-Car Gen3 also is not valid, we cannot use compatible property for detecting it. However, I realized renesas,ipmmu-main is only used by "cache IPMMU" and "cache IPMMU" doesn't have interrupts property. So, I described the following schema and then it seems success. -- if: properties: interrupts: false then: required: - renesas,ipmmu-main -- Especially, I could find missing renesas,ipmmu-main property on r8a77980.dtsi like below :) So, I'll make and submit a fixing r8a77980.dtsi patch later (maybe tomorrow). CHECK arch/arm64/boot/dts/renesas/r8a77980-condor.dt.yaml /opt/home/shimoda/workdir/json-schema/arch/arm64/boot/dts/renesas/r8a77980-condor.dt.yaml: mmu@e7b00000: 'renesas,ipmmu-main' is a required property /opt/home/shimoda/workdir/json-schema/arch/arm64/boot/dts/renesas/r8a77980-condor.dt.yaml: mmu@e7960000: 'renesas,ipmmu-main' is a required property Best regards, Yoshihiro Shimoda > (untested) > > oneOf: > - properties: > contains: > const: renesas,ipmmu-vmsa > - properties: > renesas,ipmmu-main: > $ref: /schemas/types.yaml#/definitions/phandle-array > description: > [...] > > Gr{oetje,eeting}s, > > Geert > > -- > Geert Uytterhoeven -- There's lots of Linux beyond ia32 -- geert@xxxxxxxxxxxxxx > > In personal conversations with technical people, I call myself a hacker. But > when I'm talking to journalists I just say "programmer" or something like that. > -- Linus Torvalds