mirror of
https://github.com/torvalds/linux.git
synced 2026-05-31 18:43:33 +02:00
ACPI: thermal: Eliminate struct acpi_thermal_state_flags
Notice that the enabled flag is only needed for active trip points, so drop struct acpi_thermal_state_flags, add a simple "bool valid" field to the definitions of all trip point structures instead of flags and add a "bool enabled" field to struct acpi_thermal_active. Adjust the code using the modified structures accordingly. No intentional functional impact. Signed-off-by: Rafael J. Wysocki <rafael.j.wysocki@intel.com> Reviewed-by: Michal Wilczynski <michal.wilczynski@intel.com> Reviewed-by: Daniel Lezcano <daniel.lezcano@linaro.org>
This commit is contained in:
parent
607d265fc1
commit
7266c88cba
|
|
@ -105,35 +105,30 @@ struct acpi_thermal_state {
|
|||
int active_index;
|
||||
};
|
||||
|
||||
struct acpi_thermal_state_flags {
|
||||
u8 valid:1;
|
||||
u8 enabled:1;
|
||||
u8 reserved:6;
|
||||
};
|
||||
|
||||
struct acpi_thermal_critical {
|
||||
struct acpi_thermal_state_flags flags;
|
||||
unsigned long temperature;
|
||||
bool valid;
|
||||
};
|
||||
|
||||
struct acpi_thermal_hot {
|
||||
struct acpi_thermal_state_flags flags;
|
||||
unsigned long temperature;
|
||||
bool valid;
|
||||
};
|
||||
|
||||
struct acpi_thermal_passive {
|
||||
struct acpi_thermal_state_flags flags;
|
||||
struct acpi_handle_list devices;
|
||||
unsigned long temperature;
|
||||
unsigned long tc1;
|
||||
unsigned long tc2;
|
||||
unsigned long tsp;
|
||||
struct acpi_handle_list devices;
|
||||
bool valid;
|
||||
};
|
||||
|
||||
struct acpi_thermal_active {
|
||||
struct acpi_thermal_state_flags flags;
|
||||
unsigned long temperature;
|
||||
struct acpi_handle_list devices;
|
||||
unsigned long temperature;
|
||||
bool valid;
|
||||
bool enabled;
|
||||
};
|
||||
|
||||
struct acpi_thermal_trips {
|
||||
|
|
@ -229,7 +224,7 @@ static int acpi_thermal_trips_update(struct acpi_thermal *tz, int flag)
|
|||
acpi_status status;
|
||||
unsigned long long tmp;
|
||||
struct acpi_handle_list devices;
|
||||
int valid = 0;
|
||||
bool valid = false;
|
||||
int i;
|
||||
|
||||
/* Critical Shutdown */
|
||||
|
|
@ -243,21 +238,21 @@ static int acpi_thermal_trips_update(struct acpi_thermal *tz, int flag)
|
|||
* ... so lets discard those as invalid.
|
||||
*/
|
||||
if (ACPI_FAILURE(status)) {
|
||||
tz->trips.critical.flags.valid = 0;
|
||||
tz->trips.critical.valid = false;
|
||||
acpi_handle_debug(tz->device->handle,
|
||||
"No critical threshold\n");
|
||||
} else if (tmp <= 2732) {
|
||||
pr_info(FW_BUG "Invalid critical threshold (%llu)\n", tmp);
|
||||
tz->trips.critical.flags.valid = 0;
|
||||
tz->trips.critical.valid = false;
|
||||
} else {
|
||||
tz->trips.critical.flags.valid = 1;
|
||||
tz->trips.critical.valid = true;
|
||||
acpi_handle_debug(tz->device->handle,
|
||||
"Found critical threshold [%lu]\n",
|
||||
tz->trips.critical.temperature);
|
||||
}
|
||||
if (tz->trips.critical.flags.valid) {
|
||||
if (tz->trips.critical.valid) {
|
||||
if (crt == -1) {
|
||||
tz->trips.critical.flags.valid = 0;
|
||||
tz->trips.critical.valid = false;
|
||||
} else if (crt > 0) {
|
||||
unsigned long crt_k = celsius_to_deci_kelvin(crt);
|
||||
|
||||
|
|
@ -276,12 +271,12 @@ static int acpi_thermal_trips_update(struct acpi_thermal *tz, int flag)
|
|||
if (flag & ACPI_TRIPS_HOT) {
|
||||
status = acpi_evaluate_integer(tz->device->handle, "_HOT", NULL, &tmp);
|
||||
if (ACPI_FAILURE(status)) {
|
||||
tz->trips.hot.flags.valid = 0;
|
||||
tz->trips.hot.valid = false;
|
||||
acpi_handle_debug(tz->device->handle,
|
||||
"No hot threshold\n");
|
||||
} else {
|
||||
tz->trips.hot.temperature = tmp;
|
||||
tz->trips.hot.flags.valid = 1;
|
||||
tz->trips.hot.valid = true;
|
||||
acpi_handle_debug(tz->device->handle,
|
||||
"Found hot threshold [%lu]\n",
|
||||
tz->trips.hot.temperature);
|
||||
|
|
@ -289,9 +284,9 @@ static int acpi_thermal_trips_update(struct acpi_thermal *tz, int flag)
|
|||
}
|
||||
|
||||
/* Passive (optional) */
|
||||
if (((flag & ACPI_TRIPS_PASSIVE) && tz->trips.passive.flags.valid) ||
|
||||
if (((flag & ACPI_TRIPS_PASSIVE) && tz->trips.passive.valid) ||
|
||||
flag == ACPI_TRIPS_INIT) {
|
||||
valid = tz->trips.passive.flags.valid;
|
||||
valid = tz->trips.passive.valid;
|
||||
if (psv == -1) {
|
||||
status = AE_SUPPORT;
|
||||
} else if (psv > 0) {
|
||||
|
|
@ -303,44 +298,44 @@ static int acpi_thermal_trips_update(struct acpi_thermal *tz, int flag)
|
|||
}
|
||||
|
||||
if (ACPI_FAILURE(status)) {
|
||||
tz->trips.passive.flags.valid = 0;
|
||||
tz->trips.passive.valid = false;
|
||||
} else {
|
||||
tz->trips.passive.temperature = tmp;
|
||||
tz->trips.passive.flags.valid = 1;
|
||||
tz->trips.passive.valid = true;
|
||||
if (flag == ACPI_TRIPS_INIT) {
|
||||
status = acpi_evaluate_integer(tz->device->handle,
|
||||
"_TC1", NULL, &tmp);
|
||||
if (ACPI_FAILURE(status))
|
||||
tz->trips.passive.flags.valid = 0;
|
||||
tz->trips.passive.valid = false;
|
||||
else
|
||||
tz->trips.passive.tc1 = tmp;
|
||||
|
||||
status = acpi_evaluate_integer(tz->device->handle,
|
||||
"_TC2", NULL, &tmp);
|
||||
if (ACPI_FAILURE(status))
|
||||
tz->trips.passive.flags.valid = 0;
|
||||
tz->trips.passive.valid = false;
|
||||
else
|
||||
tz->trips.passive.tc2 = tmp;
|
||||
|
||||
status = acpi_evaluate_integer(tz->device->handle,
|
||||
"_TSP", NULL, &tmp);
|
||||
if (ACPI_FAILURE(status))
|
||||
tz->trips.passive.flags.valid = 0;
|
||||
tz->trips.passive.valid = false;
|
||||
else
|
||||
tz->trips.passive.tsp = tmp;
|
||||
}
|
||||
}
|
||||
}
|
||||
if ((flag & ACPI_TRIPS_DEVICES) && tz->trips.passive.flags.valid) {
|
||||
if ((flag & ACPI_TRIPS_DEVICES) && tz->trips.passive.valid) {
|
||||
memset(&devices, 0, sizeof(struct acpi_handle_list));
|
||||
status = acpi_evaluate_reference(tz->device->handle, "_PSL",
|
||||
NULL, &devices);
|
||||
if (ACPI_FAILURE(status)) {
|
||||
acpi_handle_info(tz->device->handle,
|
||||
"Invalid passive threshold\n");
|
||||
tz->trips.passive.flags.valid = 0;
|
||||
tz->trips.passive.valid = false;
|
||||
} else {
|
||||
tz->trips.passive.flags.valid = 1;
|
||||
tz->trips.passive.valid = true;
|
||||
}
|
||||
|
||||
if (memcmp(&tz->trips.passive.devices, &devices,
|
||||
|
|
@ -351,24 +346,24 @@ static int acpi_thermal_trips_update(struct acpi_thermal *tz, int flag)
|
|||
}
|
||||
}
|
||||
if ((flag & ACPI_TRIPS_PASSIVE) || (flag & ACPI_TRIPS_DEVICES)) {
|
||||
if (valid != tz->trips.passive.flags.valid)
|
||||
if (valid != tz->trips.passive.valid)
|
||||
ACPI_THERMAL_TRIPS_EXCEPTION(flag, tz, "state");
|
||||
}
|
||||
|
||||
/* Active (optional) */
|
||||
for (i = 0; i < ACPI_THERMAL_MAX_ACTIVE; i++) {
|
||||
char name[5] = { '_', 'A', 'C', ('0' + i), '\0' };
|
||||
valid = tz->trips.active[i].flags.valid;
|
||||
valid = tz->trips.active[i].valid;
|
||||
|
||||
if (act == -1)
|
||||
break; /* disable all active trip points */
|
||||
|
||||
if (flag == ACPI_TRIPS_INIT || ((flag & ACPI_TRIPS_ACTIVE) &&
|
||||
tz->trips.active[i].flags.valid)) {
|
||||
tz->trips.active[i].valid)) {
|
||||
status = acpi_evaluate_integer(tz->device->handle,
|
||||
name, NULL, &tmp);
|
||||
if (ACPI_FAILURE(status)) {
|
||||
tz->trips.active[i].flags.valid = 0;
|
||||
tz->trips.active[i].valid = false;
|
||||
if (i == 0)
|
||||
break;
|
||||
|
||||
|
|
@ -390,21 +385,21 @@ static int acpi_thermal_trips_update(struct acpi_thermal *tz, int flag)
|
|||
break;
|
||||
} else {
|
||||
tz->trips.active[i].temperature = tmp;
|
||||
tz->trips.active[i].flags.valid = 1;
|
||||
tz->trips.active[i].valid = true;
|
||||
}
|
||||
}
|
||||
|
||||
name[2] = 'L';
|
||||
if ((flag & ACPI_TRIPS_DEVICES) && tz->trips.active[i].flags.valid) {
|
||||
if ((flag & ACPI_TRIPS_DEVICES) && tz->trips.active[i].valid) {
|
||||
memset(&devices, 0, sizeof(struct acpi_handle_list));
|
||||
status = acpi_evaluate_reference(tz->device->handle,
|
||||
name, NULL, &devices);
|
||||
if (ACPI_FAILURE(status)) {
|
||||
acpi_handle_info(tz->device->handle,
|
||||
"Invalid active%d threshold\n", i);
|
||||
tz->trips.active[i].flags.valid = 0;
|
||||
tz->trips.active[i].valid = false;
|
||||
} else {
|
||||
tz->trips.active[i].flags.valid = 1;
|
||||
tz->trips.active[i].valid = true;
|
||||
}
|
||||
|
||||
if (memcmp(&tz->trips.active[i].devices, &devices,
|
||||
|
|
@ -415,10 +410,10 @@ static int acpi_thermal_trips_update(struct acpi_thermal *tz, int flag)
|
|||
}
|
||||
}
|
||||
if ((flag & ACPI_TRIPS_ACTIVE) || (flag & ACPI_TRIPS_DEVICES))
|
||||
if (valid != tz->trips.active[i].flags.valid)
|
||||
if (valid != tz->trips.active[i].valid)
|
||||
ACPI_THERMAL_TRIPS_EXCEPTION(flag, tz, "state");
|
||||
|
||||
if (!tz->trips.active[i].flags.valid)
|
||||
if (!tz->trips.active[i].valid)
|
||||
break;
|
||||
}
|
||||
|
||||
|
|
@ -438,17 +433,18 @@ static int acpi_thermal_trips_update(struct acpi_thermal *tz, int flag)
|
|||
|
||||
static int acpi_thermal_get_trip_points(struct acpi_thermal *tz)
|
||||
{
|
||||
int i, valid, ret = acpi_thermal_trips_update(tz, ACPI_TRIPS_INIT);
|
||||
int i, ret = acpi_thermal_trips_update(tz, ACPI_TRIPS_INIT);
|
||||
bool valid;
|
||||
|
||||
if (ret)
|
||||
return ret;
|
||||
|
||||
valid = tz->trips.critical.flags.valid |
|
||||
tz->trips.hot.flags.valid |
|
||||
tz->trips.passive.flags.valid;
|
||||
valid = tz->trips.critical.valid |
|
||||
tz->trips.hot.valid |
|
||||
tz->trips.passive.valid;
|
||||
|
||||
for (i = 0; i < ACPI_THERMAL_MAX_ACTIVE; i++)
|
||||
valid |= tz->trips.active[i].flags.valid;
|
||||
valid = valid || tz->trips.active[i].valid;
|
||||
|
||||
if (!valid) {
|
||||
pr_warn(FW_BUG "No valid trip found\n");
|
||||
|
|
@ -485,7 +481,7 @@ static int thermal_get_trip_type(struct thermal_zone_device *thermal,
|
|||
if (!tz || trip < 0)
|
||||
return -EINVAL;
|
||||
|
||||
if (tz->trips.critical.flags.valid) {
|
||||
if (tz->trips.critical.valid) {
|
||||
if (!trip) {
|
||||
*type = THERMAL_TRIP_CRITICAL;
|
||||
return 0;
|
||||
|
|
@ -493,7 +489,7 @@ static int thermal_get_trip_type(struct thermal_zone_device *thermal,
|
|||
trip--;
|
||||
}
|
||||
|
||||
if (tz->trips.hot.flags.valid) {
|
||||
if (tz->trips.hot.valid) {
|
||||
if (!trip) {
|
||||
*type = THERMAL_TRIP_HOT;
|
||||
return 0;
|
||||
|
|
@ -501,7 +497,7 @@ static int thermal_get_trip_type(struct thermal_zone_device *thermal,
|
|||
trip--;
|
||||
}
|
||||
|
||||
if (tz->trips.passive.flags.valid) {
|
||||
if (tz->trips.passive.valid) {
|
||||
if (!trip) {
|
||||
*type = THERMAL_TRIP_PASSIVE;
|
||||
return 0;
|
||||
|
|
@ -509,7 +505,7 @@ static int thermal_get_trip_type(struct thermal_zone_device *thermal,
|
|||
trip--;
|
||||
}
|
||||
|
||||
for (i = 0; i < ACPI_THERMAL_MAX_ACTIVE && tz->trips.active[i].flags.valid; i++) {
|
||||
for (i = 0; i < ACPI_THERMAL_MAX_ACTIVE && tz->trips.active[i].valid; i++) {
|
||||
if (!trip) {
|
||||
*type = THERMAL_TRIP_ACTIVE;
|
||||
return 0;
|
||||
|
|
@ -529,7 +525,7 @@ static int thermal_get_trip_temp(struct thermal_zone_device *thermal,
|
|||
if (!tz || trip < 0)
|
||||
return -EINVAL;
|
||||
|
||||
if (tz->trips.critical.flags.valid) {
|
||||
if (tz->trips.critical.valid) {
|
||||
if (!trip) {
|
||||
*temp = deci_kelvin_to_millicelsius_with_offset(
|
||||
tz->trips.critical.temperature,
|
||||
|
|
@ -539,7 +535,7 @@ static int thermal_get_trip_temp(struct thermal_zone_device *thermal,
|
|||
trip--;
|
||||
}
|
||||
|
||||
if (tz->trips.hot.flags.valid) {
|
||||
if (tz->trips.hot.valid) {
|
||||
if (!trip) {
|
||||
*temp = deci_kelvin_to_millicelsius_with_offset(
|
||||
tz->trips.hot.temperature,
|
||||
|
|
@ -549,7 +545,7 @@ static int thermal_get_trip_temp(struct thermal_zone_device *thermal,
|
|||
trip--;
|
||||
}
|
||||
|
||||
if (tz->trips.passive.flags.valid) {
|
||||
if (tz->trips.passive.valid) {
|
||||
if (!trip) {
|
||||
*temp = deci_kelvin_to_millicelsius_with_offset(
|
||||
tz->trips.passive.temperature,
|
||||
|
|
@ -560,7 +556,7 @@ static int thermal_get_trip_temp(struct thermal_zone_device *thermal,
|
|||
}
|
||||
|
||||
for (i = 0; i < ACPI_THERMAL_MAX_ACTIVE &&
|
||||
tz->trips.active[i].flags.valid; i++) {
|
||||
tz->trips.active[i].valid; i++) {
|
||||
if (!trip) {
|
||||
*temp = deci_kelvin_to_millicelsius_with_offset(
|
||||
tz->trips.active[i].temperature,
|
||||
|
|
@ -578,7 +574,7 @@ static int thermal_get_crit_temp(struct thermal_zone_device *thermal,
|
|||
{
|
||||
struct acpi_thermal *tz = thermal_zone_device_priv(thermal);
|
||||
|
||||
if (tz->trips.critical.flags.valid) {
|
||||
if (tz->trips.critical.valid) {
|
||||
*temperature = deci_kelvin_to_millicelsius_with_offset(
|
||||
tz->trips.critical.temperature,
|
||||
tz->kelvin_offset);
|
||||
|
|
@ -664,13 +660,13 @@ static int acpi_thermal_cooling_device_cb(struct thermal_zone_device *thermal,
|
|||
int trip = -1;
|
||||
int result = 0;
|
||||
|
||||
if (tz->trips.critical.flags.valid)
|
||||
if (tz->trips.critical.valid)
|
||||
trip++;
|
||||
|
||||
if (tz->trips.hot.flags.valid)
|
||||
if (tz->trips.hot.valid)
|
||||
trip++;
|
||||
|
||||
if (tz->trips.passive.flags.valid) {
|
||||
if (tz->trips.passive.valid) {
|
||||
trip++;
|
||||
for (i = 0; i < tz->trips.passive.devices.count; i++) {
|
||||
handle = tz->trips.passive.devices.handles[i];
|
||||
|
|
@ -695,7 +691,7 @@ static int acpi_thermal_cooling_device_cb(struct thermal_zone_device *thermal,
|
|||
}
|
||||
|
||||
for (i = 0; i < ACPI_THERMAL_MAX_ACTIVE; i++) {
|
||||
if (!tz->trips.active[i].flags.valid)
|
||||
if (!tz->trips.active[i].valid)
|
||||
break;
|
||||
|
||||
trip++;
|
||||
|
|
@ -783,19 +779,19 @@ static int acpi_thermal_register_thermal_zone(struct acpi_thermal *tz)
|
|||
acpi_status status;
|
||||
int i;
|
||||
|
||||
if (tz->trips.critical.flags.valid)
|
||||
if (tz->trips.critical.valid)
|
||||
trips++;
|
||||
|
||||
if (tz->trips.hot.flags.valid)
|
||||
if (tz->trips.hot.valid)
|
||||
trips++;
|
||||
|
||||
if (tz->trips.passive.flags.valid)
|
||||
if (tz->trips.passive.valid)
|
||||
trips++;
|
||||
|
||||
for (i = 0; i < ACPI_THERMAL_MAX_ACTIVE && tz->trips.active[i].flags.valid;
|
||||
for (i = 0; i < ACPI_THERMAL_MAX_ACTIVE && tz->trips.active[i].valid;
|
||||
i++, trips++);
|
||||
|
||||
if (tz->trips.passive.flags.valid)
|
||||
if (tz->trips.passive.valid)
|
||||
tz->thermal_zone = thermal_zone_device_register("acpitz", trips, 0, tz,
|
||||
&acpi_thermal_zone_ops, NULL,
|
||||
tz->trips.passive.tsp * 100,
|
||||
|
|
@ -965,7 +961,7 @@ static int acpi_thermal_get_info(struct acpi_thermal *tz)
|
|||
*/
|
||||
static void acpi_thermal_guess_offset(struct acpi_thermal *tz)
|
||||
{
|
||||
if (tz->trips.critical.flags.valid &&
|
||||
if (tz->trips.critical.valid &&
|
||||
(tz->trips.critical.temperature % 5) == 1)
|
||||
tz->kelvin_offset = 273100;
|
||||
else
|
||||
|
|
@ -1074,20 +1070,20 @@ static int acpi_thermal_resume(struct device *dev)
|
|||
return -EINVAL;
|
||||
|
||||
for (i = 0; i < ACPI_THERMAL_MAX_ACTIVE; i++) {
|
||||
if (!tz->trips.active[i].flags.valid)
|
||||
if (!tz->trips.active[i].valid)
|
||||
break;
|
||||
|
||||
tz->trips.active[i].flags.enabled = 1;
|
||||
tz->trips.active[i].enabled = true;
|
||||
for (j = 0; j < tz->trips.active[i].devices.count; j++) {
|
||||
result = acpi_bus_update_power(
|
||||
tz->trips.active[i].devices.handles[j],
|
||||
&power_state);
|
||||
if (result || (power_state != ACPI_STATE_D0)) {
|
||||
tz->trips.active[i].flags.enabled = 0;
|
||||
tz->trips.active[i].enabled = false;
|
||||
break;
|
||||
}
|
||||
}
|
||||
tz->state.active |= tz->trips.active[i].flags.enabled;
|
||||
tz->state.active |= tz->trips.active[i].enabled;
|
||||
}
|
||||
|
||||
acpi_queue_thermal_check(tz);
|
||||
|
|
|
|||
Loading…
Reference in New Issue
Block a user