mirror of
https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git
synced 2024-12-29 17:25:38 +00:00
thermal: core: Relocate thermal zone initialization routine
Move thermal_zone_device_init() along with thermal_zone_device_check() closer to the callers of the former, where they fit better together. No functional impact. Signed-off-by: Rafael J. Wysocki <rafael.j.wysocki@intel.com> Reviewed-by: Lukasz Luba <lukasz.luba@arm.com> Link: https://patch.msgid.link/1906685.CQOukoFCf9@rjwysocki.net
This commit is contained in:
parent
6d5537d40c
commit
43bac1026f
@ -429,14 +429,6 @@ static void move_trip_to_sorted_list(struct thermal_trip_desc *td,
|
|||||||
list_add(&td->list_node, list);
|
list_add(&td->list_node, list);
|
||||||
}
|
}
|
||||||
|
|
||||||
static void thermal_zone_device_check(struct work_struct *work)
|
|
||||||
{
|
|
||||||
struct thermal_zone_device *tz = container_of(work, struct
|
|
||||||
thermal_zone_device,
|
|
||||||
poll_queue.work);
|
|
||||||
thermal_zone_device_update(tz, THERMAL_EVENT_UNSPECIFIED);
|
|
||||||
}
|
|
||||||
|
|
||||||
static void move_to_trips_high(struct thermal_zone_device *tz,
|
static void move_to_trips_high(struct thermal_zone_device *tz,
|
||||||
struct thermal_trip_desc *td)
|
struct thermal_trip_desc *td)
|
||||||
{
|
{
|
||||||
@ -458,39 +450,6 @@ static void move_to_trips_invalid(struct thermal_zone_device *tz,
|
|||||||
list_move(&td->list_node, &tz->trips_invalid);
|
list_move(&td->list_node, &tz->trips_invalid);
|
||||||
}
|
}
|
||||||
|
|
||||||
static void thermal_zone_device_init(struct thermal_zone_device *tz)
|
|
||||||
{
|
|
||||||
struct thermal_trip_desc *td, *next;
|
|
||||||
|
|
||||||
INIT_DELAYED_WORK(&tz->poll_queue, thermal_zone_device_check);
|
|
||||||
|
|
||||||
tz->temperature = THERMAL_TEMP_INIT;
|
|
||||||
tz->passive = 0;
|
|
||||||
tz->prev_low_trip = -INT_MAX;
|
|
||||||
tz->prev_high_trip = INT_MAX;
|
|
||||||
for_each_trip_desc(tz, td) {
|
|
||||||
struct thermal_instance *instance;
|
|
||||||
|
|
||||||
list_for_each_entry(instance, &td->thermal_instances, trip_node)
|
|
||||||
instance->initialized = false;
|
|
||||||
}
|
|
||||||
/*
|
|
||||||
* At this point, all valid trips need to be moved to trips_high so that
|
|
||||||
* mitigation can be started if the zone temperature is above them.
|
|
||||||
*/
|
|
||||||
list_for_each_entry_safe(td, next, &tz->trips_invalid, list_node) {
|
|
||||||
if (td->trip.temperature != THERMAL_TEMP_INVALID)
|
|
||||||
move_to_trips_high(tz, td);
|
|
||||||
}
|
|
||||||
/* The trips_reached list may not be empty during system resume. */
|
|
||||||
list_for_each_entry_safe(td, next, &tz->trips_reached, list_node) {
|
|
||||||
if (td->trip.temperature == THERMAL_TEMP_INVALID)
|
|
||||||
move_to_trips_invalid(tz, td);
|
|
||||||
else
|
|
||||||
move_to_trips_high(tz, td);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
static void thermal_governor_trip_crossed(struct thermal_governor *governor,
|
static void thermal_governor_trip_crossed(struct thermal_governor *governor,
|
||||||
struct thermal_zone_device *tz,
|
struct thermal_zone_device *tz,
|
||||||
const struct thermal_trip *trip,
|
const struct thermal_trip *trip,
|
||||||
@ -1426,6 +1385,47 @@ int thermal_zone_get_crit_temp(struct thermal_zone_device *tz, int *temp)
|
|||||||
}
|
}
|
||||||
EXPORT_SYMBOL_GPL(thermal_zone_get_crit_temp);
|
EXPORT_SYMBOL_GPL(thermal_zone_get_crit_temp);
|
||||||
|
|
||||||
|
static void thermal_zone_device_check(struct work_struct *work)
|
||||||
|
{
|
||||||
|
struct thermal_zone_device *tz = container_of(work, struct
|
||||||
|
thermal_zone_device,
|
||||||
|
poll_queue.work);
|
||||||
|
thermal_zone_device_update(tz, THERMAL_EVENT_UNSPECIFIED);
|
||||||
|
}
|
||||||
|
|
||||||
|
static void thermal_zone_device_init(struct thermal_zone_device *tz)
|
||||||
|
{
|
||||||
|
struct thermal_trip_desc *td, *next;
|
||||||
|
|
||||||
|
INIT_DELAYED_WORK(&tz->poll_queue, thermal_zone_device_check);
|
||||||
|
|
||||||
|
tz->temperature = THERMAL_TEMP_INIT;
|
||||||
|
tz->passive = 0;
|
||||||
|
tz->prev_low_trip = -INT_MAX;
|
||||||
|
tz->prev_high_trip = INT_MAX;
|
||||||
|
for_each_trip_desc(tz, td) {
|
||||||
|
struct thermal_instance *instance;
|
||||||
|
|
||||||
|
list_for_each_entry(instance, &td->thermal_instances, trip_node)
|
||||||
|
instance->initialized = false;
|
||||||
|
}
|
||||||
|
/*
|
||||||
|
* At this point, all valid trips need to be moved to trips_high so that
|
||||||
|
* mitigation can be started if the zone temperature is above them.
|
||||||
|
*/
|
||||||
|
list_for_each_entry_safe(td, next, &tz->trips_invalid, list_node) {
|
||||||
|
if (td->trip.temperature != THERMAL_TEMP_INVALID)
|
||||||
|
move_to_trips_high(tz, td);
|
||||||
|
}
|
||||||
|
/* The trips_reached list may not be empty during system resume. */
|
||||||
|
list_for_each_entry_safe(td, next, &tz->trips_reached, list_node) {
|
||||||
|
if (td->trip.temperature == THERMAL_TEMP_INVALID)
|
||||||
|
move_to_trips_invalid(tz, td);
|
||||||
|
else
|
||||||
|
move_to_trips_high(tz, td);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
static int thermal_zone_init_governor(struct thermal_zone_device *tz)
|
static int thermal_zone_init_governor(struct thermal_zone_device *tz)
|
||||||
{
|
{
|
||||||
struct thermal_governor *governor;
|
struct thermal_governor *governor;
|
||||||
|
Loading…
Reference in New Issue
Block a user