[PATCH 02/41] dt-bindings: phy: migrate combo QMP PHY bindings to qcom,sc8280xp-qmp-usb43dp-phy.yaml

Johan Hovold johan at kernel.org
Fri Mar 24 00:54:29 PDT 2023


On Fri, Mar 24, 2023 at 05:24:35AM +0300, Dmitry Baryshkov wrote:
> Migrate legacy bindings (described in qcom,sc7180-qmp-usb3-dp-phy.yaml)
> to qcom,sc8280xp-qmp-usb43dp-phy.yaml. This removes a need to declare
> the child PHY node or split resource regions.
> 
> Signed-off-by: Dmitry Baryshkov <dmitry.baryshkov at linaro.org>
> ---
>  .../phy/qcom,sc7180-qmp-usb3-dp-phy.yaml      | 276 ------------------
>  .../phy/qcom,sc8280xp-qmp-usb43dp-phy.yaml    | 124 +++++++-
>  2 files changed, 111 insertions(+), 289 deletions(-)
>  delete mode 100644 Documentation/devicetree/bindings/phy/qcom,sc7180-qmp-usb3-dp-phy.yaml
> 
> diff --git a/Documentation/devicetree/bindings/phy/qcom,sc7180-qmp-usb3-dp-phy.yaml b/Documentation/devicetree/bindings/phy/qcom,sc7180-qmp-usb3-dp-phy.yaml
> deleted file mode 100644
> index 0ef2c9b9d466..000000000000
> --- a/Documentation/devicetree/bindings/phy/qcom,sc7180-qmp-usb3-dp-phy.yaml
> +++ /dev/null
> @@ -1,276 +0,0 @@
> -# SPDX-License-Identifier: (GPL-2.0 OR BSD-2-Clause)
> -
> -%YAML 1.2
> ----
> -$id: http://devicetree.org/schemas/phy/qcom,sc7180-qmp-usb3-dp-phy.yaml#
> -$schema: http://devicetree.org/meta-schemas/core.yaml#
> -
> -title: Qualcomm QMP USB3 DP PHY controller (SC7180)
> -
> -description:
> -  The QMP PHY controller supports physical layer functionality for a number of
> -  controllers on Qualcomm chipsets, such as, PCIe, UFS and USB.
> -
> -  Note that these bindings are for SoCs up to SC8180X. For newer SoCs, see
> -  qcom,sc8280xp-qmp-usb43dp-phy.yaml.
> -
> -maintainers:
> -  - Wesley Cheng <quic_wcheng at quicinc.com>
> -
> -properties:
> -  compatible:
> -    oneOf:
> -      - enum:
> -          - qcom,sc7180-qmp-usb3-dp-phy
> -          - qcom,sc8180x-qmp-usb3-dp-phy
> -          - qcom,sdm845-qmp-usb3-dp-phy
> -          - qcom,sm8250-qmp-usb3-dp-phy
> -      - items:
> -          - enum:
> -              - qcom,sc7280-qmp-usb3-dp-phy
> -          - const: qcom,sm8250-qmp-usb3-dp-phy
> -
> -  reg:
> -    items:
> -      - description: Address and length of PHY's USB serdes block.
> -      - description: Address and length of the DP_COM control block.
> -      - description: Address and length of PHY's DP serdes block.
> -
> -  reg-names:
> -    items:
> -      - const: usb
> -      - const: dp_com
> -      - const: dp
> -
> -  "#address-cells":
> -    enum: [ 1, 2 ]
> -
> -  "#size-cells":
> -    enum: [ 1, 2 ]
> -
> -  ranges: true
> -
> -  clocks:
> -    minItems: 3
> -    maxItems: 4
> -
> -  clock-names:
> -    minItems: 3
> -    maxItems: 4
> -
> -  power-domains:
> -    maxItems: 1
> -
> -  resets:
> -    items:
> -      - description: reset of phy block.
> -      - description: phy common block reset.
> -
> -  reset-names:
> -    items:
> -      - const: phy
> -      - const: common
> -
> -  vdda-phy-supply:
> -    description:
> -      Phandle to a regulator supply to PHY core block.
> -
> -  vdda-pll-supply:
> -    description:
> -      Phandle to 1.8V regulator supply to PHY refclk pll block.
> -
> -  vddp-ref-clk-supply:
> -    description:
> -      Phandle to a regulator supply to any specific refclk pll block.
> -
> -# Required nodes:
> -patternProperties:
> -  "^usb3-phy@[0-9a-f]+$":
> -    type: object
> -    additionalProperties: false
> -    description:
> -      The USB3 PHY.
> -
> -    properties:
> -      reg:
> -        items:
> -          - description: Address and length of TX.
> -          - description: Address and length of RX.
> -          - description: Address and length of PCS.
> -          - description: Address and length of TX2.
> -          - description: Address and length of RX2.
> -          - description: Address and length of pcs_misc.
> -
> -      clocks:
> -        items:
> -          - description: pipe clock
> -
> -      clock-names:
> -        deprecated: true
> -        items:
> -          - const: pipe0
> -
> -      clock-output-names:
> -        items:
> -          - const: usb3_phy_pipe_clk_src
> -
> -      '#clock-cells':
> -        const: 0
> -
> -      '#phy-cells':
> -        const: 0
> -
> -    required:
> -      - reg
> -      - clocks
> -      - '#clock-cells'
> -      - '#phy-cells'
> -
> -  "^dp-phy@[0-9a-f]+$":
> -    type: object
> -    additionalProperties: false
> -    description:
> -      The DP PHY.
> -
> -    properties:
> -      reg:
> -        items:
> -          - description: Address and length of TX.
> -          - description: Address and length of RX.
> -          - description: Address and length of PCS.
> -          - description: Address and length of TX2.
> -          - description: Address and length of RX2.
> -
> -      '#clock-cells':
> -        const: 1
> -
> -      '#phy-cells':
> -        const: 0
> -
> -    required:
> -      - reg
> -      - '#clock-cells'
> -      - '#phy-cells'
> -
> -required:
> -  - compatible
> -  - reg
> -  - "#address-cells"
> -  - "#size-cells"
> -  - ranges
> -  - clocks
> -  - clock-names
> -  - resets
> -  - reset-names
> -  - vdda-phy-supply
> -  - vdda-pll-supply
> -
> -allOf:
> -  - if:
> -      properties:
> -        compatible:
> -          enum:
> -            - qcom,sc7180-qmp-usb3-dp-phy
> -            - qcom,sdm845-qmp-usb3-dp-phy
> -    then:
> -      properties:
> -        clocks:
> -          items:
> -            - description: Phy aux clock
> -            - description: Phy config clock
> -            - description: 19.2 MHz ref clk
> -            - description: Phy common block aux clock
> -        clock-names:
> -          items:
> -            - const: aux
> -            - const: cfg_ahb
> -            - const: ref
> -            - const: com_aux
> -
> -  - if:
> -      properties:
> -        compatible:
> -          enum:
> -            - qcom,sc8180x-qmp-usb3-dp-phy
> -    then:
> -      properties:
> -        clocks:
> -          items:
> -            - description: Phy aux clock
> -            - description: 19.2 MHz ref clk
> -            - description: Phy common block aux clock
> -        clock-names:
> -          items:
> -            - const: aux
> -            - const: ref
> -            - const: com_aux
> -
> -  - if:
> -      properties:
> -        compatible:
> -          enum:
> -            - qcom,sm8250-qmp-usb3-dp-phy
> -    then:
> -      properties:
> -        clocks:
> -          items:
> -            - description: Phy aux clock
> -            - description: Board XO source
> -            - description: Phy common block aux clock
> -        clock-names:
> -          items:
> -            - const: aux
> -            - const: ref_clk_src
> -            - const: com_aux
> -
> -additionalProperties: false
> -
> -examples:
> -  - |
> -    #include <dt-bindings/clock/qcom,gcc-sdm845.h>
> -    usb_1_qmpphy: phy-wrapper at 88e9000 {
> -        compatible = "qcom,sdm845-qmp-usb3-dp-phy";
> -        reg = <0x088e9000 0x18c>,
> -              <0x088e8000 0x10>,
> -              <0x088ea000 0x40>;
> -        reg-names = "usb", "dp_com", "dp";
> -        #address-cells = <1>;
> -        #size-cells = <1>;
> -        ranges = <0x0 0x088e9000 0x2000>;
> -
> -        clocks = <&gcc GCC_USB3_PRIM_PHY_AUX_CLK>,
> -                 <&gcc GCC_USB_PHY_CFG_AHB2PHY_CLK>,
> -                 <&gcc GCC_USB3_PRIM_CLKREF_CLK>,
> -                 <&gcc GCC_USB3_PRIM_PHY_COM_AUX_CLK>;
> -        clock-names = "aux", "cfg_ahb", "ref", "com_aux";
> -
> -        resets = <&gcc GCC_USB3_PHY_PRIM_BCR>,
> -                 <&gcc GCC_USB3_DP_PHY_PRIM_BCR>;
> -        reset-names = "phy", "common";
> -
> -        vdda-phy-supply = <&vdda_usb2_ss_1p2>;
> -        vdda-pll-supply = <&vdda_usb2_ss_core>;
> -
> -        usb3-phy at 200 {
> -            reg = <0x200 0x128>,
> -                  <0x400 0x200>,
> -                  <0xc00 0x218>,
> -                  <0x600 0x128>,
> -                  <0x800 0x200>,
> -                  <0xa00 0x100>;
> -            #clock-cells = <0>;
> -            #phy-cells = <0>;
> -            clocks = <&gcc GCC_USB3_PRIM_PHY_PIPE_CLK>;
> -            clock-output-names = "usb3_phy_pipe_clk_src";
> -        };
> -
> -        dp-phy at 88ea200 {
> -            reg = <0xa200 0x200>,
> -                  <0xa400 0x200>,
> -                  <0xaa00 0x200>,
> -                  <0xa600 0x200>,
> -                  <0xa800 0x200>;
> -            #clock-cells = <1>;
> -            #phy-cells = <0>;
> -        };
> -    };
> diff --git a/Documentation/devicetree/bindings/phy/qcom,sc8280xp-qmp-usb43dp-phy.yaml b/Documentation/devicetree/bindings/phy/qcom,sc8280xp-qmp-usb43dp-phy.yaml
> index 3cd5fc3e8fab..484f321aefce 100644
> --- a/Documentation/devicetree/bindings/phy/qcom,sc8280xp-qmp-usb43dp-phy.yaml
> +++ b/Documentation/devicetree/bindings/phy/qcom,sc8280xp-qmp-usb43dp-phy.yaml
> @@ -15,25 +15,32 @@ description:
>  
>  properties:
>    compatible:
> -    enum:
> -      - qcom,sc8280xp-qmp-usb43dp-phy
> -      - qcom,sm6350-qmp-usb3-dp-phy
> -      - qcom,sm8350-qmp-usb3-dp-phy
> -      - qcom,sm8450-qmp-usb3-dp-phy
> -      - qcom,sm8550-qmp-usb3-dp-phy
> +    oneOf:
> +      - enum:
> +          - qcom,sc7180-qmp-usb3-dp-phy
> +          - qcom,sc8180x-qmp-usb3-dp-phy
> +          - qcom,sc8280xp-qmp-usb43dp-phy
> +          - qcom,sdm845-qmp-usb3-dp-phy
> +          - qcom,sm6350-qmp-usb3-dp-phy
> +          - qcom,sm8250-qmp-usb3-dp-phy
> +          - qcom,sm8350-qmp-usb3-dp-phy
> +          - qcom,sm8450-qmp-usb3-dp-phy
> +          - qcom,sm8550-qmp-usb3-dp-phy
> +      - items:
> +          - enum:
> +              - qcom,sc7280-qmp-usb3-dp-phy
> +          - const: qcom,sm8250-qmp-usb3-dp-phy

Why are you carrying over this mess to a new binding? Again, this is the
time to get rid of legacy cruft.

>    reg:
>      maxItems: 1
>  
>    clocks:
> -    maxItems: 4
> +    minItems: 3
> +    maxItems: 5
>  
>    clock-names:
> -    items:
> -      - const: aux
> -      - const: ref
> -      - const: com_aux
> -      - const: usb3_pipe
> +    minItems: 3
> +    maxItems: 5
>  
>    power-domains:
>      maxItems: 1
> @@ -50,6 +57,8 @@ properties:
>  
>    vdda-pll-supply: true
>  
> +  vddp-ref-clk-supply: true
> +
>    "#clock-cells":
>      const: 1
>      description:
> @@ -65,7 +74,6 @@ required:
>    - reg
>    - clocks
>    - clock-names
> -  - power-domains
>    - resets
>    - reset-names
>    - vdda-phy-supply
> @@ -73,6 +81,71 @@ required:
>    - "#clock-cells"
>    - "#phy-cells"
>  
> +allOf:
> +  - if:
> +      properties:
> +        compatible:
> +          enum:
> +            - qcom,sc7180-qmp-usb3-dp-phy
> +            - qcom,sdm845-qmp-usb3-dp-phy
> +    then:
> +      properties:
> +        clocks:
> +          items:
> +            - description: Phy aux clock
> +            - description: Phy config clock
> +            - description: 19.2 MHz ref clk
> +            - description: Phy common block aux clock
> +            - description: USB3 PIPE clock

These descriptions don't add anything and should not be carried over.

> +        clock-names:
> +          items:
> +            - const: aux
> +            - const: cfg_ahb
> +            - const: ref
> +            - const: com_aux
> +            - const: usb3_pipe

Should the cfg_ahb clock be moved last so that you could unify with the
next set?

> +
> +  - if:
> +      properties:
> +        compatible:
> +          enum:
> +            - qcom,sc8180x-qmp-usb3-dp-phy
> +            - qcom,sc8280xp-qmp-usb3-dp-phy
> +    then:
> +      properties:
> +        clocks:
> +          items:
> +            - description: Phy aux clock
> +            - description: 19.2 MHz ref clk
> +            - description: Phy common block aux clock
> +            - description: USB3 PIPE clock

Please do not add these either.

> +        clock-names:
> +          items:
> +            - const: aux
> +            - const: ref
> +            - const: com_aux
> +            - const: usb3_pipe
> +
> +  - if:
> +      properties:
> +        compatible:
> +          enum:
> +            - qcom,sm8250-qmp-usb3-dp-phy
> +    then:
> +      properties:
> +        clocks:
> +          items:
> +            - description: Phy aux clock
> +            - description: Board XO source
> +            - description: Phy common block aux clock
> +            - description: USB3 PIPE clock
> +        clock-names:
> +          items:
> +            - const: aux
> +            - const: ref_clk_src

Again, no 'src' clock belong in the binding.

> +            - const: com_aux
> +            - const: usb3_pipe
> +
>  additionalProperties: false
>  
>  examples:
> @@ -101,3 +174,28 @@ examples:
>        #clock-cells = <1>;
>        #phy-cells = <1>;
>      };
> +  - |
> +    #define GCC_USB3_PRIM_CLKREF_CLK     151
> +    #define GCC_USB_PHY_CFG_AHB2PHY_CLK  161
> +
> +    phy at 88e8000 {
> +        compatible = "qcom,sdm845-qmp-usb3-dp-phy";
> +        reg = <0x088e8000 0x3000>;
> +
> +        clocks = <&gcc GCC_USB3_PRIM_PHY_AUX_CLK>,
> +                 <&gcc GCC_USB_PHY_CFG_AHB2PHY_CLK>,
> +                 <&gcc GCC_USB3_PRIM_CLKREF_CLK>,
> +                 <&gcc GCC_USB3_PRIM_PHY_COM_AUX_CLK>,
> +                 <&gcc GCC_USB3_PRIM_PHY_PIPE_CLK>;
> +        clock-names = "aux", "cfg_ahb", "ref", "com_aux", "usb3_pipe";
> +
> +        resets = <&gcc GCC_USB3_PHY_PRIM_BCR>,
> +                 <&gcc GCC_USB3_DP_PHY_PRIM_BCR>;
> +        reset-names = "phy", "common";
> +
> +        vdda-phy-supply = <&vdda_usb2_ss_1p2>;
> +        vdda-pll-supply = <&vdda_usb2_ss_core>;
> +
> +        #clock-cells = <1>;
> +        #phy-cells = <1>;
> +    };

I see no point in adding this example either.

Johan



More information about the linux-phy mailing list