GNU Linux-libre 6.1.90-gnu
[releases.git] / Documentation / devicetree / bindings / clock / qcom,rpmcc.yaml
1 # SPDX-License-Identifier: GPL-2.0-only OR BSD-2-Clause
2 %YAML 1.2
3 ---
4 $id: http://devicetree.org/schemas/clock/qcom,rpmcc.yaml#
5 $schema: http://devicetree.org/meta-schemas/core.yaml#
6
7 title: Qualcomm RPM Clock Controller
8
9 maintainers:
10   - Bjorn Andersson <bjorn.andersson@linaro.org>
11   - Krzysztof Kozlowski <krzysztof.kozlowski@linaro.org>
12
13 description: |
14   The clock enumerators are defined in <dt-bindings/clock/qcom,rpmcc.h> and
15   come in pairs:: FOO_CLK followed by FOO_A_CLK. The latter clock is
16   an "active" clock, which means that the consumer only care that the clock is
17   available when the apps CPU subsystem is active, i.e. not suspended or in
18   deep idle. If it is important that the clock keeps running during system
19   suspend, you need to specify the non-active clock, the one not containing
20   *_A_* in the enumerator name.
21
22 properties:
23   compatible:
24     items:
25       - enum:
26           - qcom,rpmcc-apq8060
27           - qcom,rpmcc-apq8064
28           - qcom,rpmcc-ipq806x
29           - qcom,rpmcc-mdm9607
30           - qcom,rpmcc-msm8226
31           - qcom,rpmcc-msm8660
32           - qcom,rpmcc-msm8909
33           - qcom,rpmcc-msm8916
34           - qcom,rpmcc-msm8936
35           - qcom,rpmcc-msm8953
36           - qcom,rpmcc-msm8974
37           - qcom,rpmcc-msm8976
38           - qcom,rpmcc-msm8992
39           - qcom,rpmcc-msm8994
40           - qcom,rpmcc-msm8996
41           - qcom,rpmcc-msm8998
42           - qcom,rpmcc-qcm2290
43           - qcom,rpmcc-qcs404
44           - qcom,rpmcc-sdm660
45           - qcom,rpmcc-sm6115
46           - qcom,rpmcc-sm6125
47           - qcom,rpmcc-sm6375
48       - const: qcom,rpmcc
49
50   '#clock-cells':
51     const: 1
52
53   clocks:
54     minItems: 1
55     maxItems: 2
56
57   clock-names:
58     minItems: 1
59     maxItems: 2
60
61 required:
62   - compatible
63   - '#clock-cells'
64
65 allOf:
66   - if:
67       properties:
68         compatible:
69           contains:
70             enum:
71               - qcom,rpmcc-apq8060
72               - qcom,rpmcc-ipq806x
73               - qcom,rpmcc-msm8660
74
75     then:
76       properties:
77         clocks:
78           items:
79             - description: pxo clock
80
81         clock-names:
82           items:
83             - const: pxo
84
85   - if:
86       properties:
87         compatible:
88           contains:
89             const: qcom,rpmcc-apq8064
90     then:
91       properties:
92         clocks:
93           items:
94             - description: pxo clock
95             - description: cxo clock
96
97         clock-names:
98           items:
99             - const: pxo
100             - const: cxo
101
102   - if:
103       properties:
104         compatible:
105           contains:
106             enum:
107               - qcom,rpmcc-mdm9607
108               - qcom,rpmcc-msm8226
109               - qcom,rpmcc-msm8916
110               - qcom,rpmcc-msm8936
111               - qcom,rpmcc-msm8953
112               - qcom,rpmcc-msm8974
113               - qcom,rpmcc-msm8976
114               - qcom,rpmcc-msm8992
115               - qcom,rpmcc-msm8994
116               - qcom,rpmcc-msm8996
117               - qcom,rpmcc-msm8998
118               - qcom,rpmcc-qcm2290
119               - qcom,rpmcc-qcs404
120               - qcom,rpmcc-sdm660
121               - qcom,rpmcc-sm6115
122               - qcom,rpmcc-sm6125
123
124     then:
125       properties:
126         clocks:
127           items:
128             - description: xo clock
129
130         clock-names:
131           items:
132             - const: xo
133
134 additionalProperties: false
135
136 examples:
137   - |
138     rpm {
139         rpm-requests {
140             compatible = "qcom,rpm-msm8916";
141             qcom,smd-channels = "rpm_requests";
142
143             clock-controller {
144                 compatible = "qcom,rpmcc-msm8916", "qcom,rpmcc";
145                 #clock-cells = <1>;
146             };
147         };
148     };
149
150   - |
151     rpm {
152         clock-controller {
153             compatible = "qcom,rpmcc-ipq806x", "qcom,rpmcc";
154             #clock-cells = <1>;
155             clocks = <&pxo_board>;
156             clock-names = "pxo";
157         };
158     };