1# SPDX-License-Identifier: (GPL-2.0 OR BSD-2-Clause)
2
3%YAML 1.2
4---
5$id: "http://devicetree.org/schemas/phy/qcom,qusb2-phy.yaml#"
6$schema: "http://devicetree.org/meta-schemas/core.yaml#"
7
8title: Qualcomm QUSB2 phy controller
9
10maintainers:
11  - Manu Gautam <mgautam@codeaurora.org>
12
13description:
14  QUSB2 controller supports LS/FS/HS usb connectivity on Qualcomm chipsets.
15
16properties:
17  compatible:
18    oneOf:
19      - items:
20          - enum:
21              - qcom,ipq8074-qusb2-phy
22              - qcom,msm8996-qusb2-phy
23              - qcom,msm8998-qusb2-phy
24              - qcom,sdm660-qusb2-phy
25              - qcom,ipq6018-qusb2-phy
26      - items:
27          - enum:
28              - qcom,sc7180-qusb2-phy
29              - qcom,sdm845-qusb2-phy
30          - const: qcom,qusb2-v2-phy
31  reg:
32    maxItems: 1
33
34  "#phy-cells":
35    const: 0
36
37  clocks:
38    minItems: 2
39    maxItems: 3
40    items:
41      - description: phy config clock
42      - description: 19.2 MHz ref clk
43      - description: phy interface clock (Optional)
44
45  clock-names:
46    minItems: 2
47    maxItems: 3
48    items:
49      - const: cfg_ahb
50      - const: ref
51      - const: iface
52
53  vdda-pll-supply:
54    description:
55      Phandle to 1.8V regulator supply to PHY refclk pll block.
56
57  vdda-phy-dpdm-supply:
58    description:
59      Phandle to 3.1V regulator supply to Dp/Dm port signals.
60
61  resets:
62    maxItems: 1
63    description:
64      Phandle to reset to phy block.
65
66  nvmem-cells:
67    maxItems: 1
68    description:
69      Phandle to nvmem cell that contains 'HS Tx trim'
70      tuning parameter value for qusb2 phy.
71
72  qcom,tcsr-syscon:
73    description:
74      Phandle to TCSR syscon register region.
75    $ref: /schemas/types.yaml#/definitions/phandle
76
77if:
78  properties:
79    compatible:
80      contains:
81        const: qcom,qusb2-v2-phy
82then:
83  properties:
84    qcom,imp-res-offset-value:
85      description:
86        It is a 6 bit value that specifies offset to be
87        added to PHY refgen RESCODE via IMP_CTRL1 register. It is a PHY
88        tuning parameter that may vary for different boards of same SOC.
89      $ref: /schemas/types.yaml#/definitions/uint32
90      minimum: 0
91      maximum: 63
92      default: 0
93
94    qcom,bias-ctrl-value:
95      description:
96        It is a 6 bit value that specifies bias-ctrl-value. It is a PHY
97        tuning parameter that may vary for different boards of same SOC.
98      $ref: /schemas/types.yaml#/definitions/uint32
99      minimum: 0
100      maximum: 63
101      default: 32
102
103    qcom,charge-ctrl-value:
104      description:
105        It is a 2 bit value that specifies charge-ctrl-value. It is a PHY
106        tuning parameter that may vary for different boards of same SOC.
107      $ref: /schemas/types.yaml#/definitions/uint32
108      minimum: 0
109      maximum: 3
110      default: 0
111
112    qcom,hstx-trim-value:
113      description:
114        It is a 4 bit value that specifies tuning for HSTX
115        output current.
116        Possible range is - 15mA to 24mA (stepsize of 600 uA).
117        See dt-bindings/phy/phy-qcom-qusb2.h for applicable values.
118      $ref: /schemas/types.yaml#/definitions/uint32
119      minimum: 0
120      maximum: 15
121      default: 3
122
123    qcom,preemphasis-level:
124      description:
125        It is a 2 bit value that specifies pre-emphasis level.
126        Possible range is 0 to 15% (stepsize of 5%).
127        See dt-bindings/phy/phy-qcom-qusb2.h for applicable values.
128      $ref: /schemas/types.yaml#/definitions/uint32
129      minimum: 0
130      maximum: 3
131      default: 2
132
133    qcom,preemphasis-width:
134      description:
135        It is a 1 bit value that specifies how long the HSTX
136        pre-emphasis (specified using qcom,preemphasis-level) must be in
137        effect. Duration could be half-bit of full-bit.
138        See dt-bindings/phy/phy-qcom-qusb2.h for applicable values.
139      $ref: /schemas/types.yaml#/definitions/uint32
140      minimum: 0
141      maximum: 1
142      default: 0
143
144    qcom,hsdisc-trim-value:
145      description:
146        It is a 2 bit value tuning parameter that control disconnect
147        threshold and may vary for different boards of same SOC.
148      $ref: /schemas/types.yaml#/definitions/uint32
149      minimum: 0
150      maximum: 3
151      default: 0
152
153required:
154  - compatible
155  - reg
156  - "#phy-cells"
157  - clocks
158  - clock-names
159  - vdda-pll-supply
160  - vdda-phy-dpdm-supply
161  - resets
162
163additionalProperties: false
164
165examples:
166  - |
167    #include <dt-bindings/clock/qcom,gcc-msm8996.h>
168    hsusb_phy: phy@7411000 {
169        compatible = "qcom,msm8996-qusb2-phy";
170        reg = <0x7411000 0x180>;
171        #phy-cells = <0>;
172
173        clocks = <&gcc GCC_USB_PHY_CFG_AHB2PHY_CLK>,
174                 <&gcc GCC_RX1_USB2_CLKREF_CLK>;
175        clock-names = "cfg_ahb", "ref";
176
177        vdda-pll-supply = <&pm8994_l12>;
178        vdda-phy-dpdm-supply = <&pm8994_l24>;
179
180        resets = <&gcc GCC_QUSB2PHY_PRIM_BCR>;
181        nvmem-cells = <&qusb2p_hstx_trim>;
182    };
183