summaryrefslogtreecommitdiff
path: root/power
diff options
context:
space:
mode:
authorDaisuke Nojiri <dnojiri@chromium.org>2017-05-30 14:18:55 -0700
committerchrome-bot <chrome-bot@chromium.org>2017-06-28 21:50:51 -0700
commite42acfe20013d971fc93d0bee1f117645fe5ebdf (patch)
treedec9dffc7b104d039df11068bfccc22c8600c604 /power
parentc4157673b909896884f594052ac2e19b0cfc2280 (diff)
downloadchrome-ec-e42acfe20013d971fc93d0bee1f117645fe5ebdf.tar.gz
vboot: Add vboot for EC by EC
This patch adds vboot for EC by EC (vboot EC) for x86 systems. When ec is transitioning s5->s3, it checks the power supply is enough to boot AP or not. If not, it runs other checks and may finally validate and jump to a RW image. BUG=b:38462249 BRANCH=none TEST=Boot Fizz on barrel jack and type-c charger. Change-Id: I5988b0595976370c5303c45541702ae89d86fc97 Reviewed-on: https://chromium-review.googlesource.com/518254 Commit-Ready: Daisuke Nojiri <dnojiri@chromium.org> Tested-by: Daisuke Nojiri <dnojiri@chromium.org> Reviewed-by: Daisuke Nojiri <dnojiri@chromium.org>
Diffstat (limited to 'power')
-rw-r--r--power/intel_x86.c19
1 files changed, 18 insertions, 1 deletions
diff --git a/power/intel_x86.c b/power/intel_x86.c
index f4b5251d00..cb3dc93e0e 100644
--- a/power/intel_x86.c
+++ b/power/intel_x86.c
@@ -20,6 +20,7 @@
#include "system.h"
#include "task.h"
#include "util.h"
+#include "vboot.h"
#include "wireless.h"
/* Chipset specific header files */
@@ -180,7 +181,6 @@ enum power_state power_chipset_init(void)
enum power_state common_intel_x86_power_handle_state(enum power_state state)
{
-
switch (state) {
case POWER_G3:
break;
@@ -270,6 +270,23 @@ enum power_state common_intel_x86_power_handle_state(enum power_state state)
return POWER_G3;
}
+#ifdef CONFIG_VBOOT_EC
+ /*
+ * We have to test power readiness here (instead of S5->S3)
+ * because when entering S5, EC enables EC_ROP_SLP_SUS pin
+ * which causes (short-powered) system to brown out.
+ */
+ {
+ if (!system_can_boot_ap()) {
+ vboot_ec();
+ while (!system_can_boot_ap())
+ /* LED blinks as HOOK_TICK events trigger.
+ * We can print percent & power as they
+ * improve. */
+ msleep(200);
+ }
+ }
+#endif
power_s5_up = 1;
return POWER_S5;