Lines Matching +full:power +full:- +full:on
2 Power allocator governor tunables
6 -----------
10 1. "switch on" trip point: temperature above which the governor
15 "switch on" trip point. This the target temperature the governor
20 --------------
22 The power allocator governor implements a
23 Proportional-Integral-Derivative controller (PID controller) with
24 temperature as the control input and power as the controlled output:
29 - e = desired_temperature - current_temperature
30 - err_integral is the sum of previous errors
31 - diff_err = e - previous_error
39 | +----------+ +---+
40 | +----->| diff_err |-->| X |------+
41 | | +----------+ +---+ |
47 +---+ | +-------+ +---+ +---+ +---+ +----------+
48 | S |-----+----->| sum e |----->| X |--->| S |-->| S |-->|power |
49 +---+ | +-------+ +---+ +---+ +---+ |allocation|
50 ^ | ^ +----------+
52 | | +---+ | | |
53 | +------->| X |-------------------+ v v
54 | +---+ granted performance
60 Sustainable power
61 -----------------
63 An estimate of the sustainable dissipatable power (in mW) should be
65 sustained power that can be dissipated at the desired control
66 temperature. This is the maximum sustained power for allocation at
67 the desired maximum temperature. The actual sustained power can vary
70 to the speed-grade of the silicon. `sustainable_power` is therefore
72 the thermal ramp. For reference, the sustainable power of a 4" phone
73 is typically 2000mW, while on a 10" tablet is around 4500mW (may vary
74 depending on screen size).
77 thermal-zone. For example::
79 thermal-zones {
81 polling-delay = <1000>;
82 polling-delay-passive = <100>;
83 sustainable-power = <2500>;
99 -------------
101 The implementation of the PID controller in the power allocator
112 available capacity at a low temperature. On the other hand, a high
113 value of `k_pu` will result in the governor granting very high power
118 2 * sustainable_power / (desired_temperature - switch_on_temp)
124 sustainable_power / (desired_temperature - switch_on_temp)
126 Focusing on the proportional and feed forward values of the PID
136 an estimate, which is the reason for closed-loop control such as this.
140 P_max = 2 * sustainable_power * (T_set - T) / (T_set - T_on) +
145 - T_set is the desired temperature
146 - T is the current temperature
147 - T_on is the switch on temperature
152 P_max = 2 * sustainable_power * (T_set - T_on) / (T_set - T_on) +
156 Therefore, the proportional term alone linearly decreases power from
158 rises from the switch on temperature to the desired temperature.
161 -----------------------
166 the exact power that the governor requests. When the temperature
173 ---
178 Cooling device power API
182 "power" API in their `cooling_device_ops`. It consists on three ops:
187 struct thermal_zone_device *tz, u32 *power);
194 @power:
195 pointer in which to store the calculated power
197 `get_requested_power()` calculates the power requested by the device
198 in milliwatts and stores it in @power . It should return 0 on
199 success, -E* on failure. This is currently used by the power
200 allocator governor to calculate how much power to give to each cooling
207 u32 *power);
215 @power:
216 pointer in which to store the equivalent power
218 Convert cooling device state @state into power consumption in
219 milliwatts and store it in @power. It should return 0 on success, -E*
220 on failure. This is currently used by thermal core to calculate the
221 maximum power that an actor can consume.
225 int power2state(struct thermal_cooling_device *cdev, u32 power,
230 @power:
231 power in milliwatts
236 most @power mW and store it in @state. It should return 0 on success,
237 -E* on failure. This is currently used by the thermal core to convert
238 a given power set by the power allocator governor to a state that the
240 depend on external factors that may change so this function should the
244 ----------------------
247 devices. They express the relative power efficiency of different
248 cooling devices. Higher weight can be used to express higher power
259 as the `contribution` property of each map in the `cooling-maps` node.
261 Limitations of the power allocator governor
264 The power allocator governor's PID controller works best if there is a
269 governor, step-wise will also misbehave if you call its throttle()