Spracherkennung für: .yaml vermutete Sprache: Unknown {[0] [0] [0]} [Methode: Schwerpunktbildung, einfache Gewichte, sechs Dimensionen]
# SPDX-License-Identifier: (GPL-
2.
0-only OR BSD-
2-Clause)
%YAML
1.
2
---
$id:
http://devicetree.org/schemas/opp/opp-v2.yaml#
$schema:
http://devicetree.org/meta-schemas/core.yaml#
title: Generic OPP (Operating Performance Points)
maintainers:
- Viresh Kumar <viresh.kumar@linaro.org>
allOf:
- $ref: opp-v2-base.yaml#
properties:
compatible:
const: operating-points-v2
unevaluatedProperties: false
examples:
- |
/*
* Example
1: Single cluster Dual-core ARM cortex A9, switch DVFS states
* together.
*/
cpus {
#address-cells = <
1>;
#size-cells = <
0>;
cpu@
0 {
compatible = "arm,cortex-a9";
device_type = "cpu";
reg = <
0>;
next-level-cache = <&L2>;
clocks = <&clk_controller
0>;
clock-names = "cpu";
cpu-supply = <&cpu_supply0>;
operating-points-v2 = <&cpu0_opp_table0>;
};
cpu@
1 {
compatible = "arm,cortex-a9";
device_type = "cpu";
reg = <
1>;
next-level-cache = <&L2>;
clocks = <&clk_controller
0>;
clock-names = "cpu";
cpu-supply = <&cpu_supply0>;
operating-points-v2 = <&cpu0_opp_table0>;
};
};
cpu0_opp_table0: opp-table {
compatible = "operating-points-v2";
opp-shared;
opp-
1000000000 {
opp-hz = /bits/
64 <
1000000000>;
opp-microvolt = <
975000 970000 985000>;
opp-microamp = <
70000>;
clock-latency-ns = <
300000>;
opp-suspend;
};
opp-
1100000000 {
opp-hz = /bits/
64 <
1100000000>;
opp-microvolt = <
1000000 980000 1010000>;
opp-microamp = <
80000>;
clock-latency-ns = <
310000>;
};
opp-
1200000000 {
opp-hz = /bits/
64 <
1200000000>;
opp-microvolt = <
1025000>;
clock-latency-ns = <
290000>;
turbo-mode;
};
};
- |
/*
* Example
2: Single cluster, Quad-core Qualcom-krait, switches DVFS states
* independently.
*/
cpus {
#address-cells = <
1>;
#size-cells = <
0>;
cpu@
0 {
compatible = "qcom,krait";
device_type = "cpu";
reg = <
0>;
next-level-cache = <&L2>;
clocks = <&clk_controller
0>;
clock-names = "cpu";
cpu-supply = <&cpu_supply0>;
operating-points-v2 = <&cpu_opp_table>;
};
cpu@
1 {
compatible = "qcom,krait";
device_type = "cpu";
reg = <
1>;
next-level-cache = <&L2>;
clocks = <&clk_controller
1>;
clock-names = "cpu";
cpu-supply = <&cpu_supply1>;
operating-points-v2 = <&cpu_opp_table>;
};
cpu@
2 {
compatible = "qcom,krait";
device_type = "cpu";
reg = <
2>;
next-level-cache = <&L2>;
clocks = <&clk_controller
2>;
clock-names = "cpu";
cpu-supply = <&cpu_supply2>;
operating-points-v2 = <&cpu_opp_table>;
};
cpu@
3 {
compatible = "qcom,krait";
device_type = "cpu";
reg = <
3>;
next-level-cache = <&L2>;
clocks = <&clk_controller
3>;
clock-names = "cpu";
cpu-supply = <&cpu_supply3>;
operating-points-v2 = <&cpu_opp_table>;
};
};
cpu_opp_table: opp-table {
compatible = "operating-points-v2";
/*
* Missing opp-shared property means CPUs switch DVFS states
* independently.
*/
opp-
1000000000 {
opp-hz = /bits/
64 <
1000000000>;
opp-microvolt = <
975000 970000 985000>;
opp-microamp = <
70000>;
clock-latency-ns = <
300000>;
opp-suspend;
};
opp-
1100000000 {
opp-hz = /bits/
64 <
1100000000>;
opp-microvolt = <
1000000 980000 1010000>;
opp-microamp = <
80000>;
clock-latency-ns = <
310000>;
};
opp-
1200000000 {
opp-hz = /bits/
64 <
1200000000>;
opp-microvolt = <
1025000>;
opp-microamp = <
90000>;
clock-latency-ns = <
290000>;
turbo-mode;
};
};
- |
/*
* Example
3: Dual-cluster, Dual-core per cluster. CPUs within a cluster switch
* DVFS state together.
*/
cpus {
#address-cells = <
1>;
#size-cells = <
0>;
cpu@
0 {
compatible = "arm,cortex-a7";
device_type = "cpu";
reg = <
0>;
next-level-cache = <&L2>;
clocks = <&clk_controller
0>;
clock-names = "cpu";
cpu-supply = <&cpu_supply0>;
operating-points-v2 = <&cluster0_opp>;
};
cpu@
1 {
compatible = "arm,cortex-a7";
device_type = "cpu";
reg = <
1>;
next-level-cache = <&L2>;
clocks = <&clk_controller
0>;
clock-names = "cpu";
cpu-supply = <&cpu_supply0>;
operating-points-v2 = <&cluster0_opp>;
};
cpu@
100 {
compatible = "arm,cortex-a15";
device_type = "cpu";
reg = <
100>;
next-level-cache = <&L2>;
clocks = <&clk_controller
1>;
clock-names = "cpu";
cpu-supply = <&cpu_supply1>;
operating-points-v2 = <&cluster1_opp>;
};
cpu@
101 {
compatible = "arm,cortex-a15";
device_type = "cpu";
reg = <
101>;
next-level-cache = <&L2>;
clocks = <&clk_controller
1>;
clock-names = "cpu";
cpu-supply = <&cpu_supply1>;
operating-points-v2 = <&cluster1_opp>;
};
};
cluster0_opp: opp-table-
0 {
compatible = "operating-points-v2";
opp-shared;
opp-
1000000000 {
opp-hz = /bits/
64 <
1000000000>;
opp-microvolt = <
975000 970000 985000>;
opp-microamp = <
70000>;
clock-latency-ns = <
300000>;
opp-suspend;
};
opp-
1100000000 {
opp-hz = /bits/
64 <
1100000000>;
opp-microvolt = <
1000000 980000 1010000>;
opp-microamp = <
80000>;
clock-latency-ns = <
310000>;
};
opp-
1200000000 {
opp-hz = /bits/
64 <
1200000000>;
opp-microvolt = <
1025000>;
opp-microamp = <
90000>;
clock-latency-ns = <
290000>;
turbo-mode;
};
};
cluster1_opp: opp-table-
1 {
compatible = "operating-points-v2";
opp-shared;
opp-
1300000000 {
opp-hz = /bits/
64 <
1300000000>;
opp-microvolt = <
1050000 1045000 1055000>;
opp-microamp = <
95000>;
clock-latency-ns = <
400000>;
opp-suspend;
};
opp-
1400000000 {
opp-hz = /bits/
64 <
1400000000>;
opp-microvolt = <
1075000>;
opp-microamp = <
100000>;
clock-latency-ns = <
400000>;
};
opp-
1500000000 {
opp-hz = /bits/
64 <
1500000000>;
opp-microvolt = <
1100000 1010000 1110000>;
opp-microamp = <
95000>;
clock-latency-ns = <
400000>;
turbo-mode;
};
};
- |
/* Example
4: Handling multiple regulators */
cpus {
#address-cells = <
1>;
#size-cells = <
0>;
cpu@
0 {
compatible = "foo,cpu-type";
device_type = "cpu";
reg = <
0>;
vcc0-supply = <&cpu_supply0>;
vcc1-supply = <&cpu_supply1>;
vcc2-supply = <&cpu_supply2>;
operating-points-v2 = <&cpu0_opp_table4>;
};
};
cpu0_opp_table4: opp-table-
0 {
compatible = "operating-points-v2";
opp-shared;
opp-
1000000000 {
opp-hz = /bits/
64 <
1000000000>;
opp-microvolt = <
970000>, /* Supply
0 */
<
960000>, /* Supply
1 */
<
960000>; /* Supply
2 */
opp-microamp = <
70000>, /* Supply
0 */
<
70000>, /* Supply
1 */
<
70000>; /* Supply
2 */
clock-latency-ns = <
300000>;
};
/* OR */
opp-
1000000001 {
opp-hz = /bits/
64 <
1000000001>;
opp-microvolt = <
975000 970000 985000>, /* Supply
0 */
<
965000 960000 975000>, /* Supply
1 */
<
965000 960000 975000>; /* Supply
2 */
opp-microamp = <
70000>, /* Supply
0 */
<
70000>, /* Supply
1 */
<
70000>; /* Supply
2 */
clock-latency-ns = <
300000>;
};
/* OR */
opp-
1000000002 {
opp-hz = /bits/
64 <
1000000002>;
opp-microvolt = <
975000 970000 985000>, /* Supply
0 */
<
965000 960000 975000>, /* Supply
1 */
<
965000 960000 975000>; /* Supply
2 */
opp-microamp = <
70000>, /* Supply
0 */
<
0>, /* Supply
1 doesn't need this */
<
70000>; /* Supply
2 */
clock-latency-ns = <
300000>;
};
};
- |
/*
* Example
5: opp-supported-hw
* (example: three level hierarchy of versions: cuts, substrate and process)
*/
cpus {
#address-cells = <
1>;
#size-cells = <
0>;
cpu@
0 {
compatible = "arm,cortex-a7";
device_type = "cpu";
reg = <
0>;
cpu-supply = <&cpu_supply>;
operating-points-v2 = <&cpu0_opp_table_slow>;
};
};
cpu0_opp_table_slow: opp-table {
compatible = "operating-points-v2";
opp-shared;
opp-
600000000 {
/*
* Supports all substrate and process versions for
0xF
* cuts, i.e. only first four cuts.
*/
opp-supported-hw = <
0xF
0xFFFFFFFF
0xFFFFFFFF>;
opp-hz = /bits/
64 <
600000000>;
};
opp-
800000000 {
/*
* Supports:
* - cuts: only one,
6th cut (represented by
6th bit).
* - substrate: supports
16 different substrate versions
* - process: supports
9 different process versions
*/
opp-supported-hw = <
0x20
0xff0000ff
0x0000f4f0>;
opp-hz = /bits/
64 <
800000000>;
};
opp-
900000000 {
/*
* Supports:
* - All cuts and substrate where process version is
0x2.
* - All cuts and process where substrate version is
0x2.
*/
opp-supported-hw = <
0xFFFFFFFF
0xFFFFFFFF
0x02>,
<
0xFFFFFFFF
0x01
0xFFFFFFFF>;
opp-hz = /bits/
64 <
900000000>;
};
};
- |
/*
* Example
6: opp-microvolt-<name>, opp-microamp-<name>:
* (example: device with two possible microvolt ranges: slow and fast)
*/
cpus {
#address-cells = <
1>;
#size-cells = <
0>;
cpu@
0 {
compatible = "arm,cortex-a7";
device_type = "cpu";
reg = <
0>;
operating-points-v2 = <&cpu0_opp_table6>;
};
};
cpu0_opp_table6: opp-table-
0 {
compatible = "operating-points-v2";
opp-shared;
opp-
1000000000 {
opp-hz = /bits/
64 <
1000000000>;
opp-microvolt-slow = <
915000 900000 925000>;
opp-microvolt-fast = <
975000 970000 985000>;
opp-microamp-slow = <
70000>;
opp-microamp-fast = <
71000>;
};
opp-
1200000000 {
opp-hz = /bits/
64 <
1200000000>;
opp-microvolt-slow = <
915000 900000 925000>, /* Supply vcc0 */
<
925000 910000 935000>; /* Supply vcc1 */
opp-microvolt-fast = <
975000 970000 985000>, /* Supply vcc0 */
<
965000 960000 975000>; /* Supply vcc1 */
opp-microamp = <
70000>; /* Will be used for both slow/fast */
};
};
- |
/*
* Example
7: Single cluster Quad-core ARM cortex A53, OPP points from firmware,
* distinct clock controls but two sets of clock/voltage/current lines.
*/
cpus {
#address-cells = <
2>;
#size-cells = <
0>;
cpu@
0 {
compatible = "arm,cortex-a53";
device_type = "cpu";
reg = <
0x0
0x100>;
next-level-cache = <&A53_L2>;
clocks = <&dvfs_controller
0>;
operating-points-v2 = <&cpu_opp0_table>;
};
cpu@
1 {
compatible = "arm,cortex-a53";
device_type = "cpu";
reg = <
0x0
0x101>;
next-level-cache = <&A53_L2>;
clocks = <&dvfs_controller
1>;
operating-points-v2 = <&cpu_opp0_table>;
};
cpu@
2 {
compatible = "arm,cortex-a53";
device_type = "cpu";
reg = <
0x0
0x102>;
next-level-cache = <&A53_L2>;
clocks = <&dvfs_controller
2>;
operating-points-v2 = <&cpu_opp1_table>;
};
cpu@
3 {
compatible = "arm,cortex-a53";
device_type = "cpu";
reg = <
0x0
0x103>;
next-level-cache = <&A53_L2>;
clocks = <&dvfs_controller
3>;
operating-points-v2 = <&cpu_opp1_table>;
};
};
cpu_opp0_table: opp-table-
0 {
compatible = "operating-points-v2";
opp-shared;
};
cpu_opp1_table: opp-table-
1 {
compatible = "operating-points-v2";
opp-shared;
};
...