xref: /linux/Documentation/devicetree/bindings/clock/qcom,rpmcc.yaml (revision 3a2c4d55e32ad65efebdb6de44eef3bfa08bb49d)
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
7title: Qualcomm RPM Clock Controller
8
9maintainers:
10  - Bjorn Andersson <bjorn.andersson@linaro.org>
11  - Krzysztof Kozlowski <krzk@kernel.org>
12
13description: |
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
22properties:
23  compatible:
24    oneOf:
25      - items:
26          - enum:
27              - qcom,rpmcc-apq8060
28              - qcom,rpmcc-apq8064
29              - qcom,rpmcc-ipq806x
30              - qcom,rpmcc-mdm9607
31              - qcom,rpmcc-msm8226
32              - qcom,rpmcc-msm8660
33              - qcom,rpmcc-msm8909
34              - qcom,rpmcc-msm8916
35              - qcom,rpmcc-msm8917
36              - qcom,rpmcc-msm8936
37              - qcom,rpmcc-msm8937
38              - qcom,rpmcc-msm8940
39              - qcom,rpmcc-msm8953
40              - qcom,rpmcc-msm8974
41              - qcom,rpmcc-msm8976
42              - qcom,rpmcc-msm8992
43              - qcom,rpmcc-msm8994
44              - qcom,rpmcc-msm8996
45              - qcom,rpmcc-msm8998
46              - qcom,rpmcc-qcm2290
47              - qcom,rpmcc-qcs404
48              - qcom,rpmcc-sdm429
49              - qcom,rpmcc-sdm660
50              - qcom,rpmcc-sm6115
51              - qcom,rpmcc-sm6125
52              - qcom,rpmcc-sm6375
53          - const: qcom,rpmcc
54      - items:
55          - enum:
56              - qcom,rpmcc-shikra
57          - const: qcom,rpmcc-qcm2290
58          - const: qcom,rpmcc
59
60  '#clock-cells':
61    const: 1
62
63  clocks:
64    minItems: 1
65    maxItems: 2
66
67  clock-names:
68    minItems: 1
69    maxItems: 2
70
71required:
72  - compatible
73  - '#clock-cells'
74
75allOf:
76  - if:
77      properties:
78        compatible:
79          contains:
80            enum:
81              - qcom,rpmcc-apq8060
82              - qcom,rpmcc-ipq806x
83              - qcom,rpmcc-msm8660
84
85    then:
86      properties:
87        clocks:
88          items:
89            - description: pxo clock
90
91        clock-names:
92          items:
93            - const: pxo
94
95  - if:
96      properties:
97        compatible:
98          contains:
99            const: qcom,rpmcc-apq8064
100    then:
101      properties:
102        clocks:
103          items:
104            - description: pxo clock
105            - description: cxo clock
106
107        clock-names:
108          items:
109            - const: pxo
110            - const: cxo
111
112  - if:
113      properties:
114        compatible:
115          contains:
116            enum:
117              - qcom,rpmcc-mdm9607
118              - qcom,rpmcc-msm8226
119              - qcom,rpmcc-msm8916
120              - qcom,rpmcc-msm8917
121              - qcom,rpmcc-msm8936
122              - qcom,rpmcc-msm8937
123              - qcom,rpmcc-msm8940
124              - qcom,rpmcc-msm8953
125              - qcom,rpmcc-msm8974
126              - qcom,rpmcc-msm8976
127              - qcom,rpmcc-msm8992
128              - qcom,rpmcc-msm8994
129              - qcom,rpmcc-msm8996
130              - qcom,rpmcc-msm8998
131              - qcom,rpmcc-qcm2290
132              - qcom,rpmcc-qcs404
133              - qcom,rpmcc-sdm429
134              - qcom,rpmcc-sdm660
135              - qcom,rpmcc-shikra
136              - qcom,rpmcc-sm6115
137              - qcom,rpmcc-sm6125
138
139    then:
140      properties:
141        clocks:
142          items:
143            - description: xo clock
144
145        clock-names:
146          items:
147            - const: xo
148
149additionalProperties: false
150
151examples:
152  - |
153    rpm {
154        rpm-requests {
155            compatible = "qcom,rpm-msm8916", "qcom,smd-rpm";
156            qcom,smd-channels = "rpm_requests";
157
158            clock-controller {
159                compatible = "qcom,rpmcc-msm8916", "qcom,rpmcc";
160                #clock-cells = <1>;
161            };
162        };
163    };
164
165  - |
166    rpm {
167        clock-controller {
168            compatible = "qcom,rpmcc-ipq806x", "qcom,rpmcc";
169            #clock-cells = <1>;
170            clocks = <&pxo_board>;
171            clock-names = "pxo";
172        };
173    };
174