summaryrefslogtreecommitdiff
path: root/chip/npcx/pwm.c
diff options
context:
space:
mode:
authorShawn Nematbakhsh <shawnn@chromium.org>2016-04-27 13:54:52 -0700
committerchrome-bot <chrome-bot@chromium.org>2016-04-27 23:58:04 -0700
commitab27f42f5636af5fba50a871e391018cb1c885bf (patch)
treeb3c6e464b0b8e5a44b61c6e814220ef4293b0c92 /chip/npcx/pwm.c
parent8d742588ade84d45ce6fe7ca069d6087fac6928c (diff)
downloadchrome-ec-ab27f42f5636af5fba50a871e391018cb1c885bf.tar.gz
pwm: Add PWM_CONFIG_DSLEEP config flag
Add PWM_CONFIG_DSLEEP PWM config flag, which can be set to keep a channel active during low-power idle / deep sleep. Currently it's supported by npcx and mec1322. BUG=chrome-os-partner:52783 BRANCH=glados TEST=Manual on chell w/ subsequent commit + CONFIG_LOW_POWER_S0. Verify KB backlight does not flicker during idle. Change-Id: Ib9df5879aaa7dfa5764de1583496de84d40d2bb5 Signed-off-by: Shawn Nematbakhsh <shawnn@chromium.org> Reviewed-on: https://chromium-review.googlesource.com/341002 Commit-Ready: Shawn N <shawnn@chromium.org> Tested-by: Shawn N <shawnn@chromium.org> Reviewed-by: Vincent Palatin <vpalatin@chromium.org> Reviewed-by: Todd Broch <tbroch@chromium.org>
Diffstat (limited to 'chip/npcx/pwm.c')
-rw-r--r--chip/npcx/pwm.c10
1 files changed, 7 insertions, 3 deletions
diff --git a/chip/npcx/pwm.c b/chip/npcx/pwm.c
index 7d3a548382..e99ed039c2 100644
--- a/chip/npcx/pwm.c
+++ b/chip/npcx/pwm.c
@@ -63,8 +63,12 @@ void pwm_set_freq(enum pwm_channel ch, uint32_t freq, uint32_t res)
/* Disable PWM for module configuration */
pwm_enable(ch, 0);
- /* Get PWM clock frequency */
- if (pwm_channels[ch].flags & PWM_CONFIG_DSLEEP_CLK)
+ /*
+ * Get PWM clock frequency. Use internal 32K as PWM clock source if
+ * the PWM must be active during low-power idle.
+ */
+
+ if (pwm_channels[ch].flags & PWM_CONFIG_DSLEEP)
clock = INT_32K_CLOCK;
else
clock = clock_get_apb2_freq();
@@ -205,7 +209,7 @@ void pwm_config(enum pwm_channel ch)
/* Select PWM clock source */
UPDATE_BIT(NPCX_PWMCTL(mdl), NPCX_PWMCTL_CKSEL,
- (pwm_channels[ch].flags & PWM_CONFIG_DSLEEP_CLK));
+ (pwm_channels[ch].flags & PWM_CONFIG_DSLEEP));
/* Set PWM operation frequency */
pwm_set_freq(ch, pwm_channels[ch].freq, DUTY_CYCLE_RESOLUTION);