diff options
-rw-r--r-- | Documentation/devicetree/bindings/opp/opp.txt | 65 |
1 files changed, 65 insertions, 0 deletions
diff --git a/Documentation/devicetree/bindings/opp/opp.txt b/Documentation/devicetree/bindings/opp/opp.txt index 0cb44dc21f97..d072fa0ffbd4 100644 --- a/Documentation/devicetree/bindings/opp/opp.txt +++ b/Documentation/devicetree/bindings/opp/opp.txt | |||
@@ -123,6 +123,26 @@ Optional properties: | |||
123 | - opp-suspend: Marks the OPP to be used during device suspend. Only one OPP in | 123 | - opp-suspend: Marks the OPP to be used during device suspend. Only one OPP in |
124 | the table should have this. | 124 | the table should have this. |
125 | 125 | ||
126 | - opp-supported-hw: This enables us to select only a subset of OPPs from the | ||
127 | larger OPP table, based on what version of the hardware we are running on. We | ||
128 | still can't have multiple nodes with the same opp-hz value in OPP table. | ||
129 | |||
130 | It's an user defined array containing a hierarchy of hardware version numbers, | ||
131 | supported by the OPP. For example: a platform with hierarchy of three levels | ||
132 | of versions (A, B and C), this field should be like <X Y Z>, where X | ||
133 | corresponds to Version hierarchy A, Y corresponds to version hierarchy B and Z | ||
134 | corresponds to version hierarchy C. | ||
135 | |||
136 | Each level of hierarchy is represented by a 32 bit value, and so there can be | ||
137 | only 32 different supported version per hierarchy. i.e. 1 bit per version. A | ||
138 | value of 0xFFFFFFFF will enable the OPP for all versions for that hierarchy | ||
139 | level. And a value of 0x00000000 will disable the OPP completely, and so we | ||
140 | never want that to happen. | ||
141 | |||
142 | If 32 values aren't sufficient for a version hierarchy, than that version | ||
143 | hierarchy can be contained in multiple 32 bit values. i.e. <X Y Z1 Z2> in the | ||
144 | above example, Z1 & Z2 refer to the version hierarchy Z. | ||
145 | |||
126 | - status: Marks the node enabled/disabled. | 146 | - status: Marks the node enabled/disabled. |
127 | 147 | ||
128 | Example 1: Single cluster Dual-core ARM cortex A9, switch DVFS states together. | 148 | Example 1: Single cluster Dual-core ARM cortex A9, switch DVFS states together. |
@@ -463,3 +483,48 @@ Example 5: Multiple OPP tables | |||
463 | }; | 483 | }; |
464 | }; | 484 | }; |
465 | }; | 485 | }; |
486 | |||
487 | Example 6: opp-supported-hw | ||
488 | (example: three level hierarchy of versions: cuts, substrate and process) | ||
489 | |||
490 | / { | ||
491 | cpus { | ||
492 | cpu@0 { | ||
493 | compatible = "arm,cortex-a7"; | ||
494 | ... | ||
495 | |||
496 | cpu-supply = <&cpu_supply> | ||
497 | operating-points-v2 = <&cpu0_opp_table_slow>; | ||
498 | }; | ||
499 | }; | ||
500 | |||
501 | opp_table { | ||
502 | compatible = "operating-points-v2"; | ||
503 | status = "okay"; | ||
504 | opp-shared; | ||
505 | |||
506 | opp00 { | ||
507 | /* | ||
508 | * Supports all substrate and process versions for 0xF | ||
509 | * cuts, i.e. only first four cuts. | ||
510 | */ | ||
511 | opp-supported-hw = <0xF 0xFFFFFFFF 0xFFFFFFFF> | ||
512 | opp-hz = /bits/ 64 <600000000>; | ||
513 | opp-microvolt = <900000 915000 925000>; | ||
514 | ... | ||
515 | }; | ||
516 | |||
517 | opp01 { | ||
518 | /* | ||
519 | * Supports: | ||
520 | * - cuts: only one, 6th cut (represented by 6th bit). | ||
521 | * - substrate: supports 16 different substrate versions | ||
522 | * - process: supports 9 different process versions | ||
523 | */ | ||
524 | opp-supported-hw = <0x20 0xff0000ff 0x0000f4f0> | ||
525 | opp-hz = /bits/ 64 <800000000>; | ||
526 | opp-microvolt = <900000 915000 925000>; | ||
527 | ... | ||
528 | }; | ||
529 | }; | ||
530 | }; | ||