cac1150c9292c13d79433091491afc734f1ef977
[linux-2.6-microblaze.git] / Documentation / devicetree / bindings / clock / qcom,gcc.yaml
1 # SPDX-License-Identifier: GPL-2.0-only
2 %YAML 1.2
3 ---
4 $id: http://devicetree.org/schemas/bindings/clock/qcom,gcc.yaml#
5 $schema: http://devicetree.org/meta-schemas/core.yaml#
6
7 title: Qualcomm Global Clock & Reset Controller Binding
8
9 maintainers:
10   - Stephen Boyd <sboyd@kernel.org>
11   - Taniya Das <tdas@codeaurora.org>
12
13 description: |
14   Qualcomm global clock control module which supports the clocks, resets and
15   power domains.
16
17 properties:
18   compatible :
19     enum:
20        - qcom,gcc-apq8064
21        - qcom,gcc-apq8084
22        - qcom,gcc-ipq4019
23        - qcom,gcc-ipq6018
24        - qcom,gcc-ipq8064
25        - qcom,gcc-ipq8074
26        - qcom,gcc-msm8660
27        - qcom,gcc-msm8916
28        - qcom,gcc-msm8960
29        - qcom,gcc-msm8974
30        - qcom,gcc-msm8974pro
31        - qcom,gcc-msm8974pro-ac
32        - qcom,gcc-msm8994
33        - qcom,gcc-msm8996
34        - qcom,gcc-msm8998
35        - qcom,gcc-mdm9615
36        - qcom,gcc-qcs404
37        - qcom,gcc-sc7180
38        - qcom,gcc-sdm630
39        - qcom,gcc-sdm660
40        - qcom,gcc-sdm845
41        - qcom,gcc-sm8150
42
43   clocks:
44     oneOf:
45       #qcom,gcc-sm8150
46       #qcom,gcc-sc7180
47       - items:
48         - description: Board XO source
49         - description: Board active XO source
50         - description: Sleep clock source
51       #qcom,gcc-msm8996
52       - items:
53         - description: XO source
54         - description: Second XO source
55         - description: Sleep clock source
56       #qcom,gcc-msm8998
57       - items:
58         - description: Board XO source
59         - description: Sleep clock source
60         - description: USB 3.0 phy pipe clock
61         - description: UFS phy rx symbol clock for pipe 0
62         - description: UFS phy rx symbol clock for pipe 1
63         - description: UFS phy tx symbol clock
64         - description: PCIE phy pipe clock
65
66   clock-names:
67     oneOf:
68       #qcom,gcc-sm8150
69       #qcom,gcc-sc7180
70       - items:
71         - const: bi_tcxo
72         - const: bi_tcxo_ao
73         - const: sleep_clk
74       #qcom,gcc-msm8996
75       - items:
76         - const: cxo
77         - const: cxo2
78         - const: sleep_clk
79       #qcom,gcc-msm8998
80       - items:
81         - const: xo
82         - const: sleep_clk
83         - const: usb3_pipe
84         - const: ufs_rx_symbol0
85         - const: ufs_rx_symbol1
86         - const: ufs_tx_symbol0
87         - const: pcie0_pipe
88
89   '#clock-cells':
90     const: 1
91
92   '#reset-cells':
93     const: 1
94
95   '#power-domain-cells':
96     const: 1
97
98   reg:
99     maxItems: 1
100
101   nvmem-cells:
102     minItems: 1
103     maxItems: 2
104     description:
105       Qualcomm TSENS (thermal sensor device) on some devices can
106       be part of GCC and hence the TSENS properties can also be part
107       of the GCC/clock-controller node.
108       For more details on the TSENS properties please refer
109       Documentation/devicetree/bindings/thermal/qcom-tsens.txt
110
111   nvmem-cell-names:
112     minItems: 1
113     maxItems: 2
114     description:
115       Names for each nvmem-cells specified.
116     items:
117       - const: calib
118       - const: calib_backup
119
120   'thermal-sensor-cells':
121     const: 1
122
123   protected-clocks:
124     description:
125        Protected clock specifier list as per common clock binding
126
127 required:
128   - compatible
129   - reg
130   - '#clock-cells'
131   - '#reset-cells'
132   - '#power-domain-cells'
133
134 if:
135   properties:
136     compatible:
137       contains:
138         const: qcom,gcc-apq8064
139
140 then:
141   required:
142     - nvmem-cells
143     - nvmem-cell-names
144     - '#thermal-sensor-cells'
145
146 else:
147   if:
148     properties:
149       compatible:
150         contains:
151           enum:
152             - qcom,gcc-msm8998
153             - qcom,gcc-sm8150
154             - qcom,gcc-sc7180
155   then:
156     required:
157        - clocks
158        - clock-names
159
160
161 examples:
162   # Example for GCC for MSM8960:
163   - |
164     clock-controller@900000 {
165       compatible = "qcom,gcc-msm8960";
166       reg = <0x900000 0x4000>;
167       #clock-cells = <1>;
168       #reset-cells = <1>;
169       #power-domain-cells = <1>;
170     };
171
172
173   # Example of GCC with TSENS properties:
174   - |
175     clock-controller@900000 {
176       compatible = "qcom,gcc-apq8064";
177       reg = <0x00900000 0x4000>;
178       nvmem-cells = <&tsens_calib>, <&tsens_backup>;
179       nvmem-cell-names = "calib", "calib_backup";
180       #clock-cells = <1>;
181       #reset-cells = <1>;
182       #power-domain-cells = <1>;
183       #thermal-sensor-cells = <1>;
184     };
185
186   # Example of GCC with protected-clocks properties:
187   - |
188     clock-controller@100000 {
189       compatible = "qcom,gcc-sdm845";
190       reg = <0x100000 0x1f0000>;
191       protected-clocks = <187>, <188>, <189>, <190>, <191>;
192       #clock-cells = <1>;
193       #reset-cells = <1>;
194       #power-domain-cells = <1>;
195     };
196
197   # Example of GCC with clock node properties for SM8150:
198   - |
199     clock-controller@100000 {
200       compatible = "qcom,gcc-sm8150";
201       reg = <0x00100000 0x1f0000>;
202       clocks = <&rpmhcc 0>, <&rpmhcc 1>, <&sleep_clk>;
203       clock-names = "bi_tcxo", "bi_tcxo_ao", "sleep_clk";
204       #clock-cells = <1>;
205       #reset-cells = <1>;
206       #power-domain-cells = <1>;
207      };
208
209   # Example of GCC with clock nodes properties for SC7180:
210   - |
211     clock-controller@100000 {
212       compatible = "qcom,gcc-sc7180";
213       reg = <0x100000 0x1f0000>;
214       clocks = <&rpmhcc 0>, <&rpmhcc 1>, <0>;
215       clock-names = "bi_tcxo", "bi_tcxo_ao", "sleep_clk";
216       #clock-cells = <1>;
217       #reset-cells = <1>;
218       #power-domain-cells = <1>;
219     };
220
221   # Example of MSM8998 GCC:
222   - |
223     #include <dt-bindings/clock/qcom,rpmcc.h>
224     clock-controller@100000 {
225       compatible = "qcom,gcc-msm8998";
226       #clock-cells = <1>;
227       #reset-cells = <1>;
228       #power-domain-cells = <1>;
229       reg = <0x00100000 0xb0000>;
230       clocks = <&rpmcc RPM_SMD_XO_CLK_SRC>,
231                <&sleep>,
232                <0>,
233                <0>,
234                <0>,
235                <0>,
236                <0>;
237       clock-names = "xo",
238                     "sleep_clk",
239                     "usb3_pipe",
240                     "ufs_rx_symbol0",
241                     "ufs_rx_symbol1",
242                     "ufs_tx_symbol0",
243                     "pcie0_pipe";
244     };
245 ...