[V5,3/3] OPP: Add binding for 'opp-suspend'

Message ID 618b02107af650bcb3246e165095bbca207d511a.1432091956.git.viresh.kumar@linaro.org
State New
Headers show

Commit Message

Viresh Kumar May 20, 2015, 3:41 a.m.
On few platforms, for power efficiency, we want the device to be
configured for a specific OPP while we put the device in suspend state.

Add an optional property in operating-points-v2 bindings for that.

Suggested-by: Nishanth Menon <nm@ti.com>
Signed-off-by: Viresh Kumar <viresh.kumar@linaro.org>
---
 Documentation/devicetree/bindings/power/opp.txt | 14 ++++++++++----
 1 file changed, 10 insertions(+), 4 deletions(-)

Comments

Viresh Kumar May 21, 2015, 5:49 a.m. | #1
On 21-05-15, 00:32, Nishanth Menon wrote:
> Why not just mark it as a property of an OPP rather than a phandle? just
> thinking that this might setup a precedence for future needs like
> "shutdown OPP" or "Reboot OPP" or something different that some other
> SoC might have..

AFAIU, a property should be present in the OPP if and only if any OPP
can set it. But in this case, only one OPP from the entire list can
set it. So, its more a property of the list rather than every OPP
within it. And then there wouldn't be any need to code that would
check bugs in dtbs where multiple OPPs have it set.

Patch

diff --git a/Documentation/devicetree/bindings/power/opp.txt b/Documentation/devicetree/bindings/power/opp.txt
index 7f30d9b07db7..880f5e14b6e2 100644
--- a/Documentation/devicetree/bindings/power/opp.txt
+++ b/Documentation/devicetree/bindings/power/opp.txt
@@ -72,6 +72,8 @@  This describes the OPPs belonging to a device. This node can have following
   Missing property means devices have independent clock/voltage/current lines,
   but they share OPP tables.
 
+- opp-suspend: Phandle of the OPP to set while device is suspended.
+
 
 * OPP Node
 
@@ -143,9 +145,10 @@  Example 1: Single cluster Dual-core ARM cortex A9, switch DVFS states together.
 
 	cpu0_opp: opp0 {
 		compatible = "operating-points-v2";
+		opp-suspend = <&suspend_opp>;
 		opp-shared;
 
-		entry00 {
+		suspend-opp: entry00 {
 			opp-hz = <1000000000>;
 			opp-microvolt = <970000 975000 985000>;
 			opp-microamp = <70000>;
@@ -217,13 +220,14 @@  independently.
 
 	cpu0_opp: opp0 {
 		compatible = "operating-points-v2";
+		opp-suspend = <&suspend_opp>;
 
 		/*
 		 * Missing opp-shared property means CPUs switch DVFS states
 		 * independently.
 		 */
 
-		entry00 {
+		suspend-opp: entry00 {
 			opp-hz = <1000000000>;
 			opp-microvolt = <970000 975000 985000>;
 			opp-microamp = <70000>;
@@ -296,9 +300,10 @@  DVFS state together.
 
 	cluster0_opp: opp0 {
 		compatible = "operating-points-v2";
+		opp-suspend = <&suspend_opp0>;
 		opp-shared;
 
-		entry00 {
+		suspend-opp0: entry00 {
 			opp-hz = <1000000000>;
 			opp-microvolt = <970000 975000 985000>;
 			opp-microamp = <70000>;
@@ -321,9 +326,10 @@  DVFS state together.
 
 	cluster1_opp: opp1 {
 		compatible = "operating-points-v2";
+		opp-suspend = <&suspend_opp1>;
 		opp-shared;
 
-		entry10 {
+		suspend-opp1: entry10 {
 			opp-hz = <1300000000>;
 			opp-microvolt = <1045000 1050000 1055000>;
 			opp-microamp = <95000>;