aboutsummaryrefslogtreecommitdiffstats
path: root/drivers/acpi
diff options
context:
space:
mode:
authorThomas Renninger <trenn@suse.de>2010-02-16 16:55:51 -0500
committerLen Brown <len.brown@intel.com>2010-02-19 01:48:48 -0500
commit8b7ef6d8f16274da42344cd50746ddb1c93c25ea (patch)
treeddb90374556693b5173b2610821e6bdd60845af8 /drivers/acpi
parentf8b55f251012e104093e105483c45c5d85ad3040 (diff)
ACPI thermal: Check for thermal zone requirement
ACPI spec says (11.5 Thermal Zone Interface Requirements): A thermal zone must contain at least one trip point (critical, near critical, active, or passive) Check this once at init time. Signed-off-by: Thomas Renninger <trenn@suse.de> Tested-by: clarkt@cnsp.com Signed-off-by: Len Brown <len.brown@intel.com>
Diffstat (limited to 'drivers/acpi')
-rw-r--r--drivers/acpi/thermal.c18
1 files changed, 17 insertions, 1 deletions
diff --git a/drivers/acpi/thermal.c b/drivers/acpi/thermal.c
index 9073ada88835..e9f28e075cf8 100644
--- a/drivers/acpi/thermal.c
+++ b/drivers/acpi/thermal.c
@@ -575,7 +575,23 @@ static int acpi_thermal_trips_update(struct acpi_thermal *tz, int flag)
575 575
576static int acpi_thermal_get_trip_points(struct acpi_thermal *tz) 576static int acpi_thermal_get_trip_points(struct acpi_thermal *tz)
577{ 577{
578 return acpi_thermal_trips_update(tz, ACPI_TRIPS_INIT); 578 int i, valid, ret = acpi_thermal_trips_update(tz, ACPI_TRIPS_INIT);
579
580 if (ret)
581 return ret;
582
583 valid = tz->trips.critical.flags.valid |
584 tz->trips.hot.flags.valid |
585 tz->trips.passive.flags.valid;
586
587 for (i = 0; i < ACPI_THERMAL_MAX_ACTIVE; i++)
588 valid |= tz->trips.active[i].flags.valid;
589
590 if (!valid) {
591 printk(KERN_WARNING FW_BUG "No valid trip found\n");
592 return -ENODEV;
593 }
594 return 0;
579} 595}
580 596
581static void acpi_thermal_check(void *data) 597static void acpi_thermal_check(void *data)