1# SPDX-License-Identifier: (GPL-2.0 OR BSD-2-Clause)
2%YAML 1.2
3---
4$id: http://devicetree.org/schemas/phy/qcom,sc8280xp-qmp-usb43dp-phy.yaml#
5$schema: http://devicetree.org/meta-schemas/core.yaml#
6
7title: Qualcomm QMP USB4-USB3-DP PHY controller (SC8280XP)
8
9maintainers:
10  - Vinod Koul <vkoul@kernel.org>
11
12description:
13  The QMP PHY controller supports physical layer functionality for a number of
14  controllers on Qualcomm chipsets, such as, PCIe, UFS and USB.
15
16properties:
17  compatible:
18    enum:
19      - qcom,sc7180-qmp-usb3-dp-phy
20      - qcom,sc7280-qmp-usb3-dp-phy
21      - qcom,sc8180x-qmp-usb3-dp-phy
22      - qcom,sc8280xp-qmp-usb43dp-phy
23      - qcom,sdm845-qmp-usb3-dp-phy
24      - qcom,sm6350-qmp-usb3-dp-phy
25      - qcom,sm8150-qmp-usb3-dp-phy
26      - qcom,sm8250-qmp-usb3-dp-phy
27      - qcom,sm8350-qmp-usb3-dp-phy
28      - qcom,sm8450-qmp-usb3-dp-phy
29      - qcom,sm8550-qmp-usb3-dp-phy
30
31  reg:
32    maxItems: 1
33
34  clocks:
35    minItems: 4
36    maxItems: 5
37
38  clock-names:
39    minItems: 4
40    items:
41      - const: aux
42      - const: ref
43      - const: com_aux
44      - const: usb3_pipe
45      - const: cfg_ahb
46
47  power-domains:
48    maxItems: 1
49
50  resets:
51    maxItems: 2
52
53  reset-names:
54    items:
55      - const: phy
56      - const: common
57
58  vdda-phy-supply: true
59
60  vdda-pll-supply: true
61
62  "#clock-cells":
63    const: 1
64    description:
65      See include/dt-bindings/phy/phy-qcom-qmp.h
66
67  "#phy-cells":
68    const: 1
69    description:
70      See include/dt-bindings/phy/phy-qcom-qmp.h
71
72  orientation-switch:
73    description:
74      Flag the PHY as possible handler of USB Type-C orientation switching
75    type: boolean
76
77  ports:
78    $ref: /schemas/graph.yaml#/properties/ports
79    properties:
80      port@0:
81        $ref: /schemas/graph.yaml#/properties/port
82        description: Output endpoint of the PHY
83
84      port@1:
85        $ref: /schemas/graph.yaml#/properties/port
86        description: Incoming endpoint from the USB controller
87
88      port@2:
89        $ref: /schemas/graph.yaml#/properties/port
90        description: Incoming endpoint from the DisplayPort controller
91
92required:
93  - compatible
94  - reg
95  - clocks
96  - clock-names
97  - resets
98  - reset-names
99  - vdda-phy-supply
100  - vdda-pll-supply
101  - "#clock-cells"
102  - "#phy-cells"
103
104allOf:
105  - if:
106      properties:
107        compatible:
108          enum:
109            - qcom,sc7180-qmp-usb3-dp-phy
110            - qcom,sdm845-qmp-usb3-dp-phy
111    then:
112      properties:
113        clocks:
114          maxItems: 5
115        clock-names:
116          maxItems: 5
117    else:
118      properties:
119        clocks:
120          maxItems: 4
121        clock-names:
122          maxItems: 4
123
124  - if:
125      properties:
126        compatible:
127          enum:
128            - qcom,sc8280xp-qmp-usb43dp-phy
129            - qcom,sm6350-qmp-usb3-dp-phy
130            - qcom,sm8550-qmp-usb3-dp-phy
131    then:
132      required:
133        - power-domains
134    else:
135      properties:
136        power-domains: false
137
138additionalProperties: false
139
140examples:
141  - |
142    #include <dt-bindings/clock/qcom,gcc-sc8280xp.h>
143
144    phy@88eb000 {
145      compatible = "qcom,sc8280xp-qmp-usb43dp-phy";
146      reg = <0x088eb000 0x4000>;
147
148      clocks = <&gcc GCC_USB3_PRIM_PHY_AUX_CLK>,
149               <&gcc GCC_USB4_EUD_CLKREF_CLK>,
150               <&gcc GCC_USB3_PRIM_PHY_COM_AUX_CLK>,
151               <&gcc GCC_USB3_PRIM_PHY_PIPE_CLK>;
152      clock-names = "aux", "ref", "com_aux", "usb3_pipe";
153
154      power-domains = <&gcc USB30_PRIM_GDSC>;
155
156      resets = <&gcc GCC_USB3_PHY_PRIM_BCR>,
157               <&gcc GCC_USB4_DP_PHY_PRIM_BCR>;
158      reset-names = "phy", "common";
159
160      vdda-phy-supply = <&vreg_l9d>;
161      vdda-pll-supply = <&vreg_l4d>;
162
163      orientation-switch;
164
165      #clock-cells = <1>;
166      #phy-cells = <1>;
167
168      ports {
169          #address-cells = <1>;
170          #size-cells = <0>;
171
172          port@0 {
173              reg = <0>;
174
175              endpoint {
176                  remote-endpoint = <&typec_connector_ss>;
177              };
178          };
179
180          port@1 {
181              reg = <1>;
182
183              endpoint {
184                  remote-endpoint = <&dwc3_ss_out>;
185              };
186          };
187
188          port@2 {
189              reg = <2>;
190
191              endpoint {
192                  remote-endpoint = <&mdss_dp_out>;
193              };
194          };
195      };
196    };
197