thermal: add hwmon sysfs I/F
[linux-2.6.git] / include / linux / thermal.h
index 16e6a8b..06d3e6e 100644 (file)
@@ -66,6 +66,23 @@ struct thermal_cooling_device {
                                ((long)t-2732+5)/10 : ((long)t-2732-5)/10)
 #define CELSIUS_TO_KELVIN(t)   ((t)*10+2732)
 
+#if defined(CONFIG_HWMON) ||   \
+       (defined(CONFIG_HWMON_MODULE) && defined(CONFIG_THERMAL_MODULE))
+/* thermal zone devices with the same type share one hwmon device */
+struct thermal_hwmon_device {
+       char type[THERMAL_NAME_LENGTH];
+       struct device *device;
+       int count;
+       struct list_head tz_list;
+       struct list_head node;
+};
+
+struct thermal_hwmon_attr {
+       struct device_attribute attr;
+       char name[16];
+};
+#endif
+
 struct thermal_zone_device {
        int id;
        char type[THERMAL_NAME_LENGTH];
@@ -77,6 +94,13 @@ struct thermal_zone_device {
        struct idr idr;
        struct mutex lock;      /* protect cooling devices list */
        struct list_head node;
+#if defined(CONFIG_HWMON) ||   \
+       (defined(CONFIG_HWMON_MODULE) && defined(CONFIG_THERMAL_MODULE))
+       struct list_head hwmon_node;
+       struct thermal_hwmon_device *hwmon;
+       struct thermal_hwmon_attr temp_input;   /* hwmon sys attr */
+       struct thermal_hwmon_attr temp_crit;    /* hwmon sys attr */
+#endif
 };
 
 struct thermal_zone_device *thermal_zone_device_register(char *, int, void *,