162306a36Sopenharmony_ci# SPDX-License-Identifier: (GPL-2.0-only OR BSD-2-Clause) 262306a36Sopenharmony_ci%YAML 1.2 362306a36Sopenharmony_ci--- 462306a36Sopenharmony_ci$id: http://devicetree.org/schemas/opp/opp-v2.yaml# 562306a36Sopenharmony_ci$schema: http://devicetree.org/meta-schemas/core.yaml# 662306a36Sopenharmony_ci 762306a36Sopenharmony_cititle: Generic OPP (Operating Performance Points) 862306a36Sopenharmony_ci 962306a36Sopenharmony_cimaintainers: 1062306a36Sopenharmony_ci - Viresh Kumar <viresh.kumar@linaro.org> 1162306a36Sopenharmony_ci 1262306a36Sopenharmony_ciallOf: 1362306a36Sopenharmony_ci - $ref: opp-v2-base.yaml# 1462306a36Sopenharmony_ci 1562306a36Sopenharmony_ciproperties: 1662306a36Sopenharmony_ci compatible: 1762306a36Sopenharmony_ci const: operating-points-v2 1862306a36Sopenharmony_ci 1962306a36Sopenharmony_ciunevaluatedProperties: false 2062306a36Sopenharmony_ci 2162306a36Sopenharmony_ciexamples: 2262306a36Sopenharmony_ci - | 2362306a36Sopenharmony_ci /* 2462306a36Sopenharmony_ci * Example 1: Single cluster Dual-core ARM cortex A9, switch DVFS states 2562306a36Sopenharmony_ci * together. 2662306a36Sopenharmony_ci */ 2762306a36Sopenharmony_ci cpus { 2862306a36Sopenharmony_ci #address-cells = <1>; 2962306a36Sopenharmony_ci #size-cells = <0>; 3062306a36Sopenharmony_ci 3162306a36Sopenharmony_ci cpu@0 { 3262306a36Sopenharmony_ci compatible = "arm,cortex-a9"; 3362306a36Sopenharmony_ci device_type = "cpu"; 3462306a36Sopenharmony_ci reg = <0>; 3562306a36Sopenharmony_ci next-level-cache = <&L2>; 3662306a36Sopenharmony_ci clocks = <&clk_controller 0>; 3762306a36Sopenharmony_ci clock-names = "cpu"; 3862306a36Sopenharmony_ci cpu-supply = <&cpu_supply0>; 3962306a36Sopenharmony_ci operating-points-v2 = <&cpu0_opp_table0>; 4062306a36Sopenharmony_ci }; 4162306a36Sopenharmony_ci 4262306a36Sopenharmony_ci cpu@1 { 4362306a36Sopenharmony_ci compatible = "arm,cortex-a9"; 4462306a36Sopenharmony_ci device_type = "cpu"; 4562306a36Sopenharmony_ci reg = <1>; 4662306a36Sopenharmony_ci next-level-cache = <&L2>; 4762306a36Sopenharmony_ci clocks = <&clk_controller 0>; 4862306a36Sopenharmony_ci clock-names = "cpu"; 4962306a36Sopenharmony_ci cpu-supply = <&cpu_supply0>; 5062306a36Sopenharmony_ci operating-points-v2 = <&cpu0_opp_table0>; 5162306a36Sopenharmony_ci }; 5262306a36Sopenharmony_ci }; 5362306a36Sopenharmony_ci 5462306a36Sopenharmony_ci cpu0_opp_table0: opp-table { 5562306a36Sopenharmony_ci compatible = "operating-points-v2"; 5662306a36Sopenharmony_ci opp-shared; 5762306a36Sopenharmony_ci 5862306a36Sopenharmony_ci opp-1000000000 { 5962306a36Sopenharmony_ci opp-hz = /bits/ 64 <1000000000>; 6062306a36Sopenharmony_ci opp-microvolt = <975000 970000 985000>; 6162306a36Sopenharmony_ci opp-microamp = <70000>; 6262306a36Sopenharmony_ci clock-latency-ns = <300000>; 6362306a36Sopenharmony_ci opp-suspend; 6462306a36Sopenharmony_ci }; 6562306a36Sopenharmony_ci opp-1100000000 { 6662306a36Sopenharmony_ci opp-hz = /bits/ 64 <1100000000>; 6762306a36Sopenharmony_ci opp-microvolt = <1000000 980000 1010000>; 6862306a36Sopenharmony_ci opp-microamp = <80000>; 6962306a36Sopenharmony_ci clock-latency-ns = <310000>; 7062306a36Sopenharmony_ci }; 7162306a36Sopenharmony_ci opp-1200000000 { 7262306a36Sopenharmony_ci opp-hz = /bits/ 64 <1200000000>; 7362306a36Sopenharmony_ci opp-microvolt = <1025000>; 7462306a36Sopenharmony_ci clock-latency-ns = <290000>; 7562306a36Sopenharmony_ci turbo-mode; 7662306a36Sopenharmony_ci }; 7762306a36Sopenharmony_ci }; 7862306a36Sopenharmony_ci 7962306a36Sopenharmony_ci - | 8062306a36Sopenharmony_ci /* 8162306a36Sopenharmony_ci * Example 2: Single cluster, Quad-core Qualcom-krait, switches DVFS states 8262306a36Sopenharmony_ci * independently. 8362306a36Sopenharmony_ci */ 8462306a36Sopenharmony_ci cpus { 8562306a36Sopenharmony_ci #address-cells = <1>; 8662306a36Sopenharmony_ci #size-cells = <0>; 8762306a36Sopenharmony_ci 8862306a36Sopenharmony_ci cpu@0 { 8962306a36Sopenharmony_ci compatible = "qcom,krait"; 9062306a36Sopenharmony_ci device_type = "cpu"; 9162306a36Sopenharmony_ci reg = <0>; 9262306a36Sopenharmony_ci next-level-cache = <&L2>; 9362306a36Sopenharmony_ci clocks = <&clk_controller 0>; 9462306a36Sopenharmony_ci clock-names = "cpu"; 9562306a36Sopenharmony_ci cpu-supply = <&cpu_supply0>; 9662306a36Sopenharmony_ci operating-points-v2 = <&cpu_opp_table>; 9762306a36Sopenharmony_ci }; 9862306a36Sopenharmony_ci 9962306a36Sopenharmony_ci cpu@1 { 10062306a36Sopenharmony_ci compatible = "qcom,krait"; 10162306a36Sopenharmony_ci device_type = "cpu"; 10262306a36Sopenharmony_ci reg = <1>; 10362306a36Sopenharmony_ci next-level-cache = <&L2>; 10462306a36Sopenharmony_ci clocks = <&clk_controller 1>; 10562306a36Sopenharmony_ci clock-names = "cpu"; 10662306a36Sopenharmony_ci cpu-supply = <&cpu_supply1>; 10762306a36Sopenharmony_ci operating-points-v2 = <&cpu_opp_table>; 10862306a36Sopenharmony_ci }; 10962306a36Sopenharmony_ci 11062306a36Sopenharmony_ci cpu@2 { 11162306a36Sopenharmony_ci compatible = "qcom,krait"; 11262306a36Sopenharmony_ci device_type = "cpu"; 11362306a36Sopenharmony_ci reg = <2>; 11462306a36Sopenharmony_ci next-level-cache = <&L2>; 11562306a36Sopenharmony_ci clocks = <&clk_controller 2>; 11662306a36Sopenharmony_ci clock-names = "cpu"; 11762306a36Sopenharmony_ci cpu-supply = <&cpu_supply2>; 11862306a36Sopenharmony_ci operating-points-v2 = <&cpu_opp_table>; 11962306a36Sopenharmony_ci }; 12062306a36Sopenharmony_ci 12162306a36Sopenharmony_ci cpu@3 { 12262306a36Sopenharmony_ci compatible = "qcom,krait"; 12362306a36Sopenharmony_ci device_type = "cpu"; 12462306a36Sopenharmony_ci reg = <3>; 12562306a36Sopenharmony_ci next-level-cache = <&L2>; 12662306a36Sopenharmony_ci clocks = <&clk_controller 3>; 12762306a36Sopenharmony_ci clock-names = "cpu"; 12862306a36Sopenharmony_ci cpu-supply = <&cpu_supply3>; 12962306a36Sopenharmony_ci operating-points-v2 = <&cpu_opp_table>; 13062306a36Sopenharmony_ci }; 13162306a36Sopenharmony_ci }; 13262306a36Sopenharmony_ci 13362306a36Sopenharmony_ci cpu_opp_table: opp-table { 13462306a36Sopenharmony_ci compatible = "operating-points-v2"; 13562306a36Sopenharmony_ci 13662306a36Sopenharmony_ci /* 13762306a36Sopenharmony_ci * Missing opp-shared property means CPUs switch DVFS states 13862306a36Sopenharmony_ci * independently. 13962306a36Sopenharmony_ci */ 14062306a36Sopenharmony_ci 14162306a36Sopenharmony_ci opp-1000000000 { 14262306a36Sopenharmony_ci opp-hz = /bits/ 64 <1000000000>; 14362306a36Sopenharmony_ci opp-microvolt = <975000 970000 985000>; 14462306a36Sopenharmony_ci opp-microamp = <70000>; 14562306a36Sopenharmony_ci clock-latency-ns = <300000>; 14662306a36Sopenharmony_ci opp-suspend; 14762306a36Sopenharmony_ci }; 14862306a36Sopenharmony_ci opp-1100000000 { 14962306a36Sopenharmony_ci opp-hz = /bits/ 64 <1100000000>; 15062306a36Sopenharmony_ci opp-microvolt = <1000000 980000 1010000>; 15162306a36Sopenharmony_ci opp-microamp = <80000>; 15262306a36Sopenharmony_ci clock-latency-ns = <310000>; 15362306a36Sopenharmony_ci }; 15462306a36Sopenharmony_ci opp-1200000000 { 15562306a36Sopenharmony_ci opp-hz = /bits/ 64 <1200000000>; 15662306a36Sopenharmony_ci opp-microvolt = <1025000>; 15762306a36Sopenharmony_ci opp-microamp = <90000>; 15862306a36Sopenharmony_ci clock-latency-ns = <290000>; 15962306a36Sopenharmony_ci turbo-mode; 16062306a36Sopenharmony_ci }; 16162306a36Sopenharmony_ci }; 16262306a36Sopenharmony_ci 16362306a36Sopenharmony_ci - | 16462306a36Sopenharmony_ci /* 16562306a36Sopenharmony_ci * Example 3: Dual-cluster, Dual-core per cluster. CPUs within a cluster switch 16662306a36Sopenharmony_ci * DVFS state together. 16762306a36Sopenharmony_ci */ 16862306a36Sopenharmony_ci cpus { 16962306a36Sopenharmony_ci #address-cells = <1>; 17062306a36Sopenharmony_ci #size-cells = <0>; 17162306a36Sopenharmony_ci 17262306a36Sopenharmony_ci cpu@0 { 17362306a36Sopenharmony_ci compatible = "arm,cortex-a7"; 17462306a36Sopenharmony_ci device_type = "cpu"; 17562306a36Sopenharmony_ci reg = <0>; 17662306a36Sopenharmony_ci next-level-cache = <&L2>; 17762306a36Sopenharmony_ci clocks = <&clk_controller 0>; 17862306a36Sopenharmony_ci clock-names = "cpu"; 17962306a36Sopenharmony_ci cpu-supply = <&cpu_supply0>; 18062306a36Sopenharmony_ci operating-points-v2 = <&cluster0_opp>; 18162306a36Sopenharmony_ci }; 18262306a36Sopenharmony_ci 18362306a36Sopenharmony_ci cpu@1 { 18462306a36Sopenharmony_ci compatible = "arm,cortex-a7"; 18562306a36Sopenharmony_ci device_type = "cpu"; 18662306a36Sopenharmony_ci reg = <1>; 18762306a36Sopenharmony_ci next-level-cache = <&L2>; 18862306a36Sopenharmony_ci clocks = <&clk_controller 0>; 18962306a36Sopenharmony_ci clock-names = "cpu"; 19062306a36Sopenharmony_ci cpu-supply = <&cpu_supply0>; 19162306a36Sopenharmony_ci operating-points-v2 = <&cluster0_opp>; 19262306a36Sopenharmony_ci }; 19362306a36Sopenharmony_ci 19462306a36Sopenharmony_ci cpu@100 { 19562306a36Sopenharmony_ci compatible = "arm,cortex-a15"; 19662306a36Sopenharmony_ci device_type = "cpu"; 19762306a36Sopenharmony_ci reg = <100>; 19862306a36Sopenharmony_ci next-level-cache = <&L2>; 19962306a36Sopenharmony_ci clocks = <&clk_controller 1>; 20062306a36Sopenharmony_ci clock-names = "cpu"; 20162306a36Sopenharmony_ci cpu-supply = <&cpu_supply1>; 20262306a36Sopenharmony_ci operating-points-v2 = <&cluster1_opp>; 20362306a36Sopenharmony_ci }; 20462306a36Sopenharmony_ci 20562306a36Sopenharmony_ci cpu@101 { 20662306a36Sopenharmony_ci compatible = "arm,cortex-a15"; 20762306a36Sopenharmony_ci device_type = "cpu"; 20862306a36Sopenharmony_ci reg = <101>; 20962306a36Sopenharmony_ci next-level-cache = <&L2>; 21062306a36Sopenharmony_ci clocks = <&clk_controller 1>; 21162306a36Sopenharmony_ci clock-names = "cpu"; 21262306a36Sopenharmony_ci cpu-supply = <&cpu_supply1>; 21362306a36Sopenharmony_ci operating-points-v2 = <&cluster1_opp>; 21462306a36Sopenharmony_ci }; 21562306a36Sopenharmony_ci }; 21662306a36Sopenharmony_ci 21762306a36Sopenharmony_ci cluster0_opp: opp-table-0 { 21862306a36Sopenharmony_ci compatible = "operating-points-v2"; 21962306a36Sopenharmony_ci opp-shared; 22062306a36Sopenharmony_ci 22162306a36Sopenharmony_ci opp-1000000000 { 22262306a36Sopenharmony_ci opp-hz = /bits/ 64 <1000000000>; 22362306a36Sopenharmony_ci opp-microvolt = <975000 970000 985000>; 22462306a36Sopenharmony_ci opp-microamp = <70000>; 22562306a36Sopenharmony_ci clock-latency-ns = <300000>; 22662306a36Sopenharmony_ci opp-suspend; 22762306a36Sopenharmony_ci }; 22862306a36Sopenharmony_ci opp-1100000000 { 22962306a36Sopenharmony_ci opp-hz = /bits/ 64 <1100000000>; 23062306a36Sopenharmony_ci opp-microvolt = <1000000 980000 1010000>; 23162306a36Sopenharmony_ci opp-microamp = <80000>; 23262306a36Sopenharmony_ci clock-latency-ns = <310000>; 23362306a36Sopenharmony_ci }; 23462306a36Sopenharmony_ci opp-1200000000 { 23562306a36Sopenharmony_ci opp-hz = /bits/ 64 <1200000000>; 23662306a36Sopenharmony_ci opp-microvolt = <1025000>; 23762306a36Sopenharmony_ci opp-microamp = <90000>; 23862306a36Sopenharmony_ci clock-latency-ns = <290000>; 23962306a36Sopenharmony_ci turbo-mode; 24062306a36Sopenharmony_ci }; 24162306a36Sopenharmony_ci }; 24262306a36Sopenharmony_ci 24362306a36Sopenharmony_ci cluster1_opp: opp-table-1 { 24462306a36Sopenharmony_ci compatible = "operating-points-v2"; 24562306a36Sopenharmony_ci opp-shared; 24662306a36Sopenharmony_ci 24762306a36Sopenharmony_ci opp-1300000000 { 24862306a36Sopenharmony_ci opp-hz = /bits/ 64 <1300000000>; 24962306a36Sopenharmony_ci opp-microvolt = <1050000 1045000 1055000>; 25062306a36Sopenharmony_ci opp-microamp = <95000>; 25162306a36Sopenharmony_ci clock-latency-ns = <400000>; 25262306a36Sopenharmony_ci opp-suspend; 25362306a36Sopenharmony_ci }; 25462306a36Sopenharmony_ci opp-1400000000 { 25562306a36Sopenharmony_ci opp-hz = /bits/ 64 <1400000000>; 25662306a36Sopenharmony_ci opp-microvolt = <1075000>; 25762306a36Sopenharmony_ci opp-microamp = <100000>; 25862306a36Sopenharmony_ci clock-latency-ns = <400000>; 25962306a36Sopenharmony_ci }; 26062306a36Sopenharmony_ci opp-1500000000 { 26162306a36Sopenharmony_ci opp-hz = /bits/ 64 <1500000000>; 26262306a36Sopenharmony_ci opp-microvolt = <1100000 1010000 1110000>; 26362306a36Sopenharmony_ci opp-microamp = <95000>; 26462306a36Sopenharmony_ci clock-latency-ns = <400000>; 26562306a36Sopenharmony_ci turbo-mode; 26662306a36Sopenharmony_ci }; 26762306a36Sopenharmony_ci }; 26862306a36Sopenharmony_ci 26962306a36Sopenharmony_ci - | 27062306a36Sopenharmony_ci /* Example 4: Handling multiple regulators */ 27162306a36Sopenharmony_ci cpus { 27262306a36Sopenharmony_ci #address-cells = <1>; 27362306a36Sopenharmony_ci #size-cells = <0>; 27462306a36Sopenharmony_ci 27562306a36Sopenharmony_ci cpu@0 { 27662306a36Sopenharmony_ci compatible = "foo,cpu-type"; 27762306a36Sopenharmony_ci device_type = "cpu"; 27862306a36Sopenharmony_ci reg = <0>; 27962306a36Sopenharmony_ci 28062306a36Sopenharmony_ci vcc0-supply = <&cpu_supply0>; 28162306a36Sopenharmony_ci vcc1-supply = <&cpu_supply1>; 28262306a36Sopenharmony_ci vcc2-supply = <&cpu_supply2>; 28362306a36Sopenharmony_ci operating-points-v2 = <&cpu0_opp_table4>; 28462306a36Sopenharmony_ci }; 28562306a36Sopenharmony_ci }; 28662306a36Sopenharmony_ci 28762306a36Sopenharmony_ci cpu0_opp_table4: opp-table-0 { 28862306a36Sopenharmony_ci compatible = "operating-points-v2"; 28962306a36Sopenharmony_ci opp-shared; 29062306a36Sopenharmony_ci 29162306a36Sopenharmony_ci opp-1000000000 { 29262306a36Sopenharmony_ci opp-hz = /bits/ 64 <1000000000>; 29362306a36Sopenharmony_ci opp-microvolt = <970000>, /* Supply 0 */ 29462306a36Sopenharmony_ci <960000>, /* Supply 1 */ 29562306a36Sopenharmony_ci <960000>; /* Supply 2 */ 29662306a36Sopenharmony_ci opp-microamp = <70000>, /* Supply 0 */ 29762306a36Sopenharmony_ci <70000>, /* Supply 1 */ 29862306a36Sopenharmony_ci <70000>; /* Supply 2 */ 29962306a36Sopenharmony_ci clock-latency-ns = <300000>; 30062306a36Sopenharmony_ci }; 30162306a36Sopenharmony_ci 30262306a36Sopenharmony_ci /* OR */ 30362306a36Sopenharmony_ci 30462306a36Sopenharmony_ci opp-1000000001 { 30562306a36Sopenharmony_ci opp-hz = /bits/ 64 <1000000001>; 30662306a36Sopenharmony_ci opp-microvolt = <975000 970000 985000>, /* Supply 0 */ 30762306a36Sopenharmony_ci <965000 960000 975000>, /* Supply 1 */ 30862306a36Sopenharmony_ci <965000 960000 975000>; /* Supply 2 */ 30962306a36Sopenharmony_ci opp-microamp = <70000>, /* Supply 0 */ 31062306a36Sopenharmony_ci <70000>, /* Supply 1 */ 31162306a36Sopenharmony_ci <70000>; /* Supply 2 */ 31262306a36Sopenharmony_ci clock-latency-ns = <300000>; 31362306a36Sopenharmony_ci }; 31462306a36Sopenharmony_ci 31562306a36Sopenharmony_ci /* OR */ 31662306a36Sopenharmony_ci 31762306a36Sopenharmony_ci opp-1000000002 { 31862306a36Sopenharmony_ci opp-hz = /bits/ 64 <1000000002>; 31962306a36Sopenharmony_ci opp-microvolt = <975000 970000 985000>, /* Supply 0 */ 32062306a36Sopenharmony_ci <965000 960000 975000>, /* Supply 1 */ 32162306a36Sopenharmony_ci <965000 960000 975000>; /* Supply 2 */ 32262306a36Sopenharmony_ci opp-microamp = <70000>, /* Supply 0 */ 32362306a36Sopenharmony_ci <0>, /* Supply 1 doesn't need this */ 32462306a36Sopenharmony_ci <70000>; /* Supply 2 */ 32562306a36Sopenharmony_ci clock-latency-ns = <300000>; 32662306a36Sopenharmony_ci }; 32762306a36Sopenharmony_ci }; 32862306a36Sopenharmony_ci 32962306a36Sopenharmony_ci - | 33062306a36Sopenharmony_ci /* 33162306a36Sopenharmony_ci * Example 5: opp-supported-hw 33262306a36Sopenharmony_ci * (example: three level hierarchy of versions: cuts, substrate and process) 33362306a36Sopenharmony_ci */ 33462306a36Sopenharmony_ci cpus { 33562306a36Sopenharmony_ci #address-cells = <1>; 33662306a36Sopenharmony_ci #size-cells = <0>; 33762306a36Sopenharmony_ci 33862306a36Sopenharmony_ci cpu@0 { 33962306a36Sopenharmony_ci compatible = "arm,cortex-a7"; 34062306a36Sopenharmony_ci device_type = "cpu"; 34162306a36Sopenharmony_ci reg = <0>; 34262306a36Sopenharmony_ci cpu-supply = <&cpu_supply>; 34362306a36Sopenharmony_ci operating-points-v2 = <&cpu0_opp_table_slow>; 34462306a36Sopenharmony_ci }; 34562306a36Sopenharmony_ci }; 34662306a36Sopenharmony_ci 34762306a36Sopenharmony_ci cpu0_opp_table_slow: opp-table { 34862306a36Sopenharmony_ci compatible = "operating-points-v2"; 34962306a36Sopenharmony_ci opp-shared; 35062306a36Sopenharmony_ci 35162306a36Sopenharmony_ci opp-600000000 { 35262306a36Sopenharmony_ci /* 35362306a36Sopenharmony_ci * Supports all substrate and process versions for 0xF 35462306a36Sopenharmony_ci * cuts, i.e. only first four cuts. 35562306a36Sopenharmony_ci */ 35662306a36Sopenharmony_ci opp-supported-hw = <0xF 0xFFFFFFFF 0xFFFFFFFF>; 35762306a36Sopenharmony_ci opp-hz = /bits/ 64 <600000000>; 35862306a36Sopenharmony_ci }; 35962306a36Sopenharmony_ci 36062306a36Sopenharmony_ci opp-800000000 { 36162306a36Sopenharmony_ci /* 36262306a36Sopenharmony_ci * Supports: 36362306a36Sopenharmony_ci * - cuts: only one, 6th cut (represented by 6th bit). 36462306a36Sopenharmony_ci * - substrate: supports 16 different substrate versions 36562306a36Sopenharmony_ci * - process: supports 9 different process versions 36662306a36Sopenharmony_ci */ 36762306a36Sopenharmony_ci opp-supported-hw = <0x20 0xff0000ff 0x0000f4f0>; 36862306a36Sopenharmony_ci opp-hz = /bits/ 64 <800000000>; 36962306a36Sopenharmony_ci }; 37062306a36Sopenharmony_ci 37162306a36Sopenharmony_ci opp-900000000 { 37262306a36Sopenharmony_ci /* 37362306a36Sopenharmony_ci * Supports: 37462306a36Sopenharmony_ci * - All cuts and substrate where process version is 0x2. 37562306a36Sopenharmony_ci * - All cuts and process where substrate version is 0x2. 37662306a36Sopenharmony_ci */ 37762306a36Sopenharmony_ci opp-supported-hw = <0xFFFFFFFF 0xFFFFFFFF 0x02>, 37862306a36Sopenharmony_ci <0xFFFFFFFF 0x01 0xFFFFFFFF>; 37962306a36Sopenharmony_ci opp-hz = /bits/ 64 <900000000>; 38062306a36Sopenharmony_ci }; 38162306a36Sopenharmony_ci }; 38262306a36Sopenharmony_ci 38362306a36Sopenharmony_ci - | 38462306a36Sopenharmony_ci /* 38562306a36Sopenharmony_ci * Example 6: opp-microvolt-<name>, opp-microamp-<name>: 38662306a36Sopenharmony_ci * (example: device with two possible microvolt ranges: slow and fast) 38762306a36Sopenharmony_ci */ 38862306a36Sopenharmony_ci cpus { 38962306a36Sopenharmony_ci #address-cells = <1>; 39062306a36Sopenharmony_ci #size-cells = <0>; 39162306a36Sopenharmony_ci 39262306a36Sopenharmony_ci cpu@0 { 39362306a36Sopenharmony_ci compatible = "arm,cortex-a7"; 39462306a36Sopenharmony_ci device_type = "cpu"; 39562306a36Sopenharmony_ci reg = <0>; 39662306a36Sopenharmony_ci operating-points-v2 = <&cpu0_opp_table6>; 39762306a36Sopenharmony_ci }; 39862306a36Sopenharmony_ci }; 39962306a36Sopenharmony_ci 40062306a36Sopenharmony_ci cpu0_opp_table6: opp-table-0 { 40162306a36Sopenharmony_ci compatible = "operating-points-v2"; 40262306a36Sopenharmony_ci opp-shared; 40362306a36Sopenharmony_ci 40462306a36Sopenharmony_ci opp-1000000000 { 40562306a36Sopenharmony_ci opp-hz = /bits/ 64 <1000000000>; 40662306a36Sopenharmony_ci opp-microvolt-slow = <915000 900000 925000>; 40762306a36Sopenharmony_ci opp-microvolt-fast = <975000 970000 985000>; 40862306a36Sopenharmony_ci opp-microamp-slow = <70000>; 40962306a36Sopenharmony_ci opp-microamp-fast = <71000>; 41062306a36Sopenharmony_ci }; 41162306a36Sopenharmony_ci 41262306a36Sopenharmony_ci opp-1200000000 { 41362306a36Sopenharmony_ci opp-hz = /bits/ 64 <1200000000>; 41462306a36Sopenharmony_ci opp-microvolt-slow = <915000 900000 925000>, /* Supply vcc0 */ 41562306a36Sopenharmony_ci <925000 910000 935000>; /* Supply vcc1 */ 41662306a36Sopenharmony_ci opp-microvolt-fast = <975000 970000 985000>, /* Supply vcc0 */ 41762306a36Sopenharmony_ci <965000 960000 975000>; /* Supply vcc1 */ 41862306a36Sopenharmony_ci opp-microamp = <70000>; /* Will be used for both slow/fast */ 41962306a36Sopenharmony_ci }; 42062306a36Sopenharmony_ci }; 42162306a36Sopenharmony_ci 42262306a36Sopenharmony_ci - | 42362306a36Sopenharmony_ci /* 42462306a36Sopenharmony_ci * Example 7: Single cluster Quad-core ARM cortex A53, OPP points from firmware, 42562306a36Sopenharmony_ci * distinct clock controls but two sets of clock/voltage/current lines. 42662306a36Sopenharmony_ci */ 42762306a36Sopenharmony_ci cpus { 42862306a36Sopenharmony_ci #address-cells = <2>; 42962306a36Sopenharmony_ci #size-cells = <0>; 43062306a36Sopenharmony_ci 43162306a36Sopenharmony_ci cpu@0 { 43262306a36Sopenharmony_ci compatible = "arm,cortex-a53"; 43362306a36Sopenharmony_ci device_type = "cpu"; 43462306a36Sopenharmony_ci reg = <0x0 0x100>; 43562306a36Sopenharmony_ci next-level-cache = <&A53_L2>; 43662306a36Sopenharmony_ci clocks = <&dvfs_controller 0>; 43762306a36Sopenharmony_ci operating-points-v2 = <&cpu_opp0_table>; 43862306a36Sopenharmony_ci }; 43962306a36Sopenharmony_ci cpu@1 { 44062306a36Sopenharmony_ci compatible = "arm,cortex-a53"; 44162306a36Sopenharmony_ci device_type = "cpu"; 44262306a36Sopenharmony_ci reg = <0x0 0x101>; 44362306a36Sopenharmony_ci next-level-cache = <&A53_L2>; 44462306a36Sopenharmony_ci clocks = <&dvfs_controller 1>; 44562306a36Sopenharmony_ci operating-points-v2 = <&cpu_opp0_table>; 44662306a36Sopenharmony_ci }; 44762306a36Sopenharmony_ci cpu@2 { 44862306a36Sopenharmony_ci compatible = "arm,cortex-a53"; 44962306a36Sopenharmony_ci device_type = "cpu"; 45062306a36Sopenharmony_ci reg = <0x0 0x102>; 45162306a36Sopenharmony_ci next-level-cache = <&A53_L2>; 45262306a36Sopenharmony_ci clocks = <&dvfs_controller 2>; 45362306a36Sopenharmony_ci operating-points-v2 = <&cpu_opp1_table>; 45462306a36Sopenharmony_ci }; 45562306a36Sopenharmony_ci cpu@3 { 45662306a36Sopenharmony_ci compatible = "arm,cortex-a53"; 45762306a36Sopenharmony_ci device_type = "cpu"; 45862306a36Sopenharmony_ci reg = <0x0 0x103>; 45962306a36Sopenharmony_ci next-level-cache = <&A53_L2>; 46062306a36Sopenharmony_ci clocks = <&dvfs_controller 3>; 46162306a36Sopenharmony_ci operating-points-v2 = <&cpu_opp1_table>; 46262306a36Sopenharmony_ci }; 46362306a36Sopenharmony_ci 46462306a36Sopenharmony_ci }; 46562306a36Sopenharmony_ci 46662306a36Sopenharmony_ci cpu_opp0_table: opp-table-0 { 46762306a36Sopenharmony_ci compatible = "operating-points-v2"; 46862306a36Sopenharmony_ci opp-shared; 46962306a36Sopenharmony_ci }; 47062306a36Sopenharmony_ci 47162306a36Sopenharmony_ci cpu_opp1_table: opp-table-1 { 47262306a36Sopenharmony_ci compatible = "operating-points-v2"; 47362306a36Sopenharmony_ci opp-shared; 47462306a36Sopenharmony_ci }; 47562306a36Sopenharmony_ci... 476