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