summaryrefslogtreecommitdiff
path: root/chip/it83xx
diff options
context:
space:
mode:
authorDino Li <dino.li@ite.com.tw>2016-04-13 13:29:44 +0800
committerchrome-bot <chrome-bot@chromium.org>2016-04-13 20:10:37 -0700
commit0374c599afdc9c13c22b4842266eade8d1afaf83 (patch)
tree4d7f2dae7ce055154ac385032987aebc3fe9494a /chip/it83xx
parente353ab03638d4a58540cc8d933a6fa8a8f52dd21 (diff)
downloadchrome-ec-0374c599afdc9c13c22b4842266eade8d1afaf83.tar.gz
chip: it83xx: disable sleep while fan control loop ongoing
This change is required for support 'CONFIG_LOW_POWER_S0'. Signed-off-by: Dino Li <dino.li@ite.com.tw> BRANCH=none BUG=none TEST=1. fanset 5555, EC enter doze mode only and fan control is functional. 2. fanset 0, EC will enter deep doze mode properly. Change-Id: I3780b12ef54713258769616bfed0155c865c0725 Reviewed-on: https://chromium-review.googlesource.com/338750 Commit-Ready: Dino Li <dino.li@ite.com.tw> Tested-by: Dino Li <dino.li@ite.com.tw> Reviewed-by: Randall Spangler <rspangler@chromium.org>
Diffstat (limited to 'chip/it83xx')
-rw-r--r--chip/it83xx/fan.c16
1 files changed, 10 insertions, 6 deletions
diff --git a/chip/it83xx/fan.c b/chip/it83xx/fan.c
index 4c5b157935..f61fbaa6f7 100644
--- a/chip/it83xx/fan.c
+++ b/chip/it83xx/fan.c
@@ -9,13 +9,14 @@
#include "fan.h"
#include "gpio.h"
#include "hooks.h"
-#include "registers.h"
-#include "util.h"
-#include "pwm.h"
-#include "task.h"
-#include "math_util.h"
#include "hwtimer_chip.h"
+#include "math_util.h"
+#include "pwm.h"
#include "pwm_chip.h"
+#include "registers.h"
+#include "system.h"
+#include "task.h"
+#include "util.h"
#define TACH_EC_FREQ 8000000
#define FAN_CTRL_BASED_MS 10
@@ -118,6 +119,7 @@ void fan_set_enabled(int ch, int enabled)
if (tach_ch < TACH_CH_COUNT)
fan_info_data[tach_ch].fan_sts = FAN_STATUS_CHANGING;
+ disable_sleep(SLEEP_MASK_FAN);
/* enable timer interrupt for fan control */
ext_timer_start(FAN_CTRL_EXT_TIMER, 1);
/* disable */
@@ -140,8 +142,10 @@ void fan_set_enabled(int ch, int enabled)
if (!enabled) {
/* disable timer interrupt if all fan off. */
- if (fan_all_disabled())
+ if (fan_all_disabled()) {
ext_timer_stop(FAN_CTRL_EXT_TIMER, 1);
+ enable_sleep(SLEEP_MASK_FAN);
+ }
}
}