diff options
author | Gwendal Grignou <gwendal@chromium.org> | 2014-10-30 18:00:53 -0700 |
---|---|---|
committer | chrome-internal-fetch <chrome-internal-fetch@google.com> | 2014-11-18 05:19:47 +0000 |
commit | 3bdd18d24654f4131f24439efe2c05f031fd67cb (patch) | |
tree | d40e47943e218aed8f9ffa2ed4255cf7eb6ec2a1 /power | |
parent | 4b154c6f956d0d30e78d7f1d2c5b6867dbfbf8f0 (diff) | |
download | chrome-ec-3bdd18d24654f4131f24439efe2c05f031fd67cb.tar.gz |
ryu: add a dummy power module for controlling sensors.
With this change we can use power event to configure sensors
and trigger motion detection in suspend.
BUG=chrome-os-partner:31071
BRANCH=ToT
TEST=Check power states. Check power up messages and commands are
present at the console.
Message at boot:
[0.007142 hash start 0x00010000 0x000096dd]
[0.007293 Inits done]
[0.007506 power state 2 = S3, in 0x0000]
[0.007765 power state 3 = S0, in 0x0000]
[0.007908 event set 0x00002000]
[0.008021 hostcmd init 0x2000]
[0.146870 hash done
f87d7824b439db923d270df016af5aabec51b73505b7c4faa6e40c16b12dd392]
Change-Id: I9c56fe5203506462f0820bbc8a5fe4528f6805ac
Signed-off-by: Gwendal Grignou <gwendal@chromium.org>
Reviewed-on: https://chromium-review.googlesource.com/226881
Reviewed-by: Sheng-liang Song <ssl@chromium.org>
Reviewed-by: Alec Berg <alecaberg@chromium.org>
Diffstat (limited to 'power')
-rw-r--r-- | power/build.mk | 1 | ||||
-rw-r--r-- | power/common.c | 2 | ||||
-rw-r--r-- | power/ec_driven.c | 55 |
3 files changed, 58 insertions, 0 deletions
diff --git a/power/build.mk b/power/build.mk index 5e62330490..8d2d10ff8c 100644 --- a/power/build.mk +++ b/power/build.mk @@ -7,6 +7,7 @@ # power-$(CONFIG_CHIPSET_BAYTRAIL)+=baytrail.o +power-$(CONFIG_CHIPSET_ECDRIVEN)+=ec_driven.o power-$(CONFIG_CHIPSET_GAIA)+=gaia.o power-$(CONFIG_CHIPSET_HASWELL)+=haswell.o power-$(CONFIG_CHIPSET_IVYBRIDGE)+=ivybridge.o diff --git a/power/common.c b/power/common.c index e08fcf369c..b1bced365d 100644 --- a/power/common.c +++ b/power/common.c @@ -328,6 +328,7 @@ static void power_lid_change(void) } DECLARE_HOOK(HOOK_LID_CHANGE, power_lid_change, HOOK_PRIO_DEFAULT); +#ifdef CONFIG_EXTPOWER static void power_ac_change(void) { if (extpower_is_present()) { @@ -342,6 +343,7 @@ static void power_ac_change(void) } } DECLARE_HOOK(HOOK_AC_CHANGE, power_ac_change, HOOK_PRIO_DEFAULT); +#endif /*****************************************************************************/ /* Interrupts */ diff --git a/power/ec_driven.c b/power/ec_driven.c new file mode 100644 index 0000000000..67cfefb95e --- /dev/null +++ b/power/ec_driven.c @@ -0,0 +1,55 @@ +/* Copyright (c) 2013 The Chromium OS Authors. All rights reserved. + * Use of this source code is governed by a BSD-style license that can be + * found in the LICENSE file. + */ + +/* + * Dummy power module for Sensor HUB. + * + * This implements the following features: + * when AP_IN_SUSPEND is low, in S0, otherwise S3. + * + */ + +#include "chipset.h" /* This module implements chipset functions too */ +#include "common.h" +#include "console.h" +#include "gpio.h" +#include "hooks.h" +#include "power.h" +#include "task.h" +#include "util.h" + +/* Console output macros */ +#define CPUTS(outstr) cputs(CC_CHIPSET, outstr) +#define CPRINTS(format, args...) cprints(CC_CHIPSET, format, ## args) + +#define IN_SUSPEND POWER_SIGNAL_MASK(ECDRIVEN_SUSPEND_ASSERTED) + +enum power_state power_chipset_init(void) +{ + return POWER_S3; +} + +enum power_state power_handle_state(enum power_state state) +{ + switch (state) { + case POWER_S3: + if (!(power_get_signals() & IN_SUSPEND)) { + hook_notify(HOOK_CHIPSET_RESUME); + return POWER_S0; + } + return state; + + case POWER_S0: + if (power_get_signals() & IN_SUSPEND) { + hook_notify(HOOK_CHIPSET_SUSPEND); + return POWER_S3; + } + return state; + default: + CPRINTS("Unexpected state: $d", state); + } + + return state; +} |