diff options
author | Lukasz Luba <lukasz.luba@arm.com> | 2023-12-20 23:17:45 +0000 |
---|---|---|
committer | Rafael J. Wysocki <rafael.j.wysocki@intel.com> | 2023-12-29 18:01:00 +0100 |
commit | a8c959402d4dd6823918b33828d79900ae58c700 (patch) | |
tree | 3dff402f5da641674c96d3f1ea629402b0fbe701 /include | |
parent | 04c3b03044034ce50886f2c0d1c595ff25f45085 (diff) | |
download | linux-stable-a8c959402d4dd6823918b33828d79900ae58c700.tar.gz linux-stable-a8c959402d4dd6823918b33828d79900ae58c700.tar.bz2 linux-stable-a8c959402d4dd6823918b33828d79900ae58c700.zip |
thermal: core: Add governor callback for thermal zone change
Add a new callback to the struct thermal_governor. It can be used for
updating governors when there is a change in the thermal zone internals,
e.g. thermal cooling device is bind to the thermal zone.
That makes possible to move some heavy operations like memory allocations
related to the number of cooling instances out of the throttle() callback.
Both callback code paths (throttle() and update_tz()) are protected with
the same thermal zone lock, which guaranties the consistency.
Signed-off-by: Lukasz Luba <lukasz.luba@arm.com>
Signed-off-by: Rafael J. Wysocki <rafael.j.wysocki@intel.com>
Diffstat (limited to 'include')
-rw-r--r-- | include/linux/thermal.h | 6 |
1 files changed, 6 insertions, 0 deletions
diff --git a/include/linux/thermal.h b/include/linux/thermal.h index d00622b64d50..4d96fefb2767 100644 --- a/include/linux/thermal.h +++ b/include/linux/thermal.h @@ -51,6 +51,8 @@ enum thermal_notify_event { THERMAL_DEVICE_POWER_CAPABILITY_CHANGED, /* power capability changed */ THERMAL_TABLE_CHANGED, /* Thermal table(s) changed */ THERMAL_EVENT_KEEP_ALIVE, /* Request for user space handler to respond */ + THERMAL_TZ_BIND_CDEV, /* Cooling dev is bind to the thermal zone */ + THERMAL_TZ_UNBIND_CDEV, /* Cooling dev is unbind from the thermal zone */ }; /** @@ -199,6 +201,8 @@ struct thermal_zone_device { * thermal zone. * @throttle: callback called for every trip point even if temperature is * below the trip point temperature + * @update_tz: callback called when thermal zone internals have changed, e.g. + * thermal cooling instance was added/removed * @governor_list: node in thermal_governor_list (in thermal_core.c) */ struct thermal_governor { @@ -207,6 +211,8 @@ struct thermal_governor { void (*unbind_from_tz)(struct thermal_zone_device *tz); int (*throttle)(struct thermal_zone_device *tz, const struct thermal_trip *trip); + void (*update_tz)(struct thermal_zone_device *tz, + enum thermal_notify_event reason); struct list_head governor_list; }; |