diff options
| author | Len Brown <len.brown@intel.com> | 2008-03-13 01:59:46 -0400 |
|---|---|---|
| committer | Len Brown <len.brown@intel.com> | 2008-03-13 01:59:46 -0400 |
| commit | 160ff06b1848a01913611950b05963e3315f759b (patch) | |
| tree | 61afeb66a72116d3fdadb3f10feb05c8770c1f64 | |
| parent | 1ca721cdb748ba72c47e9c661d54696db3cde796 (diff) | |
| parent | 5e012760dfd5ec24c41b9eab9e654a88360bb026 (diff) | |
Merge branches 'release' and 'thermal' into release
| -rw-r--r-- | Documentation/thermal/sysfs-api.txt | 22 | ||||
| -rw-r--r-- | drivers/acpi/thermal.c | 12 | ||||
| -rw-r--r-- | drivers/thermal/Kconfig | 1 | ||||
| -rw-r--r-- | drivers/thermal/thermal.c | 169 |
4 files changed, 162 insertions, 42 deletions
diff --git a/Documentation/thermal/sysfs-api.txt b/Documentation/thermal/sysfs-api.txt index ba9c2da5a8c2..d9f28be75403 100644 --- a/Documentation/thermal/sysfs-api.txt +++ b/Documentation/thermal/sysfs-api.txt | |||
| @@ -143,10 +143,10 @@ type Strings which represent the thermal zone type. | |||
| 143 | This is given by thermal zone driver as part of registration. | 143 | This is given by thermal zone driver as part of registration. |
| 144 | Eg: "ACPI thermal zone" indicates it's a ACPI thermal device | 144 | Eg: "ACPI thermal zone" indicates it's a ACPI thermal device |
| 145 | RO | 145 | RO |
| 146 | Optional | 146 | Required |
| 147 | 147 | ||
| 148 | temp Current temperature as reported by thermal zone (sensor) | 148 | temp Current temperature as reported by thermal zone (sensor) |
| 149 | Unit: degree Celsius | 149 | Unit: millidegree Celsius |
| 150 | RO | 150 | RO |
| 151 | Required | 151 | Required |
| 152 | 152 | ||
| @@ -163,7 +163,7 @@ mode One of the predefined values in [kernel, user] | |||
| 163 | charge of the thermal management. | 163 | charge of the thermal management. |
| 164 | 164 | ||
| 165 | trip_point_[0-*]_temp The temperature above which trip point will be fired | 165 | trip_point_[0-*]_temp The temperature above which trip point will be fired |
| 166 | Unit: degree Celsius | 166 | Unit: millidegree Celsius |
| 167 | RO | 167 | RO |
| 168 | Optional | 168 | Optional |
| 169 | 169 | ||
| @@ -193,7 +193,7 @@ type String which represents the type of device | |||
| 193 | eg. For memory controller device on intel_menlow platform: | 193 | eg. For memory controller device on intel_menlow platform: |
| 194 | this should be "Memory controller" | 194 | this should be "Memory controller" |
| 195 | RO | 195 | RO |
| 196 | Optional | 196 | Required |
| 197 | 197 | ||
| 198 | max_state The maximum permissible cooling state of this cooling device. | 198 | max_state The maximum permissible cooling state of this cooling device. |
| 199 | RO | 199 | RO |
| @@ -219,16 +219,16 @@ the sys I/F structure will be built like this: | |||
| 219 | 219 | ||
| 220 | |thermal_zone1: | 220 | |thermal_zone1: |
| 221 | |-----type: ACPI thermal zone | 221 | |-----type: ACPI thermal zone |
| 222 | |-----temp: 37 | 222 | |-----temp: 37000 |
| 223 | |-----mode: kernel | 223 | |-----mode: kernel |
| 224 | |-----trip_point_0_temp: 100 | 224 | |-----trip_point_0_temp: 100000 |
| 225 | |-----trip_point_0_type: critical | 225 | |-----trip_point_0_type: critical |
| 226 | |-----trip_point_1_temp: 80 | 226 | |-----trip_point_1_temp: 80000 |
| 227 | |-----trip_point_1_type: passive | 227 | |-----trip_point_1_type: passive |
| 228 | |-----trip_point_2_temp: 70 | 228 | |-----trip_point_2_temp: 70000 |
| 229 | |-----trip_point_2_type: active[0] | 229 | |-----trip_point_2_type: active0 |
| 230 | |-----trip_point_3_temp: 60 | 230 | |-----trip_point_3_temp: 60000 |
| 231 | |-----trip_point_3_type: active[1] | 231 | |-----trip_point_3_type: active1 |
| 232 | |-----cdev0: --->/sys/class/thermal/cooling_device0 | 232 | |-----cdev0: --->/sys/class/thermal/cooling_device0 |
| 233 | |-----cdev0_trip_point: 1 /* cdev0 can be used for passive */ | 233 | |-----cdev0_trip_point: 1 /* cdev0 can be used for passive */ |
| 234 | |-----cdev1: --->/sys/class/thermal/cooling_device3 | 234 | |-----cdev1: --->/sys/class/thermal/cooling_device3 |
diff --git a/drivers/acpi/thermal.c b/drivers/acpi/thermal.c index 8d4b79b4f933..c4e00ac8ea85 100644 --- a/drivers/acpi/thermal.c +++ b/drivers/acpi/thermal.c | |||
| @@ -879,6 +879,8 @@ static void acpi_thermal_check(void *data) | |||
| 879 | } | 879 | } |
| 880 | 880 | ||
| 881 | /* sys I/F for generic thermal sysfs support */ | 881 | /* sys I/F for generic thermal sysfs support */ |
| 882 | #define KELVIN_TO_MILLICELSIUS(t) (t * 100 - 273200) | ||
| 883 | |||
| 882 | static int thermal_get_temp(struct thermal_zone_device *thermal, char *buf) | 884 | static int thermal_get_temp(struct thermal_zone_device *thermal, char *buf) |
| 883 | { | 885 | { |
| 884 | struct acpi_thermal *tz = thermal->devdata; | 886 | struct acpi_thermal *tz = thermal->devdata; |
| @@ -886,7 +888,7 @@ static int thermal_get_temp(struct thermal_zone_device *thermal, char *buf) | |||
| 886 | if (!tz) | 888 | if (!tz) |
| 887 | return -EINVAL; | 889 | return -EINVAL; |
| 888 | 890 | ||
| 889 | return sprintf(buf, "%ld\n", KELVIN_TO_CELSIUS(tz->temperature)); | 891 | return sprintf(buf, "%ld\n", KELVIN_TO_MILLICELSIUS(tz->temperature)); |
| 890 | } | 892 | } |
| 891 | 893 | ||
| 892 | static const char enabled[] = "kernel"; | 894 | static const char enabled[] = "kernel"; |
| @@ -980,21 +982,21 @@ static int thermal_get_trip_temp(struct thermal_zone_device *thermal, | |||
| 980 | 982 | ||
| 981 | if (tz->trips.critical.flags.valid) { | 983 | if (tz->trips.critical.flags.valid) { |
| 982 | if (!trip) | 984 | if (!trip) |
| 983 | return sprintf(buf, "%ld\n", KELVIN_TO_CELSIUS( | 985 | return sprintf(buf, "%ld\n", KELVIN_TO_MILLICELSIUS( |
| 984 | tz->trips.critical.temperature)); | 986 | tz->trips.critical.temperature)); |
| 985 | trip--; | 987 | trip--; |
| 986 | } | 988 | } |
| 987 | 989 | ||
| 988 | if (tz->trips.hot.flags.valid) { | 990 | if (tz->trips.hot.flags.valid) { |
| 989 | if (!trip) | 991 | if (!trip) |
| 990 | return sprintf(buf, "%ld\n", KELVIN_TO_CELSIUS( | 992 | return sprintf(buf, "%ld\n", KELVIN_TO_MILLICELSIUS( |
| 991 | tz->trips.hot.temperature)); | 993 | tz->trips.hot.temperature)); |
| 992 | trip--; | 994 | trip--; |
| 993 | } | 995 | } |
| 994 | 996 | ||
| 995 | if (tz->trips.passive.flags.valid) { | 997 | if (tz->trips.passive.flags.valid) { |
| 996 | if (!trip) | 998 | if (!trip) |
| 997 | return sprintf(buf, "%ld\n", KELVIN_TO_CELSIUS( | 999 | return sprintf(buf, "%ld\n", KELVIN_TO_MILLICELSIUS( |
| 998 | tz->trips.passive.temperature)); | 1000 | tz->trips.passive.temperature)); |
| 999 | trip--; | 1001 | trip--; |
| 1000 | } | 1002 | } |
| @@ -1002,7 +1004,7 @@ static int thermal_get_trip_temp(struct thermal_zone_device *thermal, | |||
| 1002 | for (i = 0; i < ACPI_THERMAL_MAX_ACTIVE && | 1004 | for (i = 0; i < ACPI_THERMAL_MAX_ACTIVE && |
| 1003 | tz->trips.active[i].flags.valid; i++) { | 1005 | tz->trips.active[i].flags.valid; i++) { |
| 1004 | if (!trip) | 1006 | if (!trip) |
| 1005 | return sprintf(buf, "%ld\n", KELVIN_TO_CELSIUS( | 1007 | return sprintf(buf, "%ld\n", KELVIN_TO_MILLICELSIUS( |
| 1006 | tz->trips.active[i].temperature)); | 1008 | tz->trips.active[i].temperature)); |
| 1007 | trip--; | 1009 | trip--; |
| 1008 | } | 1010 | } |
diff --git a/drivers/thermal/Kconfig b/drivers/thermal/Kconfig index 69f19f224875..3ab313ed441c 100644 --- a/drivers/thermal/Kconfig +++ b/drivers/thermal/Kconfig | |||
| @@ -4,6 +4,7 @@ | |||
| 4 | 4 | ||
| 5 | menuconfig THERMAL | 5 | menuconfig THERMAL |
| 6 | bool "Generic Thermal sysfs driver" | 6 | bool "Generic Thermal sysfs driver" |
| 7 | select HWMON | ||
| 7 | default y | 8 | default y |
| 8 | help | 9 | help |
| 9 | Generic Thermal Sysfs driver offers a generic mechanism for | 10 | Generic Thermal Sysfs driver offers a generic mechanism for |
diff --git a/drivers/thermal/thermal.c b/drivers/thermal/thermal.c index 8b86e53ccf7a..41bd4c805ace 100644 --- a/drivers/thermal/thermal.c +++ b/drivers/thermal/thermal.c | |||
| @@ -30,8 +30,10 @@ | |||
| 30 | #include <linux/idr.h> | 30 | #include <linux/idr.h> |
| 31 | #include <linux/thermal.h> | 31 | #include <linux/thermal.h> |
| 32 | #include <linux/spinlock.h> | 32 | #include <linux/spinlock.h> |
| 33 | #include <linux/hwmon.h> | ||
| 34 | #include <linux/hwmon-sysfs.h> | ||
| 33 | 35 | ||
| 34 | MODULE_AUTHOR("Zhang Rui") | 36 | MODULE_AUTHOR("Zhang Rui"); |
| 35 | MODULE_DESCRIPTION("Generic thermal management sysfs support"); | 37 | MODULE_DESCRIPTION("Generic thermal management sysfs support"); |
| 36 | MODULE_LICENSE("GPL"); | 38 | MODULE_LICENSE("GPL"); |
| 37 | 39 | ||
| @@ -56,6 +58,9 @@ static LIST_HEAD(thermal_tz_list); | |||
| 56 | static LIST_HEAD(thermal_cdev_list); | 58 | static LIST_HEAD(thermal_cdev_list); |
| 57 | static DEFINE_MUTEX(thermal_list_lock); | 59 | static DEFINE_MUTEX(thermal_list_lock); |
| 58 | 60 | ||
| 61 | static struct device *thermal_hwmon; | ||
| 62 | #define MAX_THERMAL_ZONES 10 | ||
| 63 | |||
| 59 | static int get_idr(struct idr *idr, struct mutex *lock, int *id) | 64 | static int get_idr(struct idr *idr, struct mutex *lock, int *id) |
| 60 | { | 65 | { |
| 61 | int err; | 66 | int err; |
| @@ -87,7 +92,67 @@ static void release_idr(struct idr *idr, struct mutex *lock, int id) | |||
| 87 | mutex_unlock(lock); | 92 | mutex_unlock(lock); |
| 88 | } | 93 | } |
| 89 | 94 | ||
| 90 | /* sys I/F for thermal zone */ | 95 | |
