thermal: trip: Split thermal_zone_device_set_mode()

BugLink: https://bugs.launchpad.net/bugs/2083196

[ Upstream commit e5f98896efb3b6350cb6f1c241394966dcbcf240 ]

Pull a wrapper around thermal zone .change_mode() callback out of
thermal_zone_device_set_mode() because it will be used elsewhere
subsequently.

No intentional functional impact.

Signed-off-by: Rafael J. Wysocki <rafael.j.wysocki@intel.com>
Link: https://patch.msgid.link/2206793.irdbgypaU6@rjwysocki.net
Stable-dep-of: f7c1b0e4ae47 ("thermal: core: Back off when polling thermal zones on errors")
Signed-off-by: Sasha Levin <sashal@kernel.org>
[portias: Change tz->ops.change_mode to tz->ops->change_mode]
Signed-off-by: Portia Stephens <portia.stephens@canonical.com>
Signed-off-by: Roxana Nicolescu <roxana.nicolescu@canonical.com>
This commit is contained in:
Rafael J. Wysocki
2024-07-18 21:00:35 +02:00
committed by Mehmet Basaran
parent bfbf9c0335
commit f5c7e54713
+24 -7
View File
@@ -271,6 +271,22 @@ static int __init thermal_register_governors(void)
return ret;
}
static int __thermal_zone_device_set_mode(struct thermal_zone_device *tz,
enum thermal_device_mode mode)
{
if (tz->ops->change_mode) {
int ret;
ret = tz->ops->change_mode(tz, mode);
if (ret)
return ret;
}
tz->mode = mode;
return 0;
}
/*
* Zone update section: main control loop applied to each zone while monitoring
*
@@ -483,7 +499,7 @@ void __thermal_zone_device_update(struct thermal_zone_device *tz,
static int thermal_zone_device_set_mode(struct thermal_zone_device *tz,
enum thermal_device_mode mode)
{
int ret = 0;
int ret;
mutex_lock(&tz->lock);
@@ -491,14 +507,15 @@ static int thermal_zone_device_set_mode(struct thermal_zone_device *tz,
if (mode == tz->mode) {
mutex_unlock(&tz->lock);
return ret;
return 0;
}
if (tz->ops->change_mode)
ret = tz->ops->change_mode(tz, mode);
ret = __thermal_zone_device_set_mode(tz, mode);
if (ret) {
mutex_unlock(&tz->lock);
if (!ret)
tz->mode = mode;
return ret;
}
__thermal_zone_device_update(tz, THERMAL_EVENT_UNSPECIFIED);
@@ -509,7 +526,7 @@ static int thermal_zone_device_set_mode(struct thermal_zone_device *tz,
else
thermal_notify_tz_disable(tz);
return ret;
return 0;
}
int thermal_zone_device_enable(struct thermal_zone_device *tz)