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

Commit 8e6c87c8 authored by Punit Agrawal's avatar Punit Agrawal Committed by Kevin Hilman
Browse files

of: thermal: Introduce sustainable power for a thermal zone



Introduce an optional property called, sustainable-power, which
represents the power (in mW) which the thermal zone can safely
dissipate.

If provided the property is parsed and associated with the thermal
zone via the thermal zone parameters.

Cc: Zhang Rui <rui.zhang@intel.com>
Cc: Eduardo Valentin <edubezval@gmail.com>
Signed-off-by: default avatarPunit Agrawal <punit.agrawal@arm.com>
Signed-off-by: default avatarEduardo Valentin <edubezval@gmail.com>
(cherry picked from commit 647f99255d604aa98f919b89c74567bb4e8fe52c)
Signed-off-by: default avatarKevin Hilman <khilman@linaro.org>
parent e9a2ee85
Loading
Loading
Loading
Loading
+9 −0
Original line number Diff line number Diff line
@@ -167,6 +167,13 @@ Optional property:
			by means of sensor ID. Additional coefficients are
			interpreted as constant offset.

- sustainable-power:	An estimate of the sustainable power (in mW) that the
  Type: unsigned	thermal zone can dissipate at the desired
  Size: one cell	control temperature.  For reference, the
			sustainable power of a 4'' phone is typically
			2000mW, while on a 10'' tablet is around
			4500mW.

Note: The delay properties are bound to the maximum dT/dt (temperature
derivative over time) in two situations for a thermal zone:
(i)  - when passive cooling is activated (polling-delay-passive); and
@@ -546,6 +553,8 @@ thermal-zones {
		 */
		coefficients =		<1200	-345	890>;

		sustainable-power = <2500>;

		trips {
			/* Trips are based on resulting linear equation */
			cpu-trip: cpu-trip {
+4 −0
Original line number Diff line number Diff line
@@ -866,6 +866,7 @@ int __init of_parse_thermal_zones(void)
	for_each_child_of_node(np, child) {
		struct thermal_zone_device *zone;
		struct thermal_zone_params *tzp;
		u32 prop;

		/* Check whether child is enabled or not */
		if (!of_device_is_available(child))
@@ -892,6 +893,9 @@ int __init of_parse_thermal_zones(void)
		/* No hwmon because there might be hwmon drivers registering */
		tzp->no_hwmon = true;

		if (!of_property_read_u32(child, "sustainable-power", &prop))
			tzp->sustainable_power = prop;

		zone = thermal_zone_device_register(child->name, tz->ntrips,
						    0, tz,
						    ops, tzp,