diff options
Diffstat (limited to 'drivers/acpi/thermal.c')
-rw-r--r-- | drivers/acpi/thermal.c | 34 |
1 files changed, 30 insertions, 4 deletions
diff --git a/drivers/acpi/thermal.c b/drivers/acpi/thermal.c index 57d05ff44dd1..3521c37bbd33 100644 --- a/drivers/acpi/thermal.c +++ b/drivers/acpi/thermal.c | |||
@@ -74,6 +74,10 @@ MODULE_AUTHOR("Paul Diefenbaugh"); | |||
74 | MODULE_DESCRIPTION("ACPI Thermal Zone Driver"); | 74 | MODULE_DESCRIPTION("ACPI Thermal Zone Driver"); |
75 | MODULE_LICENSE("GPL"); | 75 | MODULE_LICENSE("GPL"); |
76 | 76 | ||
77 | static int act; | ||
78 | module_param(act, int, 0644); | ||
79 | MODULE_PARM_DESC(act, "Disable or override all lowest active trip points.\n"); | ||
80 | |||
77 | static int tzp; | 81 | static int tzp; |
78 | module_param(tzp, int, 0444); | 82 | module_param(tzp, int, 0444); |
79 | MODULE_PARM_DESC(tzp, "Thermal zone polling frequency, in 1/10 seconds.\n"); | 83 | MODULE_PARM_DESC(tzp, "Thermal zone polling frequency, in 1/10 seconds.\n"); |
@@ -405,11 +409,33 @@ static int acpi_thermal_get_trip_points(struct acpi_thermal *tz) | |||
405 | 409 | ||
406 | char name[5] = { '_', 'A', 'C', ('0' + i), '\0' }; | 410 | char name[5] = { '_', 'A', 'C', ('0' + i), '\0' }; |
407 | 411 | ||
408 | status = | 412 | if (act == -1) |
409 | acpi_evaluate_integer(tz->device->handle, name, NULL, | 413 | break; /* disable all active trip points */ |
410 | &tz->trips.active[i].temperature); | 414 | |
411 | if (ACPI_FAILURE(status)) | 415 | status = acpi_evaluate_integer(tz->device->handle, |
416 | name, NULL, &tz->trips.active[i].temperature); | ||
417 | |||
418 | if (ACPI_FAILURE(status)) { | ||
419 | if (i == 0) /* no active trip points */ | ||
420 | break; | ||
421 | if (act <= 0) /* no override requested */ | ||
422 | break; | ||
423 | if (i == 1) { /* 1 trip point */ | ||
424 | tz->trips.active[0].temperature = | ||
425 | CELSIUS_TO_KELVIN(act); | ||
426 | } else { /* multiple trips */ | ||
427 | /* | ||
428 | * Don't allow override higher than | ||
429 | * the next higher trip point | ||
430 | */ | ||
431 | tz->trips.active[i - 1].temperature = | ||
432 | (tz->trips.active[i - 2].temperature < | ||
433 | CELSIUS_TO_KELVIN(act) ? | ||
434 | tz->trips.active[i - 2].temperature : | ||
435 | CELSIUS_TO_KELVIN(act)); | ||
436 | } | ||
412 | break; | 437 | break; |
438 | } | ||
413 | 439 | ||
414 | name[2] = 'L'; | 440 | name[2] = 'L'; |
415 | status = | 441 | status = |