Linux 6.7-rc7
[linux-modified.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-msm8917
35           - qcom,rpmcc-msm8936
36           - qcom,rpmcc-msm8953
37           - qcom,rpmcc-msm8974
38           - qcom,rpmcc-msm8976
39           - qcom,rpmcc-msm8992
40           - qcom,rpmcc-msm8994
41           - qcom,rpmcc-msm8996
42           - qcom,rpmcc-msm8998
43           - qcom,rpmcc-qcm2290
44           - qcom,rpmcc-qcs404
45           - qcom,rpmcc-sdm660
46           - qcom,rpmcc-sm6115
47           - qcom,rpmcc-sm6125
48           - qcom,rpmcc-sm6375
49       - const: qcom,rpmcc
50
51   '#clock-cells':
52     const: 1
53
54   clocks:
55     minItems: 1
56     maxItems: 2
57
58   clock-names:
59     minItems: 1
60     maxItems: 2
61
62 required:
63   - compatible
64   - '#clock-cells'
65
66 allOf:
67   - if:
68       properties:
69         compatible:
70           contains:
71             enum:
72               - qcom,rpmcc-apq8060
73               - qcom,rpmcc-ipq806x
74               - qcom,rpmcc-msm8660
75
76     then:
77       properties:
78         clocks:
79           items:
80             - description: pxo clock
81
82         clock-names:
83           items:
84             - const: pxo
85
86   - if:
87       properties:
88         compatible:
89           contains:
90             const: qcom,rpmcc-apq8064
91     then:
92       properties:
93         clocks:
94           items:
95             - description: pxo clock
96             - description: cxo clock
97
98         clock-names:
99           items:
100             - const: pxo
101             - const: cxo
102
103   - if:
104       properties:
105         compatible:
106           contains:
107             enum:
108               - qcom,rpmcc-mdm9607
109               - qcom,rpmcc-msm8226
110               - qcom,rpmcc-msm8916
111               - qcom,rpmcc-msm8917
112               - qcom,rpmcc-msm8936
113               - qcom,rpmcc-msm8953
114               - qcom,rpmcc-msm8974
115               - qcom,rpmcc-msm8976
116               - qcom,rpmcc-msm8992
117               - qcom,rpmcc-msm8994
118               - qcom,rpmcc-msm8996
119               - qcom,rpmcc-msm8998
120               - qcom,rpmcc-qcm2290
121               - qcom,rpmcc-qcs404
122               - qcom,rpmcc-sdm660
123               - qcom,rpmcc-sm6115
124               - qcom,rpmcc-sm6125
125
126     then:
127       properties:
128         clocks:
129           items:
130             - description: xo clock
131
132         clock-names:
133           items:
134             - const: xo
135
136 additionalProperties: false
137
138 examples:
139   - |
140     rpm {
141         rpm-requests {
142             compatible = "qcom,rpm-msm8916";
143             qcom,smd-channels = "rpm_requests";
144
145             clock-controller {
146                 compatible = "qcom,rpmcc-msm8916", "qcom,rpmcc";
147                 #clock-cells = <1>;
148             };
149         };
150     };
151
152   - |
153     rpm {
154         clock-controller {
155             compatible = "qcom,rpmcc-ipq806x", "qcom,rpmcc";
156             #clock-cells = <1>;
157             clocks = <&pxo_board>;
158             clock-names = "pxo";
159         };
160     };