From af9b76103a491a189b2935bc62097251d0337c62 Mon Sep 17 00:00:00 2001 From: Devin Lu Date: Thu, 16 Apr 2020 21:12:50 +0800 Subject: 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 Reviewed-on: https://chromium-review.googlesource.com/c/chromiumos/platform/ec/+/2152036 Reviewed-by: Tim Wawrzynczak --- board/jinlon/board.c | 22 ++++++++++++++++++++++ 1 file changed, 22 insertions(+) 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); +} -- cgit v1.2.1