summaryrefslogtreecommitdiff
path: root/drivers/acpi/thermal.c
diff options
context:
space:
mode:
authorRafael J. Wysocki <rafael.j.wysocki@intel.com>2023-09-21 19:49:24 +0200
committerRafael J. Wysocki <rafael.j.wysocki@intel.com>2023-09-28 12:54:16 +0200
commit317508c65f1f966367553ef84f5d8eba16720f32 (patch)
treee3c16dfd7c9db90dd5ec72bcf3324cb29d1fad40 /drivers/acpi/thermal.c
parent0fa1bf34980eba19a5f07f97297bbd60b796e6d1 (diff)
ACPI: thermal: Collapse trip devices update functions
In order to reduce code duplication, merge update_passive_devices() and update_active_devices() into one function called update_trip_devices() that will be used for updating both the passive and active trip points. No intentional functional impact. Signed-off-by: Rafael J. Wysocki <rafael.j.wysocki@intel.com> Reviewed-by: Daniel Lezcano <daniel.lezcano@linaro.org>
Diffstat (limited to 'drivers/acpi/thermal.c')
-rw-r--r--drivers/acpi/thermal.c53
1 files changed, 20 insertions, 33 deletions
diff --git a/drivers/acpi/thermal.c b/drivers/acpi/thermal.c
index 4248669eb228..93d2ab552686 100644
--- a/drivers/acpi/thermal.c
+++ b/drivers/acpi/thermal.c
@@ -43,6 +43,8 @@
#define ACPI_THERMAL_MAX_ACTIVE 10
#define ACPI_THERMAL_MAX_LIMIT_STR_LEN 65
+#define ACPI_THERMAL_TRIP_PASSIVE (-1)
+
/*
* This exception is thrown out in two cases:
* 1.An invalid trip point becomes invalid or a valid trip point becomes invalid
@@ -202,18 +204,25 @@ static void acpi_thermal_update_passive_trip(struct acpi_thermal *tz)
ACPI_THERMAL_TRIPS_EXCEPTION(tz, "state");
}
-static bool update_passive_devices(struct acpi_thermal *tz, bool compare)
+static bool update_trip_devices(struct acpi_thermal *tz,
+ struct acpi_thermal_trip *acpi_trip,
+ int index, bool compare)
{
- struct acpi_thermal_trip *acpi_trip = &tz->trips.passive.trip;
struct acpi_handle_list devices;
+ char method[] = "_PSL";
acpi_status status;
+ if (index != ACPI_THERMAL_TRIP_PASSIVE) {
+ method[1] = 'A';
+ method[2] = 'L';
+ method[3] = '0' + index;
+ }
+
memset(&devices, 0, sizeof(devices));
- status = acpi_evaluate_reference(tz->device->handle, "_PSL", NULL, &devices);
+ status = acpi_evaluate_reference(tz->device->handle, method, NULL, &devices);
if (ACPI_FAILURE(status)) {
- acpi_handle_info(tz->device->handle,
- "Missing device list for passive threshold\n");
+ acpi_handle_info(tz->device->handle, "%s evaluation failure\n", method);
return false;
}
@@ -231,8 +240,9 @@ static void acpi_thermal_update_passive_devices(struct acpi_thermal *tz)
if (!acpi_thermal_trip_valid(acpi_trip))
return;
- if (update_passive_devices(tz, true))
+ if (update_trip_devices(tz, acpi_trip, ACPI_THERMAL_TRIP_PASSIVE, true)) {
return;
+ }
acpi_trip->temperature = THERMAL_TEMP_INVALID;
ACPI_THERMAL_TRIPS_EXCEPTION(tz, "state");
@@ -273,30 +283,6 @@ static void acpi_thermal_update_active_trip(struct acpi_thermal *tz, int index)
ACPI_THERMAL_TRIPS_EXCEPTION(tz, "state");
}
-static bool update_active_devices(struct acpi_thermal *tz, int index, bool compare)
-{
- char method[] = { '_', 'A', 'L', '0' + index, '\0' };
- struct acpi_thermal_trip *acpi_trip = &tz->trips.active[index].trip;
- struct acpi_handle_list devices;
- acpi_status status;
-
- memset(&devices, 0, sizeof(devices));
-
- status = acpi_evaluate_reference(tz->device->handle, method, NULL, &devices);
- if (ACPI_FAILURE(status)) {
- acpi_handle_info(tz->device->handle,
- "Missing device list for active threshold %d\n",
- index);
- return false;
- }
-
- if (compare && memcmp(&acpi_trip->devices, &devices, sizeof(devices)))
- ACPI_THERMAL_TRIPS_EXCEPTION(tz, "device");
-
- memcpy(&acpi_trip->devices, &devices, sizeof(devices));
- return true;
-}
-
static void acpi_thermal_update_active_devices(struct acpi_thermal *tz, int index)
{
struct acpi_thermal_trip *acpi_trip = &tz->trips.active[index].trip;
@@ -304,7 +290,7 @@ static void acpi_thermal_update_active_devices(struct acpi_thermal *tz, int inde
if (!acpi_thermal_trip_valid(acpi_trip))
return;
- if (update_active_devices(tz, index, true))
+ if (update_trip_devices(tz, acpi_trip, index, true))
return;
acpi_trip->temperature = THERMAL_TEMP_INVALID;
@@ -460,7 +446,8 @@ static bool acpi_thermal_init_passive_trip(struct acpi_thermal *tz)
tz->trips.passive.tsp = tmp;
- if (!update_passive_devices(tz, false))
+ if (!update_trip_devices(tz, &tz->trips.passive.trip,
+ ACPI_THERMAL_TRIP_PASSIVE, false))
goto fail;
tz->trips.passive.trip.temperature = temp;
@@ -482,7 +469,7 @@ static bool acpi_thermal_init_active_trip(struct acpi_thermal *tz, int index)
if (temp == THERMAL_TEMP_INVALID)
goto fail;
- if (!update_active_devices(tz, index, false))
+ if (!update_trip_devices(tz, &tz->trips.active[index].trip, index, false))
goto fail;
tz->trips.active[index].trip.temperature = temp;