1 # SPDX-License-Identifier: (GPL-2.0-only OR BSD-2-Clause)
4 $id: http://devicetree.org/schemas/opp/opp-v2-kryo-cpu.yaml#
5 $schema: http://devicetree.org/meta-schemas/core.yaml#
7 title: Qualcomm Technologies, Inc. NVMEM OPP bindings
10 - Ilia Lin <ilia.lin@kernel.org>
13 - $ref: opp-v2-base.yaml#
16 In certain Qualcomm Technologies, Inc. SoCs like APQ8096 and MSM8996,
17 the CPU frequencies subset and voltage value of each OPP varies based on
18 the silicon variant in use.
19 Qualcomm Technologies, Inc. Process Voltage Scaling Tables
20 defines the voltage and frequency value based on the speedbin blown in
21 the efuse combination.
22 The qcom-cpufreq-nvmem driver reads the efuse value from the SoC to provide
23 the OPP framework with required information (existing HW bitmap).
24 This is used to determine the voltage and frequency value for each OPP of
25 operating-points-v2 table when it is parsed by the OPP framework.
29 const: operating-points-v2-kryo-cpu
33 A phandle pointing to a nvmem-cells node representing the
34 efuse registers that has information about the
35 speedbin that is used to select the right frequency/voltage
43 additionalProperties: false
52 A single 32 bit bitmap value, representing compatible HW.
54 0: MSM8996, speedbin 0
55 1: MSM8996, speedbin 1
56 2: MSM8996, speedbin 2
60 clock-latency-ns: true
79 additionalProperties: false
84 model = "Qualcomm Technologies, Inc. DB820c";
85 compatible = "arrow,apq8096-db820c", "qcom,apq8096-sbc", "qcom,apq8096";
95 compatible = "qcom,kryo";
97 enable-method = "psci";
98 cpu-idle-states = <&CPU_SLEEP_0>;
99 capacity-dmips-mhz = <1024>;
100 clocks = <&kryocc 0>;
101 operating-points-v2 = <&cluster0_opp>;
102 power-domains = <&cpr>;
103 power-domain-names = "cpr";
104 #cooling-cells = <2>;
105 next-level-cache = <&L2_0>;
107 compatible = "cache";
114 compatible = "qcom,kryo";
116 enable-method = "psci";
117 cpu-idle-states = <&CPU_SLEEP_0>;
118 capacity-dmips-mhz = <1024>;
119 clocks = <&kryocc 0>;
120 operating-points-v2 = <&cluster0_opp>;
121 power-domains = <&cpr>;
122 power-domain-names = "cpr";
123 #cooling-cells = <2>;
124 next-level-cache = <&L2_0>;
129 compatible = "qcom,kryo";
131 enable-method = "psci";
132 cpu-idle-states = <&CPU_SLEEP_0>;
133 capacity-dmips-mhz = <1024>;
134 clocks = <&kryocc 1>;
135 operating-points-v2 = <&cluster1_opp>;
136 power-domains = <&cpr>;
137 power-domain-names = "cpr";
138 #cooling-cells = <2>;
139 next-level-cache = <&L2_1>;
141 compatible = "cache";
148 compatible = "qcom,kryo";
150 enable-method = "psci";
151 cpu-idle-states = <&CPU_SLEEP_0>;
152 capacity-dmips-mhz = <1024>;
153 clocks = <&kryocc 1>;
154 operating-points-v2 = <&cluster1_opp>;
155 power-domains = <&cpr>;
156 power-domain-names = "cpr";
157 #cooling-cells = <2>;
158 next-level-cache = <&L2_1>;
184 cluster0_opp: opp-table-0 {
185 compatible = "operating-points-v2-kryo-cpu";
186 nvmem-cells = <&speedbin_efuse>;
190 opp-hz = /bits/ 64 <307200000>;
191 opp-microvolt = <905000 905000 1140000>;
192 opp-supported-hw = <0x7>;
193 clock-latency-ns = <200000>;
194 required-opps = <&cpr_opp1>;
197 opp-hz = /bits/ 64 <1401600000>;
198 opp-microvolt = <1140000 905000 1140000>;
199 opp-supported-hw = <0x5>;
200 clock-latency-ns = <200000>;
201 required-opps = <&cpr_opp2>;
204 opp-hz = /bits/ 64 <1593600000>;
205 opp-microvolt = <1140000 905000 1140000>;
206 opp-supported-hw = <0x1>;
207 clock-latency-ns = <200000>;
208 required-opps = <&cpr_opp3>;
212 cluster1_opp: opp-table-1 {
213 compatible = "operating-points-v2-kryo-cpu";
214 nvmem-cells = <&speedbin_efuse>;
218 opp-hz = /bits/ 64 <307200000>;
219 opp-microvolt = <905000 905000 1140000>;
220 opp-supported-hw = <0x7>;
221 clock-latency-ns = <200000>;
222 required-opps = <&cpr_opp1>;
225 opp-hz = /bits/ 64 <1804800000>;
226 opp-microvolt = <1140000 905000 1140000>;
227 opp-supported-hw = <0x6>;
228 clock-latency-ns = <200000>;
229 required-opps = <&cpr_opp4>;
232 opp-hz = /bits/ 64 <1900800000>;
233 opp-microvolt = <1140000 905000 1140000>;
234 opp-supported-hw = <0x4>;
235 clock-latency-ns = <200000>;
236 required-opps = <&cpr_opp5>;
239 opp-hz = /bits/ 64 <2150400000>;
240 opp-microvolt = <1140000 905000 1140000>;
241 opp-supported-hw = <0x1>;
242 clock-latency-ns = <200000>;
243 required-opps = <&cpr_opp6>;
248 compatible = "qcom,smem";
249 memory-region = <&smem_mem>;
250 hwlocks = <&tcsr_mutex 3>;
254 #address-cells = <1>;
257 qfprom: qfprom@74000 {
258 compatible = "qcom,msm8996-qfprom", "qcom,qfprom";
259 reg = <0x00074000 0x8ff>;
260 #address-cells = <1>;
263 speedbin_efuse: speedbin@133 {