Merge branch 'release' of git://git.kernel.org/pub/scm/linux/kernel/git/lenb/linux
[cascardo/linux.git] / include / linux / thermal.h
index 4b94a61..91b3481 100644 (file)
@@ -44,6 +44,12 @@ enum thermal_trip_type {
        THERMAL_TRIP_CRITICAL,
 };
 
+enum thermal_trend {
+       THERMAL_TREND_STABLE, /* temperature is stable */
+       THERMAL_TREND_RAISING, /* temperature is raising */
+       THERMAL_TREND_DROPPING, /* temperature is dropping */
+};
+
 struct thermal_zone_device_ops {
        int (*bind) (struct thermal_zone_device *,
                     struct thermal_cooling_device *);
@@ -65,6 +71,8 @@ struct thermal_zone_device_ops {
        int (*set_trip_hyst) (struct thermal_zone_device *, int,
                              unsigned long);
        int (*get_crit_temp) (struct thermal_zone_device *, unsigned long *);
+       int (*get_trend) (struct thermal_zone_device *, int,
+                         enum thermal_trend *);
        int (*notify) (struct thermal_zone_device *, int,
                       enum thermal_trip_type);
 };
@@ -75,6 +83,8 @@ struct thermal_cooling_device_ops {
        int (*set_cur_state) (struct thermal_cooling_device *, unsigned long);
 };
 
+#define THERMAL_NO_LIMIT -1UL /* no upper/lower limit requirement */
+
 #define THERMAL_TRIPS_NONE -1
 #define THERMAL_MAX_TRIPS 12
 #define THERMAL_NAME_LENGTH 20
@@ -84,6 +94,9 @@ struct thermal_cooling_device {
        struct device device;
        void *devdata;
        const struct thermal_cooling_device_ops *ops;
+       bool updated; /* true if the cooling device does not need update */
+       struct mutex lock; /* protect thermal_instances list */
+       struct list_head thermal_instances;
        struct list_head node;
 };
 
@@ -105,17 +118,16 @@ struct thermal_zone_device {
        struct thermal_attr *trip_hyst_attrs;
        void *devdata;
        int trips;
-       int tc1;
-       int tc2;
        int passive_delay;
        int polling_delay;
+       int temperature;
        int last_temperature;
-       bool passive;
+       int passive;
        unsigned int forced_passive;
        const struct thermal_zone_device_ops *ops;
-       struct list_head cooling_devices;
+       struct list_head thermal_instances;
        struct idr idr;
-       struct mutex lock;      /* protect cooling devices list */
+       struct mutex lock; /* protect thermal_instances list */
        struct list_head node;
        struct delayed_work poll_queue;
 };
@@ -152,12 +164,12 @@ enum {
 #define THERMAL_GENL_CMD_MAX (__THERMAL_GENL_CMD_MAX - 1)
 
 struct thermal_zone_device *thermal_zone_device_register(const char *, int, int,
-               void *, const struct thermal_zone_device_ops *, int tc1,
-               int tc2, int passive_freq, int polling_freq);
+               void *, const struct thermal_zone_device_ops *, int, int);
 void thermal_zone_device_unregister(struct thermal_zone_device *);
 
 int thermal_zone_bind_cooling_device(struct thermal_zone_device *, int,
-                                    struct thermal_cooling_device *);
+                                    struct thermal_cooling_device *,
+                                    unsigned long, unsigned long);
 int thermal_zone_unbind_cooling_device(struct thermal_zone_device *, int,
                                       struct thermal_cooling_device *);
 void thermal_zone_device_update(struct thermal_zone_device *);