diff mbox series

[v4] dt-bindings: phy: rockchip-emmc-phy: Convert to dtschema

Message ID 20240617085341.34332-2-shresthprasad7@gmail.com (mailing list archive)
State New
Headers show
Series [v4] dt-bindings: phy: rockchip-emmc-phy: Convert to dtschema | expand

Commit Message

Shresth Prasad June 17, 2024, 8:53 a.m. UTC
Convert txt bindings of Rockchip EMMC PHY to dtschema to allow
for validation.

Signed-off-by: Shresth Prasad <shresthprasad7@gmail.com>
---
Request for an Ack from the PHY maintainers, so that the DT maintainer Heiko 
can merge it to grf.yaml in the order that he likes.

Changes in v4:
    - change license to `GPL-2.0-only`
    - change dt-binding file name
    - remove descriptions
    - move `#phy-cells` to the bottom
    - add Heiko to maintainers
    - fix `patternProperties` regex in grf.yaml
    - change `description` to `$ref` in grf.yaml

Tested against `rockchip/rk3399-firefly.dtb`, `rockchip/rk3399-orangepi.dtb`
and `rockchip/rk3399-pinebook-pro.dtb`.
---
 .../phy/rockchip,rk3399-emmc-phy.yaml         | 72 +++++++++++++++++++
 .../bindings/phy/rockchip-emmc-phy.txt        | 43 -----------
 .../devicetree/bindings/soc/rockchip/grf.yaml |  9 ++-
 3 files changed, 78 insertions(+), 46 deletions(-)
 create mode 100644 Documentation/devicetree/bindings/phy/rockchip,rk3399-emmc-phy.yaml
 delete mode 100644 Documentation/devicetree/bindings/phy/rockchip-emmc-phy.txt

Comments

Krzysztof Kozlowski June 17, 2024, 3:58 p.m. UTC | #1
On 17/06/2024 10:53, Shresth Prasad wrote:
> Convert txt bindings of Rockchip EMMC PHY to dtschema to allow
> for validation.
> 
> Signed-off-by: Shresth Prasad <shresthprasad7@gmail.com>
> ---


...


> +
> +  reg:
> +    maxItems: 1
> +
> +  clock-names:
> +    const: emmcclk
> +
> +  clocks:
> +    maxItems: 1

Keep order from DTS coding style, so clocks then clock-names.

> +
> +  drive-impedance-ohm:
> +    $ref: /schemas/types.yaml#/definitions/uint32
> +    description:
> +      Specifies the drive impedance in Ohm.
> +    enum: [33, 40, 50, 66, 100]
> +    default: 50
> +
> +  rockchip,enable-strobe-pulldown:
> +    type: boolean
> +    description: |
> +      Enable internal pull-down for the strobe
> +      line.  If not set, pull-down is not used.
> +
> +  rockchip,output-tapdelay-select:
> +    $ref: /schemas/types.yaml#/definitions/uint32
> +    description:
> +      Specifies the phyctrl_otapdlysec register.
> +    default: 0x4
> +    maximum: 0xf
> +
> +  "#phy-cells":
> +    const: 0
> +
> +required:
> +  - compatible
> +  - reg
> +  - "#phy-cells"
> +
> +additionalProperties: false
> +
> +examples:
> +  - |
> +    grf: syscon@ff770000 {

Drop label... actually entire node looks not needed.

> +      compatible = "rockchip,rk3399-grf", "syscon", "simple-mfd";

Drop

> +      reg = <0xff770000 0x10000>;

Drop


> +      #address-cells = <1>;
> +      #size-cells = <1>;
> +
> +      emmcphy: phy@f780 {

Drop label

> +        compatible = "rockchip,rk3399-emmc-phy";
> +        reg = <0xf780 0x20>;
> +        clocks = <&sdhci>;
> +        clock-names = "emmcclk";
> +        drive-impedance-ohm = <50>;
> +        #phy-cells = <0>;
> +      };
> +    };
> diff --git a/Documentation/devicetree/bindings/phy/rockchip-emmc-phy.txt b/Documentation/devicetree/bindings/phy/rockchip-emmc-phy.txt
> deleted file mode 100644
> index 57d28c0d5696..000000000000
> --- a/Documentation/devicetree/bindings/phy/rockchip-emmc-phy.txt
> +++ /dev/null
> @@ -1,43 +0,0 @@
> -Rockchip EMMC PHY
> ------------------------
> -
> -Required properties:
> - - compatible: rockchip,rk3399-emmc-phy
> - - #phy-cells: must be 0
> - - reg: PHY register address offset and length in "general
> -   register files"
> -
> -Optional properties:
> - - clock-names: Should contain "emmcclk".  Although this is listed as optional
> -		(because most boards can get basic functionality without having
> -		access to it), it is strongly suggested.
> -		See ../clock/clock-bindings.txt for details.
> - - clocks: Should have a phandle to the card clock exported by the SDHCI driver.
> - - drive-impedance-ohm: Specifies the drive impedance in Ohm.
> -                        Possible values are 33, 40, 50, 66 and 100.
> -                        If not set, the default value of 50 will be applied.
> - - rockchip,enable-strobe-pulldown: Enable internal pull-down for the strobe
> -                                    line.  If not set, pull-down is not used.
> - - rockchip,output-tapdelay-select: Specifies the phyctrl_otapdlysec register.
> -                                    If not set, the register defaults to 0x4.
> -                                    Maximum value 0xf.
> -
> -Example:
> -
> -
> -grf: syscon@ff770000 {
> -	compatible = "rockchip,rk3399-grf", "syscon", "simple-mfd";
> -	#address-cells = <1>;
> -	#size-cells = <1>;
> -
> -...
> -
> -	emmcphy: phy@f780 {
> -		compatible = "rockchip,rk3399-emmc-phy";
> -		reg = <0xf780 0x20>;
> -		clocks = <&sdhci>;
> -		clock-names = "emmcclk";
> -		drive-impedance-ohm = <50>;
> -		#phy-cells = <0>;
> -	};
> -};
> diff --git a/Documentation/devicetree/bindings/soc/rockchip/grf.yaml b/Documentation/devicetree/bindings/soc/rockchip/grf.yaml
> index 79798c747476..6e1b1cdea680 100644
> --- a/Documentation/devicetree/bindings/soc/rockchip/grf.yaml
> +++ b/Documentation/devicetree/bindings/soc/rockchip/grf.yaml
> @@ -176,9 +176,12 @@ allOf:
>              Documentation/devicetree/bindings/phy/rockchip-pcie-phy.txt
>  
>        patternProperties:
> -        "phy@[0-9a-f]+$":
> -          description:
> -            Documentation/devicetree/bindings/phy/rockchip-emmc-phy.txt
> +        "^phy@[0-9a-f]+$":
> +          type: object
> +

Drop blank line

> +          $ref: /schemas/phy/rockchip,rk3399-emmc-phy.yaml#
> +

Drop blank line

> +          unevaluatedProperties: false
>  
>    - if:
>        properties:

Nothing in example? Isn't the example for 3399?

We want only one complete example of such multi-children devices, so the
example can be moved and included in existing one here.


Best regards,
Krzysztof
Shresth Prasad June 17, 2024, 6:14 p.m. UTC | #2
On Mon, Jun 17, 2024 at 9:29 PM Krzysztof Kozlowski <krzk@kernel.org> wrote:
>
> On 17/06/2024 10:53, Shresth Prasad wrote:
> > Convert txt bindings of Rockchip EMMC PHY to dtschema to allow
> > for validation.
> >
> > Signed-off-by: Shresth Prasad <shresthprasad7@gmail.com>
> > ---
>
>
> ...
>
>
> > +
> > +  reg:
> > +    maxItems: 1
> > +
> > +  clock-names:
> > +    const: emmcclk
> > +
> > +  clocks:
> > +    maxItems: 1
>
> Keep order from DTS coding style, so clocks then clock-names.
>
> > +
> > +  drive-impedance-ohm:
> > +    $ref: /schemas/types.yaml#/definitions/uint32
> > +    description:
> > +      Specifies the drive impedance in Ohm.
> > +    enum: [33, 40, 50, 66, 100]
> > +    default: 50
> > +
> > +  rockchip,enable-strobe-pulldown:
> > +    type: boolean
> > +    description: |
> > +      Enable internal pull-down for the strobe
> > +      line.  If not set, pull-down is not used.
> > +
> > +  rockchip,output-tapdelay-select:
> > +    $ref: /schemas/types.yaml#/definitions/uint32
> > +    description:
> > +      Specifies the phyctrl_otapdlysec register.
> > +    default: 0x4
> > +    maximum: 0xf
> > +
> > +  "#phy-cells":
> > +    const: 0
> > +
> > +required:
> > +  - compatible
> > +  - reg
> > +  - "#phy-cells"
> > +
> > +additionalProperties: false
> > +
> > +examples:
> > +  - |
> > +    grf: syscon@ff770000 {
>
> Drop label... actually entire node looks not needed.

From what I understand, this `phy` node should be a sub-node of a `grf`
node which is why it is part of the example.

>
> > +      compatible = "rockchip,rk3399-grf", "syscon", "simple-mfd";
>
> Drop
>
> > +      reg = <0xff770000 0x10000>;
>
> Drop

Removing `reg` causes the following warning:
Warning (unit_address_vs_reg): /example-0/syscon@ff770000: node has a
unit name, but no reg or ranges property

Please let me know what the prefered solution would be here.

>
>
> > +      #address-cells = <1>;
> > +      #size-cells = <1>;
> > +
> > +      emmcphy: phy@f780 {
>
> Drop label
>
> > +        compatible = "rockchip,rk3399-emmc-phy";
> > +        reg = <0xf780 0x20>;
> > +        clocks = <&sdhci>;
> > +        clock-names = "emmcclk";
> > +        drive-impedance-ohm = <50>;
> > +        #phy-cells = <0>;
> > +      };
> > +    };
> > diff --git a/Documentation/devicetree/bindings/phy/rockchip-emmc-phy.txt b/Documentation/devicetree/bindings/phy/rockchip-emmc-phy.txt
> > deleted file mode 100644
> > index 57d28c0d5696..000000000000
> > --- a/Documentation/devicetree/bindings/phy/rockchip-emmc-phy.txt
> > +++ /dev/null
> > @@ -1,43 +0,0 @@
> > -Rockchip EMMC PHY
> > ------------------------
> > -
> > -Required properties:
> > - - compatible: rockchip,rk3399-emmc-phy
> > - - #phy-cells: must be 0
> > - - reg: PHY register address offset and length in "general
> > -   register files"
> > -
> > -Optional properties:
> > - - clock-names: Should contain "emmcclk".  Although this is listed as optional
> > -             (because most boards can get basic functionality without having
> > -             access to it), it is strongly suggested.
> > -             See ../clock/clock-bindings.txt for details.
> > - - clocks: Should have a phandle to the card clock exported by the SDHCI driver.
> > - - drive-impedance-ohm: Specifies the drive impedance in Ohm.
> > -                        Possible values are 33, 40, 50, 66 and 100.
> > -                        If not set, the default value of 50 will be applied.
> > - - rockchip,enable-strobe-pulldown: Enable internal pull-down for the strobe
> > -                                    line.  If not set, pull-down is not used.
> > - - rockchip,output-tapdelay-select: Specifies the phyctrl_otapdlysec register.
> > -                                    If not set, the register defaults to 0x4.
> > -                                    Maximum value 0xf.
> > -
> > -Example:
> > -
> > -
> > -grf: syscon@ff770000 {
> > -     compatible = "rockchip,rk3399-grf", "syscon", "simple-mfd";
> > -     #address-cells = <1>;
> > -     #size-cells = <1>;
> > -
> > -...
> > -
> > -     emmcphy: phy@f780 {
> > -             compatible = "rockchip,rk3399-emmc-phy";
> > -             reg = <0xf780 0x20>;
> > -             clocks = <&sdhci>;
> > -             clock-names = "emmcclk";
> > -             drive-impedance-ohm = <50>;
> > -             #phy-cells = <0>;
> > -     };
> > -};
> > diff --git a/Documentation/devicetree/bindings/soc/rockchip/grf.yaml b/Documentation/devicetree/bindings/soc/rockchip/grf.yaml
> > index 79798c747476..6e1b1cdea680 100644
> > --- a/Documentation/devicetree/bindings/soc/rockchip/grf.yaml
> > +++ b/Documentation/devicetree/bindings/soc/rockchip/grf.yaml
> > @@ -176,9 +176,12 @@ allOf:
> >              Documentation/devicetree/bindings/phy/rockchip-pcie-phy.txt
> >
> >        patternProperties:
> > -        "phy@[0-9a-f]+$":
> > -          description:
> > -            Documentation/devicetree/bindings/phy/rockchip-emmc-phy.txt
> > +        "^phy@[0-9a-f]+$":
> > +          type: object
> > +
>
> Drop blank line
>
> > +          $ref: /schemas/phy/rockchip,rk3399-emmc-phy.yaml#
> > +
>
> Drop blank line

The rest of the document also has these blank lines, which is why I've
also kept them here. Are you sure I should remove them?

>
> > +          unevaluatedProperties: false
> >
> >    - if:
> >        properties:
>
> Nothing in example? Isn't the example for 3399?
>
> We want only one complete example of such multi-children devices, so the
> example can be moved and included in existing one here.

The example in this file is actually for `rockchip,rk3399-usb2phy` and
not `rockchip,rk3399-emmc-phy` which is why I haven't touched it.

Should I add to the example in `grf.yaml` ?

>
>
> Best regards,
> Krzysztof
>

Please let me know if I've misunderstood anything or if there are any
other changes I should make.

Regards,
Shresth
Krzysztof Kozlowski June 18, 2024, 6:20 a.m. UTC | #3
On 17/06/2024 20:14, Shresth Prasad wrote:

>>> +examples:
>>> +  - |
>>> +    grf: syscon@ff770000 {
>>
>> Drop label... actually entire node looks not needed.
> 
> From what I understand, this `phy` node should be a sub-node of a `grf`
> node which is why it is part of the example.
> 
>>
>>> +      compatible = "rockchip,rk3399-grf", "syscon", "simple-mfd";
>>
>> Drop
>>
>>> +      reg = <0xff770000 0x10000>;
>>
>> Drop
> 
> Removing `reg` causes the following warning:
> Warning (unit_address_vs_reg): /example-0/syscon@ff770000: node has a
> unit name, but no reg or ranges property
> 
> Please let me know what the prefered solution would be here.

Obviously you need to drop entire node... You cannot just drop reg and
leave unit address.

> 
>>
>>
>>> +      #address-cells = <1>;
>>> +      #size-cells = <1>;
>>> +
>>> +      emmcphy: phy@f780 {
>>
>> Drop label
>>
>>> +        compatible = "rockchip,rk3399-emmc-phy";
>>> +        reg = <0xf780 0x20>;
>>> +        clocks = <&sdhci>;
>>> +        clock-names = "emmcclk";
>>> +        drive-impedance-ohm = <50>;
>>> +        #phy-cells = <0>;
>>> +      };
>>> +    };
>>> diff --git a/Documentation/devicetree/bindings/phy/rockchip-emmc-phy.txt b/Documentation/devicetree/bindings/phy/rockchip-emmc-phy.txt
>>> deleted file mode 100644
>>> index 57d28c0d5696..000000000000
>>> --- a/Documentation/devicetree/bindings/phy/rockchip-emmc-phy.txt
>>> +++ /dev/null
>>> @@ -1,43 +0,0 @@
>>> -Rockchip EMMC PHY
>>> ------------------------
>>> -
>>> -Required properties:
>>> - - compatible: rockchip,rk3399-emmc-phy
>>> - - #phy-cells: must be 0
>>> - - reg: PHY register address offset and length in "general
>>> -   register files"
>>> -
>>> -Optional properties:
>>> - - clock-names: Should contain "emmcclk".  Although this is listed as optional
>>> -             (because most boards can get basic functionality without having
>>> -             access to it), it is strongly suggested.
>>> -             See ../clock/clock-bindings.txt for details.
>>> - - clocks: Should have a phandle to the card clock exported by the SDHCI driver.
>>> - - drive-impedance-ohm: Specifies the drive impedance in Ohm.
>>> -                        Possible values are 33, 40, 50, 66 and 100.
>>> -                        If not set, the default value of 50 will be applied.
>>> - - rockchip,enable-strobe-pulldown: Enable internal pull-down for the strobe
>>> -                                    line.  If not set, pull-down is not used.
>>> - - rockchip,output-tapdelay-select: Specifies the phyctrl_otapdlysec register.
>>> -                                    If not set, the register defaults to 0x4.
>>> -                                    Maximum value 0xf.
>>> -
>>> -Example:
>>> -
>>> -
>>> -grf: syscon@ff770000 {
>>> -     compatible = "rockchip,rk3399-grf", "syscon", "simple-mfd";
>>> -     #address-cells = <1>;
>>> -     #size-cells = <1>;
>>> -
>>> -...
>>> -
>>> -     emmcphy: phy@f780 {
>>> -             compatible = "rockchip,rk3399-emmc-phy";
>>> -             reg = <0xf780 0x20>;
>>> -             clocks = <&sdhci>;
>>> -             clock-names = "emmcclk";
>>> -             drive-impedance-ohm = <50>;
>>> -             #phy-cells = <0>;
>>> -     };
>>> -};
>>> diff --git a/Documentation/devicetree/bindings/soc/rockchip/grf.yaml b/Documentation/devicetree/bindings/soc/rockchip/grf.yaml
>>> index 79798c747476..6e1b1cdea680 100644
>>> --- a/Documentation/devicetree/bindings/soc/rockchip/grf.yaml
>>> +++ b/Documentation/devicetree/bindings/soc/rockchip/grf.yaml
>>> @@ -176,9 +176,12 @@ allOf:
>>>              Documentation/devicetree/bindings/phy/rockchip-pcie-phy.txt
>>>
>>>        patternProperties:
>>> -        "phy@[0-9a-f]+$":
>>> -          description:
>>> -            Documentation/devicetree/bindings/phy/rockchip-emmc-phy.txt
>>> +        "^phy@[0-9a-f]+$":
>>> +          type: object
>>> +
>>
>> Drop blank line
>>
>>> +          $ref: /schemas/phy/rockchip,rk3399-emmc-phy.yaml#
>>> +
>>
>> Drop blank line
> 
> The rest of the document also has these blank lines, which is why I've
> also kept them here. Are you sure I should remove them?

Yes

> 
>>
>>> +          unevaluatedProperties: false
>>>
>>>    - if:
>>>        properties:
>>
>> Nothing in example? Isn't the example for 3399?
>>
>> We want only one complete example of such multi-children devices, so the
>> example can be moved and included in existing one here.
> 
> The example in this file is actually for `rockchip,rk3399-usb2phy` and
> not `rockchip,rk3399-emmc-phy` which is why I haven't touched it.

What? That's gref, not usb2phy.

This patch and your explanations are very confusing.



Best regards,
Krzysztof
Shresth Prasad June 18, 2024, 6:58 a.m. UTC | #4
18 June 2024 11:50:41 am Krzysztof Kozlowski <krzk@kernel.org>:

> On 17/06/2024 20:14, Shresth Prasad wrote:
> 
>>>> +examples:
>>>> +  - |
>>>> +    grf: syscon@ff770000 {
>>> 
>>> Drop label... actually entire node looks not needed.
>> 
>> From what I understand, this `phy` node should be a sub-node of a `grf`
>> node which is why it is part of the example.
>> 
>>> 
>>>> +      compatible = "rockchip,rk3399-grf", "syscon", "simple-mfd";
>>> 
>>> Drop
>>> 
>>>> +      reg = <0xff770000 0x10000>;
>>> 
>>> Drop
>> 
>> Removing `reg` causes the following warning:
>> Warning (unit_address_vs_reg): /example-0/syscon@ff770000: node has a
>> unit name, but no reg or ranges property
>> 
>> Please let me know what the prefered solution would be here.
> 
> Obviously you need to drop entire node... You cannot just drop reg and
> leave unit address.
> 
>> 
>>> 
>>> 
>>>> +      #address-cells = <1>;
>>>> +      #size-cells = <1>;
>>>> +
>>>> +      emmcphy: phy@f780 {
>>> 
>>> Drop label
>>> 
>>>> +        compatible = "rockchip,rk3399-emmc-phy";
>>>> +        reg = <0xf780 0x20>;
>>>> +        clocks = <&sdhci>;
>>>> +        clock-names = "emmcclk";
>>>> +        drive-impedance-ohm = <50>;
>>>> +        #phy-cells = <0>;
>>>> +      };
>>>> +    };
>>>> diff --git a/Documentation/devicetree/bindings/phy/rockchip-emmc-phy.txt b/Documentation/devicetree/bindings/phy/rockchip-emmc-phy.txt
>>>> deleted file mode 100644
>>>> index 57d28c0d5696..000000000000
>>>> --- a/Documentation/devicetree/bindings/phy/rockchip-emmc-phy.txt
>>>> +++ /dev/null
>>>> @@ -1,43 +0,0 @@
>>>> -Rockchip EMMC PHY
>>>> ------------------------
>>>> -
>>>> -Required properties:
>>>> - - compatible: rockchip,rk3399-emmc-phy
>>>> - - #phy-cells: must be 0
>>>> - - reg: PHY register address offset and length in "general
>>>> -   register files"
>>>> -
>>>> -Optional properties:
>>>> - - clock-names: Should contain "emmcclk".  Although this is listed as optional
>>>> -             (because most boards can get basic functionality without having
>>>> -             access to it), it is strongly suggested.
>>>> -             See ../clock/clock-bindings.txt for details.
>>>> - - clocks: Should have a phandle to the card clock exported by the SDHCI driver.
>>>> - - drive-impedance-ohm: Specifies the drive impedance in Ohm.
>>>> -                        Possible values are 33, 40, 50, 66 and 100.
>>>> -                        If not set, the default value of 50 will be applied.
>>>> - - rockchip,enable-strobe-pulldown: Enable internal pull-down for the strobe
>>>> -                                    line.  If not set, pull-down is not used.
>>>> - - rockchip,output-tapdelay-select: Specifies the phyctrl_otapdlysec register.
>>>> -                                    If not set, the register defaults to 0x4.
>>>> -                                    Maximum value 0xf.
>>>> -
>>>> -Example:
>>>> -
>>>> -
>>>> -grf: syscon@ff770000 {
>>>> -     compatible = "rockchip,rk3399-grf", "syscon", "simple-mfd";
>>>> -     #address-cells = <1>;
>>>> -     #size-cells = <1>;
>>>> -
>>>> -...
>>>> -
>>>> -     emmcphy: phy@f780 {
>>>> -             compatible = "rockchip,rk3399-emmc-phy";
>>>> -             reg = <0xf780 0x20>;
>>>> -             clocks = <&sdhci>;
>>>> -             clock-names = "emmcclk";
>>>> -             drive-impedance-ohm = <50>;
>>>> -             #phy-cells = <0>;
>>>> -     };
>>>> -};
>>>> diff --git a/Documentation/devicetree/bindings/soc/rockchip/grf.yaml b/Documentation/devicetree/bindings/soc/rockchip/grf.yaml
>>>> index 79798c747476..6e1b1cdea680 100644
>>>> --- a/Documentation/devicetree/bindings/soc/rockchip/grf.yaml
>>>> +++ b/Documentation/devicetree/bindings/soc/rockchip/grf.yaml
>>>> @@ -176,9 +176,12 @@ allOf:
>>>>              Documentation/devicetree/bindings/phy/rockchip-pcie-phy.txt
>>>> 
>>>>        patternProperties:
>>>> -        "phy@[0-9a-f]+$":
>>>> -          description:
>>>> -            Documentation/devicetree/bindings/phy/rockchip-emmc-phy.txt
>>>> +        "^phy@[0-9a-f]+$":
>>>> +          type: object
>>>> +
>>> 
>>> Drop blank line
>>> 
>>>> +          $ref: /schemas/phy/rockchip,rk3399-emmc-phy.yaml#
>>>> +
>>> 
>>> Drop blank line
>> 
>> The rest of the document also has these blank lines, which is why I've
>> also kept them here. Are you sure I should remove them?
> 
> Yes
> 
>> 
>>> 
>>>> +          unevaluatedProperties: false
>>>> 
>>>>    - if:
>>>>        properties:
>>> 
>>> Nothing in example? Isn't the example for 3399?
>>> 
>>> We want only one complete example of such multi-children devices, so the
>>> example can be moved and included in existing one here.
>> 
>> The example in this file is actually for `rockchip,rk3399-usb2phy` and
>> not `rockchip,rk3399-emmc-phy` which is why I haven't touched it.
> 
> What? That's gref, not usb2phy.
> 
> This patch and your explanations are very confusing.
> 
> 
> 
> Best regards,
> Krzysztof

Sorry about this, I'm still quite new to doing this.
I ask that you be a bit more patient with me, I'm still trying to learn
how things work here...

Regards,
Shresth
diff mbox series

Patch

diff --git a/Documentation/devicetree/bindings/phy/rockchip,rk3399-emmc-phy.yaml b/Documentation/devicetree/bindings/phy/rockchip,rk3399-emmc-phy.yaml
new file mode 100644
index 000000000000..e61ba2b0abcd
--- /dev/null
+++ b/Documentation/devicetree/bindings/phy/rockchip,rk3399-emmc-phy.yaml
@@ -0,0 +1,72 @@ 
+# SPDX-License-Identifier: GPL-2.0-only
+%YAML 1.2
+---
+$id: http://devicetree.org/schemas/phy/rockchip,rk3399-emmc-phy.yaml#
+$schema: http://devicetree.org/meta-schemas/core.yaml#
+
+title: Rockchip EMMC PHY
+
+maintainers:
+  - Heiko Stuebner <heiko@sntech.de>
+  - Shresth Prasad <shresthprasad7@gmail.com>
+
+properties:
+  compatible:
+    const: rockchip,rk3399-emmc-phy
+
+  reg:
+    maxItems: 1
+
+  clock-names:
+    const: emmcclk
+
+  clocks:
+    maxItems: 1
+
+  drive-impedance-ohm:
+    $ref: /schemas/types.yaml#/definitions/uint32
+    description:
+      Specifies the drive impedance in Ohm.
+    enum: [33, 40, 50, 66, 100]
+    default: 50
+
+  rockchip,enable-strobe-pulldown:
+    type: boolean
+    description: |
+      Enable internal pull-down for the strobe
+      line.  If not set, pull-down is not used.
+
+  rockchip,output-tapdelay-select:
+    $ref: /schemas/types.yaml#/definitions/uint32
+    description:
+      Specifies the phyctrl_otapdlysec register.
+    default: 0x4
+    maximum: 0xf
+
+  "#phy-cells":
+    const: 0
+
+required:
+  - compatible
+  - reg
+  - "#phy-cells"
+
+additionalProperties: false
+
+examples:
+  - |
+    grf: syscon@ff770000 {
+      compatible = "rockchip,rk3399-grf", "syscon", "simple-mfd";
+      reg = <0xff770000 0x10000>;
+      #address-cells = <1>;
+      #size-cells = <1>;
+
+      emmcphy: phy@f780 {
+        compatible = "rockchip,rk3399-emmc-phy";
+        reg = <0xf780 0x20>;
+        clocks = <&sdhci>;
+        clock-names = "emmcclk";
+        drive-impedance-ohm = <50>;
+        #phy-cells = <0>;
+      };
+    };
diff --git a/Documentation/devicetree/bindings/phy/rockchip-emmc-phy.txt b/Documentation/devicetree/bindings/phy/rockchip-emmc-phy.txt
deleted file mode 100644
index 57d28c0d5696..000000000000
--- a/Documentation/devicetree/bindings/phy/rockchip-emmc-phy.txt
+++ /dev/null
@@ -1,43 +0,0 @@ 
-Rockchip EMMC PHY
------------------------
-
-Required properties:
- - compatible: rockchip,rk3399-emmc-phy
- - #phy-cells: must be 0
- - reg: PHY register address offset and length in "general
-   register files"
-
-Optional properties:
- - clock-names: Should contain "emmcclk".  Although this is listed as optional
-		(because most boards can get basic functionality without having
-		access to it), it is strongly suggested.
-		See ../clock/clock-bindings.txt for details.
- - clocks: Should have a phandle to the card clock exported by the SDHCI driver.
- - drive-impedance-ohm: Specifies the drive impedance in Ohm.
-                        Possible values are 33, 40, 50, 66 and 100.
-                        If not set, the default value of 50 will be applied.
- - rockchip,enable-strobe-pulldown: Enable internal pull-down for the strobe
-                                    line.  If not set, pull-down is not used.
- - rockchip,output-tapdelay-select: Specifies the phyctrl_otapdlysec register.
-                                    If not set, the register defaults to 0x4.
-                                    Maximum value 0xf.
-
-Example:
-
-
-grf: syscon@ff770000 {
-	compatible = "rockchip,rk3399-grf", "syscon", "simple-mfd";
-	#address-cells = <1>;
-	#size-cells = <1>;
-
-...
-
-	emmcphy: phy@f780 {
-		compatible = "rockchip,rk3399-emmc-phy";
-		reg = <0xf780 0x20>;
-		clocks = <&sdhci>;
-		clock-names = "emmcclk";
-		drive-impedance-ohm = <50>;
-		#phy-cells = <0>;
-	};
-};
diff --git a/Documentation/devicetree/bindings/soc/rockchip/grf.yaml b/Documentation/devicetree/bindings/soc/rockchip/grf.yaml
index 79798c747476..6e1b1cdea680 100644
--- a/Documentation/devicetree/bindings/soc/rockchip/grf.yaml
+++ b/Documentation/devicetree/bindings/soc/rockchip/grf.yaml
@@ -176,9 +176,12 @@  allOf:
             Documentation/devicetree/bindings/phy/rockchip-pcie-phy.txt
 
       patternProperties:
-        "phy@[0-9a-f]+$":
-          description:
-            Documentation/devicetree/bindings/phy/rockchip-emmc-phy.txt
+        "^phy@[0-9a-f]+$":
+          type: object
+
+          $ref: /schemas/phy/rockchip,rk3399-emmc-phy.yaml#
+
+          unevaluatedProperties: false
 
   - if:
       properties: