Linux kernel mirror (for testing)
git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
kernel
os
linux
1# SPDX-License-Identifier: GPL-2.0-only OR BSD-2-Clause
2%YAML 1.2
3---
4$id: http://devicetree.org/schemas/cpufreq/cpufreq-qcom-hw.yaml#
5$schema: http://devicetree.org/meta-schemas/core.yaml#
6
7title: Qualcomm Technologies, Inc. CPUFREQ
8
9maintainers:
10 - Manivannan Sadhasivam <manivannan.sadhasivam@linaro.org>
11
12description: |
13
14 CPUFREQ HW is a hardware engine used by some Qualcomm Technologies, Inc. (QTI)
15 SoCs to manage frequency in hardware. It is capable of controlling frequency
16 for multiple clusters.
17
18properties:
19 compatible:
20 oneOf:
21 - description: v1 of CPUFREQ HW
22 items:
23 - const: qcom,cpufreq-hw
24
25 - description: v2 of CPUFREQ HW (EPSS)
26 items:
27 - enum:
28 - qcom,sm8250-cpufreq-epss
29 - const: qcom,cpufreq-epss
30
31 reg:
32 minItems: 2
33 items:
34 - description: Frequency domain 0 register region
35 - description: Frequency domain 1 register region
36 - description: Frequency domain 2 register region
37
38 reg-names:
39 minItems: 2
40 items:
41 - const: freq-domain0
42 - const: freq-domain1
43 - const: freq-domain2
44
45 clocks:
46 items:
47 - description: XO Clock
48 - description: GPLL0 Clock
49
50 clock-names:
51 items:
52 - const: xo
53 - const: alternate
54
55 '#freq-domain-cells':
56 const: 1
57
58required:
59 - compatible
60 - reg
61 - clocks
62 - clock-names
63 - '#freq-domain-cells'
64
65additionalProperties: false
66
67examples:
68 - |
69 #include <dt-bindings/clock/qcom,gcc-sdm845.h>
70 #include <dt-bindings/clock/qcom,rpmh.h>
71
72 // Example 1: Dual-cluster, Quad-core per cluster. CPUs within a cluster
73 // switch DCVS state together.
74 cpus {
75 #address-cells = <2>;
76 #size-cells = <0>;
77
78 CPU0: cpu@0 {
79 device_type = "cpu";
80 compatible = "qcom,kryo385";
81 reg = <0x0 0x0>;
82 enable-method = "psci";
83 next-level-cache = <&L2_0>;
84 qcom,freq-domain = <&cpufreq_hw 0>;
85 L2_0: l2-cache {
86 compatible = "cache";
87 next-level-cache = <&L3_0>;
88 L3_0: l3-cache {
89 compatible = "cache";
90 };
91 };
92 };
93
94 CPU1: cpu@100 {
95 device_type = "cpu";
96 compatible = "qcom,kryo385";
97 reg = <0x0 0x100>;
98 enable-method = "psci";
99 next-level-cache = <&L2_100>;
100 qcom,freq-domain = <&cpufreq_hw 0>;
101 L2_100: l2-cache {
102 compatible = "cache";
103 next-level-cache = <&L3_0>;
104 };
105 };
106
107 CPU2: cpu@200 {
108 device_type = "cpu";
109 compatible = "qcom,kryo385";
110 reg = <0x0 0x200>;
111 enable-method = "psci";
112 next-level-cache = <&L2_200>;
113 qcom,freq-domain = <&cpufreq_hw 0>;
114 L2_200: l2-cache {
115 compatible = "cache";
116 next-level-cache = <&L3_0>;
117 };
118 };
119
120 CPU3: cpu@300 {
121 device_type = "cpu";
122 compatible = "qcom,kryo385";
123 reg = <0x0 0x300>;
124 enable-method = "psci";
125 next-level-cache = <&L2_300>;
126 qcom,freq-domain = <&cpufreq_hw 0>;
127 L2_300: l2-cache {
128 compatible = "cache";
129 next-level-cache = <&L3_0>;
130 };
131 };
132
133 CPU4: cpu@400 {
134 device_type = "cpu";
135 compatible = "qcom,kryo385";
136 reg = <0x0 0x400>;
137 enable-method = "psci";
138 next-level-cache = <&L2_400>;
139 qcom,freq-domain = <&cpufreq_hw 1>;
140 L2_400: l2-cache {
141 compatible = "cache";
142 next-level-cache = <&L3_0>;
143 };
144 };
145
146 CPU5: cpu@500 {
147 device_type = "cpu";
148 compatible = "qcom,kryo385";
149 reg = <0x0 0x500>;
150 enable-method = "psci";
151 next-level-cache = <&L2_500>;
152 qcom,freq-domain = <&cpufreq_hw 1>;
153 L2_500: l2-cache {
154 compatible = "cache";
155 next-level-cache = <&L3_0>;
156 };
157 };
158
159 CPU6: cpu@600 {
160 device_type = "cpu";
161 compatible = "qcom,kryo385";
162 reg = <0x0 0x600>;
163 enable-method = "psci";
164 next-level-cache = <&L2_600>;
165 qcom,freq-domain = <&cpufreq_hw 1>;
166 L2_600: l2-cache {
167 compatible = "cache";
168 next-level-cache = <&L3_0>;
169 };
170 };
171
172 CPU7: cpu@700 {
173 device_type = "cpu";
174 compatible = "qcom,kryo385";
175 reg = <0x0 0x700>;
176 enable-method = "psci";
177 next-level-cache = <&L2_700>;
178 qcom,freq-domain = <&cpufreq_hw 1>;
179 L2_700: l2-cache {
180 compatible = "cache";
181 next-level-cache = <&L3_0>;
182 };
183 };
184 };
185
186 soc {
187 #address-cells = <1>;
188 #size-cells = <1>;
189
190 cpufreq@17d43000 {
191 compatible = "qcom,cpufreq-hw";
192 reg = <0x17d43000 0x1400>, <0x17d45800 0x1400>;
193 reg-names = "freq-domain0", "freq-domain1";
194
195 clocks = <&rpmhcc RPMH_CXO_CLK>, <&gcc GPLL0>;
196 clock-names = "xo", "alternate";
197
198 #freq-domain-cells = <1>;
199 };
200 };
201...