aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorViresh Kumar <viresh.kumar@linaro.org>2015-11-10 21:40:54 -0500
committerRafael J. Wysocki <rafael.j.wysocki@intel.com>2015-11-23 17:38:36 -0500
commit1c4d12de2719dfdf27c6dab31e7a5641ee293c94 (patch)
tree5195187d412bef34d70516a9832f56e6957168d3
parentdeaa51465105a7eda19a627b10372f4f7c51a4df (diff)
PM / OPP: Add "opp-supported-hw" binding
We may want to enable only a subset of OPPs, from the bigger list of OPPs, based on what version of the hardware we are running on. This would enable us to not duplicate OPP tables for every version of the hardware we support. To enable that, this patch defines a new property 'opp-supported-hw'. It can support any number of hierarchy levels of the versions the hardware follows. And based on the selected hardware versions, we can pick only the relevant OPPs at runtime. Reviewed-by: Stephen Boyd <sboyd@codeaurora.org> Acked-by: Rob Herring <robh@kernel.org> Signed-off-by: Viresh Kumar <viresh.kumar@linaro.org> Signed-off-by: Rafael J. Wysocki <rafael.j.wysocki@intel.com>
-rw-r--r--Documentation/devicetree/bindings/opp/opp.txt65
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
128Example 1: Single cluster Dual-core ARM cortex A9, switch DVFS states together. 148Example 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
487Example 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};