summaryrefslogtreecommitdiff
path: root/Documentation/devicetree/bindings/clock/qcom,rpmcc.yaml
blob: 3665dd30604a2fe3efadace76aa0a3bd4b0828c1 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
# SPDX-License-Identifier: GPL-2.0-only OR BSD-2-Clause
%YAML 1.2
---
$id: http://devicetree.org/schemas/clock/qcom,rpmcc.yaml#
$schema: http://devicetree.org/meta-schemas/core.yaml#

title: Qualcomm RPM Clock Controller

maintainers:
  - Bjorn Andersson <bjorn.andersson@linaro.org>
  - Krzysztof Kozlowski <krzysztof.kozlowski@linaro.org>

description: |
  The clock enumerators are defined in <dt-bindings/clock/qcom,rpmcc.h> and
  come in pairs:: FOO_CLK followed by FOO_A_CLK. The latter clock is
  an "active" clock, which means that the consumer only care that the clock is
  available when the apps CPU subsystem is active, i.e. not suspended or in
  deep idle. If it is important that the clock keeps running during system
  suspend, you need to specify the non-active clock, the one not containing
  *_A_* in the enumerator name.

properties:
  compatible:
    items:
      - enum:
          - qcom,rpmcc-apq8060
          - qcom,rpmcc-apq8064
          - qcom,rpmcc-ipq806x
          - qcom,rpmcc-mdm9607
          - qcom,rpmcc-msm8226
          - qcom,rpmcc-msm8660
          - qcom,rpmcc-msm8909
          - qcom,rpmcc-msm8916
          - qcom,rpmcc-msm8917
          - qcom,rpmcc-msm8936
          - qcom,rpmcc-msm8953
          - qcom,rpmcc-msm8974
          - qcom,rpmcc-msm8976
          - qcom,rpmcc-msm8992
          - qcom,rpmcc-msm8994
          - qcom,rpmcc-msm8996
          - qcom,rpmcc-msm8998
          - qcom,rpmcc-qcm2290
          - qcom,rpmcc-qcs404
          - qcom,rpmcc-sdm660
          - qcom,rpmcc-sm6115
          - qcom,rpmcc-sm6125
          - qcom,rpmcc-sm6375
      - const: qcom,rpmcc

  '#clock-cells':
    const: 1

  clocks:
    minItems: 1
    maxItems: 2

  clock-names:
    minItems: 1
    maxItems: 2

required:
  - compatible
  - '#clock-cells'

allOf:
  - if:
      properties:
        compatible:
          contains:
            enum:
              - qcom,rpmcc-apq8060
              - qcom,rpmcc-ipq806x
              - qcom,rpmcc-msm8660

    then:
      properties:
        clocks:
          items:
            - description: pxo clock

        clock-names:
          items:
            - const: pxo

  - if:
      properties:
        compatible:
          contains:
            const: qcom,rpmcc-apq8064
    then:
      properties:
        clocks:
          items:
            - description: pxo clock
            - description: cxo clock

        clock-names:
          items:
            - const: pxo
            - const: cxo

  - if:
      properties:
        compatible:
          contains:
            enum:
              - qcom,rpmcc-mdm9607
              - qcom,rpmcc-msm8226
              - qcom,rpmcc-msm8916
              - qcom,rpmcc-msm8917
              - qcom,rpmcc-msm8936
              - qcom,rpmcc-msm8953
              - qcom,rpmcc-msm8974
              - qcom,rpmcc-msm8976
              - qcom,rpmcc-msm8992
              - qcom,rpmcc-msm8994
              - qcom,rpmcc-msm8996
              - qcom,rpmcc-msm8998
              - qcom,rpmcc-qcm2290
              - qcom,rpmcc-qcs404
              - qcom,rpmcc-sdm660
              - qcom,rpmcc-sm6115
              - qcom,rpmcc-sm6125

    then:
      properties:
        clocks:
          items:
            - description: xo clock

        clock-names:
          items:
            - const: xo

additionalProperties: false

examples:
  - |
    rpm {
        rpm-requests {
            compatible = "qcom,rpm-msm8916";
            qcom,smd-channels = "rpm_requests";

            clock-controller {
                compatible = "qcom,rpmcc-msm8916", "qcom,rpmcc";
                #clock-cells = <1>;
            };
        };
    };

  - |
    rpm {
        clock-controller {
            compatible = "qcom,rpmcc-ipq806x", "qcom,rpmcc";
            #clock-cells = <1>;
            clocks = <&pxo_board>;
            clock-names = "pxo";
        };
    };