Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit e856f078 authored by Viresh Kumar's avatar Viresh Kumar
Browse files

OPP: Introduce "required-opp" property



Devices have inter-dependencies some times. For example a device that
needs to run at 800 MHz, needs another device (e.g. Its power domain) to
be configured at a particular operating performance point.

This patch introduces a new property "required-opp" which can be present
directly in a device's node (if it doesn't need to change its OPPs), or
in device's OPP nodes. More details on the property can be seen in the
binding itself.

Reviewed-by: default avatarUlf Hansson <ulf.hansson@linaro.org>
Reviewed-by: default avatarRob Herring <robh@kernel.org>
Signed-off-by: default avatarViresh Kumar <viresh.kumar@linaro.org>
parent 972bc90e
Loading
Loading
Loading
Loading
+8 −0
Original line number Diff line number Diff line
@@ -159,6 +159,14 @@ Optional properties:

- status: Marks the node enabled/disabled.

- required-opp: This contains phandle to an OPP node in another device's OPP
  table. It may contain an array of phandles, where each phandle points to an
  OPP of a different device. It should not contain multiple phandles to the OPP
  nodes in the same OPP table. This specifies the minimum required OPP of the
  device(s), whose OPP's phandle is present in this property, for the
  functioning of the current device at the current OPP (where this property is
  present).

Example 1: Single cluster Dual-core ARM cortex A9, switch DVFS states together.

/ {
+59 −0
Original line number Diff line number Diff line
@@ -126,4 +126,63 @@ The node above defines a typical PM domain consumer device, which is located
inside a PM domain with index 0 of a power controller represented by a node
with the label "power".

Optional properties:
- required-opp: This contains phandle to an OPP node in another device's OPP
  table. It may contain an array of phandles, where each phandle points to an
  OPP of a different device. It should not contain multiple phandles to the OPP
  nodes in the same OPP table. This specifies the minimum required OPP of the
  device(s), whose OPP's phandle is present in this property, for the
  functioning of the current device at the current OPP (where this property is
  present).

Example:
- OPP table for domain provider that provides two domains.

	domain0_opp_table: opp-table0 {
		compatible = "operating-points-v2";

		domain0_opp_0: opp-1000000000 {
			opp-hz = /bits/ 64 <1000000000>;
			opp-microvolt = <975000 970000 985000>;
		};
		domain0_opp_1: opp-1100000000 {
			opp-hz = /bits/ 64 <1100000000>;
			opp-microvolt = <1000000 980000 1010000>;
		};
	};

	domain1_opp_table: opp-table1 {
		compatible = "operating-points-v2";

		domain1_opp_0: opp-1200000000 {
			opp-hz = /bits/ 64 <1200000000>;
			opp-microvolt = <975000 970000 985000>;
		};
		domain1_opp_1: opp-1300000000 {
			opp-hz = /bits/ 64 <1300000000>;
			opp-microvolt = <1000000 980000 1010000>;
		};
	};

	power: power-controller@12340000 {
		compatible = "foo,power-controller";
		reg = <0x12340000 0x1000>;
		#power-domain-cells = <1>;
		operating-points-v2 = <&domain0_opp_table>, <&domain1_opp_table>;
	};

	leaky-device0@12350000 {
		compatible = "foo,i-leak-current";
		reg = <0x12350000 0x1000>;
		power-domains = <&power 0>;
		required-opp = <&domain0_opp_0>;
	};

	leaky-device1@12350000 {
		compatible = "foo,i-leak-current";
		reg = <0x12350000 0x1000>;
		power-domains = <&power 1>;
		required-opp = <&domain1_opp_1>;
	};

[1]. Documentation/devicetree/bindings/power/domain-idle-state.txt