Re: [PATCH v3 02/24] dt-bindings: memory: mediatek: Convert SMI to DT schema

2020-10-13 Thread Yong Wu
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

2020-10-12 Thread Krzysztof Kozlowski
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

2020-10-12 Thread Yong Wu
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

2020-10-12 Thread Krzysztof Kozlowski
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

2020-10-10 Thread Yong Wu
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

2020-10-06 Thread Krzysztof Kozlowski
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

2020-10-05 Thread Yong Wu
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

2020-10-02 Thread Krzysztof Kozlowski
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

2020-10-02 Thread Krzysztof Kozlowski
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

2020-09-30 Thread Yong Wu
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
+  -