diff mbox series

dt-bindings: phy: renesas,rcar-gen2-usb-phy: Convert to json-schema

Message ID 8e48edc5e7b65f8dfd8b76c583e0265b9b97e62b.1652099944.git.geert+renesas@glider.be (mailing list archive)
State Under Review
Delegated to: Geert Uytterhoeven
Headers show
Series dt-bindings: phy: renesas,rcar-gen2-usb-phy: Convert to json-schema | expand

Commit Message

Geert Uytterhoeven May 9, 2022, 12:41 p.m. UTC
Convert the Renesas R-Car Gen2 USB PHY Device Tree binding documentation
to json-schema.

Add missing properties.
Drop the second example, as it doesn't add any value.

Signed-off-by: Geert Uytterhoeven <geert+renesas@glider.be>
---
Validation gives:

    Documentation/devicetree/bindings/phy/renesas,rcar-gen2-usb-phy.example.dtb: usb
    -phy@e6590100: '#phy-cells' is a required property
	    From schema: dt-schema/dtschema/schemas/phy/phy-provider.yaml

The latter considers '#phy-cells' a required property, as the node name
matches "usb-phy".  But in this binding the actual PHY providers are the
child nodes.

Is there a way to fix this? Overriding "#phy-cells" to "false" doesn't
work.
Should all nodes and child nodes be renamed? The (Linux) driver doesn't
care about the names of the children.

---
This is the final conversion to json-schema of DT bindings for Renesas
ARM SoCs, hurray!

Note that there are still a few plain text bindings left for Renesas IP
cores that are present on non-Renesas SoCs (nbpfaxi and usdhi6rol0).
And H8/300 is being removed.
---
 .../devicetree/bindings/phy/rcar-gen2-phy.txt | 112 ----------------
 .../phy/renesas,rcar-gen2-usb-phy.yaml        | 123 ++++++++++++++++++
 2 files changed, 123 insertions(+), 112 deletions(-)
 delete mode 100644 Documentation/devicetree/bindings/phy/rcar-gen2-phy.txt
 create mode 100644 Documentation/devicetree/bindings/phy/renesas,rcar-gen2-usb-phy.yaml

Comments

Rob Herring May 17, 2022, 1:04 a.m. UTC | #1
On Mon, May 09, 2022 at 02:41:38PM +0200, Geert Uytterhoeven wrote:
> Convert the Renesas R-Car Gen2 USB PHY Device Tree binding documentation
> to json-schema.
> 
> Add missing properties.
> Drop the second example, as it doesn't add any value.
> 
> Signed-off-by: Geert Uytterhoeven <geert+renesas@glider.be>
> ---
> Validation gives:
> 
>     Documentation/devicetree/bindings/phy/renesas,rcar-gen2-usb-phy.example.dtb: usb
>     -phy@e6590100: '#phy-cells' is a required property
> 	    From schema: dt-schema/dtschema/schemas/phy/phy-provider.yaml
> 
> The latter considers '#phy-cells' a required property, as the node name
> matches "usb-phy".  But in this binding the actual PHY providers are the
> child nodes.
> 
> Is there a way to fix this? Overriding "#phy-cells" to "false" doesn't
> work.
> Should all nodes and child nodes be renamed? The (Linux) driver doesn't
> care about the names of the children.

There's an open issue in dtschema for this. I don't have an answer other 
than don't use 'phy' in the parent node name.

> 
> ---
> This is the final conversion to json-schema of DT bindings for Renesas
> ARM SoCs, hurray!

Great, certainly looking better than some! My tracking in linux-next 
gives me this:

For arm:

Processing (r7|r8|r9|emev2|sh73a|gr-|iwg): 
warnings: 283
undocumented compat: 32

arch/arm/boot/dts/(r7|r8|r9|emev2|sh73a|gr-|iwg):32
['ams,as3711']
['arm,coresight-etm3x']
['dlg,da9063-onkey']
['dlg,da9063-rtc']
['dlg,da9063-watchdog']
['dlg,da9063l']
['dlg,da9210']
['i2c-demux-pinctrl']
['renesas,pci-r8a7742', 'renesas,pci-rcar-gen2']
['renesas,pci-r8a7743', 'renesas,pci-rcar-gen2']
['renesas,pci-r8a7744', 'renesas,pci-rcar-gen2']
['renesas,pci-r8a7745', 'renesas,pci-rcar-gen2']
['renesas,pci-r8a7790', 'renesas,pci-rcar-gen2']
['renesas,pci-r8a7791', 'renesas,pci-rcar-gen2']
['renesas,pci-r8a7794', 'renesas,pci-rcar-gen2']
['renesas,pci-r9a06g032', 'renesas,pci-rzn1']
['renesas,r2a11302ft']
['renesas,r9a06g032-dma', 'renesas,rzn1-dma']
['renesas,r9a06g032-rtc', 'renesas,rzn1-rtc']
['renesas,r9a06g032-wdt', 'renesas,rzn1-wdt']
['renesas,rzn1-dmamux']
['renesas,usb-phy-r8a7742', 'renesas,rcar-gen2-usb-phy']
['renesas,usb-phy-r8a7743', 'renesas,rcar-gen2-usb-phy']
['renesas,usb-phy-r8a7744', 'renesas,rcar-gen2-usb-phy']
['renesas,usb-phy-r8a7745', 'renesas,rcar-gen2-usb-phy']
['renesas,usb-phy-r8a77470', 'renesas,rcar-gen2-usb-phy']
['renesas,usb-phy-r8a7790', 'renesas,rcar-gen2-usb-phy']
['renesas,usb-phy-r8a7791', 'renesas,rcar-gen2-usb-phy']
['renesas,usb-phy-r8a7794', 'renesas,rcar-gen2-usb-phy']
['sil,sii9022']
['st,stmpe-ts']
['st,stmpe811']

For arm64:

Processing renesas: 
warnings: 312
undocumented compat: 15

undocumented here means no schema.

arch/arm64/boot/dts/renesas:15
['ilitek,ili2117']
['micron,mt25qu512a', 'jedec,spi-nor']
['nxp,tda998x']
['ovti,ov5645']
['renesas,r8a7795-mlp', 'renesas,rcar-gen3-mlp']
['renesas,r8a7796-mlp', 'renesas,rcar-gen3-mlp']
['renesas,r8a77961-mlp', 'renesas,rcar-gen3-mlp']
['renesas,r8a77965-mlp', 'renesas,rcar-gen3-mlp']
['renesas,r8a77990-mlp', 'renesas,rcar-gen3-mlp']
['renesas,r8a77995-mlp', 'renesas,rcar-gen3-mlp']
['renesas,r9a07g043-ssi', 'renesas,rz-ssi']
['renesas,r9a07g043-tsu', 'renesas,rzg2l-tsu']
['renesas,r9a07g043-usbphy-ctrl', 'renesas,rzg2l-usbphy-ctrl']
['renesas,r9a07g043-wdt', 'renesas,rzg2l-wdt']
['ti,pcm3168a']

I guess board level components don't count and some might be pending.

All this comes from here: https://gitlab.com/robherring/linux-dt/-/jobs

> 
> Note that there are still a few plain text bindings left for Renesas IP
> cores that are present on non-Renesas SoCs (nbpfaxi and usdhi6rol0).
> And H8/300 is being removed.
> ---
>  .../devicetree/bindings/phy/rcar-gen2-phy.txt | 112 ----------------
>  .../phy/renesas,rcar-gen2-usb-phy.yaml        | 123 ++++++++++++++++++
>  2 files changed, 123 insertions(+), 112 deletions(-)
>  delete mode 100644 Documentation/devicetree/bindings/phy/rcar-gen2-phy.txt
>  create mode 100644 Documentation/devicetree/bindings/phy/renesas,rcar-gen2-usb-phy.yaml

Ignoring the node names for now,

Reviewed-by: Rob Herring <robh@kernel.org>
Geert Uytterhoeven May 17, 2022, 6:58 a.m. UTC | #2
Hi Rob,

On Tue, May 17, 2022 at 3:04 AM Rob Herring <robh@kernel.org> wrote:
> On Mon, May 09, 2022 at 02:41:38PM +0200, Geert Uytterhoeven wrote:
> > Convert the Renesas R-Car Gen2 USB PHY Device Tree binding documentation
> > to json-schema.
> >
> > Add missing properties.
> > Drop the second example, as it doesn't add any value.
> >
> > Signed-off-by: Geert Uytterhoeven <geert+renesas@glider.be>
> > ---
> > Validation gives:
> >
> >     Documentation/devicetree/bindings/phy/renesas,rcar-gen2-usb-phy.example.dtb: usb
> >     -phy@e6590100: '#phy-cells' is a required property
> >           From schema: dt-schema/dtschema/schemas/phy/phy-provider.yaml
> >
> > The latter considers '#phy-cells' a required property, as the node name
> > matches "usb-phy".  But in this binding the actual PHY providers are the
> > child nodes.
> >
> > Is there a way to fix this? Overriding "#phy-cells" to "false" doesn't
> > work.
> > Should all nodes and child nodes be renamed? The (Linux) driver doesn't
> > care about the names of the children.
>
> There's an open issue in dtschema for this. I don't have an answer other
> than don't use 'phy' in the parent node name.

IC...

> > ---
> > This is the final conversion to json-schema of DT bindings for Renesas
> > ARM SoCs, hurray!
>
> Great, certainly looking better than some! My tracking in linux-next
> gives me this:
>
> For arm:
>
> Processing (r7|r8|r9|emev2|sh73a|gr-|iwg):
> warnings: 283
> undocumented compat: 32
>
> arch/arm/boot/dts/(r7|r8|r9|emev2|sh73a|gr-|iwg):32
> ['ams,as3711']

Board component

> ['arm,coresight-etm3x']

ARM core

> ['dlg,da9063-onkey']
> ['dlg,da9063-rtc']
> ['dlg,da9063-watchdog']
> ['dlg,da9063l']
> ['dlg,da9210']

Board components

> ['i2c-demux-pinctrl']

I2C framework

> ['renesas,pci-r8a7742', 'renesas,pci-rcar-gen2']
> ['renesas,pci-r8a7743', 'renesas,pci-rcar-gen2']
> ['renesas,pci-r8a7744', 'renesas,pci-rcar-gen2']
> ['renesas,pci-r8a7745', 'renesas,pci-rcar-gen2']
> ['renesas,pci-r8a7790', 'renesas,pci-rcar-gen2']
> ['renesas,pci-r8a7791', 'renesas,pci-rcar-gen2']
> ['renesas,pci-r8a7794', 'renesas,pci-rcar-gen2']
> ['renesas,pci-r9a06g032', 'renesas,pci-rzn1']

https://lore.kernel.org/r/20220429134143.628428-3-herve.codina@bootlin.com

> ['renesas,r2a11302ft']

I2C device without bindings or upstream driver.

> ['renesas,r9a06g032-dma', 'renesas,rzn1-dma']

https://lore.kernel.org/r/20220427095653.91804-2-miquel.raynal@bootlin.com

> ['renesas,r9a06g032-rtc', 'renesas,rzn1-rtc']

https://lore.kernel.org/r/20220512143920.238987-2-miquel.raynal@bootlin.com

> ['renesas,r9a06g032-wdt', 'renesas,rzn1-wdt']

https://lore.kernel.org/r/20220413082527.155740-2-jjhiblot@traphandler.com

> ['renesas,rzn1-dmamux']

https://lore.kernel.org/r/20220421085112.78858-2-miquel.raynal@bootlin.com

> ['renesas,usb-phy-r8a7742', 'renesas,rcar-gen2-usb-phy']
> ['renesas,usb-phy-r8a7743', 'renesas,rcar-gen2-usb-phy']
> ['renesas,usb-phy-r8a7744', 'renesas,rcar-gen2-usb-phy']
> ['renesas,usb-phy-r8a7745', 'renesas,rcar-gen2-usb-phy']
> ['renesas,usb-phy-r8a77470', 'renesas,rcar-gen2-usb-phy']
> ['renesas,usb-phy-r8a7790', 'renesas,rcar-gen2-usb-phy']
> ['renesas,usb-phy-r8a7791', 'renesas,rcar-gen2-usb-phy']
> ['renesas,usb-phy-r8a7794', 'renesas,rcar-gen2-usb-phy']

This patch.

> ['sil,sii9022']

https://lore.kernel.org/r/3b2619682694050696e5c85269ccc4f864590e66.1638540704.git.geert+renesas@glider.be

> ['st,stmpe-ts']
> ['st,stmpe811']

Board components

>
> For arm64:
>
> Processing renesas:
> warnings: 312
> undocumented compat: 15
>
> undocumented here means no schema.
>
> arch/arm64/boot/dts/renesas:15
> ['ilitek,ili2117']

https://lore.kernel.org/r/0c5f06c9d262c1720b40d068b6eefe58ca406601.1638539806.git.geert+renesas@glider.be

> ['micron,mt25qu512a', 'jedec,spi-nor']

Board component

> ['nxp,tda998x']

https://lore.kernel.org/r/1f6bf58d76efc2e869b800534b818d1451ef98a2.1634822085.git.geert+renesas@glider.be

> ['ovti,ov5645']

Board component

> ['renesas,r8a7795-mlp', 'renesas,rcar-gen3-mlp']
> ['renesas,r8a7796-mlp', 'renesas,rcar-gen3-mlp']
> ['renesas,r8a77961-mlp', 'renesas,rcar-gen3-mlp']
> ['renesas,r8a77965-mlp', 'renesas,rcar-gen3-mlp']
> ['renesas,r8a77990-mlp', 'renesas,rcar-gen3-mlp']
> ['renesas,r8a77995-mlp', 'renesas,rcar-gen3-mlp']

Driver in staging without any bindings

> ['renesas,r9a07g043-ssi', 'renesas,rz-ssi']

https://lore.kernel.org/r/20220423133154.141027-1-biju.das.jz@bp.renesas.com

> ['renesas,r9a07g043-tsu', 'renesas,rzg2l-tsu']

https://lore.kernel.org/r/20220501081930.23743-1-biju.das.jz@bp.renesas.com

> ['renesas,r9a07g043-usbphy-ctrl', 'renesas,rzg2l-usbphy-ctrl']

https://lore.kernel.org/r/20220423134601.141975-1-biju.das.jz@bp.renesas.com

> ['renesas,r9a07g043-wdt', 'renesas,rzg2l-wdt']

https://lore.kernel.org/r/20220424071323.151757-1-biju.das.jz@bp.renesas.com

> ['ti,pcm3168a']

Board component

> I guess board level components don't count and some might be pending.

Some have been pending (or blocked) for a long time...

> All this comes from here: https://gitlab.com/robherring/linux-dt/-/jobs

> Ignoring the node names for now,
>
> Reviewed-by: Rob Herring <robh@kernel.org>

Thanks!

Gr{oetje,eeting}s,

                        Geert

--
Geert Uytterhoeven -- There's lots of Linux beyond ia32 -- geert@linux-m68k.org

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
Rob Herring May 17, 2022, 1:57 p.m. UTC | #3
On Tue, May 17, 2022 at 1:59 AM Geert Uytterhoeven <geert@linux-m68k.org> wrote:
>
> Hi Rob,
>
> On Tue, May 17, 2022 at 3:04 AM Rob Herring <robh@kernel.org> wrote:
> > On Mon, May 09, 2022 at 02:41:38PM +0200, Geert Uytterhoeven wrote:
> > > Convert the Renesas R-Car Gen2 USB PHY Device Tree binding documentation
> > > to json-schema.
> > >
> > > Add missing properties.
> > > Drop the second example, as it doesn't add any value.
> > >
> > > Signed-off-by: Geert Uytterhoeven <geert+renesas@glider.be>
> > > ---
> > > Validation gives:
> > >
> > >     Documentation/devicetree/bindings/phy/renesas,rcar-gen2-usb-phy.example.dtb: usb
> > >     -phy@e6590100: '#phy-cells' is a required property
> > >           From schema: dt-schema/dtschema/schemas/phy/phy-provider.yaml
> > >
> > > The latter considers '#phy-cells' a required property, as the node name
> > > matches "usb-phy".  But in this binding the actual PHY providers are the
> > > child nodes.
> > >
> > > Is there a way to fix this? Overriding "#phy-cells" to "false" doesn't
> > > work.
> > > Should all nodes and child nodes be renamed? The (Linux) driver doesn't
> > > care about the names of the children.
> >
> > There's an open issue in dtschema for this. I don't have an answer other
> > than don't use 'phy' in the parent node name.
>
> IC...
>
> > > ---
> > > This is the final conversion to json-schema of DT bindings for Renesas
> > > ARM SoCs, hurray!
> >
> > Great, certainly looking better than some! My tracking in linux-next
> > gives me this:
> >
> > For arm:
> >
> > Processing (r7|r8|r9|emev2|sh73a|gr-|iwg):
> > warnings: 283
> > undocumented compat: 32
> >
> > arch/arm/boot/dts/(r7|r8|r9|emev2|sh73a|gr-|iwg):32
> > ['ams,as3711']
>
> Board component
>
> > ['arm,coresight-etm3x']
>
> ARM core
>
> > ['dlg,da9063-onkey']
> > ['dlg,da9063-rtc']
> > ['dlg,da9063-watchdog']
> > ['dlg,da9063l']
> > ['dlg,da9210']
>
> Board components
>
> > ['i2c-demux-pinctrl']
>
> I2C framework
>
> > ['renesas,pci-r8a7742', 'renesas,pci-rcar-gen2']
> > ['renesas,pci-r8a7743', 'renesas,pci-rcar-gen2']
> > ['renesas,pci-r8a7744', 'renesas,pci-rcar-gen2']
> > ['renesas,pci-r8a7745', 'renesas,pci-rcar-gen2']
> > ['renesas,pci-r8a7790', 'renesas,pci-rcar-gen2']
> > ['renesas,pci-r8a7791', 'renesas,pci-rcar-gen2']
> > ['renesas,pci-r8a7794', 'renesas,pci-rcar-gen2']
> > ['renesas,pci-r9a06g032', 'renesas,pci-rzn1']
>
> https://lore.kernel.org/r/20220429134143.628428-3-herve.codina@bootlin.com
>
> > ['renesas,r2a11302ft']
>
> I2C device without bindings or upstream driver.
>
> > ['renesas,r9a06g032-dma', 'renesas,rzn1-dma']
>
> https://lore.kernel.org/r/20220427095653.91804-2-miquel.raynal@bootlin.com
>
> > ['renesas,r9a06g032-rtc', 'renesas,rzn1-rtc']
>
> https://lore.kernel.org/r/20220512143920.238987-2-miquel.raynal@bootlin.com
>
> > ['renesas,r9a06g032-wdt', 'renesas,rzn1-wdt']
>
> https://lore.kernel.org/r/20220413082527.155740-2-jjhiblot@traphandler.com
>
> > ['renesas,rzn1-dmamux']
>
> https://lore.kernel.org/r/20220421085112.78858-2-miquel.raynal@bootlin.com
>
> > ['renesas,usb-phy-r8a7742', 'renesas,rcar-gen2-usb-phy']
> > ['renesas,usb-phy-r8a7743', 'renesas,rcar-gen2-usb-phy']
> > ['renesas,usb-phy-r8a7744', 'renesas,rcar-gen2-usb-phy']
> > ['renesas,usb-phy-r8a7745', 'renesas,rcar-gen2-usb-phy']
> > ['renesas,usb-phy-r8a77470', 'renesas,rcar-gen2-usb-phy']
> > ['renesas,usb-phy-r8a7790', 'renesas,rcar-gen2-usb-phy']
> > ['renesas,usb-phy-r8a7791', 'renesas,rcar-gen2-usb-phy']
> > ['renesas,usb-phy-r8a7794', 'renesas,rcar-gen2-usb-phy']
>
> This patch.
>
> > ['sil,sii9022']
>
> https://lore.kernel.org/r/3b2619682694050696e5c85269ccc4f864590e66.1638540704.git.geert+renesas@glider.be
>
> > ['st,stmpe-ts']
> > ['st,stmpe811']
>
> Board components
>
> >
> > For arm64:
> >
> > Processing renesas:
> > warnings: 312
> > undocumented compat: 15
> >
> > undocumented here means no schema.
> >
> > arch/arm64/boot/dts/renesas:15
> > ['ilitek,ili2117']
>
> https://lore.kernel.org/r/0c5f06c9d262c1720b40d068b6eefe58ca406601.1638539806.git.geert+renesas@glider.be
>
> > ['micron,mt25qu512a', 'jedec,spi-nor']
>
> Board component
>
> > ['nxp,tda998x']
>
> https://lore.kernel.org/r/1f6bf58d76efc2e869b800534b818d1451ef98a2.1634822085.git.geert+renesas@glider.be
>
> > ['ovti,ov5645']
>
> Board component
>
> > ['renesas,r8a7795-mlp', 'renesas,rcar-gen3-mlp']
> > ['renesas,r8a7796-mlp', 'renesas,rcar-gen3-mlp']
> > ['renesas,r8a77961-mlp', 'renesas,rcar-gen3-mlp']
> > ['renesas,r8a77965-mlp', 'renesas,rcar-gen3-mlp']
> > ['renesas,r8a77990-mlp', 'renesas,rcar-gen3-mlp']
> > ['renesas,r8a77995-mlp', 'renesas,rcar-gen3-mlp']
>
> Driver in staging without any bindings
>
> > ['renesas,r9a07g043-ssi', 'renesas,rz-ssi']
>
> https://lore.kernel.org/r/20220423133154.141027-1-biju.das.jz@bp.renesas.com
>
> > ['renesas,r9a07g043-tsu', 'renesas,rzg2l-tsu']
>
> https://lore.kernel.org/r/20220501081930.23743-1-biju.das.jz@bp.renesas.com
>
> > ['renesas,r9a07g043-usbphy-ctrl', 'renesas,rzg2l-usbphy-ctrl']
>
> https://lore.kernel.org/r/20220423134601.141975-1-biju.das.jz@bp.renesas.com
>
> > ['renesas,r9a07g043-wdt', 'renesas,rzg2l-wdt']
>
> https://lore.kernel.org/r/20220424071323.151757-1-biju.das.jz@bp.renesas.com
>
> > ['ti,pcm3168a']
>
> Board component
>
> > I guess board level components don't count and some might be pending.
>
> Some have been pending (or blocked) for a long time...

Can you tell me which ones and I can apply them. If they have my tag
already, then I tend to ignore them.

Rob
Geert Uytterhoeven May 19, 2022, 1:41 p.m. UTC | #4
Hi Rob,

On Tue, May 17, 2022 at 3:57 PM Rob Herring <robh@kernel.org> wrote:
> On Tue, May 17, 2022 at 1:59 AM Geert Uytterhoeven <geert@linux-m68k.org> wrote:
> > On Tue, May 17, 2022 at 3:04 AM Rob Herring <robh@kernel.org> wrote:
> > > I guess board level components don't count and some might be pending.
> >
> > Some have been pending (or blocked) for a long time...
>
> Can you tell me which ones and I can apply them. If they have my tag
> already, then I tend to ignore them.

I think you can safely take the following:
https://lore.kernel.org/r/0c5f06c9d262c1720b40d068b6eefe58ca406601.1638539806.git.geert+renesas@glider.be

I have also sent a v3 of the sil,sii9022 conversion.

Thanks!

Gr{oetje,eeting}s,

                        Geert

--
Geert Uytterhoeven -- There's lots of Linux beyond ia32 -- geert@linux-m68k.org

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
diff mbox series

Patch

diff --git a/Documentation/devicetree/bindings/phy/rcar-gen2-phy.txt b/Documentation/devicetree/bindings/phy/rcar-gen2-phy.txt
deleted file mode 100644
index a3bd1c4499b75bdb..0000000000000000
--- a/Documentation/devicetree/bindings/phy/rcar-gen2-phy.txt
+++ /dev/null
@@ -1,112 +0,0 @@ 
-* Renesas R-Car generation 2 USB PHY
-
-This file provides information on what the device node for the R-Car generation
-2 USB PHY contains.
-
-Required properties:
-- compatible: "renesas,usb-phy-r8a7742" if the device is a part of R8A7742 SoC.
-	      "renesas,usb-phy-r8a7743" if the device is a part of R8A7743 SoC.
-	      "renesas,usb-phy-r8a7744" if the device is a part of R8A7744 SoC.
-	      "renesas,usb-phy-r8a7745" if the device is a part of R8A7745 SoC.
-	      "renesas,usb-phy-r8a77470" if the device is a part of R8A77470 SoC.
-	      "renesas,usb-phy-r8a7790" if the device is a part of R8A7790 SoC.
-	      "renesas,usb-phy-r8a7791" if the device is a part of R8A7791 SoC.
-	      "renesas,usb-phy-r8a7794" if the device is a part of R8A7794 SoC.
-	      "renesas,rcar-gen2-usb-phy" for a generic R-Car Gen2 or
-					  RZ/G1 compatible device.
-
-	      When compatible with the generic version, nodes must list the
-	      SoC-specific version corresponding to the platform first
-	      followed by the generic version.
-
-- reg: offset and length of the register block.
-- #address-cells: number of address cells for the USB channel subnodes, must
-		  be <1>.
-- #size-cells: number of size cells for the USB channel subnodes, must be <0>.
-- clocks: clock phandle and specifier pair.
-- clock-names: string, clock input name, must be "usbhs".
-
-The USB PHY device tree node should have the subnodes corresponding to the USB
-channels. These subnodes must contain the following properties:
-- reg: the USB controller selector; see the table below for the values.
-- #phy-cells: see phy-bindings.txt in the same directory, must be <1>.
-
-The phandle's argument in the PHY specifier is the USB controller selector for
-the USB channel other than r8a77470 SoC; see the selector meanings below:
-
-+-----------+---------------+---------------+
-|\ Selector |               |               |
-+ --------- +       0       |       1       |
-| Channel  \|               |               |
-+-----------+---------------+---------------+
-| 0         | PCI EHCI/OHCI | HS-USB        |
-| 2         | PCI EHCI/OHCI | xHCI          |
-+-----------+---------------+---------------+
-
-For r8a77470 SoC;see the selector meaning below:
-
-+-----------+---------------+---------------+
-|\ Selector |               |               |
-+ --------- +       0       |       1       |
-| Channel  \|               |               |
-+-----------+---------------+---------------+
-| 0         | EHCI/OHCI     | HS-USB        |
-+-----------+---------------+---------------+
-
-Example (Lager board):
-
-	usb-phy@e6590100 {
-		compatible = "renesas,usb-phy-r8a7790", "renesas,rcar-gen2-usb-phy";
-		reg = <0 0xe6590100 0 0x100>;
-		#address-cells = <1>;
-		#size-cells = <0>;
-		clocks = <&cpg CPG_MOD 704>;
-		clock-names = "usbhs";
-		power-domains = <&sysc R8A7790_PD_ALWAYS_ON>;
-		resets = <&cpg 704>;
-
-		usb0: usb-channel@0 {
-			reg = <0>;
-			#phy-cells = <1>;
-		};
-		usb2: usb-channel@2 {
-			reg = <2>;
-			#phy-cells = <1>;
-		};
-	};
-
-Example (iWave RZ/G1C sbc):
-
-	usbphy0: usb-phy0@e6590100 {
-		compatible = "renesas,usb-phy-r8a77470",
-			     "renesas,rcar-gen2-usb-phy";
-		reg = <0 0xe6590100 0 0x100>;
-		#address-cells = <1>;
-		#size-cells = <0>;
-		clocks = <&cpg CPG_MOD 704>;
-		clock-names = "usbhs";
-		power-domains = <&sysc R8A77470_PD_ALWAYS_ON>;
-		resets = <&cpg 704>;
-
-		usb0: usb-channel@0 {
-			reg = <0>;
-			#phy-cells = <1>;
-		};
-	};
-
-	usbphy1: usb-phy@e6598100 {
-		compatible = "renesas,usb-phy-r8a77470",
-			     "renesas,rcar-gen2-usb-phy";
-		reg = <0 0xe6598100 0 0x100>;
-		#address-cells = <1>;
-		#size-cells = <0>;
-		clocks = <&cpg CPG_MOD 706>;
-		clock-names = "usbhs";
-		power-domains = <&sysc R8A77470_PD_ALWAYS_ON>;
-		resets = <&cpg 706>;
-
-		usb1: usb-channel@0 {
-			reg = <0>;
-			#phy-cells = <1>;
-		};
-	};
diff --git a/Documentation/devicetree/bindings/phy/renesas,rcar-gen2-usb-phy.yaml b/Documentation/devicetree/bindings/phy/renesas,rcar-gen2-usb-phy.yaml
new file mode 100644
index 0000000000000000..aa2bbc7e35dd4ace
--- /dev/null
+++ b/Documentation/devicetree/bindings/phy/renesas,rcar-gen2-usb-phy.yaml
@@ -0,0 +1,123 @@ 
+# SPDX-License-Identifier: (GPL-2.0-only OR BSD-2-Clause)
+%YAML 1.2
+---
+$id: http://devicetree.org/schemas/phy/renesas,rcar-gen2-usb-phy.yaml#
+$schema: http://devicetree.org/meta-schemas/core.yaml#
+
+title: Renesas R-Car Gen2 USB PHY
+
+maintainers:
+  - Yoshihiro Shimoda <yoshihiro.shimoda.uh@renesas.com>
+
+properties:
+  compatible:
+    items:
+      - enum:
+          - renesas,usb-phy-r8a7742      # RZ/G1H
+          - renesas,usb-phy-r8a7743      # RZ/G1M
+          - renesas,usb-phy-r8a7744      # RZ/G1N
+          - renesas,usb-phy-r8a7745      # RZ/G1E
+          - renesas,usb-phy-r8a77470     # RZ/G1C
+          - renesas,usb-phy-r8a7790      # R-Car H2
+          - renesas,usb-phy-r8a7791      # R-Car M2-W
+          - renesas,usb-phy-r8a7794      # R-Car E2
+      - const: renesas,rcar-gen2-usb-phy # R-Car Gen2 or RZ/G1
+
+  reg:
+    maxItems: 1
+
+  '#address-cells':
+    const: 1
+
+  '#size-cells':
+    const: 0
+
+  clocks:
+    maxItems: 1
+
+  clock-names:
+    items:
+      - const: usbhs
+
+  power-domains:
+    maxItems: 1
+
+  resets:
+    maxItems: 1
+
+patternProperties:
+  "^usb-channel@[02]$":
+    type: object
+    description: Subnode corresponding to a USB channel.
+
+    properties:
+      reg:
+        description: FIXME RZ/G1C supports channel 0 only
+        enum: [0, 2]
+
+      '#phy-cells':
+        description: |
+          The phandle's argument in the PHY specifier is the USB controller
+          selector for the USB channel.
+          For RZ/G1C:
+            - 0 for EHCI/OHCI
+            - 1 for HS-USB
+          For all other SoCS:
+            - 0 for PCI EHCI/OHCI
+            - 1 for HS-USB (channel 0) or xHCI (channel 2)
+        const: 1
+
+    required:
+      - reg
+      - '#phy-cells'
+
+    additionalProperties: false
+
+required:
+  - compatible
+  - reg
+  - '#address-cells'
+  - '#size-cells'
+  - clocks
+  - clock-names
+  - resets
+  - power-domains
+  - usb-channel@0
+
+if:
+  properties:
+    compatible:
+      contains:
+        const: renesas,usb-phy-r8a77470
+then:
+  properties:
+    usb-channel@2: false
+else:
+  required:
+    - usb-channel@2
+
+additionalProperties: false
+
+examples:
+  - |
+    #include <dt-bindings/clock/r8a7790-cpg-mssr.h>
+    #include <dt-bindings/power/r8a7790-sysc.h>
+    usb-phy@e6590100 {
+        compatible = "renesas,usb-phy-r8a7790", "renesas,rcar-gen2-usb-phy";
+        reg = <0xe6590100 0x100>;
+        #address-cells = <1>;
+        #size-cells = <0>;
+        clocks = <&cpg CPG_MOD 704>;
+        clock-names = "usbhs";
+        power-domains = <&sysc R8A7790_PD_ALWAYS_ON>;
+        resets = <&cpg 704>;
+
+        usb0: usb-channel@0 {
+            reg = <0>;
+            #phy-cells = <1>;
+        };
+        usb2: usb-channel@2 {
+            reg = <2>;
+            #phy-cells = <1>;
+        };
+    };