@@ -259,8 +259,8 @@ static struct thermal_trip *acpi_thermal_trips_alloc_critical(struct acpi_therma
struct thermal_trip *trips,
int *num_trips)
{
- acpi_status status = AE_OK;
- unsigned long long temp;
+ struct thermal_trip trip;
+ int ret;
/*
* Module parameters disable the critical trip point
@@ -268,14 +268,12 @@ static struct thermal_trip *acpi_thermal_trips_alloc_critical(struct acpi_therma
if (crt < 0)
goto out;
- status = acpi_evaluate_integer(tz->device->handle, "_CRT", NULL, &temp);
- if (ACPI_FAILURE(status)) {
- acpi_handle_debug(tz->device->handle, "No critical threshold\n");
+ ret = thermal_acpi_trip_crit(tz->device->handle, &trip);
+ if (ret)
goto out;
- }
-
- if (temp <= 2732) {
- pr_info(FW_BUG "Invalid critical threshold (%llu)\n", temp);
+
+ if (trip.temperature <= 0) {
+ pr_info(FW_BUG "Invalid critical threshold (%d)\n", trip.temperature);
goto out;
}
@@ -283,10 +281,7 @@ static struct thermal_trip *acpi_thermal_trips_alloc_critical(struct acpi_therma
if (!trips)
goto out;
- memset(&trips[*num_trips], 0, sizeof(*trips));
-
- trips[*num_trips].temperature = deci_kelvin_to_millicelsius(temp);
- trips[*num_trips].type = THERMAL_TRIP_CRITICAL;
+ trips[*num_trips] = trip; /* structure copy */
if (crt > 0)
acpi_thermal_trips_override(&trips[*num_trips], crt * MILLI);
@@ -300,23 +295,18 @@ static struct thermal_trip *acpi_thermal_trips_alloc_hot(struct acpi_thermal *tz
struct thermal_trip *trips,
int *num_trips)
{
- acpi_status status;
- unsigned long long temp;
+ struct thermal_trip trip;
+ int ret;
- status = acpi_evaluate_integer(tz->device->handle, "_HOT", NULL, &temp);
- if (ACPI_FAILURE(status)) {
- acpi_handle_debug(tz->device->handle, "No hot threshold\n");
+ ret = thermal_acpi_trip_hot(tz->device->handle, &trip);
+ if (ret)
goto out;
- }
trips = krealloc(trips, sizeof(*trips) * (*num_trips + 1), GFP_KERNEL);
if (!trips)
goto out;
- memset(&trips[*num_trips], 0, sizeof(*trips));
-
- trips[*num_trips].temperature = deci_kelvin_to_millicelsius(temp);
- trips[*num_trips].type = THERMAL_TRIP_HOT;
+ trips[*num_trips] = trip; /* structure copy */
(*num_trips)++;
out:
@@ -327,9 +317,10 @@ static struct thermal_trip *acpi_thermal_trips_alloc_passive(struct acpi_thermal
struct thermal_trip *trips,
int *num_trips)
{
- struct acpi_handle_list devices;
acpi_status status;
- unsigned long long temp;
+ struct thermal_trip trip;
+ struct acpi_handle_list devices;
+ int ret;
/*
* Module parameters disable all passive trip points
@@ -337,26 +328,21 @@ static struct thermal_trip *acpi_thermal_trips_alloc_passive(struct acpi_thermal
if (psv < 0)
goto out;
- status = acpi_evaluate_integer(tz->device->handle, "_PSV", NULL, &temp);
- if (ACPI_FAILURE(status)) {
- acpi_handle_debug(tz->device->handle, "No passive threshold\n");
+ ret = thermal_acpi_trip_psv(tz->device->handle, &trip);
+ if (ret)
goto out;
- }
-
+
status = acpi_evaluate_reference(tz->device->handle, "_PSL", NULL, &devices);
if (ACPI_FAILURE(status)) {
acpi_handle_debug(tz->device->handle, "No passive device associated\n");
goto out;
}
-
+
trips = krealloc(trips, sizeof(*trips) * (*num_trips + 1), GFP_KERNEL);
if (!trips)
goto out;
- memset(&trips[*num_trips], 0, sizeof(*trips));
-
- trips[*num_trips].temperature = deci_kelvin_to_millicelsius(temp);
- trips[*num_trips].type = THERMAL_TRIP_PASSIVE;
+ trips[*num_trips] = trip; /* structure copy */
(*num_trips)++;
out:
@@ -367,10 +353,9 @@ static struct thermal_trip *acpi_thermal_trips_alloc_active(struct acpi_thermal
struct thermal_trip *trips,
int *num_trips)
{
- struct acpi_handle_list devices;
acpi_status status;
- unsigned long long temp;
- int i;
+ struct acpi_handle_list devices;
+ int i, ret;
/*
* Module parameters disable all active trip points
@@ -379,12 +364,11 @@ static struct thermal_trip *acpi_thermal_trips_alloc_active(struct acpi_thermal
return trips;
for (i = 0; i < ACPI_THERMAL_MAX_ACTIVE; i++) {
+ struct thermal_trip trip;
char name[5];
- sprintf(name, "_AC%d", i);
-
- status = acpi_evaluate_integer(tz->device->handle, name, NULL, &temp);
- if (ACPI_FAILURE(status))
+ ret = thermal_acpi_trip_act(tz->device->handle, &trip, i);
+ if (ret)
break;
sprintf(name, "_AL%d", i);
@@ -394,16 +378,13 @@ static struct thermal_trip *acpi_thermal_trips_alloc_active(struct acpi_thermal
acpi_handle_info(tz->device->handle, "No _AL%d defined for _AC%d\n", i, i);
break;
}
-
+
trips = krealloc(trips, sizeof(*trips) * (*num_trips + 1), GFP_KERNEL);
if (!trips)
break;
- memset(&trips[*num_trips], 0, sizeof(*trips));
+ trips[*num_trips] = trip; /* structure copy */
- trips[*num_trips].temperature = deci_kelvin_to_millicelsius(temp);
- trips[*num_trips].type = THERMAL_TRIP_ACTIVE;
-
(*num_trips)++;
}