diff options
author | Dino Li <dino.li@ite.com.tw> | 2016-04-13 13:29:44 +0800 |
---|---|---|
committer | chrome-bot <chrome-bot@chromium.org> | 2016-04-13 20:10:37 -0700 |
commit | 0374c599afdc9c13c22b4842266eade8d1afaf83 (patch) | |
tree | 4d7f2dae7ce055154ac385032987aebc3fe9494a /chip/it83xx/fan.c | |
parent | e353ab03638d4a58540cc8d933a6fa8a8f52dd21 (diff) | |
download | chrome-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/fan.c')
-rw-r--r-- | chip/it83xx/fan.c | 16 |
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); + } } } |