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-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
61required:
62  - compatible
63  - '#clock-cells'
64
65allOf:
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
134additionalProperties: false
135
136examples:
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    };
159