Skip to content

Commit

Permalink
PM / OPP: Allow multiple OPP tables to be passed via DT
Browse files Browse the repository at this point in the history
On some platforms (Like Qualcomm's SoCs), it is not decided until
runtime on what OPPs to use. The OPP tables can be fixed at compile
time, but which table to use is found out only after reading some efuses
(sort of an prom) and knowing characteristics of the SoC.

To support such platform we need to pass multiple OPP tables per device
and hardware should be able to choose one and only one table out of
those.

Update operating-points-v2 bindings to support that.

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>
  • Loading branch information
Viresh Kumar authored and Rafael J. Wysocki committed Jun 22, 2015
1 parent b901b51 commit a9a80e7
Showing 1 changed file with 60 additions and 0 deletions.
60 changes: 60 additions & 0 deletions Documentation/devicetree/bindings/power/opp.txt
Original file line number Diff line number Diff line change
@@ -45,10 +45,21 @@ Devices supporting OPPs must set their "operating-points-v2" property with
phandle to a OPP table in their DT node. The OPP core will use this phandle to
find the operating points for the device.

Devices may want to choose OPP tables at runtime and so can provide a list of
phandles here. But only *one* of them should be chosen at runtime. This must be
accompanied by a corresponding "operating-points-names" property, to uniquely
identify the OPP tables.

If required, this can be extended for SoC vendor specfic bindings. Such bindings
should be documented as Documentation/devicetree/bindings/power/<vendor>-opp.txt
and should have a compatible description like: "operating-points-v2-<vendor>".

Optional properties:
- operating-points-names: Names of OPP tables (required if multiple OPP
tables are present), to uniquely identify them. The same list must be present
for all the CPUs which are sharing clock/voltage rails and hence the OPP
tables.

* OPP Table Node

This describes the OPPs belonging to a device. This node can have following
@@ -68,6 +79,8 @@ Optional properties:
Missing property means devices have independent clock/voltage/current lines,
but they share OPP tables.

- status: Marks the OPP table enabled/disabled.


* OPP Node

@@ -396,3 +409,50 @@ Example 4: Handling multiple regulators
};
};
};

Example 5: Multiple OPP tables

/ {
cpus {
cpu@0 {
compatible = "arm,cortex-a7";
...

cpu-supply = <&cpu_supply>
operating-points-v2 = <&cpu0_opp_table_slow>, <&cpu0_opp_table_fast>;
operating-points-names = "slow", "fast";
};
};

cpu0_opp_table_slow: opp_table_slow {
compatible = "operating-points-v2";
status = "okay";
opp-shared;

opp00 {
opp-hz = <600000000>;
...
};

opp01 {
opp-hz = <800000000>;
...
};
};

cpu0_opp_table_fast: opp_table_fast {
compatible = "operating-points-v2";
status = "okay";
opp-shared;

opp10 {
opp-hz = <1000000000>;
...
};

opp11 {
opp-hz = <1100000000>;
...
};
};
};

0 comments on commit a9a80e7

Please sign in to comment.