summaryrefslogtreecommitdiff
path: root/power/common.c
diff options
context:
space:
mode:
authorSooraj Govindan <sooraj.govindan@intel.com>2019-10-10 21:38:51 +0530
committerCommit Bot <commit-bot@chromium.org>2019-12-10 21:04:38 +0000
commit5f429581855f887a81be11804838449ca77f9672 (patch)
treef5193c93839d9cb8ba3424fb5b4663c899857063 /power/common.c
parent64482f3c1cedeaa2c0cbf665f851cc85e5eeae5f (diff)
downloadchrome-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/common.c')
-rw-r--r--power/common.c18
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;
}