diff mbox series

[v3,5/5] dt-bindings: net: ipq4019-mdio: Document ipq5332 platform

Message ID 20231214090304.16884-6-quic_luoj@quicinc.com (mailing list archive)
State Superseded
Delegated to: Netdev Maintainers
Headers show
Series support ipq5332 platform | expand

Checks

Context Check Description
netdev/series_format success Posting correctly formatted
netdev/tree_selection success Guessed tree name to be net-next
netdev/ynl success Generated files up to date; no warnings/errors; no diff in generated;
netdev/fixes_present success Fixes tag not required for -next series
netdev/header_inline success No static functions without inline keyword in header files
netdev/build_32bit success Errors and warnings before: 8 this patch: 8
netdev/cc_maintainers success CCed 13 of 13 maintainers
netdev/build_clang success Errors and warnings before: 8 this patch: 8
netdev/verify_signedoff success Signed-off-by tag matches author and committer
netdev/deprecated_api success None detected
netdev/check_selftest success No net selftest shell script
netdev/verify_fixes success No Fixes tag
netdev/build_allmodconfig_warn success Errors and warnings before: 8 this patch: 8
netdev/checkpatch success total: 0 errors, 0 warnings, 0 checks, 179 lines checked
netdev/build_clang_rust success No Rust files in patch. Skipping build
netdev/kdoc success Errors and warnings before: 0 this patch: 0
netdev/source_inline success Was 0 now: 0

Commit Message

Luo Jie Dec. 14, 2023, 9:03 a.m. UTC
Update the yaml file for the new DTS properties.

1. cmn-reference-clock for the CMN PLL source clock select.
2. clock-frequency for MDIO clock frequency config.
3. add uniphy AHB & SYS GCC clocks.
4. add reset-gpios for MDIO bus level reset.

Signed-off-by: Luo Jie <quic_luoj@quicinc.com>
---
 .../bindings/net/qcom,ipq4019-mdio.yaml       | 143 +++++++++++++++++-
 1 file changed, 139 insertions(+), 4 deletions(-)

Comments

Conor Dooley Dec. 14, 2023, 3:58 p.m. UTC | #1
On Thu, Dec 14, 2023 at 05:03:04PM +0800, Luo Jie wrote:
> Update the yaml file for the new DTS properties.
> 
> 1. cmn-reference-clock for the CMN PLL source clock select.
> 2. clock-frequency for MDIO clock frequency config.
> 3. add uniphy AHB & SYS GCC clocks.
> 4. add reset-gpios for MDIO bus level reset.
> 
> Signed-off-by: Luo Jie <quic_luoj@quicinc.com>

Can you please wait until discussion has finished on a patchset before
sending another version? I had not yet got a chance to look at the
reply you sent to my comments on v2.

Thanks,
Conor.

> ---
>  .../bindings/net/qcom,ipq4019-mdio.yaml       | 143 +++++++++++++++++-
>  1 file changed, 139 insertions(+), 4 deletions(-)
> 
> diff --git a/Documentation/devicetree/bindings/net/qcom,ipq4019-mdio.yaml b/Documentation/devicetree/bindings/net/qcom,ipq4019-mdio.yaml
> index 3407e909e8a7..79f8513739e7 100644
> --- a/Documentation/devicetree/bindings/net/qcom,ipq4019-mdio.yaml
> +++ b/Documentation/devicetree/bindings/net/qcom,ipq4019-mdio.yaml
> @@ -20,6 +20,8 @@ properties:
>            - enum:
>                - qcom,ipq6018-mdio
>                - qcom,ipq8074-mdio
> +              - qcom,ipq9574-mdio
> +              - qcom,ipq5332-mdio
>            - const: qcom,ipq4019-mdio
>  
>    "#address-cells":
> @@ -30,19 +32,77 @@ properties:
>  
>    reg:
>      minItems: 1
> -    maxItems: 2
> +    maxItems: 5
>      description:
> -      the first Address and length of the register set for the MDIO controller.
> -      the second Address and length of the register for ethernet LDO, this second
> -      address range is only required by the platform IPQ50xx.
> +      the first Address and length of the register set for the MDIO controller,
> +      the optional second, third and fourth address and length of the register
> +      for ethernet LDO, these three address range are required by the platform
> +      IPQ50xx/IPQ5332, the last address and length is for the CMN clock to
> +      select the reference clock.
> +
> +  reg-names:
> +    minItems: 1
> +    maxItems: 5
>  
>    clocks:
> +    minItems: 1
>      items:
>        - description: MDIO clock source frequency fixed to 100MHZ
> +      - description: UNIPHY0 AHB clock source frequency fixed to 100MHZ
> +      - description: UNIPHY1 AHB clock source frequency fixed to 100MHZ
> +      - description: UNIPHY0 SYS clock source frequency fixed to 24MHZ
> +      - description: UNIPHY1 SYS clock source frequency fixed to 24MHZ
>  
>    clock-names:
> +    minItems: 1
>      items:
>        - const: gcc_mdio_ahb_clk
> +      - const: uniphy0_ahb
> +      - const: uniphy1_ahb
> +      - const: uniphy0_sys
> +      - const: uniphy1_sys
> +
> +  cmn-reference-clock:
> +    $ref: /schemas/types.yaml#/definitions/uint32
> +    oneOf:
> +      - items:
> +          - enum:
> +              - 0   # CMN PLL reference internal 48MHZ
> +              - 1   # CMN PLL reference external 25MHZ
> +              - 2   # CMN PLL reference external 31250KHZ
> +              - 3   # CMN PLL reference external 40MHZ
> +              - 4   # CMN PLL reference external 48MHZ
> +              - 5   # CMN PLL reference external 50MHZ
> +              - 6   # CMN PLL reference internal 96MHZ
> +
> +  clock-frequency:
> +    oneOf:
> +      - items:
> +          - enum:
> +              - 12500000
> +              - 6250000
> +              - 3125000
> +              - 1562500
> +              - 781250
> +              - 390625
> +    description:
> +      The MDIO bus clock that must be output by the MDIO bus hardware,
> +      only the listed frequencies above can be supported, other frequency
> +      will cause malfunction. If absent, the default hardware value 0xff
> +      is used, which means the default MDIO clock frequency 390625HZ, The
> +      MDIO clock frequency is MDIO_SYS_CLK/(MDIO_CLK_DIV + 1), the SoC
> +      MDIO_SYS_CLK is fixed to 100MHZ, the MDIO_CLK_DIV is from MDIO control
> +      register, there is higher clock frequency requirement on the normal
> +      working case where the MDIO slave devices support high clock frequency.
> +
> +  reset-gpios:
> +    maxItems: 1
> +
> +  reset-assert-us:
> +    maxItems: 1
> +
> +  reset-deassert-us:
> +    maxItems: 1
>  
>  required:
>    - compatible
> @@ -61,6 +121,8 @@ allOf:
>                - qcom,ipq5018-mdio
>                - qcom,ipq6018-mdio
>                - qcom,ipq8074-mdio
> +              - qcom,ipq5332-mdio
> +              - qcom,ipq9574-mdio
>      then:
>        required:
>          - clocks
> @@ -70,6 +132,20 @@ allOf:
>          clocks: false
>          clock-names: false
>  
> +  - if:
> +      properties:
> +        compatible:
> +          contains:
> +            enum:
> +              - qcom,ipq5332-mdio
> +    then:
> +      properties:
> +        clocks:
> +          minItems: 5
> +          maxItems: 5
> +        reg-names:
> +          minItems: 4
> +
>  unevaluatedProperties: false
>  
>  examples:
> @@ -100,3 +176,62 @@ examples:
>          reg = <4>;
>        };
>      };
> +
> +  - |
> +    #include <dt-bindings/clock/qcom,ipq5332-gcc.h>
> +    #include <dt-bindings/gpio/gpio.h>
> +
> +    mdio@90000 {
> +      #address-cells = <1>;
> +      #size-cells = <0>;
> +      compatible = "qcom,ipq5332-mdio",
> +                   "qcom,ipq4019-mdio";
> +      cmn-reference-clock = <0>;
> +      clock-frequency = <6250000>;
> +
> +      reset-gpios = <&tlmm 51 GPIO_ACTIVE_LOW>;
> +      reset-assert-us = <100000>;
> +      reset-deassert-us = <100000>;
> +
> +      reg = <0x90000 0x64>,
> +            <0x9B000 0x800>,
> +            <0x7A00610 0x4>,
> +            <0x7A10610 0x4>;
> +
> +      reg-names = "mdio",
> +                  "cmn_blk",
> +                  "eth_ldo1",
> +                  "eth_ldo2";
> +
> +      clocks = <&gcc GCC_MDIO_AHB_CLK>,
> +               <&gcc GCC_UNIPHY0_AHB_CLK>,
> +               <&gcc GCC_UNIPHY1_AHB_CLK>,
> +               <&gcc GCC_UNIPHY0_SYS_CLK>,
> +               <&gcc GCC_UNIPHY1_SYS_CLK>;
> +
> +      clock-names = "gcc_mdio_ahb_clk",
> +                    "uniphy0_ahb",
> +                    "uniphy1_ahb",
> +                    "uniphy0_sys",
> +                    "uniphy1_sys";
> +
> +      qca8kphy0: ethernet-phy@1 {
> +        compatible = "ethernet-phy-id004d.d180";
> +        reg = <1>;
> +      };
> +
> +      qca8kphy1: ethernet-phy@2 {
> +        compatible = "ethernet-phy-id004d.d180";
> +        reg = <2>;
> +      };
> +
> +      qca8kphy2: ethernet-phy@3 {
> +        compatible = "ethernet-phy-id004d.d180";
> +        reg = <3>;
> +      };
> +
> +      qca8kphy3: ethernet-phy@4 {
> +        compatible = "ethernet-phy-id004d.d180";
> +        reg = <4>;
> +      };
> +    };
> -- 
> 2.42.0
>
Luo Jie Dec. 15, 2023, 6:49 a.m. UTC | #2
On 12/14/2023 11:58 PM, Conor Dooley wrote:
>> Update the yaml file for the new DTS properties.
>>
>> 1. cmn-reference-clock for the CMN PLL source clock select.
>> 2. clock-frequency for MDIO clock frequency config.
>> 3. add uniphy AHB & SYS GCC clocks.
>> 4. add reset-gpios for MDIO bus level reset.
>>
>> Signed-off-by: Luo Jie<quic_luoj@quicinc.com>
> Can you please wait until discussion has finished on a patchset before
> sending another version? I had not yet got a chance to look at the
> reply you sent to my comments on v2.
> 
> Thanks,
> Conor.

got it, will keep this in mind, thanks for the suggestion.
Krzysztof Kozlowski Dec. 15, 2023, 7:27 a.m. UTC | #3
On 14/12/2023 10:03, Luo Jie wrote:
> Update the yaml file for the new DTS properties.
> 
> 1. cmn-reference-clock for the CMN PLL source clock select.
> 2. clock-frequency for MDIO clock frequency config.
> 3. add uniphy AHB & SYS GCC clocks.
> 4. add reset-gpios for MDIO bus level reset.
> 
> Signed-off-by: Luo Jie <quic_luoj@quicinc.com>
> ---
>  .../bindings/net/qcom,ipq4019-mdio.yaml       | 143 +++++++++++++++++-
>  1 file changed, 139 insertions(+), 4 deletions(-)
> 
> diff --git a/Documentation/devicetree/bindings/net/qcom,ipq4019-mdio.yaml b/Documentation/devicetree/bindings/net/qcom,ipq4019-mdio.yaml
> index 3407e909e8a7..79f8513739e7 100644
> --- a/Documentation/devicetree/bindings/net/qcom,ipq4019-mdio.yaml
> +++ b/Documentation/devicetree/bindings/net/qcom,ipq4019-mdio.yaml
> @@ -20,6 +20,8 @@ properties:
>            - enum:
>                - qcom,ipq6018-mdio
>                - qcom,ipq8074-mdio
> +              - qcom,ipq9574-mdio
> +              - qcom,ipq5332-mdio
>            - const: qcom,ipq4019-mdio
>  
>    "#address-cells":
> @@ -30,19 +32,77 @@ properties:
>  
>    reg:
>      minItems: 1
> -    maxItems: 2
> +    maxItems: 5
>      description:
> -      the first Address and length of the register set for the MDIO controller.
> -      the second Address and length of the register for ethernet LDO, this second
> -      address range is only required by the platform IPQ50xx.
> +      the first Address and length of the register set for the MDIO controller,
> +      the optional second, third and fourth address and length of the register
> +      for ethernet LDO, these three address range are required by the platform
> +      IPQ50xx/IPQ5332, the last address and length is for the CMN clock to
> +      select the reference clock.
> +
> +  reg-names:
> +    minItems: 1
> +    maxItems: 5
>  
>    clocks:
> +    minItems: 1
>      items:
>        - description: MDIO clock source frequency fixed to 100MHZ
> +      - description: UNIPHY0 AHB clock source frequency fixed to 100MHZ
> +      - description: UNIPHY1 AHB clock source frequency fixed to 100MHZ
> +      - description: UNIPHY0 SYS clock source frequency fixed to 24MHZ
> +      - description: UNIPHY1 SYS clock source frequency fixed to 24MHZ
>  
>    clock-names:
> +    minItems: 1
>      items:
>        - const: gcc_mdio_ahb_clk
> +      - const: uniphy0_ahb
> +      - const: uniphy1_ahb
> +      - const: uniphy0_sys
> +      - const: uniphy1_sys
> +
> +  cmn-reference-clock:
> +    $ref: /schemas/types.yaml#/definitions/uint32

Nothing improved here

> +    oneOf:
> +      - items:

So it is enum or not?

> +          - enum:
> +              - 0   # CMN PLL reference internal 48MHZ
> +              - 1   # CMN PLL reference external 25MHZ
> +              - 2   # CMN PLL reference external 31250KHZ
> +              - 3   # CMN PLL reference external 40MHZ
> +              - 4   # CMN PLL reference external 48MHZ
> +              - 5   # CMN PLL reference external 50MHZ
> +              - 6   # CMN PLL reference internal 96MHZ
> +
> +  clock-frequency:
> +    oneOf:
> +      - items:

Same questions

> +          - enum:
> +              - 12500000
> +              - 6250000
> +              - 3125000
> +              - 1562500
> +              - 781250
> +              - 390625
> +    description:
> +      The MDIO bus clock that must be output by the MDIO bus hardware,
> +      only the listed frequencies above can be supported, other frequency
> +      will cause malfunction. If absent, the default hardware value 0xff
> +      is used, which means the default MDIO clock frequency 390625HZ, The
> +      MDIO clock frequency is MDIO_SYS_CLK/(MDIO_CLK_DIV + 1), the SoC
> +      MDIO_SYS_CLK is fixed to 100MHZ, the MDIO_CLK_DIV is from MDIO control
> +      register, there is higher clock frequency requirement on the normal
> +      working case where the MDIO slave devices support high clock frequency.
> +
> +  reset-gpios:
> +    maxItems: 1
> +
> +  reset-assert-us:
> +    maxItems: 1

This does not look related to ipq5332.

> +
> +  reset-deassert-us:
> +    maxItems: 1

Neither this.

>  
>  required:
>    - compatible
> @@ -61,6 +121,8 @@ allOf:
>                - qcom,ipq5018-mdio
>                - qcom,ipq6018-mdio
>                - qcom,ipq8074-mdio
> +              - qcom,ipq5332-mdio
> +              - qcom,ipq9574-mdio
>      then:
>        required:
>          - clocks
> @@ -70,6 +132,20 @@ allOf:
>          clocks: false
>          clock-names: false
>  
> +  - if:
> +      properties:
> +        compatible:
> +          contains:
> +            enum:
> +              - qcom,ipq5332-mdio
> +    then:
> +      properties:
> +        clocks:
> +          minItems: 5
> +          maxItems: 5
> +        reg-names:
> +          minItems: 4
> +
>  unevaluatedProperties: false
>  
>  examples:
> @@ -100,3 +176,62 @@ examples:
>          reg = <4>;
>        };
>      };
> +
> +  - |
> +    #include <dt-bindings/clock/qcom,ipq5332-gcc.h>
> +    #include <dt-bindings/gpio/gpio.h>
> +
> +    mdio@90000 {
> +      #address-cells = <1>;
> +      #size-cells = <0>;
> +      compatible = "qcom,ipq5332-mdio",
> +                   "qcom,ipq4019-mdio";
> +      cmn-reference-clock = <0>;
> +      clock-frequency = <6250000>;
> +
> +      reset-gpios = <&tlmm 51 GPIO_ACTIVE_LOW>;
> +      reset-assert-us = <100000>;
> +      reset-deassert-us = <100000>;
> +
> +      reg = <0x90000 0x64>,
> +            <0x9B000 0x800>,
> +            <0x7A00610 0x4>,
> +            <0x7A10610 0x4>;

Lowercase hex, wrong order of properties. Align it with coding style.



Best regards,
Krzysztof
Luo Jie Dec. 15, 2023, 8:28 a.m. UTC | #4
On 12/15/2023 3:27 PM, Krzysztof Kozlowski wrote:
> On 14/12/2023 10:03, Luo Jie wrote:
>> Update the yaml file for the new DTS properties.
>>
>> 1. cmn-reference-clock for the CMN PLL source clock select.
>> 2. clock-frequency for MDIO clock frequency config.
>> 3. add uniphy AHB & SYS GCC clocks.
>> 4. add reset-gpios for MDIO bus level reset.
>>
>> Signed-off-by: Luo Jie <quic_luoj@quicinc.com>
>> ---
>>   .../bindings/net/qcom,ipq4019-mdio.yaml       | 143 +++++++++++++++++-
>>   1 file changed, 139 insertions(+), 4 deletions(-)
>>
>> diff --git a/Documentation/devicetree/bindings/net/qcom,ipq4019-mdio.yaml b/Documentation/devicetree/bindings/net/qcom,ipq4019-mdio.yaml
>> index 3407e909e8a7..79f8513739e7 100644
>> --- a/Documentation/devicetree/bindings/net/qcom,ipq4019-mdio.yaml
>> +++ b/Documentation/devicetree/bindings/net/qcom,ipq4019-mdio.yaml
>> @@ -20,6 +20,8 @@ properties:
>>             - enum:
>>                 - qcom,ipq6018-mdio
>>                 - qcom,ipq8074-mdio
>> +              - qcom,ipq9574-mdio
>> +              - qcom,ipq5332-mdio
>>             - const: qcom,ipq4019-mdio
>>   
>>     "#address-cells":
>> @@ -30,19 +32,77 @@ properties:
>>   
>>     reg:
>>       minItems: 1
>> -    maxItems: 2
>> +    maxItems: 5
>>       description:
>> -      the first Address and length of the register set for the MDIO controller.
>> -      the second Address and length of the register for ethernet LDO, this second
>> -      address range is only required by the platform IPQ50xx.
>> +      the first Address and length of the register set for the MDIO controller,
>> +      the optional second, third and fourth address and length of the register
>> +      for ethernet LDO, these three address range are required by the platform
>> +      IPQ50xx/IPQ5332, the last address and length is for the CMN clock to
>> +      select the reference clock.
>> +
>> +  reg-names:
>> +    minItems: 1
>> +    maxItems: 5
>>   
>>     clocks:
>> +    minItems: 1
>>       items:
>>         - description: MDIO clock source frequency fixed to 100MHZ
>> +      - description: UNIPHY0 AHB clock source frequency fixed to 100MHZ
>> +      - description: UNIPHY1 AHB clock source frequency fixed to 100MHZ
>> +      - description: UNIPHY0 SYS clock source frequency fixed to 24MHZ
>> +      - description: UNIPHY1 SYS clock source frequency fixed to 24MHZ
>>   
>>     clock-names:
>> +    minItems: 1
>>       items:
>>         - const: gcc_mdio_ahb_clk
>> +      - const: uniphy0_ahb
>> +      - const: uniphy1_ahb
>> +      - const: uniphy0_sys
>> +      - const: uniphy1_sys
>> +
>> +  cmn-reference-clock:
>> +    $ref: /schemas/types.yaml#/definitions/uint32
> 
> Nothing improved here

With this change, the warning is not reported when i run
dt_binding_check, looks the new added property needs
the type ref to avoid the warning reported.

> 
>> +    oneOf:
>> +      - items:
> 
> So it is enum or not?

it's enum, i will remove the "oneOf: - items:" in the next patch set.

> 
>> +          - enum:
>> +              - 0   # CMN PLL reference internal 48MHZ
>> +              - 1   # CMN PLL reference external 25MHZ
>> +              - 2   # CMN PLL reference external 31250KHZ
>> +              - 3   # CMN PLL reference external 40MHZ
>> +              - 4   # CMN PLL reference external 48MHZ
>> +              - 5   # CMN PLL reference external 50MHZ
>> +              - 6   # CMN PLL reference internal 96MHZ
>> +
>> +  clock-frequency:
>> +    oneOf:
>> +      - items:
> 
> Same questions

it's enum.

> 
>> +          - enum:
>> +              - 12500000
>> +              - 6250000
>> +              - 3125000
>> +              - 1562500
>> +              - 781250
>> +              - 390625
>> +    description:
>> +      The MDIO bus clock that must be output by the MDIO bus hardware,
>> +      only the listed frequencies above can be supported, other frequency
>> +      will cause malfunction. If absent, the default hardware value 0xff
>> +      is used, which means the default MDIO clock frequency 390625HZ, The
>> +      MDIO clock frequency is MDIO_SYS_CLK/(MDIO_CLK_DIV + 1), the SoC
>> +      MDIO_SYS_CLK is fixed to 100MHZ, the MDIO_CLK_DIV is from MDIO control
>> +      register, there is higher clock frequency requirement on the normal
>> +      working case where the MDIO slave devices support high clock frequency.
>> +
>> +  reset-gpios:
>> +    maxItems: 1
>> +
>> +  reset-assert-us:
>> +    maxItems: 1
> 
> This does not look related to ipq5332.

The reset gpio properties are needed on ipq5332, since qca8084 phy is
connected, which uses the MDIO bus level gpio reset.

Without declaring these gpio properties, the warning will be reported
by dt_binding_check.

> 
>> +
>> +  reset-deassert-us:
>> +    maxItems: 1
> 
> Neither this.

same as above.

> 
>>   
>>   required:
>>     - compatible
>> @@ -61,6 +121,8 @@ allOf:
>>                 - qcom,ipq5018-mdio
>>                 - qcom,ipq6018-mdio
>>                 - qcom,ipq8074-mdio
>> +              - qcom,ipq5332-mdio
>> +              - qcom,ipq9574-mdio
>>       then:
>>         required:
>>           - clocks
>> @@ -70,6 +132,20 @@ allOf:
>>           clocks: false
>>           clock-names: false
>>   
>> +  - if:
>> +      properties:
>> +        compatible:
>> +          contains:
>> +            enum:
>> +              - qcom,ipq5332-mdio
>> +    then:
>> +      properties:
>> +        clocks:
>> +          minItems: 5
>> +          maxItems: 5
>> +        reg-names:
>> +          minItems: 4
>> +
>>   unevaluatedProperties: false
>>   
>>   examples:
>> @@ -100,3 +176,62 @@ examples:
>>           reg = <4>;
>>         };
>>       };
>> +
>> +  - |
>> +    #include <dt-bindings/clock/qcom,ipq5332-gcc.h>
>> +    #include <dt-bindings/gpio/gpio.h>
>> +
>> +    mdio@90000 {
>> +      #address-cells = <1>;
>> +      #size-cells = <0>;
>> +      compatible = "qcom,ipq5332-mdio",
>> +                   "qcom,ipq4019-mdio";
>> +      cmn-reference-clock = <0>;
>> +      clock-frequency = <6250000>;
>> +
>> +      reset-gpios = <&tlmm 51 GPIO_ACTIVE_LOW>;
>> +      reset-assert-us = <100000>;
>> +      reset-deassert-us = <100000>;
>> +
>> +      reg = <0x90000 0x64>,
>> +            <0x9B000 0x800>,
>> +            <0x7A00610 0x4>,
>> +            <0x7A10610 0x4>;
> 
> Lowercase hex, wrong order of properties. Align it with coding style.

will correct it in the next patch set, thanks.

> 
> 
> 
> Best regards,
> Krzysztof
>
Krzysztof Kozlowski Dec. 15, 2023, 8:39 a.m. UTC | #5
On 15/12/2023 09:28, Jie Luo wrote:
> 
> 
> On 12/15/2023 3:27 PM, Krzysztof Kozlowski wrote:
>> On 14/12/2023 10:03, Luo Jie wrote:
>>> Update the yaml file for the new DTS properties.
>>>
>>> 1. cmn-reference-clock for the CMN PLL source clock select.
>>> 2. clock-frequency for MDIO clock frequency config.
>>> 3. add uniphy AHB & SYS GCC clocks.
>>> 4. add reset-gpios for MDIO bus level reset.
>>>
>>> Signed-off-by: Luo Jie <quic_luoj@quicinc.com>
>>> ---
>>>   .../bindings/net/qcom,ipq4019-mdio.yaml       | 143 +++++++++++++++++-
>>>   1 file changed, 139 insertions(+), 4 deletions(-)
>>>
>>> diff --git a/Documentation/devicetree/bindings/net/qcom,ipq4019-mdio.yaml b/Documentation/devicetree/bindings/net/qcom,ipq4019-mdio.yaml
>>> index 3407e909e8a7..79f8513739e7 100644
>>> --- a/Documentation/devicetree/bindings/net/qcom,ipq4019-mdio.yaml
>>> +++ b/Documentation/devicetree/bindings/net/qcom,ipq4019-mdio.yaml
>>> @@ -20,6 +20,8 @@ properties:
>>>             - enum:
>>>                 - qcom,ipq6018-mdio
>>>                 - qcom,ipq8074-mdio
>>> +              - qcom,ipq9574-mdio
>>> +              - qcom,ipq5332-mdio

Why do you add entries to the end of the list? In reversed order?

>>>             - const: qcom,ipq4019-mdio
>>>   
>>>     "#address-cells":
>>> @@ -30,19 +32,77 @@ properties:
>>>   
>>>     reg:
>>>       minItems: 1
>>> -    maxItems: 2
>>> +    maxItems: 5
>>>       description:
>>> -      the first Address and length of the register set for the MDIO controller.
>>> -      the second Address and length of the register for ethernet LDO, this second
>>> -      address range is only required by the platform IPQ50xx.
>>> +      the first Address and length of the register set for the MDIO controller,
>>> +      the optional second, third and fourth address and length of the register
>>> +      for ethernet LDO, these three address range are required by the platform
>>> +      IPQ50xx/IPQ5332, the last address and length is for the CMN clock to
>>> +      select the reference clock.
>>> +
>>> +  reg-names:
>>> +    minItems: 1
>>> +    maxItems: 5
>>>   
>>>     clocks:
>>> +    minItems: 1
>>>       items:
>>>         - description: MDIO clock source frequency fixed to 100MHZ
>>> +      - description: UNIPHY0 AHB clock source frequency fixed to 100MHZ
>>> +      - description: UNIPHY1 AHB clock source frequency fixed to 100MHZ
>>> +      - description: UNIPHY0 SYS clock source frequency fixed to 24MHZ
>>> +      - description: UNIPHY1 SYS clock source frequency fixed to 24MHZ
>>>   
>>>     clock-names:
>>> +    minItems: 1
>>>       items:
>>>         - const: gcc_mdio_ahb_clk
>>> +      - const: uniphy0_ahb
>>> +      - const: uniphy1_ahb
>>> +      - const: uniphy0_sys
>>> +      - const: uniphy1_sys
>>> +
>>> +  cmn-reference-clock:
>>> +    $ref: /schemas/types.yaml#/definitions/uint32
>>
>> Nothing improved here
> 
> With this change, the warning is not reported when i run
> dt_binding_check, looks the new added property needs
> the type ref to avoid the warning reported.

Nothing improved in the property name, nor its style, nor in the actual
contents/values.

...

>>> +  reset-gpios:
>>> +    maxItems: 1
>>> +
>>> +  reset-assert-us:
>>> +    maxItems: 1
>>
>> This does not look related to ipq5332.
> 
> The reset gpio properties are needed on ipq5332, since qca8084 phy is
> connected, which uses the MDIO bus level gpio reset.

I am talking about this property, not these properties.

> 
> Without declaring these gpio properties, the warning will be reported
> by dt_binding_check.

How is it even possible to have warnings if there is no such node in
DTS? We do not care about warnings in your downstream code.


Best regards,
Krzysztof
Luo Jie Dec. 15, 2023, 10:03 a.m. UTC | #6
On 12/15/2023 4:39 PM, Krzysztof Kozlowski wrote:
> On 15/12/2023 09:28, Jie Luo wrote:
>>
>>
>> On 12/15/2023 3:27 PM, Krzysztof Kozlowski wrote:
>>> On 14/12/2023 10:03, Luo Jie wrote:
>>>> Update the yaml file for the new DTS properties.
>>>>
>>>> 1. cmn-reference-clock for the CMN PLL source clock select.
>>>> 2. clock-frequency for MDIO clock frequency config.
>>>> 3. add uniphy AHB & SYS GCC clocks.
>>>> 4. add reset-gpios for MDIO bus level reset.
>>>>
>>>> Signed-off-by: Luo Jie <quic_luoj@quicinc.com>
>>>> ---
>>>>    .../bindings/net/qcom,ipq4019-mdio.yaml       | 143 +++++++++++++++++-
>>>>    1 file changed, 139 insertions(+), 4 deletions(-)
>>>>
>>>> diff --git a/Documentation/devicetree/bindings/net/qcom,ipq4019-mdio.yaml b/Documentation/devicetree/bindings/net/qcom,ipq4019-mdio.yaml
>>>> index 3407e909e8a7..79f8513739e7 100644
>>>> --- a/Documentation/devicetree/bindings/net/qcom,ipq4019-mdio.yaml
>>>> +++ b/Documentation/devicetree/bindings/net/qcom,ipq4019-mdio.yaml
>>>> @@ -20,6 +20,8 @@ properties:
>>>>              - enum:
>>>>                  - qcom,ipq6018-mdio
>>>>                  - qcom,ipq8074-mdio
>>>> +              - qcom,ipq9574-mdio
>>>> +              - qcom,ipq5332-mdio
> 
> Why do you add entries to the end of the list? In reversed order?

Thanks for pointing it out, i will move "- qcom,ipq5332-mdio" before
"- qcom,ipq6018-mdio".

> 
>>>>              - const: qcom,ipq4019-mdio
>>>>    
>>>>      "#address-cells":
>>>> @@ -30,19 +32,77 @@ properties:
>>>>    
>>>>      reg:
>>>>        minItems: 1
>>>> -    maxItems: 2
>>>> +    maxItems: 5
>>>>        description:
>>>> -      the first Address and length of the register set for the MDIO controller.
>>>> -      the second Address and length of the register for ethernet LDO, this second
>>>> -      address range is only required by the platform IPQ50xx.
>>>> +      the first Address and length of the register set for the MDIO controller,
>>>> +      the optional second, third and fourth address and length of the register
>>>> +      for ethernet LDO, these three address range are required by the platform
>>>> +      IPQ50xx/IPQ5332, the last address and length is for the CMN clock to
>>>> +      select the reference clock.
>>>> +
>>>> +  reg-names:
>>>> +    minItems: 1
>>>> +    maxItems: 5
>>>>    
>>>>      clocks:
>>>> +    minItems: 1
>>>>        items:
>>>>          - description: MDIO clock source frequency fixed to 100MHZ
>>>> +      - description: UNIPHY0 AHB clock source frequency fixed to 100MHZ
>>>> +      - description: UNIPHY1 AHB clock source frequency fixed to 100MHZ
>>>> +      - description: UNIPHY0 SYS clock source frequency fixed to 24MHZ
>>>> +      - description: UNIPHY1 SYS clock source frequency fixed to 24MHZ
>>>>    
>>>>      clock-names:
>>>> +    minItems: 1
>>>>        items:
>>>>          - const: gcc_mdio_ahb_clk
>>>> +      - const: uniphy0_ahb
>>>> +      - const: uniphy1_ahb
>>>> +      - const: uniphy0_sys
>>>> +      - const: uniphy1_sys
>>>> +
>>>> +  cmn-reference-clock:
>>>> +    $ref: /schemas/types.yaml#/definitions/uint32
>>>
>>> Nothing improved here
>>
>> With this change, the warning is not reported when i run
>> dt_binding_check, looks the new added property needs
>> the type ref to avoid the warning reported.
> 
> Nothing improved in the property name, nor its style, nor in the actual
> contents/values.

This property is for CMN PLL block reference clock configuration,
so i use this property name.

it will be appreciated if you can suggest a suitable name, thanks.

> 
> ...
> 
>>>> +  reset-gpios:
>>>> +    maxItems: 1
>>>> +
>>>> +  reset-assert-us:
>>>> +    maxItems: 1
>>>
>>> This does not look related to ipq5332.
>>
>> The reset gpio properties are needed on ipq5332, since qca8084 phy is
>> connected, which uses the MDIO bus level gpio reset.
> 
> I am talking about this property, not these properties.

ok.

> 
>>
>> Without declaring these gpio properties, the warning will be reported
>> by dt_binding_check.
> 
> How is it even possible to have warnings if there is no such node in
> DTS? We do not care about warnings in your downstream code.
> 
> 
> Best regards,
> Krzysztof
> 

If i do not declare the property "reset-assert-us" and 
"reset-deassert-us", the warning will be reported by "make 
dt_binding_check" since i
add a example in this file.
Krzysztof Kozlowski Dec. 15, 2023, 10:21 a.m. UTC | #7
On 15/12/2023 11:03, Jie Luo wrote:
>>>>> +  cmn-reference-clock:
>>>>> +    $ref: /schemas/types.yaml#/definitions/uint32
>>>>
>>>> Nothing improved here
>>>
>>> With this change, the warning is not reported when i run
>>> dt_binding_check, looks the new added property needs
>>> the type ref to avoid the warning reported.
>>
>> Nothing improved in the property name, nor its style, nor in the actual
>> contents/values.
> 
> This property is for CMN PLL block reference clock configuration,
> so i use this property name.
> 
> it will be appreciated if you can suggest a suitable name, thanks.

See example-schema about naming. Read writing-bindings. You need vendor
prefix for custom properties.

> 
>>
>> ...
>>
>>>>> +  reset-gpios:
>>>>> +    maxItems: 1
>>>>> +
>>>>> +  reset-assert-us:
>>>>> +    maxItems: 1
>>>>
>>>> This does not look related to ipq5332.
>>>
>>> The reset gpio properties are needed on ipq5332, since qca8084 phy is
>>> connected, which uses the MDIO bus level gpio reset.
>>
>> I am talking about this property, not these properties.
> 
> ok.
> 
>>
>>>
>>> Without declaring these gpio properties, the warning will be reported
>>> by dt_binding_check.
>>
>> How is it even possible to have warnings if there is no such node in
>> DTS? We do not care about warnings in your downstream code.
>>
>>
>> Best regards,
>> Krzysztof
>>
> 
> If i do not declare the property "reset-assert-us" and 
> "reset-deassert-us", the warning will be reported by "make 
> dt_binding_check" since i
> add a example in this file.

This argument does not make sense, sorry. Obviously if property is not
allowed, it should be removed.

Provide rationale, in terms of hardware, why this property must be added
and why it cannot be deduced from the compatible.

Best regards,
Krzysztof
Luo Jie Dec. 15, 2023, 12:03 p.m. UTC | #8
On 12/15/2023 6:21 PM, Krzysztof Kozlowski wrote:
> On 15/12/2023 11:03, Jie Luo wrote:
>>>>>> +  cmn-reference-clock:
>>>>>> +    $ref: /schemas/types.yaml#/definitions/uint32
>>>>>
>>>>> Nothing improved here
>>>>
>>>> With this change, the warning is not reported when i run
>>>> dt_binding_check, looks the new added property needs
>>>> the type ref to avoid the warning reported.
>>>
>>> Nothing improved in the property name, nor its style, nor in the actual
>>> contents/values.
>>
>> This property is for CMN PLL block reference clock configuration,
>> so i use this property name.
>>
>> it will be appreciated if you can suggest a suitable name, thanks.
> 
> See example-schema about naming. Read writing-bindings. You need vendor
> prefix for custom properties.

Ok, thanks.

> 
>>
>>>
>>> ...
>>>
>>>>>> +  reset-gpios:
>>>>>> +    maxItems: 1
>>>>>> +
>>>>>> +  reset-assert-us:
>>>>>> +    maxItems: 1
>>>>>
>>>>> This does not look related to ipq5332.
>>>>
>>>> The reset gpio properties are needed on ipq5332, since qca8084 phy is
>>>> connected, which uses the MDIO bus level gpio reset.
>>>
>>> I am talking about this property, not these properties.
>>
>> ok.
>>
>>>
>>>>
>>>> Without declaring these gpio properties, the warning will be reported
>>>> by dt_binding_check.
>>>
>>> How is it even possible to have warnings if there is no such node in
>>> DTS? We do not care about warnings in your downstream code.
>>>
>>>
>>> Best regards,
>>> Krzysztof
>>>
>>
>> If i do not declare the property "reset-assert-us" and
>> "reset-deassert-us", the warning will be reported by "make
>> dt_binding_check" since i
>> add a example in this file.
> 
> This argument does not make sense, sorry. Obviously if property is not
> allowed, it should be removed.
> 
> Provide rationale, in terms of hardware, why this property must be added
> and why it cannot be deduced from the compatible.
> 
> Best regards,
> Krzysztof
> 

So i can remove "reset-assert-us" and "reset-deassert-us" from the added
example to avoid the dt check warning? even these two properties are
needed to be defined in the device tree to make this driver working
correctly.
Krzysztof Kozlowski Dec. 15, 2023, 12:14 p.m. UTC | #9
On 15/12/2023 13:03, Jie Luo wrote:
>>> If i do not declare the property "reset-assert-us" and
>>> "reset-deassert-us", the warning will be reported by "make
>>> dt_binding_check" since i
>>> add a example in this file.
>>
>> This argument does not make sense, sorry. Obviously if property is not
>> allowed, it should be removed.
>>
>> Provide rationale, in terms of hardware, why this property must be added
>> and why it cannot be deduced from the compatible.
>>
>> Best regards,
>> Krzysztof
>>
> 
> So i can remove "reset-assert-us" and "reset-deassert-us" from the added
> example to avoid the dt check warning? even these two properties are
> needed to be defined in the device tree to make this driver working
> correctly.

Sorry, that does not answer my question at all. First, "Driver" is not
hardware. My second question was simply ignored. In the v2 thread you as
well respond with some short, unrelated sentences not answering to the
real questions. It's a waste of my time. Please reach internally in
Qualcomm for guidance how to upstream patches and how to write bindings.

Best regards,
Krzysztof
Luo Jie Dec. 15, 2023, 12:55 p.m. UTC | #10
On 12/15/2023 8:14 PM, Krzysztof Kozlowski wrote:
> On 15/12/2023 13:03, Jie Luo wrote:
>>>> If i do not declare the property "reset-assert-us" and
>>>> "reset-deassert-us", the warning will be reported by "make
>>>> dt_binding_check" since i
>>>> add a example in this file.
>>>
>>> This argument does not make sense, sorry. Obviously if property is not
>>> allowed, it should be removed.
>>>
>>> Provide rationale, in terms of hardware, why this property must be added
>>> and why it cannot be deduced from the compatible.
>>>
>>> Best regards,
>>> Krzysztof
>>>
>>
>> So i can remove "reset-assert-us" and "reset-deassert-us" from the added
>> example to avoid the dt check warning? even these two properties are
>> needed to be defined in the device tree to make this driver working
>> correctly.
> 
> Sorry, that does not answer my question at all. First, "Driver" is not
> hardware. My second question was simply ignored. In the v2 thread you as
> well respond with some short, unrelated sentences not answering to the
> real questions. It's a waste of my time. Please reach internally in
> Qualcomm for guidance how to upstream patches and how to write bindings.
> 
> Best regards,
> Krzysztof
> 

These properties "reset-assert-us" and "reset-deassert-us" are the
general properties from mdio.yaml, which are used when the MDIO
bus driver is registered by the MDIO framework.
The general DT property already supports to do the correct config,
then compatible string is not needed to be checked for doing the
configs.

i will check the binding examples to avoid this kind of problems.
Andrew Lunn Dec. 15, 2023, 1:34 p.m. UTC | #11
> These properties "reset-assert-us" and "reset-deassert-us" are the
> general properties from mdio.yaml, which are used when the MDIO
> bus driver is registered by the MDIO framework.
> The general DT property already supports to do the correct config,
> then compatible string is not needed to be checked for doing the
> configs.

Given the complexity of your device, i doubt you can make it work
without using a compatible containing the ID register values. That
will get your driver loaded, and the probe method called which can
then deal with all the clocks and resets in whatever way it wants.

    Andrew
Luo Jie Dec. 16, 2023, 1:23 p.m. UTC | #12
On 12/15/2023 9:34 PM, Andrew Lunn wrote:
>> These properties "reset-assert-us" and "reset-deassert-us" are the
>> general properties from mdio.yaml, which are used when the MDIO
>> bus driver is registered by the MDIO framework.
>> The general DT property already supports to do the correct config,
>> then compatible string is not needed to be checked for doing the
>> configs.
> 
> Given the complexity of your device, i doubt you can make it work
> without using a compatible containing the ID register values. That
> will get your driver loaded, and the probe method called which can
> then deal with all the clocks and resets in whatever way it wants.
> 
>      Andrew
> 

I misunderstood Krzysztof's suggestion in the previous message, i
thought the reset properties configuration is checked according
to the compatible string in the drive code.

Yes, these properties can be deduced from the compatible string in
the DT doc, i will update this in the next patch set.

Thanks for the comments and suggestion.
diff mbox series

Patch

diff --git a/Documentation/devicetree/bindings/net/qcom,ipq4019-mdio.yaml b/Documentation/devicetree/bindings/net/qcom,ipq4019-mdio.yaml
index 3407e909e8a7..79f8513739e7 100644
--- a/Documentation/devicetree/bindings/net/qcom,ipq4019-mdio.yaml
+++ b/Documentation/devicetree/bindings/net/qcom,ipq4019-mdio.yaml
@@ -20,6 +20,8 @@  properties:
           - enum:
               - qcom,ipq6018-mdio
               - qcom,ipq8074-mdio
+              - qcom,ipq9574-mdio
+              - qcom,ipq5332-mdio
           - const: qcom,ipq4019-mdio
 
   "#address-cells":
@@ -30,19 +32,77 @@  properties:
 
   reg:
     minItems: 1
-    maxItems: 2
+    maxItems: 5
     description:
-      the first Address and length of the register set for the MDIO controller.
-      the second Address and length of the register for ethernet LDO, this second
-      address range is only required by the platform IPQ50xx.
+      the first Address and length of the register set for the MDIO controller,
+      the optional second, third and fourth address and length of the register
+      for ethernet LDO, these three address range are required by the platform
+      IPQ50xx/IPQ5332, the last address and length is for the CMN clock to
+      select the reference clock.
+
+  reg-names:
+    minItems: 1
+    maxItems: 5
 
   clocks:
+    minItems: 1
     items:
       - description: MDIO clock source frequency fixed to 100MHZ
+      - description: UNIPHY0 AHB clock source frequency fixed to 100MHZ
+      - description: UNIPHY1 AHB clock source frequency fixed to 100MHZ
+      - description: UNIPHY0 SYS clock source frequency fixed to 24MHZ
+      - description: UNIPHY1 SYS clock source frequency fixed to 24MHZ
 
   clock-names:
+    minItems: 1
     items:
       - const: gcc_mdio_ahb_clk
+      - const: uniphy0_ahb
+      - const: uniphy1_ahb
+      - const: uniphy0_sys
+      - const: uniphy1_sys
+
+  cmn-reference-clock:
+    $ref: /schemas/types.yaml#/definitions/uint32
+    oneOf:
+      - items:
+          - enum:
+              - 0   # CMN PLL reference internal 48MHZ
+              - 1   # CMN PLL reference external 25MHZ
+              - 2   # CMN PLL reference external 31250KHZ
+              - 3   # CMN PLL reference external 40MHZ
+              - 4   # CMN PLL reference external 48MHZ
+              - 5   # CMN PLL reference external 50MHZ
+              - 6   # CMN PLL reference internal 96MHZ
+
+  clock-frequency:
+    oneOf:
+      - items:
+          - enum:
+              - 12500000
+              - 6250000
+              - 3125000
+              - 1562500
+              - 781250
+              - 390625
+    description:
+      The MDIO bus clock that must be output by the MDIO bus hardware,
+      only the listed frequencies above can be supported, other frequency
+      will cause malfunction. If absent, the default hardware value 0xff
+      is used, which means the default MDIO clock frequency 390625HZ, The
+      MDIO clock frequency is MDIO_SYS_CLK/(MDIO_CLK_DIV + 1), the SoC
+      MDIO_SYS_CLK is fixed to 100MHZ, the MDIO_CLK_DIV is from MDIO control
+      register, there is higher clock frequency requirement on the normal
+      working case where the MDIO slave devices support high clock frequency.
+
+  reset-gpios:
+    maxItems: 1
+
+  reset-assert-us:
+    maxItems: 1
+
+  reset-deassert-us:
+    maxItems: 1
 
 required:
   - compatible
@@ -61,6 +121,8 @@  allOf:
               - qcom,ipq5018-mdio
               - qcom,ipq6018-mdio
               - qcom,ipq8074-mdio
+              - qcom,ipq5332-mdio
+              - qcom,ipq9574-mdio
     then:
       required:
         - clocks
@@ -70,6 +132,20 @@  allOf:
         clocks: false
         clock-names: false
 
+  - if:
+      properties:
+        compatible:
+          contains:
+            enum:
+              - qcom,ipq5332-mdio
+    then:
+      properties:
+        clocks:
+          minItems: 5
+          maxItems: 5
+        reg-names:
+          minItems: 4
+
 unevaluatedProperties: false
 
 examples:
@@ -100,3 +176,62 @@  examples:
         reg = <4>;
       };
     };
+
+  - |
+    #include <dt-bindings/clock/qcom,ipq5332-gcc.h>
+    #include <dt-bindings/gpio/gpio.h>
+
+    mdio@90000 {
+      #address-cells = <1>;
+      #size-cells = <0>;
+      compatible = "qcom,ipq5332-mdio",
+                   "qcom,ipq4019-mdio";
+      cmn-reference-clock = <0>;
+      clock-frequency = <6250000>;
+
+      reset-gpios = <&tlmm 51 GPIO_ACTIVE_LOW>;
+      reset-assert-us = <100000>;
+      reset-deassert-us = <100000>;
+
+      reg = <0x90000 0x64>,
+            <0x9B000 0x800>,
+            <0x7A00610 0x4>,
+            <0x7A10610 0x4>;
+
+      reg-names = "mdio",
+                  "cmn_blk",
+                  "eth_ldo1",
+                  "eth_ldo2";
+
+      clocks = <&gcc GCC_MDIO_AHB_CLK>,
+               <&gcc GCC_UNIPHY0_AHB_CLK>,
+               <&gcc GCC_UNIPHY1_AHB_CLK>,
+               <&gcc GCC_UNIPHY0_SYS_CLK>,
+               <&gcc GCC_UNIPHY1_SYS_CLK>;
+
+      clock-names = "gcc_mdio_ahb_clk",
+                    "uniphy0_ahb",
+                    "uniphy1_ahb",
+                    "uniphy0_sys",
+                    "uniphy1_sys";
+
+      qca8kphy0: ethernet-phy@1 {
+        compatible = "ethernet-phy-id004d.d180";
+        reg = <1>;
+      };
+
+      qca8kphy1: ethernet-phy@2 {
+        compatible = "ethernet-phy-id004d.d180";
+        reg = <2>;
+      };
+
+      qca8kphy2: ethernet-phy@3 {
+        compatible = "ethernet-phy-id004d.d180";
+        reg = <3>;
+      };
+
+      qca8kphy3: ethernet-phy@4 {
+        compatible = "ethernet-phy-id004d.d180";
+        reg = <4>;
+      };
+    };