1# SPDX-License-Identifier: GPL-2.0-only
2%YAML 1.2
3---
4$id: http://devicetree.org/schemas/bindings/clock/qcom,gcc.yaml#
5$schema: http://devicetree.org/meta-schemas/core.yaml#
6
7title: Qualcomm Global Clock & Reset Controller Binding
8
9maintainers:
10  - Stephen Boyd <sboyd@kernel.org>
11  - Taniya Das <tdas@codeaurora.org>
12
13description: |
14  Qualcomm global clock control module which supports the clocks, resets and
15  power domains.
16
17properties:
18  compatible :
19    enum:
20       - qcom,gcc-apq8064
21       - qcom,gcc-apq8084
22       - qcom,gcc-ipq8064
23       - qcom,gcc-ipq4019
24       - qcom,gcc-ipq8074
25       - qcom,gcc-msm8660
26       - qcom,gcc-msm8916
27       - qcom,gcc-msm8960
28       - qcom,gcc-msm8974
29       - qcom,gcc-msm8974pro
30       - qcom,gcc-msm8974pro-ac
31       - qcom,gcc-msm8994
32       - qcom,gcc-msm8996
33       - qcom,gcc-msm8998
34       - qcom,gcc-mdm9615
35       - qcom,gcc-qcs404
36       - qcom,gcc-sdm630
37       - qcom,gcc-sdm660
38       - qcom,gcc-sdm845
39       - qcom,gcc-sm8150
40
41  clocks:
42    minItems: 1
43    maxItems: 3
44    items:
45      - description: Board XO source
46      - description: Board active XO source
47      - description: Sleep clock source
48
49  clock-names:
50    minItems: 1
51    maxItems: 3
52    items:
53      - const: bi_tcxo
54      - const: bi_tcxo_ao
55      - const: sleep_clk
56
57  '#clock-cells':
58    const: 1
59
60  '#reset-cells':
61    const: 1
62
63  '#power-domain-cells':
64    const: 1
65
66  reg:
67    maxItems: 1
68
69  nvmem-cells:
70    minItems: 1
71    maxItems: 2
72    description:
73      Qualcomm TSENS (thermal sensor device) on some devices can
74      be part of GCC and hence the TSENS properties can also be part
75      of the GCC/clock-controller node.
76      For more details on the TSENS properties please refer
77      Documentation/devicetree/bindings/thermal/qcom-tsens.txt
78
79  nvmem-cell-names:
80    minItems: 1
81    maxItems: 2
82    description:
83      Names for each nvmem-cells specified.
84    items:
85      - const: calib
86      - const: calib_backup
87
88  'thermal-sensor-cells':
89    const: 1
90
91  protected-clocks:
92    description:
93       Protected clock specifier list as per common clock binding
94
95required:
96  - compatible
97  - reg
98  - '#clock-cells'
99  - '#reset-cells'
100  - '#power-domain-cells'
101
102if:
103  properties:
104    compatible:
105      contains:
106        const: qcom,gcc-apq8064
107
108then:
109  required:
110    - nvmem-cells
111    - nvmem-cell-names
112    - '#thermal-sensor-cells'
113
114else:
115  if:
116    properties:
117      compatible:
118        contains:
119          enum:
120            - qcom,gcc-sm8150
121  then:
122    required:
123       - clocks
124       - clock-names
125
126
127examples:
128  # Example for GCC for MSM8960:
129  - |
130    clock-controller@900000 {
131      compatible = "qcom,gcc-msm8960";
132      reg = <0x900000 0x4000>;
133      #clock-cells = <1>;
134      #reset-cells = <1>;
135      #power-domain-cells = <1>;
136    };
137
138
139  # Example of GCC with TSENS properties:
140  - |
141    clock-controller@900000 {
142      compatible = "qcom,gcc-apq8064";
143      reg = <0x00900000 0x4000>;
144      nvmem-cells = <&tsens_calib>, <&tsens_backup>;
145      nvmem-cell-names = "calib", "calib_backup";
146      #clock-cells = <1>;
147      #reset-cells = <1>;
148      #power-domain-cells = <1>;
149      #thermal-sensor-cells = <1>;
150    };
151
152  # Example of GCC with protected-clocks properties:
153  - |
154    clock-controller@100000 {
155      compatible = "qcom,gcc-sdm845";
156      reg = <0x100000 0x1f0000>;
157      protected-clocks = <187>, <188>, <189>, <190>, <191>;
158      #clock-cells = <1>;
159      #reset-cells = <1>;
160      #power-domain-cells = <1>;
161    };
162
163  # Example of GCC with clock node properties for SM8150:
164  - |
165    clock-controller@100000 {
166      compatible = "qcom,gcc-sm8150";
167      reg = <0x00100000 0x1f0000>;
168      clocks = <&rpmhcc 0>, <&rpmhcc 1>, <&sleep_clk>;
169      clock-names = "bi_tcxo", "bi_tcxo_ao", "sleep_clk";
170      #clock-cells = <1>;
171      #reset-cells = <1>;
172      #power-domain-cells = <1>;
173     };
174...
175