1354d7675SEmmanuel Vadot# SPDX-License-Identifier: (GPL-2.0-only OR BSD-2-Clause) 2354d7675SEmmanuel Vadot%YAML 1.2 3354d7675SEmmanuel Vadot--- 4354d7675SEmmanuel Vadot$id: http://devicetree.org/schemas/opp/opp-v2.yaml# 5354d7675SEmmanuel Vadot$schema: http://devicetree.org/meta-schemas/core.yaml# 6354d7675SEmmanuel Vadot 7*8bab661aSEmmanuel Vadottitle: Generic OPP (Operating Performance Points) 8354d7675SEmmanuel Vadot 9354d7675SEmmanuel Vadotmaintainers: 10354d7675SEmmanuel Vadot - Viresh Kumar <viresh.kumar@linaro.org> 11354d7675SEmmanuel Vadot 12354d7675SEmmanuel VadotallOf: 13354d7675SEmmanuel Vadot - $ref: opp-v2-base.yaml# 14354d7675SEmmanuel Vadot 15354d7675SEmmanuel Vadotproperties: 16354d7675SEmmanuel Vadot compatible: 17354d7675SEmmanuel Vadot const: operating-points-v2 18354d7675SEmmanuel Vadot 19354d7675SEmmanuel VadotunevaluatedProperties: false 20354d7675SEmmanuel Vadot 21354d7675SEmmanuel Vadotexamples: 22354d7675SEmmanuel Vadot - | 23354d7675SEmmanuel Vadot /* 24354d7675SEmmanuel Vadot * Example 1: Single cluster Dual-core ARM cortex A9, switch DVFS states 25354d7675SEmmanuel Vadot * together. 26354d7675SEmmanuel Vadot */ 27354d7675SEmmanuel Vadot cpus { 28354d7675SEmmanuel Vadot #address-cells = <1>; 29354d7675SEmmanuel Vadot #size-cells = <0>; 30354d7675SEmmanuel Vadot 31354d7675SEmmanuel Vadot cpu@0 { 32354d7675SEmmanuel Vadot compatible = "arm,cortex-a9"; 33354d7675SEmmanuel Vadot device_type = "cpu"; 34354d7675SEmmanuel Vadot reg = <0>; 35354d7675SEmmanuel Vadot next-level-cache = <&L2>; 36354d7675SEmmanuel Vadot clocks = <&clk_controller 0>; 37354d7675SEmmanuel Vadot clock-names = "cpu"; 38354d7675SEmmanuel Vadot cpu-supply = <&cpu_supply0>; 39354d7675SEmmanuel Vadot operating-points-v2 = <&cpu0_opp_table0>; 40354d7675SEmmanuel Vadot }; 41354d7675SEmmanuel Vadot 42354d7675SEmmanuel Vadot cpu@1 { 43354d7675SEmmanuel Vadot compatible = "arm,cortex-a9"; 44354d7675SEmmanuel Vadot device_type = "cpu"; 45354d7675SEmmanuel Vadot reg = <1>; 46354d7675SEmmanuel Vadot next-level-cache = <&L2>; 47354d7675SEmmanuel Vadot clocks = <&clk_controller 0>; 48354d7675SEmmanuel Vadot clock-names = "cpu"; 49354d7675SEmmanuel Vadot cpu-supply = <&cpu_supply0>; 50354d7675SEmmanuel Vadot operating-points-v2 = <&cpu0_opp_table0>; 51354d7675SEmmanuel Vadot }; 52354d7675SEmmanuel Vadot }; 53354d7675SEmmanuel Vadot 54354d7675SEmmanuel Vadot cpu0_opp_table0: opp-table { 55354d7675SEmmanuel Vadot compatible = "operating-points-v2"; 56354d7675SEmmanuel Vadot opp-shared; 57354d7675SEmmanuel Vadot 58354d7675SEmmanuel Vadot opp-1000000000 { 59354d7675SEmmanuel Vadot opp-hz = /bits/ 64 <1000000000>; 60354d7675SEmmanuel Vadot opp-microvolt = <975000 970000 985000>; 61354d7675SEmmanuel Vadot opp-microamp = <70000>; 62354d7675SEmmanuel Vadot clock-latency-ns = <300000>; 63354d7675SEmmanuel Vadot opp-suspend; 64354d7675SEmmanuel Vadot }; 65354d7675SEmmanuel Vadot opp-1100000000 { 66354d7675SEmmanuel Vadot opp-hz = /bits/ 64 <1100000000>; 67354d7675SEmmanuel Vadot opp-microvolt = <1000000 980000 1010000>; 68354d7675SEmmanuel Vadot opp-microamp = <80000>; 69354d7675SEmmanuel Vadot clock-latency-ns = <310000>; 70354d7675SEmmanuel Vadot }; 71354d7675SEmmanuel Vadot opp-1200000000 { 72354d7675SEmmanuel Vadot opp-hz = /bits/ 64 <1200000000>; 73354d7675SEmmanuel Vadot opp-microvolt = <1025000>; 74354d7675SEmmanuel Vadot clock-latency-ns = <290000>; 75354d7675SEmmanuel Vadot turbo-mode; 76354d7675SEmmanuel Vadot }; 77354d7675SEmmanuel Vadot }; 78354d7675SEmmanuel Vadot 79354d7675SEmmanuel Vadot - | 80354d7675SEmmanuel Vadot /* 81354d7675SEmmanuel Vadot * Example 2: Single cluster, Quad-core Qualcom-krait, switches DVFS states 82354d7675SEmmanuel Vadot * independently. 83354d7675SEmmanuel Vadot */ 84354d7675SEmmanuel Vadot cpus { 85354d7675SEmmanuel Vadot #address-cells = <1>; 86354d7675SEmmanuel Vadot #size-cells = <0>; 87354d7675SEmmanuel Vadot 88354d7675SEmmanuel Vadot cpu@0 { 89354d7675SEmmanuel Vadot compatible = "qcom,krait"; 90354d7675SEmmanuel Vadot device_type = "cpu"; 91354d7675SEmmanuel Vadot reg = <0>; 92354d7675SEmmanuel Vadot next-level-cache = <&L2>; 93354d7675SEmmanuel Vadot clocks = <&clk_controller 0>; 94354d7675SEmmanuel Vadot clock-names = "cpu"; 95354d7675SEmmanuel Vadot cpu-supply = <&cpu_supply0>; 96354d7675SEmmanuel Vadot operating-points-v2 = <&cpu_opp_table>; 97354d7675SEmmanuel Vadot }; 98354d7675SEmmanuel Vadot 99354d7675SEmmanuel Vadot cpu@1 { 100354d7675SEmmanuel Vadot compatible = "qcom,krait"; 101354d7675SEmmanuel Vadot device_type = "cpu"; 102354d7675SEmmanuel Vadot reg = <1>; 103354d7675SEmmanuel Vadot next-level-cache = <&L2>; 104354d7675SEmmanuel Vadot clocks = <&clk_controller 1>; 105354d7675SEmmanuel Vadot clock-names = "cpu"; 106354d7675SEmmanuel Vadot cpu-supply = <&cpu_supply1>; 107354d7675SEmmanuel Vadot operating-points-v2 = <&cpu_opp_table>; 108354d7675SEmmanuel Vadot }; 109354d7675SEmmanuel Vadot 110354d7675SEmmanuel Vadot cpu@2 { 111354d7675SEmmanuel Vadot compatible = "qcom,krait"; 112354d7675SEmmanuel Vadot device_type = "cpu"; 113354d7675SEmmanuel Vadot reg = <2>; 114354d7675SEmmanuel Vadot next-level-cache = <&L2>; 115354d7675SEmmanuel Vadot clocks = <&clk_controller 2>; 116354d7675SEmmanuel Vadot clock-names = "cpu"; 117354d7675SEmmanuel Vadot cpu-supply = <&cpu_supply2>; 118354d7675SEmmanuel Vadot operating-points-v2 = <&cpu_opp_table>; 119354d7675SEmmanuel Vadot }; 120354d7675SEmmanuel Vadot 121354d7675SEmmanuel Vadot cpu@3 { 122354d7675SEmmanuel Vadot compatible = "qcom,krait"; 123354d7675SEmmanuel Vadot device_type = "cpu"; 124354d7675SEmmanuel Vadot reg = <3>; 125354d7675SEmmanuel Vadot next-level-cache = <&L2>; 126354d7675SEmmanuel Vadot clocks = <&clk_controller 3>; 127354d7675SEmmanuel Vadot clock-names = "cpu"; 128354d7675SEmmanuel Vadot cpu-supply = <&cpu_supply3>; 129354d7675SEmmanuel Vadot operating-points-v2 = <&cpu_opp_table>; 130354d7675SEmmanuel Vadot }; 131354d7675SEmmanuel Vadot }; 132354d7675SEmmanuel Vadot 133354d7675SEmmanuel Vadot cpu_opp_table: opp-table { 134354d7675SEmmanuel Vadot compatible = "operating-points-v2"; 135354d7675SEmmanuel Vadot 136354d7675SEmmanuel Vadot /* 137354d7675SEmmanuel Vadot * Missing opp-shared property means CPUs switch DVFS states 138354d7675SEmmanuel Vadot * independently. 139354d7675SEmmanuel Vadot */ 140354d7675SEmmanuel Vadot 141354d7675SEmmanuel Vadot opp-1000000000 { 142354d7675SEmmanuel Vadot opp-hz = /bits/ 64 <1000000000>; 143354d7675SEmmanuel Vadot opp-microvolt = <975000 970000 985000>; 144354d7675SEmmanuel Vadot opp-microamp = <70000>; 145354d7675SEmmanuel Vadot clock-latency-ns = <300000>; 146354d7675SEmmanuel Vadot opp-suspend; 147354d7675SEmmanuel Vadot }; 148354d7675SEmmanuel Vadot opp-1100000000 { 149354d7675SEmmanuel Vadot opp-hz = /bits/ 64 <1100000000>; 150354d7675SEmmanuel Vadot opp-microvolt = <1000000 980000 1010000>; 151354d7675SEmmanuel Vadot opp-microamp = <80000>; 152354d7675SEmmanuel Vadot clock-latency-ns = <310000>; 153354d7675SEmmanuel Vadot }; 154354d7675SEmmanuel Vadot opp-1200000000 { 155354d7675SEmmanuel Vadot opp-hz = /bits/ 64 <1200000000>; 156354d7675SEmmanuel Vadot opp-microvolt = <1025000>; 157354d7675SEmmanuel Vadot opp-microamp = <90000>; 158*8bab661aSEmmanuel Vadot clock-latency-ns = <290000>; 159354d7675SEmmanuel Vadot turbo-mode; 160354d7675SEmmanuel Vadot }; 161354d7675SEmmanuel Vadot }; 162354d7675SEmmanuel Vadot 163354d7675SEmmanuel Vadot - | 164354d7675SEmmanuel Vadot /* 165354d7675SEmmanuel Vadot * Example 3: Dual-cluster, Dual-core per cluster. CPUs within a cluster switch 166354d7675SEmmanuel Vadot * DVFS state together. 167354d7675SEmmanuel Vadot */ 168354d7675SEmmanuel Vadot cpus { 169354d7675SEmmanuel Vadot #address-cells = <1>; 170354d7675SEmmanuel Vadot #size-cells = <0>; 171354d7675SEmmanuel Vadot 172354d7675SEmmanuel Vadot cpu@0 { 173354d7675SEmmanuel Vadot compatible = "arm,cortex-a7"; 174354d7675SEmmanuel Vadot device_type = "cpu"; 175354d7675SEmmanuel Vadot reg = <0>; 176354d7675SEmmanuel Vadot next-level-cache = <&L2>; 177354d7675SEmmanuel Vadot clocks = <&clk_controller 0>; 178354d7675SEmmanuel Vadot clock-names = "cpu"; 179354d7675SEmmanuel Vadot cpu-supply = <&cpu_supply0>; 180354d7675SEmmanuel Vadot operating-points-v2 = <&cluster0_opp>; 181354d7675SEmmanuel Vadot }; 182354d7675SEmmanuel Vadot 183354d7675SEmmanuel Vadot cpu@1 { 184354d7675SEmmanuel Vadot compatible = "arm,cortex-a7"; 185354d7675SEmmanuel Vadot device_type = "cpu"; 186354d7675SEmmanuel Vadot reg = <1>; 187354d7675SEmmanuel Vadot next-level-cache = <&L2>; 188354d7675SEmmanuel Vadot clocks = <&clk_controller 0>; 189354d7675SEmmanuel Vadot clock-names = "cpu"; 190354d7675SEmmanuel Vadot cpu-supply = <&cpu_supply0>; 191354d7675SEmmanuel Vadot operating-points-v2 = <&cluster0_opp>; 192354d7675SEmmanuel Vadot }; 193354d7675SEmmanuel Vadot 194354d7675SEmmanuel Vadot cpu@100 { 195354d7675SEmmanuel Vadot compatible = "arm,cortex-a15"; 196354d7675SEmmanuel Vadot device_type = "cpu"; 197354d7675SEmmanuel Vadot reg = <100>; 198354d7675SEmmanuel Vadot next-level-cache = <&L2>; 199354d7675SEmmanuel Vadot clocks = <&clk_controller 1>; 200354d7675SEmmanuel Vadot clock-names = "cpu"; 201354d7675SEmmanuel Vadot cpu-supply = <&cpu_supply1>; 202354d7675SEmmanuel Vadot operating-points-v2 = <&cluster1_opp>; 203354d7675SEmmanuel Vadot }; 204354d7675SEmmanuel Vadot 205354d7675SEmmanuel Vadot cpu@101 { 206354d7675SEmmanuel Vadot compatible = "arm,cortex-a15"; 207354d7675SEmmanuel Vadot device_type = "cpu"; 208354d7675SEmmanuel Vadot reg = <101>; 209354d7675SEmmanuel Vadot next-level-cache = <&L2>; 210354d7675SEmmanuel Vadot clocks = <&clk_controller 1>; 211354d7675SEmmanuel Vadot clock-names = "cpu"; 212354d7675SEmmanuel Vadot cpu-supply = <&cpu_supply1>; 213354d7675SEmmanuel Vadot operating-points-v2 = <&cluster1_opp>; 214354d7675SEmmanuel Vadot }; 215354d7675SEmmanuel Vadot }; 216354d7675SEmmanuel Vadot 217354d7675SEmmanuel Vadot cluster0_opp: opp-table-0 { 218354d7675SEmmanuel Vadot compatible = "operating-points-v2"; 219354d7675SEmmanuel Vadot opp-shared; 220354d7675SEmmanuel Vadot 221354d7675SEmmanuel Vadot opp-1000000000 { 222354d7675SEmmanuel Vadot opp-hz = /bits/ 64 <1000000000>; 223354d7675SEmmanuel Vadot opp-microvolt = <975000 970000 985000>; 224354d7675SEmmanuel Vadot opp-microamp = <70000>; 225354d7675SEmmanuel Vadot clock-latency-ns = <300000>; 226354d7675SEmmanuel Vadot opp-suspend; 227354d7675SEmmanuel Vadot }; 228354d7675SEmmanuel Vadot opp-1100000000 { 229354d7675SEmmanuel Vadot opp-hz = /bits/ 64 <1100000000>; 230354d7675SEmmanuel Vadot opp-microvolt = <1000000 980000 1010000>; 231354d7675SEmmanuel Vadot opp-microamp = <80000>; 232354d7675SEmmanuel Vadot clock-latency-ns = <310000>; 233354d7675SEmmanuel Vadot }; 234354d7675SEmmanuel Vadot opp-1200000000 { 235354d7675SEmmanuel Vadot opp-hz = /bits/ 64 <1200000000>; 236354d7675SEmmanuel Vadot opp-microvolt = <1025000>; 237354d7675SEmmanuel Vadot opp-microamp = <90000>; 238354d7675SEmmanuel Vadot clock-latency-ns = <290000>; 239354d7675SEmmanuel Vadot turbo-mode; 240354d7675SEmmanuel Vadot }; 241354d7675SEmmanuel Vadot }; 242354d7675SEmmanuel Vadot 243354d7675SEmmanuel Vadot cluster1_opp: opp-table-1 { 244354d7675SEmmanuel Vadot compatible = "operating-points-v2"; 245354d7675SEmmanuel Vadot opp-shared; 246354d7675SEmmanuel Vadot 247354d7675SEmmanuel Vadot opp-1300000000 { 248354d7675SEmmanuel Vadot opp-hz = /bits/ 64 <1300000000>; 249354d7675SEmmanuel Vadot opp-microvolt = <1050000 1045000 1055000>; 250354d7675SEmmanuel Vadot opp-microamp = <95000>; 251354d7675SEmmanuel Vadot clock-latency-ns = <400000>; 252354d7675SEmmanuel Vadot opp-suspend; 253354d7675SEmmanuel Vadot }; 254354d7675SEmmanuel Vadot opp-1400000000 { 255354d7675SEmmanuel Vadot opp-hz = /bits/ 64 <1400000000>; 256354d7675SEmmanuel Vadot opp-microvolt = <1075000>; 257354d7675SEmmanuel Vadot opp-microamp = <100000>; 258354d7675SEmmanuel Vadot clock-latency-ns = <400000>; 259354d7675SEmmanuel Vadot }; 260354d7675SEmmanuel Vadot opp-1500000000 { 261354d7675SEmmanuel Vadot opp-hz = /bits/ 64 <1500000000>; 262354d7675SEmmanuel Vadot opp-microvolt = <1100000 1010000 1110000>; 263354d7675SEmmanuel Vadot opp-microamp = <95000>; 264354d7675SEmmanuel Vadot clock-latency-ns = <400000>; 265354d7675SEmmanuel Vadot turbo-mode; 266354d7675SEmmanuel Vadot }; 267354d7675SEmmanuel Vadot }; 268354d7675SEmmanuel Vadot 269354d7675SEmmanuel Vadot - | 270354d7675SEmmanuel Vadot /* Example 4: Handling multiple regulators */ 271354d7675SEmmanuel Vadot cpus { 272354d7675SEmmanuel Vadot #address-cells = <1>; 273354d7675SEmmanuel Vadot #size-cells = <0>; 274354d7675SEmmanuel Vadot 275354d7675SEmmanuel Vadot cpu@0 { 276354d7675SEmmanuel Vadot compatible = "foo,cpu-type"; 277354d7675SEmmanuel Vadot device_type = "cpu"; 278354d7675SEmmanuel Vadot reg = <0>; 279354d7675SEmmanuel Vadot 280354d7675SEmmanuel Vadot vcc0-supply = <&cpu_supply0>; 281354d7675SEmmanuel Vadot vcc1-supply = <&cpu_supply1>; 282354d7675SEmmanuel Vadot vcc2-supply = <&cpu_supply2>; 283354d7675SEmmanuel Vadot operating-points-v2 = <&cpu0_opp_table4>; 284354d7675SEmmanuel Vadot }; 285354d7675SEmmanuel Vadot }; 286354d7675SEmmanuel Vadot 287354d7675SEmmanuel Vadot cpu0_opp_table4: opp-table-0 { 288354d7675SEmmanuel Vadot compatible = "operating-points-v2"; 289354d7675SEmmanuel Vadot opp-shared; 290354d7675SEmmanuel Vadot 291354d7675SEmmanuel Vadot opp-1000000000 { 292354d7675SEmmanuel Vadot opp-hz = /bits/ 64 <1000000000>; 293354d7675SEmmanuel Vadot opp-microvolt = <970000>, /* Supply 0 */ 294354d7675SEmmanuel Vadot <960000>, /* Supply 1 */ 295354d7675SEmmanuel Vadot <960000>; /* Supply 2 */ 296354d7675SEmmanuel Vadot opp-microamp = <70000>, /* Supply 0 */ 297354d7675SEmmanuel Vadot <70000>, /* Supply 1 */ 298354d7675SEmmanuel Vadot <70000>; /* Supply 2 */ 299354d7675SEmmanuel Vadot clock-latency-ns = <300000>; 300354d7675SEmmanuel Vadot }; 301354d7675SEmmanuel Vadot 302354d7675SEmmanuel Vadot /* OR */ 303354d7675SEmmanuel Vadot 304354d7675SEmmanuel Vadot opp-1000000001 { 305354d7675SEmmanuel Vadot opp-hz = /bits/ 64 <1000000001>; 306354d7675SEmmanuel Vadot opp-microvolt = <975000 970000 985000>, /* Supply 0 */ 307354d7675SEmmanuel Vadot <965000 960000 975000>, /* Supply 1 */ 308354d7675SEmmanuel Vadot <965000 960000 975000>; /* Supply 2 */ 309354d7675SEmmanuel Vadot opp-microamp = <70000>, /* Supply 0 */ 310354d7675SEmmanuel Vadot <70000>, /* Supply 1 */ 311354d7675SEmmanuel Vadot <70000>; /* Supply 2 */ 312354d7675SEmmanuel Vadot clock-latency-ns = <300000>; 313354d7675SEmmanuel Vadot }; 314354d7675SEmmanuel Vadot 315354d7675SEmmanuel Vadot /* OR */ 316354d7675SEmmanuel Vadot 317354d7675SEmmanuel Vadot opp-1000000002 { 318354d7675SEmmanuel Vadot opp-hz = /bits/ 64 <1000000002>; 319354d7675SEmmanuel Vadot opp-microvolt = <975000 970000 985000>, /* Supply 0 */ 320354d7675SEmmanuel Vadot <965000 960000 975000>, /* Supply 1 */ 321354d7675SEmmanuel Vadot <965000 960000 975000>; /* Supply 2 */ 322354d7675SEmmanuel Vadot opp-microamp = <70000>, /* Supply 0 */ 323354d7675SEmmanuel Vadot <0>, /* Supply 1 doesn't need this */ 324354d7675SEmmanuel Vadot <70000>; /* Supply 2 */ 325354d7675SEmmanuel Vadot clock-latency-ns = <300000>; 326354d7675SEmmanuel Vadot }; 327354d7675SEmmanuel Vadot }; 328354d7675SEmmanuel Vadot 329354d7675SEmmanuel Vadot - | 330354d7675SEmmanuel Vadot /* 331354d7675SEmmanuel Vadot * Example 5: opp-supported-hw 332354d7675SEmmanuel Vadot * (example: three level hierarchy of versions: cuts, substrate and process) 333354d7675SEmmanuel Vadot */ 334354d7675SEmmanuel Vadot cpus { 335354d7675SEmmanuel Vadot #address-cells = <1>; 336354d7675SEmmanuel Vadot #size-cells = <0>; 337354d7675SEmmanuel Vadot 338354d7675SEmmanuel Vadot cpu@0 { 339354d7675SEmmanuel Vadot compatible = "arm,cortex-a7"; 340354d7675SEmmanuel Vadot device_type = "cpu"; 341354d7675SEmmanuel Vadot reg = <0>; 342354d7675SEmmanuel Vadot cpu-supply = <&cpu_supply>; 343354d7675SEmmanuel Vadot operating-points-v2 = <&cpu0_opp_table_slow>; 344354d7675SEmmanuel Vadot }; 345354d7675SEmmanuel Vadot }; 346354d7675SEmmanuel Vadot 347354d7675SEmmanuel Vadot cpu0_opp_table_slow: opp-table { 348354d7675SEmmanuel Vadot compatible = "operating-points-v2"; 349354d7675SEmmanuel Vadot opp-shared; 350354d7675SEmmanuel Vadot 351354d7675SEmmanuel Vadot opp-600000000 { 352354d7675SEmmanuel Vadot /* 353354d7675SEmmanuel Vadot * Supports all substrate and process versions for 0xF 354354d7675SEmmanuel Vadot * cuts, i.e. only first four cuts. 355354d7675SEmmanuel Vadot */ 356354d7675SEmmanuel Vadot opp-supported-hw = <0xF 0xFFFFFFFF 0xFFFFFFFF>; 357354d7675SEmmanuel Vadot opp-hz = /bits/ 64 <600000000>; 358354d7675SEmmanuel Vadot }; 359354d7675SEmmanuel Vadot 360354d7675SEmmanuel Vadot opp-800000000 { 361354d7675SEmmanuel Vadot /* 362354d7675SEmmanuel Vadot * Supports: 363354d7675SEmmanuel Vadot * - cuts: only one, 6th cut (represented by 6th bit). 364354d7675SEmmanuel Vadot * - substrate: supports 16 different substrate versions 365354d7675SEmmanuel Vadot * - process: supports 9 different process versions 366354d7675SEmmanuel Vadot */ 367354d7675SEmmanuel Vadot opp-supported-hw = <0x20 0xff0000ff 0x0000f4f0>; 368354d7675SEmmanuel Vadot opp-hz = /bits/ 64 <800000000>; 369354d7675SEmmanuel Vadot }; 370354d7675SEmmanuel Vadot 371354d7675SEmmanuel Vadot opp-900000000 { 372354d7675SEmmanuel Vadot /* 373354d7675SEmmanuel Vadot * Supports: 374354d7675SEmmanuel Vadot * - All cuts and substrate where process version is 0x2. 375354d7675SEmmanuel Vadot * - All cuts and process where substrate version is 0x2. 376354d7675SEmmanuel Vadot */ 377354d7675SEmmanuel Vadot opp-supported-hw = <0xFFFFFFFF 0xFFFFFFFF 0x02>, 378354d7675SEmmanuel Vadot <0xFFFFFFFF 0x01 0xFFFFFFFF>; 379354d7675SEmmanuel Vadot opp-hz = /bits/ 64 <900000000>; 380354d7675SEmmanuel Vadot }; 381354d7675SEmmanuel Vadot }; 382354d7675SEmmanuel Vadot 383354d7675SEmmanuel Vadot - | 384354d7675SEmmanuel Vadot /* 385354d7675SEmmanuel Vadot * Example 6: opp-microvolt-<name>, opp-microamp-<name>: 386354d7675SEmmanuel Vadot * (example: device with two possible microvolt ranges: slow and fast) 387354d7675SEmmanuel Vadot */ 388354d7675SEmmanuel Vadot cpus { 389354d7675SEmmanuel Vadot #address-cells = <1>; 390354d7675SEmmanuel Vadot #size-cells = <0>; 391354d7675SEmmanuel Vadot 392354d7675SEmmanuel Vadot cpu@0 { 393354d7675SEmmanuel Vadot compatible = "arm,cortex-a7"; 394354d7675SEmmanuel Vadot device_type = "cpu"; 395354d7675SEmmanuel Vadot reg = <0>; 396354d7675SEmmanuel Vadot operating-points-v2 = <&cpu0_opp_table6>; 397354d7675SEmmanuel Vadot }; 398354d7675SEmmanuel Vadot }; 399354d7675SEmmanuel Vadot 400354d7675SEmmanuel Vadot cpu0_opp_table6: opp-table-0 { 401354d7675SEmmanuel Vadot compatible = "operating-points-v2"; 402354d7675SEmmanuel Vadot opp-shared; 403354d7675SEmmanuel Vadot 404354d7675SEmmanuel Vadot opp-1000000000 { 405354d7675SEmmanuel Vadot opp-hz = /bits/ 64 <1000000000>; 406354d7675SEmmanuel Vadot opp-microvolt-slow = <915000 900000 925000>; 407354d7675SEmmanuel Vadot opp-microvolt-fast = <975000 970000 985000>; 408354d7675SEmmanuel Vadot opp-microamp-slow = <70000>; 409354d7675SEmmanuel Vadot opp-microamp-fast = <71000>; 410354d7675SEmmanuel Vadot }; 411354d7675SEmmanuel Vadot 412354d7675SEmmanuel Vadot opp-1200000000 { 413354d7675SEmmanuel Vadot opp-hz = /bits/ 64 <1200000000>; 414354d7675SEmmanuel Vadot opp-microvolt-slow = <915000 900000 925000>, /* Supply vcc0 */ 415354d7675SEmmanuel Vadot <925000 910000 935000>; /* Supply vcc1 */ 416354d7675SEmmanuel Vadot opp-microvolt-fast = <975000 970000 985000>, /* Supply vcc0 */ 417354d7675SEmmanuel Vadot <965000 960000 975000>; /* Supply vcc1 */ 418354d7675SEmmanuel Vadot opp-microamp = <70000>; /* Will be used for both slow/fast */ 419354d7675SEmmanuel Vadot }; 420354d7675SEmmanuel Vadot }; 421354d7675SEmmanuel Vadot 422354d7675SEmmanuel Vadot - | 423354d7675SEmmanuel Vadot /* 424354d7675SEmmanuel Vadot * Example 7: Single cluster Quad-core ARM cortex A53, OPP points from firmware, 425354d7675SEmmanuel Vadot * distinct clock controls but two sets of clock/voltage/current lines. 426354d7675SEmmanuel Vadot */ 427354d7675SEmmanuel Vadot cpus { 428354d7675SEmmanuel Vadot #address-cells = <2>; 429354d7675SEmmanuel Vadot #size-cells = <0>; 430354d7675SEmmanuel Vadot 431354d7675SEmmanuel Vadot cpu@0 { 432354d7675SEmmanuel Vadot compatible = "arm,cortex-a53"; 433354d7675SEmmanuel Vadot device_type = "cpu"; 434354d7675SEmmanuel Vadot reg = <0x0 0x100>; 435354d7675SEmmanuel Vadot next-level-cache = <&A53_L2>; 436354d7675SEmmanuel Vadot clocks = <&dvfs_controller 0>; 437354d7675SEmmanuel Vadot operating-points-v2 = <&cpu_opp0_table>; 438354d7675SEmmanuel Vadot }; 439354d7675SEmmanuel Vadot cpu@1 { 440354d7675SEmmanuel Vadot compatible = "arm,cortex-a53"; 441354d7675SEmmanuel Vadot device_type = "cpu"; 442354d7675SEmmanuel Vadot reg = <0x0 0x101>; 443354d7675SEmmanuel Vadot next-level-cache = <&A53_L2>; 444354d7675SEmmanuel Vadot clocks = <&dvfs_controller 1>; 445354d7675SEmmanuel Vadot operating-points-v2 = <&cpu_opp0_table>; 446354d7675SEmmanuel Vadot }; 447354d7675SEmmanuel Vadot cpu@2 { 448354d7675SEmmanuel Vadot compatible = "arm,cortex-a53"; 449354d7675SEmmanuel Vadot device_type = "cpu"; 450354d7675SEmmanuel Vadot reg = <0x0 0x102>; 451354d7675SEmmanuel Vadot next-level-cache = <&A53_L2>; 452354d7675SEmmanuel Vadot clocks = <&dvfs_controller 2>; 453354d7675SEmmanuel Vadot operating-points-v2 = <&cpu_opp1_table>; 454354d7675SEmmanuel Vadot }; 455354d7675SEmmanuel Vadot cpu@3 { 456354d7675SEmmanuel Vadot compatible = "arm,cortex-a53"; 457354d7675SEmmanuel Vadot device_type = "cpu"; 458354d7675SEmmanuel Vadot reg = <0x0 0x103>; 459354d7675SEmmanuel Vadot next-level-cache = <&A53_L2>; 460354d7675SEmmanuel Vadot clocks = <&dvfs_controller 3>; 461354d7675SEmmanuel Vadot operating-points-v2 = <&cpu_opp1_table>; 462354d7675SEmmanuel Vadot }; 463354d7675SEmmanuel Vadot 464354d7675SEmmanuel Vadot }; 465354d7675SEmmanuel Vadot 466354d7675SEmmanuel Vadot cpu_opp0_table: opp-table-0 { 467354d7675SEmmanuel Vadot compatible = "operating-points-v2"; 468354d7675SEmmanuel Vadot opp-shared; 469354d7675SEmmanuel Vadot }; 470354d7675SEmmanuel Vadot 471354d7675SEmmanuel Vadot cpu_opp1_table: opp-table-1 { 472354d7675SEmmanuel Vadot compatible = "operating-points-v2"; 473354d7675SEmmanuel Vadot opp-shared; 474354d7675SEmmanuel Vadot }; 475354d7675SEmmanuel Vadot... 476