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