summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorDevin Lu <devin.lu@quantatw.com>2020-04-16 21:12:50 +0800
committerCommit Bot <commit-bot@chromium.org>2020-04-30 13:09:30 +0000
commitaf9b76103a491a189b2935bc62097251d0337c62 (patch)
treea5e7e7c61b1fbcf2d90db8f796331e1cfa550a43
parent2a31fb8ef91853bfc8571ec7c76e871dbfe3c866 (diff)
downloadchrome-ec-af9b76103a491a189b2935bc62097251d0337c62.tar.gz
HACK: jinlon: Prevent system can't power on
Apply CL:2138734 to jinlon. Currently few systems can't power on, because pp2500_dram_u doesn't assert. To prevent potential risk, this patch trigger re-power on again. BUG=b:152456965 BRANCH=firmware-hatch-12672.B TEST=Verified with defect system and make sure boot up normally. Change-Id: Ic328884cd3cebe42002735b041aa49eb29e60278 Signed-off-by: Devin Lu <Devin.Lu@quantatw.com> Reviewed-on: https://chromium-review.googlesource.com/c/chromiumos/platform/ec/+/2152036 Reviewed-by: Tim Wawrzynczak <twawrzynczak@chromium.org>
-rw-r--r--board/jinlon/board.c22
1 files changed, 22 insertions, 0 deletions
diff --git a/board/jinlon/board.c b/board/jinlon/board.c
index aa9e6d2c6b..4bb1dd6198 100644
--- a/board/jinlon/board.c
+++ b/board/jinlon/board.c
@@ -48,6 +48,9 @@
#define CPRINTS(format, args...) cprints(CC_USBCHARGE, format, ## args)
#define CPRINTF(format, args...) cprintf(CC_USBCHARGE, format, ## args)
+static void check_reboot_deferred(void);
+DECLARE_DEFERRED(check_reboot_deferred);
+
/* GPIO to enable/disable the USB Type-A port. */
const int usb_port_enable[CONFIG_USB_PORT_POWER_SMART_PORT_COUNT] = {
GPIO_EN_USB_A_5V,
@@ -496,3 +499,22 @@ bool board_is_convertible(void)
return (sku == 255) || (sku == 1) || (sku == 2) || (sku == 21) ||
(sku == 22);
}
+
+
+void all_sys_pgood_check_reboot(void)
+{
+ hook_call_deferred(&check_reboot_deferred_data, 3000 * MSEC);
+}
+
+__override void board_chipset_forced_shutdown(void)
+{
+ hook_call_deferred(&check_reboot_deferred_data, -1);
+}
+DECLARE_HOOK(HOOK_CHIPSET_SHUTDOWN, board_chipset_forced_shutdown,
+ HOOK_PRIO_DEFAULT);
+
+static void check_reboot_deferred(void)
+{
+ if (!gpio_get_level(GPIO_PG_EC_ALL_SYS_PWRGD))
+ system_reset(SYSTEM_RESET_MANUALLY_TRIGGERED);
+}