diff options
author | Sooraj Govindan <sooraj.govindan@intel.com> | 2019-10-10 21:38:51 +0530 |
---|---|---|
committer | Commit Bot <commit-bot@chromium.org> | 2019-12-10 21:04:38 +0000 |
commit | 5f429581855f887a81be11804838449ca77f9672 (patch) | |
tree | f5193c93839d9cb8ba3424fb5b4663c899857063 /power | |
parent | 64482f3c1cedeaa2c0cbf665f851cc85e5eeae5f (diff) | |
download | chrome-ec-5f429581855f887a81be11804838449ca77f9672.tar.gz |
EC: Implementation for AP reboot from G3 state using ectool command.
The new ectool command 'ectool reboot_ap_on_g3' will reboot AP from
G3 state on initiation of DUT shutdown. Thus eliminating the dependency
of servo to trigger wake events when testing AP cold boot cycles.
BUG=b:129507479
BRANCH=None
TEST=Tested on hatch board.
From Kernel console, entered the below commands:
$ectool reboot_ap_on_g3
$shutdown -h now
Observed AP boots back to S0 upon G3.
Change-Id: Ie6fcbd2f00eb6c22ed498ab82dac53132dbbf4a3
Signed-off-by: Poornima Tom <poornima.tom@intel.com>
Reviewed-on: https://chromium-review.googlesource.com/c/chromiumos/platform/ec/+/1918993
Reviewed-by: Jett Rink <jettrink@chromium.org>
Commit-Queue: Jett Rink <jettrink@chromium.org>
Diffstat (limited to 'power')
-rw-r--r-- | power/common.c | 18 |
1 files changed, 17 insertions, 1 deletions
diff --git a/power/common.c b/power/common.c index a45bbcf2f0..5067443e84 100644 --- a/power/common.c +++ b/power/common.c @@ -76,6 +76,20 @@ static uint32_t hibernate_delay = CONFIG_HIBERNATE_DELAY_SEC; static int pause_in_s5; #endif +static bool want_reboot_ap_at_g3;/* Want to reboot AP from G3? */ + +static enum ec_status +host_command_reboot_ap_on_g3(struct host_cmd_handler_args *args) +{ + /* Store request for processing at g3 */ + want_reboot_ap_at_g3 = true; + + return EC_RES_SUCCESS; +} +DECLARE_HOST_COMMAND(EC_CMD_REBOOT_AP_ON_G3, + host_command_reboot_ap_on_g3, + EC_VER_MASK(0)); + int power_signal_get_level(enum gpio_signal signal) { if (IS_ENABLED(CONFIG_HOSTCMD_ESPI)) { @@ -307,8 +321,10 @@ static enum power_state power_common_state(enum power_state state) { switch (state) { case POWER_G3: - if (want_g3_exit) { + if (want_g3_exit || want_reboot_ap_at_g3) { want_g3_exit = 0; + want_reboot_ap_at_g3 = false; + return POWER_G3S5; } |