On 12/07/2022 13:29, Lukasz Luba wrote:
[ ... ]
@@ -511,8 +528,13 @@ void thermal_zone_device_update(struct thermal_zone_device *tz,
tz->notify_event = event;
- for (count = 0; count < tz->trips; count++)
- handle_thermal_trip(tz, count);
+ if (tz->last_temperature <= tz->temperature) {
+ for (count = 0; count < tz->trips; count++)
+ handle_thermal_trip(tz, count);
+ } else {
+ for (count = tz->prev_trip; count >= 0; count--)
+ handle_thermal_trip(tz, count);
+ }
In general the code look good. I have one question, though:
Is it always true that these trip points coming from the DT
and parsed in thermal_of_build_thermal_zone() populated by
for_each_child_of_node(child, gchild) {
thermal_of_populate_trip(gchild, &tz->trips[i++]);
are always defined in right order in DT?
Hmm, that is a good question. Even if the convention is to put the trip point in the ascending order, I don't find any documentation telling it is mandatory. Given that I don't feel particularly comfortable to assume that is the case.
Perhaps, it would make more sense to build a map of indexes telling the order in the trip points and work with it instead.