Re: [PATCH v3 02/24] dt-bindings: memory: mediatek: Convert SMI to DT schema
On Mon, 2020-10-12 at 15:26 +0200, Krzysztof Kozlowski wrote: > On Mon, 12 Oct 2020 at 14:02, Yong Wu wrote: > > > > On Mon, 2020-10-12 at 09:18 +0200, Krzysztof Kozlowski wrote: > > > On Sat, Oct 10, 2020 at 02:18:11PM +0800, Yong Wu wrote: > > > > On Tue, 2020-10-06 at 09:15 +0200, Krzysztof Kozlowski wrote: > > > > > On Tue, 6 Oct 2020 at 06:27, Yong Wu wrote: > > > > > > > > > > > > On Fri, 2020-10-02 at 13:08 +0200, Krzysztof Kozlowski wrote: > > > > > > > On Wed, Sep 30, 2020 at 03:06:25PM +0800, Yong Wu wrote: > > > > > > > > Convert MediaTek SMI to DT schema. > > > > > > > > > > > > > > > > Signed-off-by: Yong Wu > > > > > > > > --- > > > > > > > > .../mediatek,smi-common.txt | 49 - > > > > > > > > .../mediatek,smi-common.yaml | 100 > > > > > > > > ++ > > > > > > > > .../memory-controllers/mediatek,smi-larb.txt | 49 - > > > > > > > > .../memory-controllers/mediatek,smi-larb.yaml | 91 > > > > > > > > > > > > > > > > 4 files changed, 191 insertions(+), 98 deletions(-) > > > > > > > > delete mode 100644 > > > > > > > > Documentation/devicetree/bindings/memory-controllers/mediatek,smi-common.txt > > > > > > > > create mode 100644 > > > > > > > > Documentation/devicetree/bindings/memory-controllers/mediatek,smi-common.yaml > > > > > > > > delete mode 100644 > > > > > > > > Documentation/devicetree/bindings/memory-controllers/mediatek,smi-larb.txt > > > > > > > > create mode 100644 > > > > > > > > Documentation/devicetree/bindings/memory-controllers/mediatek,smi-larb.yaml > > > > > > ... > > > > > > > > +properties: > > > > > > > > + compatible: > > > > > > > > +oneOf: > > > > > > > > + - enum: > > > > > > > > + - mediatek,mt2701-smi-common > > > > > > > > + - mediatek,mt2712-smi-common > > > > > > > > + - mediatek,mt6779-smi-common > > > > > > > > + - mediatek,mt8173-smi-common > > > > > > > > + - mediatek,mt8183-smi-common > > > > > > > > + > > > > > > > > + - description: for mt7623 > > > > > > > > +items: > > > > > > > > + - const: mediatek,mt7623-smi-common > > > > > > > > + - const: mediatek,mt2701-smi-common > > > > > > > > + > > > > > > > > + reg: > > > > > > > > +maxItems: 1 > > > > > > > > + > > > > > > > > + clocks: > > > > > > > > +description: | > > > > > > > > + apb and smi are mandatory. the async is only for > > > > > > > > generation 1 smi HW. > > > > > > > > + gals(global async local sync) also is optional, here is > > > > > > > > the list which > > > > > > > > + require gals: mt6779 and mt8183. > > > > > > > > +minItems: 2 > > > > > > > > +maxItems: 4 > > > > > > > > +items: > > > > > > > > + - description: apb is Advanced Peripheral Bus clock, > > > > > > > > It's the clock for > > > > > > > > + setting the register. > > > > > > > > + - description: smi is the clock for transfer data and > > > > > > > > command. > > > > > > > > + - description: async is asynchronous clock, it help > > > > > > > > transform the smi clock > > > > > > > > + into the emi clock domain. > > > > > > > > + - description: gals0 is the path0 clock of gals. > > > > > > > > + - description: gals1 is the path1 clock of gals. > > > > > > > > + > > > > > > > > + clock-names: > > > > > > > > +oneOf: > > > > > > > > + - items: > > > > > > > > + - const: apb > > > > > > > > + - const: smi > > > > > > > > + - items: > > > > > > > > + - const: apb > > > > > > > > + - const: smi > > > > > > > > + - const: async > > > > > > > > + - items: > > > > > > > > + - const: apb > > > > > > > > + - const: smi > > > > > > > > + - const: gals0 > > > > > > > > + - const: gals1 > > > > > > > > > > > > > > Similarly to my comment to other properties, this requirement per > > > > > > > compatible should be part of the schema within 'if-then'. > > > > > > > > > > > > I'm not so familiar with this format. Do this has "if-then-'else > > > > > > if'-then-else"? > > > > > > > > > > These are mutually exclusive conditions, so you can skip else: > > > > > - if-then > > > > > - if-then > > > > > - if-then > > > > > It will be more readable then stacking 'if' under 'else' > > > > > > > > Thanks. I will use something like this: > > > > > > > > anyOf: > > > > > > Then it should be oneOf as only one condition can be valid. > > > > I did do this at the beginning. But I get a warning log when > > dt_binding_check. > > Mhmm, right, since "if-else" matches in either of arms, then oneOf > will complain as it expects only one of items to match. Then just go > with allOf. anyOf might match zero of items, so it would not catch > actual errors, I think. Thanks for the confirm. I will use "allOf" in next version. > > Best regards, > Krzysztof
Re: [PATCH v3 02/24] dt-bindings: memory: mediatek: Convert SMI to DT schema
On Mon, 12 Oct 2020 at 14:02, Yong Wu wrote: > > On Mon, 2020-10-12 at 09:18 +0200, Krzysztof Kozlowski wrote: > > On Sat, Oct 10, 2020 at 02:18:11PM +0800, Yong Wu wrote: > > > On Tue, 2020-10-06 at 09:15 +0200, Krzysztof Kozlowski wrote: > > > > On Tue, 6 Oct 2020 at 06:27, Yong Wu wrote: > > > > > > > > > > On Fri, 2020-10-02 at 13:08 +0200, Krzysztof Kozlowski wrote: > > > > > > On Wed, Sep 30, 2020 at 03:06:25PM +0800, Yong Wu wrote: > > > > > > > Convert MediaTek SMI to DT schema. > > > > > > > > > > > > > > Signed-off-by: Yong Wu > > > > > > > --- > > > > > > > .../mediatek,smi-common.txt | 49 - > > > > > > > .../mediatek,smi-common.yaml | 100 > > > > > > > ++ > > > > > > > .../memory-controllers/mediatek,smi-larb.txt | 49 - > > > > > > > .../memory-controllers/mediatek,smi-larb.yaml | 91 > > > > > > > > > > > > > > 4 files changed, 191 insertions(+), 98 deletions(-) > > > > > > > delete mode 100644 > > > > > > > Documentation/devicetree/bindings/memory-controllers/mediatek,smi-common.txt > > > > > > > create mode 100644 > > > > > > > Documentation/devicetree/bindings/memory-controllers/mediatek,smi-common.yaml > > > > > > > delete mode 100644 > > > > > > > Documentation/devicetree/bindings/memory-controllers/mediatek,smi-larb.txt > > > > > > > create mode 100644 > > > > > > > Documentation/devicetree/bindings/memory-controllers/mediatek,smi-larb.yaml > > > > > ... > > > > > > > +properties: > > > > > > > + compatible: > > > > > > > +oneOf: > > > > > > > + - enum: > > > > > > > + - mediatek,mt2701-smi-common > > > > > > > + - mediatek,mt2712-smi-common > > > > > > > + - mediatek,mt6779-smi-common > > > > > > > + - mediatek,mt8173-smi-common > > > > > > > + - mediatek,mt8183-smi-common > > > > > > > + > > > > > > > + - description: for mt7623 > > > > > > > +items: > > > > > > > + - const: mediatek,mt7623-smi-common > > > > > > > + - const: mediatek,mt2701-smi-common > > > > > > > + > > > > > > > + reg: > > > > > > > +maxItems: 1 > > > > > > > + > > > > > > > + clocks: > > > > > > > +description: | > > > > > > > + apb and smi are mandatory. the async is only for > > > > > > > generation 1 smi HW. > > > > > > > + gals(global async local sync) also is optional, here is > > > > > > > the list which > > > > > > > + require gals: mt6779 and mt8183. > > > > > > > +minItems: 2 > > > > > > > +maxItems: 4 > > > > > > > +items: > > > > > > > + - description: apb is Advanced Peripheral Bus clock, It's > > > > > > > the clock for > > > > > > > + setting the register. > > > > > > > + - description: smi is the clock for transfer data and > > > > > > > command. > > > > > > > + - description: async is asynchronous clock, it help > > > > > > > transform the smi clock > > > > > > > + into the emi clock domain. > > > > > > > + - description: gals0 is the path0 clock of gals. > > > > > > > + - description: gals1 is the path1 clock of gals. > > > > > > > + > > > > > > > + clock-names: > > > > > > > +oneOf: > > > > > > > + - items: > > > > > > > + - const: apb > > > > > > > + - const: smi > > > > > > > + - items: > > > > > > > + - const: apb > > > > > > > + - const: smi > > > > > > > + - const: async > > > > > > > + - items: > > > > > > > + - const: apb > > > > > > > + - const: smi > > > > > > > + - const: gals0 > > > > > > > + - const: gals1 > > > > > > > > > > > > Similarly to my comment to other properties, this requirement per > > > > > > compatible should be part of the schema within 'if-then'. > > > > > > > > > > I'm not so familiar with this format. Do this has "if-then-'else > > > > > if'-then-else"? > > > > > > > > These are mutually exclusive conditions, so you can skip else: > > > > - if-then > > > > - if-then > > > > - if-then > > > > It will be more readable then stacking 'if' under 'else' > > > > > > Thanks. I will use something like this: > > > > > > anyOf: > > > > Then it should be oneOf as only one condition can be valid. > > I did do this at the beginning. But I get a warning log when > dt_binding_check. Mhmm, right, since "if-else" matches in either of arms, then oneOf will complain as it expects only one of items to match. Then just go with allOf. anyOf might match zero of items, so it would not catch actual errors, I think. Best regards, Krzysztof ___ iommu mailing list iommu@lists.linux-foundation.org https://lists.linuxfoundation.org/mailman/listinfo/iommu
Re: [PATCH v3 02/24] dt-bindings: memory: mediatek: Convert SMI to DT schema
On Mon, 2020-10-12 at 09:18 +0200, Krzysztof Kozlowski wrote: > On Sat, Oct 10, 2020 at 02:18:11PM +0800, Yong Wu wrote: > > On Tue, 2020-10-06 at 09:15 +0200, Krzysztof Kozlowski wrote: > > > On Tue, 6 Oct 2020 at 06:27, Yong Wu wrote: > > > > > > > > On Fri, 2020-10-02 at 13:08 +0200, Krzysztof Kozlowski wrote: > > > > > On Wed, Sep 30, 2020 at 03:06:25PM +0800, Yong Wu wrote: > > > > > > Convert MediaTek SMI to DT schema. > > > > > > > > > > > > Signed-off-by: Yong Wu > > > > > > --- > > > > > > .../mediatek,smi-common.txt | 49 - > > > > > > .../mediatek,smi-common.yaml | 100 > > > > > > ++ > > > > > > .../memory-controllers/mediatek,smi-larb.txt | 49 - > > > > > > .../memory-controllers/mediatek,smi-larb.yaml | 91 > > > > > > > > > > > > 4 files changed, 191 insertions(+), 98 deletions(-) > > > > > > delete mode 100644 > > > > > > Documentation/devicetree/bindings/memory-controllers/mediatek,smi-common.txt > > > > > > create mode 100644 > > > > > > Documentation/devicetree/bindings/memory-controllers/mediatek,smi-common.yaml > > > > > > delete mode 100644 > > > > > > Documentation/devicetree/bindings/memory-controllers/mediatek,smi-larb.txt > > > > > > create mode 100644 > > > > > > Documentation/devicetree/bindings/memory-controllers/mediatek,smi-larb.yaml > > > > ... > > > > > > +properties: > > > > > > + compatible: > > > > > > +oneOf: > > > > > > + - enum: > > > > > > + - mediatek,mt2701-smi-common > > > > > > + - mediatek,mt2712-smi-common > > > > > > + - mediatek,mt6779-smi-common > > > > > > + - mediatek,mt8173-smi-common > > > > > > + - mediatek,mt8183-smi-common > > > > > > + > > > > > > + - description: for mt7623 > > > > > > +items: > > > > > > + - const: mediatek,mt7623-smi-common > > > > > > + - const: mediatek,mt2701-smi-common > > > > > > + > > > > > > + reg: > > > > > > +maxItems: 1 > > > > > > + > > > > > > + clocks: > > > > > > +description: | > > > > > > + apb and smi are mandatory. the async is only for generation > > > > > > 1 smi HW. > > > > > > + gals(global async local sync) also is optional, here is the > > > > > > list which > > > > > > + require gals: mt6779 and mt8183. > > > > > > +minItems: 2 > > > > > > +maxItems: 4 > > > > > > +items: > > > > > > + - description: apb is Advanced Peripheral Bus clock, It's > > > > > > the clock for > > > > > > + setting the register. > > > > > > + - description: smi is the clock for transfer data and > > > > > > command. > > > > > > + - description: async is asynchronous clock, it help > > > > > > transform the smi clock > > > > > > + into the emi clock domain. > > > > > > + - description: gals0 is the path0 clock of gals. > > > > > > + - description: gals1 is the path1 clock of gals. > > > > > > + > > > > > > + clock-names: > > > > > > +oneOf: > > > > > > + - items: > > > > > > + - const: apb > > > > > > + - const: smi > > > > > > + - items: > > > > > > + - const: apb > > > > > > + - const: smi > > > > > > + - const: async > > > > > > + - items: > > > > > > + - const: apb > > > > > > + - const: smi > > > > > > + - const: gals0 > > > > > > + - const: gals1 > > > > > > > > > > Similarly to my comment to other properties, this requirement per > > > > > compatible should be part of the schema within 'if-then'. > > > > > > > > I'm not so familiar with this format. Do this has "if-then-'else > > > > if'-then-else"? > > > > > > These are mutually exclusive conditions, so you can skip else: > > > - if-then > > > - if-then > > > - if-then > > > It will be more readable then stacking 'if' under 'else' > > > > Thanks. I will use something like this: > > > > anyOf: > > Then it should be oneOf as only one condition can be valid. I did do this at the beginning. But I get a warning log when dt_binding_check. Below is my schema and the detailed warning log: //=== clocks: description: | x minItems: 2 maxItems: 4 items: - description: apb is the clock for setting the register. - description: smi is the clock for transfer data and command. - description: async is asynchronous clock. - description: gals0 is the path0 clock of gals. - description: gals1 is the path1 clock of gals. clock-names: minItems: 2 maxItems: 4 required: - compatible - reg - power-domains - clocks - clock-names oneOf: - if: #only for gen1 HW properties: compatible: contains: enum: - mediatek,mt2701-smi-common then: properties: clock: items: minItems: 3 maxItems: 3
Re: [PATCH v3 02/24] dt-bindings: memory: mediatek: Convert SMI to DT schema
On Sat, Oct 10, 2020 at 02:18:11PM +0800, Yong Wu wrote: > On Tue, 2020-10-06 at 09:15 +0200, Krzysztof Kozlowski wrote: > > On Tue, 6 Oct 2020 at 06:27, Yong Wu wrote: > > > > > > On Fri, 2020-10-02 at 13:08 +0200, Krzysztof Kozlowski wrote: > > > > On Wed, Sep 30, 2020 at 03:06:25PM +0800, Yong Wu wrote: > > > > > Convert MediaTek SMI to DT schema. > > > > > > > > > > Signed-off-by: Yong Wu > > > > > --- > > > > > .../mediatek,smi-common.txt | 49 - > > > > > .../mediatek,smi-common.yaml | 100 > > > > > ++ > > > > > .../memory-controllers/mediatek,smi-larb.txt | 49 - > > > > > .../memory-controllers/mediatek,smi-larb.yaml | 91 > > > > > 4 files changed, 191 insertions(+), 98 deletions(-) > > > > > delete mode 100644 > > > > > Documentation/devicetree/bindings/memory-controllers/mediatek,smi-common.txt > > > > > create mode 100644 > > > > > Documentation/devicetree/bindings/memory-controllers/mediatek,smi-common.yaml > > > > > delete mode 100644 > > > > > Documentation/devicetree/bindings/memory-controllers/mediatek,smi-larb.txt > > > > > create mode 100644 > > > > > Documentation/devicetree/bindings/memory-controllers/mediatek,smi-larb.yaml > > > ... > > > > > +properties: > > > > > + compatible: > > > > > +oneOf: > > > > > + - enum: > > > > > + - mediatek,mt2701-smi-common > > > > > + - mediatek,mt2712-smi-common > > > > > + - mediatek,mt6779-smi-common > > > > > + - mediatek,mt8173-smi-common > > > > > + - mediatek,mt8183-smi-common > > > > > + > > > > > + - description: for mt7623 > > > > > +items: > > > > > + - const: mediatek,mt7623-smi-common > > > > > + - const: mediatek,mt2701-smi-common > > > > > + > > > > > + reg: > > > > > +maxItems: 1 > > > > > + > > > > > + clocks: > > > > > +description: | > > > > > + apb and smi are mandatory. the async is only for generation 1 > > > > > smi HW. > > > > > + gals(global async local sync) also is optional, here is the > > > > > list which > > > > > + require gals: mt6779 and mt8183. > > > > > +minItems: 2 > > > > > +maxItems: 4 > > > > > +items: > > > > > + - description: apb is Advanced Peripheral Bus clock, It's the > > > > > clock for > > > > > + setting the register. > > > > > + - description: smi is the clock for transfer data and command. > > > > > + - description: async is asynchronous clock, it help transform > > > > > the smi clock > > > > > + into the emi clock domain. > > > > > + - description: gals0 is the path0 clock of gals. > > > > > + - description: gals1 is the path1 clock of gals. > > > > > + > > > > > + clock-names: > > > > > +oneOf: > > > > > + - items: > > > > > + - const: apb > > > > > + - const: smi > > > > > + - items: > > > > > + - const: apb > > > > > + - const: smi > > > > > + - const: async > > > > > + - items: > > > > > + - const: apb > > > > > + - const: smi > > > > > + - const: gals0 > > > > > + - const: gals1 > > > > > > > > Similarly to my comment to other properties, this requirement per > > > > compatible should be part of the schema within 'if-then'. > > > > > > I'm not so familiar with this format. Do this has "if-then-'else > > > if'-then-else"? > > > > These are mutually exclusive conditions, so you can skip else: > > - if-then > > - if-then > > - if-then > > It will be more readable then stacking 'if' under 'else' > > Thanks. I will use something like this: > > anyOf: Then it should be oneOf as only one condition can be valid. Best regards, Krzysztof >- if: #gen1 hw > then: >use apb/smi/async clocks > >- if: #gen2 hw that has gals. > then: >use apb/smi/gals0/gals1 clocks > else: # gen2 hw that doesn't have gals. >use apb/smi clocks. ___ iommu mailing list iommu@lists.linux-foundation.org https://lists.linuxfoundation.org/mailman/listinfo/iommu
Re: [PATCH v3 02/24] dt-bindings: memory: mediatek: Convert SMI to DT schema
On Tue, 2020-10-06 at 09:15 +0200, Krzysztof Kozlowski wrote: > On Tue, 6 Oct 2020 at 06:27, Yong Wu wrote: > > > > On Fri, 2020-10-02 at 13:08 +0200, Krzysztof Kozlowski wrote: > > > On Wed, Sep 30, 2020 at 03:06:25PM +0800, Yong Wu wrote: > > > > Convert MediaTek SMI to DT schema. > > > > > > > > Signed-off-by: Yong Wu > > > > --- > > > > .../mediatek,smi-common.txt | 49 - > > > > .../mediatek,smi-common.yaml | 100 ++ > > > > .../memory-controllers/mediatek,smi-larb.txt | 49 - > > > > .../memory-controllers/mediatek,smi-larb.yaml | 91 > > > > 4 files changed, 191 insertions(+), 98 deletions(-) > > > > delete mode 100644 > > > > Documentation/devicetree/bindings/memory-controllers/mediatek,smi-common.txt > > > > create mode 100644 > > > > Documentation/devicetree/bindings/memory-controllers/mediatek,smi-common.yaml > > > > delete mode 100644 > > > > Documentation/devicetree/bindings/memory-controllers/mediatek,smi-larb.txt > > > > create mode 100644 > > > > Documentation/devicetree/bindings/memory-controllers/mediatek,smi-larb.yaml > > ... > > > > +properties: > > > > + compatible: > > > > +oneOf: > > > > + - enum: > > > > + - mediatek,mt2701-smi-common > > > > + - mediatek,mt2712-smi-common > > > > + - mediatek,mt6779-smi-common > > > > + - mediatek,mt8173-smi-common > > > > + - mediatek,mt8183-smi-common > > > > + > > > > + - description: for mt7623 > > > > +items: > > > > + - const: mediatek,mt7623-smi-common > > > > + - const: mediatek,mt2701-smi-common > > > > + > > > > + reg: > > > > +maxItems: 1 > > > > + > > > > + clocks: > > > > +description: | > > > > + apb and smi are mandatory. the async is only for generation 1 > > > > smi HW. > > > > + gals(global async local sync) also is optional, here is the list > > > > which > > > > + require gals: mt6779 and mt8183. > > > > +minItems: 2 > > > > +maxItems: 4 > > > > +items: > > > > + - description: apb is Advanced Peripheral Bus clock, It's the > > > > clock for > > > > + setting the register. > > > > + - description: smi is the clock for transfer data and command. > > > > + - description: async is asynchronous clock, it help transform > > > > the smi clock > > > > + into the emi clock domain. > > > > + - description: gals0 is the path0 clock of gals. > > > > + - description: gals1 is the path1 clock of gals. > > > > + > > > > + clock-names: > > > > +oneOf: > > > > + - items: > > > > + - const: apb > > > > + - const: smi > > > > + - items: > > > > + - const: apb > > > > + - const: smi > > > > + - const: async > > > > + - items: > > > > + - const: apb > > > > + - const: smi > > > > + - const: gals0 > > > > + - const: gals1 > > > > > > Similarly to my comment to other properties, this requirement per > > > compatible should be part of the schema within 'if-then'. > > > > I'm not so familiar with this format. Do this has "if-then-'else > > if'-then-else"? > > These are mutually exclusive conditions, so you can skip else: > - if-then > - if-then > - if-then > It will be more readable then stacking 'if' under 'else' Thanks. I will use something like this: anyOf: - if: #gen1 hw then: use apb/smi/async clocks - if: #gen2 hw that has gals. then: use apb/smi/gals0/gals1 clocks else: # gen2 hw that doesn't have gals. use apb/smi clocks. > > > > > I tried below instead of the clocks segment above: > > > > === > > if: > > properties: > > compatible: > > Missing contains. Just take an example from some existing schema. Like the example you gave below (Documentation/devicetree/bindings/clock/idt,versaclock5.yaml), It also doesn't have "contains" in "if". I guess it is unnecessary if there is only one compatible string. it may be necessary when it has backward compatible string. > > > enum: > > - mediatek,mt6779-smi-common > > - mediatek,mt8183-smi-common > > > > then: > > properties: > > clock: > > items: > > - description: apb is the clock for setting the register.. > > - description: smi is the clock for transfer data and command. > > - description: gals0 is the path0 clock of gals(global async > > local sync). > > - description: gals1 is the path1 clock of gals. > > clock-names: > > items: > > - const: apb > > - const: smi > > - const: gals0 > > - const: gals1 > > else: > > if: > > properties: > > compatible: > > contains: > > enum: > > - mediatek,mt2701-smi-common > > > > then: > > properties: > > clocks: > > items: > > -
Re: [PATCH v3 02/24] dt-bindings: memory: mediatek: Convert SMI to DT schema
On Tue, 6 Oct 2020 at 06:27, Yong Wu wrote: > > On Fri, 2020-10-02 at 13:08 +0200, Krzysztof Kozlowski wrote: > > On Wed, Sep 30, 2020 at 03:06:25PM +0800, Yong Wu wrote: > > > Convert MediaTek SMI to DT schema. > > > > > > Signed-off-by: Yong Wu > > > --- > > > .../mediatek,smi-common.txt | 49 - > > > .../mediatek,smi-common.yaml | 100 ++ > > > .../memory-controllers/mediatek,smi-larb.txt | 49 - > > > .../memory-controllers/mediatek,smi-larb.yaml | 91 > > > 4 files changed, 191 insertions(+), 98 deletions(-) > > > delete mode 100644 > > > Documentation/devicetree/bindings/memory-controllers/mediatek,smi-common.txt > > > create mode 100644 > > > Documentation/devicetree/bindings/memory-controllers/mediatek,smi-common.yaml > > > delete mode 100644 > > > Documentation/devicetree/bindings/memory-controllers/mediatek,smi-larb.txt > > > create mode 100644 > > > Documentation/devicetree/bindings/memory-controllers/mediatek,smi-larb.yaml > ... > > > +properties: > > > + compatible: > > > +oneOf: > > > + - enum: > > > + - mediatek,mt2701-smi-common > > > + - mediatek,mt2712-smi-common > > > + - mediatek,mt6779-smi-common > > > + - mediatek,mt8173-smi-common > > > + - mediatek,mt8183-smi-common > > > + > > > + - description: for mt7623 > > > +items: > > > + - const: mediatek,mt7623-smi-common > > > + - const: mediatek,mt2701-smi-common > > > + > > > + reg: > > > +maxItems: 1 > > > + > > > + clocks: > > > +description: | > > > + apb and smi are mandatory. the async is only for generation 1 smi > > > HW. > > > + gals(global async local sync) also is optional, here is the list > > > which > > > + require gals: mt6779 and mt8183. > > > +minItems: 2 > > > +maxItems: 4 > > > +items: > > > + - description: apb is Advanced Peripheral Bus clock, It's the > > > clock for > > > + setting the register. > > > + - description: smi is the clock for transfer data and command. > > > + - description: async is asynchronous clock, it help transform the > > > smi clock > > > + into the emi clock domain. > > > + - description: gals0 is the path0 clock of gals. > > > + - description: gals1 is the path1 clock of gals. > > > + > > > + clock-names: > > > +oneOf: > > > + - items: > > > + - const: apb > > > + - const: smi > > > + - items: > > > + - const: apb > > > + - const: smi > > > + - const: async > > > + - items: > > > + - const: apb > > > + - const: smi > > > + - const: gals0 > > > + - const: gals1 > > > > Similarly to my comment to other properties, this requirement per > > compatible should be part of the schema within 'if-then'. > > I'm not so familiar with this format. Do this has "if-then-'else > if'-then-else"? These are mutually exclusive conditions, so you can skip else: - if-then - if-then - if-then It will be more readable then stacking 'if' under 'else' > > I tried below instead of the clocks segment above: > > === > if: > properties: > compatible: Missing contains. Just take an example from some existing schema. > enum: > - mediatek,mt6779-smi-common > - mediatek,mt8183-smi-common > > then: > properties: > clock: > items: > - description: apb is the clock for setting the register.. > - description: smi is the clock for transfer data and command. > - description: gals0 is the path0 clock of gals(global async > local sync). > - description: gals1 is the path1 clock of gals. > clock-names: > items: > - const: apb > - const: smi > - const: gals0 > - const: gals1 > else: > if: > properties: > compatible: > contains: > enum: > - mediatek,mt2701-smi-common > > then: > properties: > clocks: > items: > - description: apb is the clock for setting the register. > - description: smi is the clock for transfer data and command. > - description: async is asynchronous clock, it help transform > the smi clock > into the emi clock domain. > clock-names: > items: > - const: apb > - const: smi > - const: async > else: > properties: > clocks: > items: > - description: apb is the clock for setting the register. > - description: smi is the clock for transfer data and > command. > clock-names: > items: > - const: apb > - const: smi > > > But I got a warning when dt_binding_check: > > CHKDT > Documentation/devicetree/bindings/memory-controllers/mediatek,smi-common.yaml >
Re: [PATCH v3 02/24] dt-bindings: memory: mediatek: Convert SMI to DT schema
On Fri, 2020-10-02 at 13:08 +0200, Krzysztof Kozlowski wrote: > On Wed, Sep 30, 2020 at 03:06:25PM +0800, Yong Wu wrote: > > Convert MediaTek SMI to DT schema. > > > > Signed-off-by: Yong Wu > > --- > > .../mediatek,smi-common.txt | 49 - > > .../mediatek,smi-common.yaml | 100 ++ > > .../memory-controllers/mediatek,smi-larb.txt | 49 - > > .../memory-controllers/mediatek,smi-larb.yaml | 91 > > 4 files changed, 191 insertions(+), 98 deletions(-) > > delete mode 100644 > > Documentation/devicetree/bindings/memory-controllers/mediatek,smi-common.txt > > create mode 100644 > > Documentation/devicetree/bindings/memory-controllers/mediatek,smi-common.yaml > > delete mode 100644 > > Documentation/devicetree/bindings/memory-controllers/mediatek,smi-larb.txt > > create mode 100644 > > Documentation/devicetree/bindings/memory-controllers/mediatek,smi-larb.yaml ... > > +properties: > > + compatible: > > +oneOf: > > + - enum: > > + - mediatek,mt2701-smi-common > > + - mediatek,mt2712-smi-common > > + - mediatek,mt6779-smi-common > > + - mediatek,mt8173-smi-common > > + - mediatek,mt8183-smi-common > > + > > + - description: for mt7623 > > +items: > > + - const: mediatek,mt7623-smi-common > > + - const: mediatek,mt2701-smi-common > > + > > + reg: > > +maxItems: 1 > > + > > + clocks: > > +description: | > > + apb and smi are mandatory. the async is only for generation 1 smi HW. > > + gals(global async local sync) also is optional, here is the list > > which > > + require gals: mt6779 and mt8183. > > +minItems: 2 > > +maxItems: 4 > > +items: > > + - description: apb is Advanced Peripheral Bus clock, It's the clock > > for > > + setting the register. > > + - description: smi is the clock for transfer data and command. > > + - description: async is asynchronous clock, it help transform the > > smi clock > > + into the emi clock domain. > > + - description: gals0 is the path0 clock of gals. > > + - description: gals1 is the path1 clock of gals. > > + > > + clock-names: > > +oneOf: > > + - items: > > + - const: apb > > + - const: smi > > + - items: > > + - const: apb > > + - const: smi > > + - const: async > > + - items: > > + - const: apb > > + - const: smi > > + - const: gals0 > > + - const: gals1 > > Similarly to my comment to other properties, this requirement per > compatible should be part of the schema within 'if-then'. I'm not so familiar with this format. Do this has "if-then-'else if'-then-else"? I tried below instead of the clocks segment above: === if: properties: compatible: enum: - mediatek,mt6779-smi-common - mediatek,mt8183-smi-common then: properties: clock: items: - description: apb is the clock for setting the register.. - description: smi is the clock for transfer data and command. - description: gals0 is the path0 clock of gals(global async local sync). - description: gals1 is the path1 clock of gals. clock-names: items: - const: apb - const: smi - const: gals0 - const: gals1 else: if: properties: compatible: contains: enum: - mediatek,mt2701-smi-common then: properties: clocks: items: - description: apb is the clock for setting the register. - description: smi is the clock for transfer data and command. - description: async is asynchronous clock, it help transform the smi clock into the emi clock domain. clock-names: items: - const: apb - const: smi - const: async else: properties: clocks: items: - description: apb is the clock for setting the register. - description: smi is the clock for transfer data and command. clock-names: items: - const: apb - const: smi But I got a warning when dt_binding_check: CHKDT Documentation/devicetree/bindings/memory-controllers/mediatek,smi-common.yaml SCHEMA Documentation/devicetree/bindings/processed-schema-examples.yaml DTC Documentation/devicetree/bindings/memory-controllers/mediatek,smi-common.example.dt.yaml CHECK Documentation/devicetree/bindings/memory-controllers/mediatek,smi-common.example.dt.yaml .../Documentation/devicetree/bindings/memory-controllers/mediatek,smi-common.example.dt.yaml: smi@14022000: 'clock-names', 'clocks' do not match any of the regexes: 'pinctrl-[0-9]+' From schema: .../Documentation/devicetree/bindings/memory-controllers/mediatek,smi-common.yaml Any
Re: [PATCH v3 02/24] dt-bindings: memory: mediatek: Convert SMI to DT schema
On Wed, Sep 30, 2020 at 03:06:25PM +0800, Yong Wu wrote: > Convert MediaTek SMI to DT schema. > > Signed-off-by: Yong Wu > --- > .../mediatek,smi-common.txt | 49 - > .../mediatek,smi-common.yaml | 100 ++ > .../memory-controllers/mediatek,smi-larb.txt | 49 - > .../memory-controllers/mediatek,smi-larb.yaml | 91 > 4 files changed, 191 insertions(+), 98 deletions(-) > delete mode 100644 > Documentation/devicetree/bindings/memory-controllers/mediatek,smi-common.txt > create mode 100644 > Documentation/devicetree/bindings/memory-controllers/mediatek,smi-common.yaml > delete mode 100644 > Documentation/devicetree/bindings/memory-controllers/mediatek,smi-larb.txt > create mode 100644 > Documentation/devicetree/bindings/memory-controllers/mediatek,smi-larb.yaml > > diff --git > a/Documentation/devicetree/bindings/memory-controllers/mediatek,smi-common.txt > > b/Documentation/devicetree/bindings/memory-controllers/mediatek,smi-common.txt > deleted file mode 100644 > index b64573680b42.. > --- > a/Documentation/devicetree/bindings/memory-controllers/mediatek,smi-common.txt > +++ /dev/null > @@ -1,49 +0,0 @@ > -SMI (Smart Multimedia Interface) Common > - > -The hardware block diagram please check bindings/iommu/mediatek,iommu.txt > - > -Mediatek SMI have two generations of HW architecture, here is the list > -which generation the SoCs use: > -generation 1: mt2701 and mt7623. > -generation 2: mt2712, mt6779, mt8173 and mt8183. > - > -There's slight differences between the two SMI, for generation 2, the > -register which control the iommu port is at each larb's register base. But > -for generation 1, the register is at smi ao base(smi always on register > -base). Besides that, the smi async clock should be prepared and enabled for > -SMI generation 1 to transform the smi clock into emi clock domain, but that > is > -not needed for SMI generation 2. > - > -Required properties: > -- compatible : must be one of : > - "mediatek,mt2701-smi-common" > - "mediatek,mt2712-smi-common" > - "mediatek,mt6779-smi-common" > - "mediatek,mt7623-smi-common", "mediatek,mt2701-smi-common" > - "mediatek,mt8173-smi-common" > - "mediatek,mt8183-smi-common" > -- reg : the register and size of the SMI block. > -- power-domains : a phandle to the power domain of this local arbiter. > -- clocks : Must contain an entry for each entry in clock-names. > -- clock-names : must contain 3 entries for generation 1 smi HW and 2 entries > - for generation 2 smi HW as follows: > - - "apb" : Advanced Peripheral Bus clock, It's the clock for setting > - the register. > - - "smi" : It's the clock for transfer data and command. > - They may be the same if both source clocks are the same. > - - "async" : asynchronous clock, it help transform the smi clock into the > emi > - clock domain, this clock is only needed by generation 1 smi HW. > - and these 2 option clocks for generation 2 smi HW: > - - "gals0": the path0 clock of GALS(Global Async Local Sync). > - - "gals1": the path1 clock of GALS(Global Async Local Sync). > - Here is the list which has this GALS: mt6779 and mt8183. > - > -Example: > - smi_common: smi@14022000 { > - compatible = "mediatek,mt8173-smi-common"; > - reg = <0 0x14022000 0 0x1000>; > - power-domains = < MT8173_POWER_DOMAIN_MM>; > - clocks = < CLK_MM_SMI_COMMON>, > - < CLK_MM_SMI_COMMON>; > - clock-names = "apb", "smi"; > - }; > diff --git > a/Documentation/devicetree/bindings/memory-controllers/mediatek,smi-common.yaml > > b/Documentation/devicetree/bindings/memory-controllers/mediatek,smi-common.yaml > new file mode 100644 > index ..76ecc7205438 > --- /dev/null > +++ > b/Documentation/devicetree/bindings/memory-controllers/mediatek,smi-common.yaml > @@ -0,0 +1,100 @@ > +# SPDX-License-Identifier: (GPL-2.0-only OR BSD-2-Clause) > +%YAML 1.2 > +--- > +$id: > http://devicetree.org/schemas/memory-controllers/mediatek,smi-common.yaml# > +$schema: http://devicetree.org/meta-schemas/core.yaml# > + > +title: SMI (Smart Multimedia Interface) Common > + > +maintainers: > + - Yong Wu > + > +description: |+ > + The hardware block diagram please check bindings/iommu/mediatek,iommu.yaml > + > + MediaTek SMI have two generations of HW architecture, here is the list > + which generation the SoCs use: > + generation 1: mt2701 and mt7623. > + generation 2: mt2712, mt6779, mt8173 and mt8183. > + > + There's slight differences between the two SMI, for generation 2, the > + register which control the iommu port is at each larb's register base. But > + for generation 1, the register is at smi ao base(smi always on register > + base). Besides that, the smi async clock should be prepared and enabled for > + SMI generation 1 to transform the smi clock into emi clock
Re: [PATCH v3 02/24] dt-bindings: memory: mediatek: Convert SMI to DT schema
On Wed, Sep 30, 2020 at 03:06:25PM +0800, Yong Wu wrote: > Convert MediaTek SMI to DT schema. > > Signed-off-by: Yong Wu > --- > .../mediatek,smi-common.txt | 49 - > .../mediatek,smi-common.yaml | 100 ++ > .../memory-controllers/mediatek,smi-larb.txt | 49 - > .../memory-controllers/mediatek,smi-larb.yaml | 91 > 4 files changed, 191 insertions(+), 98 deletions(-) > delete mode 100644 > Documentation/devicetree/bindings/memory-controllers/mediatek,smi-common.txt > create mode 100644 > Documentation/devicetree/bindings/memory-controllers/mediatek,smi-common.yaml > delete mode 100644 > Documentation/devicetree/bindings/memory-controllers/mediatek,smi-larb.txt > create mode 100644 > Documentation/devicetree/bindings/memory-controllers/mediatek,smi-larb.yaml > > diff --git > a/Documentation/devicetree/bindings/memory-controllers/mediatek,smi-common.txt > > b/Documentation/devicetree/bindings/memory-controllers/mediatek,smi-common.txt > deleted file mode 100644 > index b64573680b42.. > --- > a/Documentation/devicetree/bindings/memory-controllers/mediatek,smi-common.txt > +++ /dev/null > @@ -1,49 +0,0 @@ > -SMI (Smart Multimedia Interface) Common > - > -The hardware block diagram please check bindings/iommu/mediatek,iommu.txt > - > -Mediatek SMI have two generations of HW architecture, here is the list > -which generation the SoCs use: > -generation 1: mt2701 and mt7623. > -generation 2: mt2712, mt6779, mt8173 and mt8183. > - > -There's slight differences between the two SMI, for generation 2, the > -register which control the iommu port is at each larb's register base. But > -for generation 1, the register is at smi ao base(smi always on register > -base). Besides that, the smi async clock should be prepared and enabled for > -SMI generation 1 to transform the smi clock into emi clock domain, but that > is > -not needed for SMI generation 2. > - > -Required properties: > -- compatible : must be one of : > - "mediatek,mt2701-smi-common" > - "mediatek,mt2712-smi-common" > - "mediatek,mt6779-smi-common" > - "mediatek,mt7623-smi-common", "mediatek,mt2701-smi-common" > - "mediatek,mt8173-smi-common" > - "mediatek,mt8183-smi-common" > -- reg : the register and size of the SMI block. > -- power-domains : a phandle to the power domain of this local arbiter. > -- clocks : Must contain an entry for each entry in clock-names. > -- clock-names : must contain 3 entries for generation 1 smi HW and 2 entries > - for generation 2 smi HW as follows: > - - "apb" : Advanced Peripheral Bus clock, It's the clock for setting > - the register. > - - "smi" : It's the clock for transfer data and command. > - They may be the same if both source clocks are the same. > - - "async" : asynchronous clock, it help transform the smi clock into the > emi > - clock domain, this clock is only needed by generation 1 smi HW. > - and these 2 option clocks for generation 2 smi HW: > - - "gals0": the path0 clock of GALS(Global Async Local Sync). > - - "gals1": the path1 clock of GALS(Global Async Local Sync). > - Here is the list which has this GALS: mt6779 and mt8183. > - > -Example: > - smi_common: smi@14022000 { > - compatible = "mediatek,mt8173-smi-common"; > - reg = <0 0x14022000 0 0x1000>; > - power-domains = < MT8173_POWER_DOMAIN_MM>; > - clocks = < CLK_MM_SMI_COMMON>, > - < CLK_MM_SMI_COMMON>; > - clock-names = "apb", "smi"; > - }; > diff --git > a/Documentation/devicetree/bindings/memory-controllers/mediatek,smi-common.yaml > > b/Documentation/devicetree/bindings/memory-controllers/mediatek,smi-common.yaml > new file mode 100644 > index ..76ecc7205438 > --- /dev/null > +++ > b/Documentation/devicetree/bindings/memory-controllers/mediatek,smi-common.yaml > @@ -0,0 +1,100 @@ > +# SPDX-License-Identifier: (GPL-2.0-only OR BSD-2-Clause) You relicense existing GPLv2 work. Please CC all contributors and collect their acks/SoB. > +%YAML 1.2 > +--- > +$id: > http://devicetree.org/schemas/memory-controllers/mediatek,smi-common.yaml# > +$schema: http://devicetree.org/meta-schemas/core.yaml# > + > +title: SMI (Smart Multimedia Interface) Common > + > +maintainers: > + - Yong Wu > + > +description: |+ > + The hardware block diagram please check bindings/iommu/mediatek,iommu.yaml > + > + MediaTek SMI have two generations of HW architecture, here is the list > + which generation the SoCs use: > + generation 1: mt2701 and mt7623. > + generation 2: mt2712, mt6779, mt8173 and mt8183. > + > + There's slight differences between the two SMI, for generation 2, the > + register which control the iommu port is at each larb's register base. But > + for generation 1, the register is at smi ao base(smi always on register > + base). Besides that, the smi async clock should be
[PATCH v3 02/24] dt-bindings: memory: mediatek: Convert SMI to DT schema
Convert MediaTek SMI to DT schema. Signed-off-by: Yong Wu --- .../mediatek,smi-common.txt | 49 - .../mediatek,smi-common.yaml | 100 ++ .../memory-controllers/mediatek,smi-larb.txt | 49 - .../memory-controllers/mediatek,smi-larb.yaml | 91 4 files changed, 191 insertions(+), 98 deletions(-) delete mode 100644 Documentation/devicetree/bindings/memory-controllers/mediatek,smi-common.txt create mode 100644 Documentation/devicetree/bindings/memory-controllers/mediatek,smi-common.yaml delete mode 100644 Documentation/devicetree/bindings/memory-controllers/mediatek,smi-larb.txt create mode 100644 Documentation/devicetree/bindings/memory-controllers/mediatek,smi-larb.yaml diff --git a/Documentation/devicetree/bindings/memory-controllers/mediatek,smi-common.txt b/Documentation/devicetree/bindings/memory-controllers/mediatek,smi-common.txt deleted file mode 100644 index b64573680b42.. --- a/Documentation/devicetree/bindings/memory-controllers/mediatek,smi-common.txt +++ /dev/null @@ -1,49 +0,0 @@ -SMI (Smart Multimedia Interface) Common - -The hardware block diagram please check bindings/iommu/mediatek,iommu.txt - -Mediatek SMI have two generations of HW architecture, here is the list -which generation the SoCs use: -generation 1: mt2701 and mt7623. -generation 2: mt2712, mt6779, mt8173 and mt8183. - -There's slight differences between the two SMI, for generation 2, the -register which control the iommu port is at each larb's register base. But -for generation 1, the register is at smi ao base(smi always on register -base). Besides that, the smi async clock should be prepared and enabled for -SMI generation 1 to transform the smi clock into emi clock domain, but that is -not needed for SMI generation 2. - -Required properties: -- compatible : must be one of : - "mediatek,mt2701-smi-common" - "mediatek,mt2712-smi-common" - "mediatek,mt6779-smi-common" - "mediatek,mt7623-smi-common", "mediatek,mt2701-smi-common" - "mediatek,mt8173-smi-common" - "mediatek,mt8183-smi-common" -- reg : the register and size of the SMI block. -- power-domains : a phandle to the power domain of this local arbiter. -- clocks : Must contain an entry for each entry in clock-names. -- clock-names : must contain 3 entries for generation 1 smi HW and 2 entries - for generation 2 smi HW as follows: - - "apb" : Advanced Peripheral Bus clock, It's the clock for setting - the register. - - "smi" : It's the clock for transfer data and command. - They may be the same if both source clocks are the same. - - "async" : asynchronous clock, it help transform the smi clock into the emi - clock domain, this clock is only needed by generation 1 smi HW. - and these 2 option clocks for generation 2 smi HW: - - "gals0": the path0 clock of GALS(Global Async Local Sync). - - "gals1": the path1 clock of GALS(Global Async Local Sync). - Here is the list which has this GALS: mt6779 and mt8183. - -Example: - smi_common: smi@14022000 { - compatible = "mediatek,mt8173-smi-common"; - reg = <0 0x14022000 0 0x1000>; - power-domains = < MT8173_POWER_DOMAIN_MM>; - clocks = < CLK_MM_SMI_COMMON>, -< CLK_MM_SMI_COMMON>; - clock-names = "apb", "smi"; - }; diff --git a/Documentation/devicetree/bindings/memory-controllers/mediatek,smi-common.yaml b/Documentation/devicetree/bindings/memory-controllers/mediatek,smi-common.yaml new file mode 100644 index ..76ecc7205438 --- /dev/null +++ b/Documentation/devicetree/bindings/memory-controllers/mediatek,smi-common.yaml @@ -0,0 +1,100 @@ +# SPDX-License-Identifier: (GPL-2.0-only OR BSD-2-Clause) +%YAML 1.2 +--- +$id: http://devicetree.org/schemas/memory-controllers/mediatek,smi-common.yaml# +$schema: http://devicetree.org/meta-schemas/core.yaml# + +title: SMI (Smart Multimedia Interface) Common + +maintainers: + - Yong Wu + +description: |+ + The hardware block diagram please check bindings/iommu/mediatek,iommu.yaml + + MediaTek SMI have two generations of HW architecture, here is the list + which generation the SoCs use: + generation 1: mt2701 and mt7623. + generation 2: mt2712, mt6779, mt8173 and mt8183. + + There's slight differences between the two SMI, for generation 2, the + register which control the iommu port is at each larb's register base. But + for generation 1, the register is at smi ao base(smi always on register + base). Besides that, the smi async clock should be prepared and enabled for + SMI generation 1 to transform the smi clock into emi clock domain, but that is + not needed for SMI generation 2. + +properties: + compatible: +oneOf: + - enum: + - mediatek,mt2701-smi-common + - mediatek,mt2712-smi-common + - mediatek,mt6779-smi-common + -