[PATCH 01/30] Thermal: Introduce multiple cooling states support

2012-10-09 Thread Len Brown
From: Zhang Rui 

This is because general active cooling devices, like fans,
may have multiple speeds, which can be mapped to different cooling states.

Signed-off-by: Zhang Rui 
Reviewed-by: Rafael J. Wysocki 
Reviewed-by: Valentin, Eduardo 
---
 drivers/thermal/thermal_sys.c | 12 ++--
 1 file changed, 10 insertions(+), 2 deletions(-)

diff --git a/drivers/thermal/thermal_sys.c b/drivers/thermal/thermal_sys.c
index 2ab31e4..dc4044b 100644
--- a/drivers/thermal/thermal_sys.c
+++ b/drivers/thermal/thermal_sys.c
@@ -1059,6 +1059,7 @@ void thermal_zone_device_update(struct 
thermal_zone_device *tz)
enum thermal_trip_type trip_type;
struct thermal_cooling_device_instance *instance;
struct thermal_cooling_device *cdev;
+   unsigned long cur_state, max_state;
 
mutex_lock(>lock);
 
@@ -1098,10 +1099,17 @@ void thermal_zone_device_update(struct 
thermal_zone_device *tz)
 
cdev = instance->cdev;
 
+   cdev->ops->get_cur_state(cdev, _state);
+   cdev->ops->get_max_state(cdev, _state);
+
if (temp >= trip_temp)
-   cdev->ops->set_cur_state(cdev, 1);
+   cur_state = cur_state < max_state ?
+   (cur_state + 1) : max_state;
else
-   cdev->ops->set_cur_state(cdev, 0);
+   cur_state = cur_state > 0 ?
+   (cur_state - 1) : 0;
+
+   cdev->ops->set_cur_state(cdev, cur_state);
}
break;
case THERMAL_TRIP_PASSIVE:
-- 
1.8.0.rc1

--
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majord...@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html
Please read the FAQ at  http://www.tux.org/lkml/


[PATCH 01/30] Thermal: Introduce multiple cooling states support

2012-10-09 Thread Len Brown
From: Zhang Rui rui.zh...@intel.com

This is because general active cooling devices, like fans,
may have multiple speeds, which can be mapped to different cooling states.

Signed-off-by: Zhang Rui rui.zh...@intel.com
Reviewed-by: Rafael J. Wysocki r...@sisk.pl
Reviewed-by: Valentin, Eduardo eduardo.valen...@ti.com
---
 drivers/thermal/thermal_sys.c | 12 ++--
 1 file changed, 10 insertions(+), 2 deletions(-)

diff --git a/drivers/thermal/thermal_sys.c b/drivers/thermal/thermal_sys.c
index 2ab31e4..dc4044b 100644
--- a/drivers/thermal/thermal_sys.c
+++ b/drivers/thermal/thermal_sys.c
@@ -1059,6 +1059,7 @@ void thermal_zone_device_update(struct 
thermal_zone_device *tz)
enum thermal_trip_type trip_type;
struct thermal_cooling_device_instance *instance;
struct thermal_cooling_device *cdev;
+   unsigned long cur_state, max_state;
 
mutex_lock(tz-lock);
 
@@ -1098,10 +1099,17 @@ void thermal_zone_device_update(struct 
thermal_zone_device *tz)
 
cdev = instance-cdev;
 
+   cdev-ops-get_cur_state(cdev, cur_state);
+   cdev-ops-get_max_state(cdev, max_state);
+
if (temp = trip_temp)
-   cdev-ops-set_cur_state(cdev, 1);
+   cur_state = cur_state  max_state ?
+   (cur_state + 1) : max_state;
else
-   cdev-ops-set_cur_state(cdev, 0);
+   cur_state = cur_state  0 ?
+   (cur_state - 1) : 0;
+
+   cdev-ops-set_cur_state(cdev, cur_state);
}
break;
case THERMAL_TRIP_PASSIVE:
-- 
1.8.0.rc1

--
To unsubscribe from this list: send the line unsubscribe linux-kernel in
the body of a message to majord...@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html
Please read the FAQ at  http://www.tux.org/lkml/