thermal: core: Introduce thermal_trip_crossed()
Add a helper function called thermal_trip_crossed() to be invoked by __thermal_zone_device_update() in order to notify user space, the thermal debug code and the zone governor about trip crossing. Subsequently, this will also be used in the case when a trip point becomes invalid after being crossed on the way up. No intentional functional impact. Signed-off-by: Rafael J. Wysocki <rafael.j.wysocki@intel.com>
This commit is contained in:
parent
5a599e10e5
commit
cb573eec60
@ -467,6 +467,21 @@ static void thermal_governor_trip_crossed(struct thermal_governor *governor,
|
||||
governor->trip_crossed(tz, trip, crossed_up);
|
||||
}
|
||||
|
||||
static void thermal_trip_crossed(struct thermal_zone_device *tz,
|
||||
const struct thermal_trip *trip,
|
||||
struct thermal_governor *governor,
|
||||
bool crossed_up)
|
||||
{
|
||||
if (crossed_up) {
|
||||
thermal_notify_tz_trip_up(tz, trip);
|
||||
thermal_debug_tz_trip_up(tz, trip);
|
||||
} else {
|
||||
thermal_notify_tz_trip_down(tz, trip);
|
||||
thermal_debug_tz_trip_down(tz, trip);
|
||||
}
|
||||
thermal_governor_trip_crossed(governor, tz, trip, crossed_up);
|
||||
}
|
||||
|
||||
static int thermal_trip_notify_cmp(void *ascending, const struct list_head *a,
|
||||
const struct list_head *b)
|
||||
{
|
||||
@ -506,18 +521,12 @@ void __thermal_zone_device_update(struct thermal_zone_device *tz,
|
||||
handle_thermal_trip(tz, td, &way_up_list, &way_down_list);
|
||||
|
||||
list_sort(&way_up_list, &way_up_list, thermal_trip_notify_cmp);
|
||||
list_for_each_entry(td, &way_up_list, notify_list_node) {
|
||||
thermal_notify_tz_trip_up(tz, &td->trip);
|
||||
thermal_debug_tz_trip_up(tz, &td->trip);
|
||||
thermal_governor_trip_crossed(governor, tz, &td->trip, true);
|
||||
}
|
||||
list_for_each_entry(td, &way_up_list, notify_list_node)
|
||||
thermal_trip_crossed(tz, &td->trip, governor, true);
|
||||
|
||||
list_sort(NULL, &way_down_list, thermal_trip_notify_cmp);
|
||||
list_for_each_entry(td, &way_down_list, notify_list_node) {
|
||||
thermal_notify_tz_trip_down(tz, &td->trip);
|
||||
thermal_debug_tz_trip_down(tz, &td->trip);
|
||||
thermal_governor_trip_crossed(governor, tz, &td->trip, false);
|
||||
}
|
||||
list_for_each_entry(td, &way_down_list, notify_list_node)
|
||||
thermal_trip_crossed(tz, &td->trip, governor, false);
|
||||
|
||||
if (governor->manage)
|
||||
governor->manage(tz);
|
||||
|
Loading…
x
Reference in New Issue
Block a user