diff options
author | Thomas Renninger <trenn@suse.de> | 2010-02-16 16:55:51 -0500 |
---|---|---|
committer | Len Brown <len.brown@intel.com> | 2010-02-19 01:48:48 -0500 |
commit | 8b7ef6d8f16274da42344cd50746ddb1c93c25ea (patch) | |
tree | ddb90374556693b5173b2610821e6bdd60845af8 /drivers/acpi | |
parent | f8b55f251012e104093e105483c45c5d85ad3040 (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.c | 18 |
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 | ||
576 | static int acpi_thermal_get_trip_points(struct acpi_thermal *tz) | 576 | static 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 | ||
581 | static void acpi_thermal_check(void *data) | 597 | static void acpi_thermal_check(void *data) |