Commit 16946a60 authored by Krzysztof Kozlowski's avatar Krzysztof Kozlowski Committed by Greg Kroah-Hartman
Browse files

dt-bindings: usb: qcom,dwc3: fix clock matching



The bindings defined strict clocks but several variants do not use them
in such order.  Split the clocks and clock-names per variants to match
current DTS usage.  In few cases this might not be complete match, due
to incomplete DTS.

Signed-off-by: default avatarKrzysztof Kozlowski <krzysztof.kozlowski@linaro.org>
Acked-by: default avatarRob Herring <robh@kernel.org>
Link: https://lore.kernel.org/r/20220504131923.214367-5-krzysztof.kozlowski@linaro.org


Signed-off-by: default avatarGreg Kroah-Hartman <gregkh@linuxfoundation.org>
parent d5591aa0
Loading
Loading
Loading
Loading
+200 −22
Original line number Diff line number Diff line
@@ -55,26 +55,22 @@ properties:
    maxItems: 1

  clocks:
    description:
      A list of phandle and clock-specifier pairs for the clocks
      listed in clock-names.
    items:
      - description: System Config NOC clock.
      - description: Master/Core clock, has to be >= 125 MHz
          for SS operation and >= 60MHz for HS operation.
      - description: System bus AXI clock.
      - description: Mock utmi clock needed for ITP/SOF generation
          in host mode. Its frequency should be 19.2MHz.
      - description: Sleep clock, used for wakeup when
          USB3 core goes into low power mode (U3).
    description: |
      Several clocks are used, depending on the variant. Typical ones are::
       - cfg_noc:: System Config NOC clock.
       - core:: Master/Core clock, has to be >= 125 MHz for SS operation and >=
                60MHz for HS operation.
       - iface:: System bus AXI clock.
       - sleep:: Sleep clock, used for wakeup when USB3 core goes into low
                 power mode (U3).
       - mock_utmi:: Mock utmi clock needed for ITP/SOF generation in host
                     mode. Its frequency should be 19.2MHz.
    minItems: 1
    maxItems: 6

  clock-names:
    items:
      - const: cfg_noc
      - const: core
      - const: iface
      - const: mock_utmi
      - const: sleep
    minItems: 1
    maxItems: 6

  assigned-clocks:
    items:
@@ -137,6 +133,185 @@ required:
  - interrupts
  - interrupt-names

allOf:
  - if:
      properties:
        compatible:
          contains:
            enum:
              - qcom,ipq4019-dwc3
    then:
      properties:
        clocks:
          maxItems: 3
        clock-names:
          items:
            - const: core
            - const: sleep
            - const: mock_utmi

  - if:
      properties:
        compatible:
          contains:
            enum:
              - qcom,ipq8064-dwc3
    then:
      properties:
        clocks:
          items:
            - description: Master/Core clock, has to be >= 125 MHz
                for SS operation and >= 60MHz for HS operation.
        clock-names:
          items:
            - const: core

  - if:
      properties:
        compatible:
          contains:
            enum:
              - qcom,msm8953-dwc3
              - qcom,msm8996-dwc3
              - qcom,msm8998-dwc3
              - qcom,sc7180-dwc3
              - qcom,sc7280-dwc3
              - qcom,sdm845-dwc3
              - qcom,sdx55-dwc3
              - qcom,sm6350-dwc3
    then:
      properties:
        clocks:
          maxItems: 5
        clock-names:
          items:
            - const: cfg_noc
            - const: core
            - const: iface
            - const: sleep
            - const: mock_utmi

  - if:
      properties:
        compatible:
          contains:
            enum:
              - qcom,ipq6018-dwc3
    then:
      properties:
        clocks:
          minItems: 3
          maxItems: 4
        clock-names:
          oneOf:
            - items:
                - const: core
                - const: sleep
                - const: mock_utmi
            - items:
                - const: cfg_noc
                - const: core
                - const: sleep
                - const: mock_utmi

  - if:
      properties:
        compatible:
          contains:
            enum:
              - qcom,ipq8074-dwc3
    then:
      properties:
        clocks:
          maxItems: 4
        clock-names:
          items:
            - const: cfg_noc
            - const: core
            - const: sleep
            - const: mock_utmi

  - if:
      properties:
        compatible:
          contains:
            enum:
              - qcom,msm8994-dwc3
              - qcom,qcs404-dwc3
    then:
      properties:
        clocks:
          maxItems: 4
        clock-names:
          items:
            - const: core
            - const: iface
            - const: sleep
            - const: mock_utmi

  - if:
      properties:
        compatible:
          contains:
            enum:
              - qcom,sdm660-dwc3
    then:
      properties:
        clocks:
          minItems: 6
        clock-names:
          items:
            - const: cfg_noc
            - const: core
            - const: iface
            - const: sleep
            - const: mock_utmi
            - const: bus

  - if:
      properties:
        compatible:
          contains:
            enum:
              - qcom,sm6125-dwc3
              - qcom,sm8150-dwc3
              - qcom,sm8250-dwc3
              - qcom,sm8450-dwc3
    then:
      properties:
        clocks:
          minItems: 6
        clock-names:
          items:
            - const: cfg_noc
            - const: core
            - const: iface
            - const: sleep
            - const: mock_utmi
            - const: xo

  - if:
      properties:
        compatible:
          contains:
            enum:
              - qcom,sm8350-dwc3
    then:
      properties:
        clocks:
          minItems: 5
          maxItems: 6
        clock-names:
          minItems: 5
          items:
            - const: cfg_noc
            - const: core
            - const: iface
            - const: sleep
            - const: mock_utmi
            - const: xo


additionalProperties: false

examples:
@@ -158,10 +333,13 @@ examples:
            clocks = <&gcc GCC_CFG_NOC_USB3_PRIM_AXI_CLK>,
                     <&gcc GCC_USB30_PRIM_MASTER_CLK>,
                     <&gcc GCC_AGGRE_USB3_PRIM_AXI_CLK>,
                     <&gcc GCC_USB30_PRIM_MOCK_UTMI_CLK>,
                     <&gcc GCC_USB30_PRIM_SLEEP_CLK>;
            clock-names = "cfg_noc", "core", "iface", "mock_utmi",
                      "sleep";
                     <&gcc GCC_USB30_PRIM_SLEEP_CLK>,
                     <&gcc GCC_USB30_PRIM_MOCK_UTMI_CLK>;
            clock-names = "cfg_noc",
                          "core",
                          "iface",
                          "sleep",
                          "mock_utmi";

            assigned-clocks = <&gcc GCC_USB30_PRIM_MOCK_UTMI_CLK>,
                          <&gcc GCC_USB30_PRIM_MASTER_CLK>;