From 3a54fdd921feef591fdcc0100fe85206e0c7230e Mon Sep 17 00:00:00 2001 From: David Huang Date: Wed, 22 Jan 2020 09:57:42 +0800 Subject: Kindred: Fix reset trigger even system force to G3. System will trigger reset when already force to G3. Add board_chipset_forced_shutdown() in chipset_force_shutdown to stop reset when system force to G3. BUG=b:143440730 BRANCH=master TEST=Power on system and make system enter G3 immediately. Make sure system won't reset. Change-Id: Ie601921af9adf08d2055cdecb0243e64bd57724f Signed-off-by: David Huang Reviewed-on: https://chromium-review.googlesource.com/c/chromiumos/platform/ec/+/2014001 Tested-by: David Huang Commit-Queue: David Huang Reviewed-by: Tim Wawrzynczak (cherry picked from commit 4ffdafcff838b09bbbdea8c1bdfdaacd10d9be8a) Reviewed-on: https://chromium-review.googlesource.com/c/chromiumos/platform/ec/+/2044352 Commit-Queue: Tim Wawrzynczak Tested-by: Tim Wawrzynczak --- board/kindred/board.c | 11 ++++------- power/cometlake.c | 11 +++++++++++ power/cometlake.h | 1 + 3 files changed, 16 insertions(+), 7 deletions(-) diff --git a/board/kindred/board.c b/board/kindred/board.c index 99fbc47943..8c768e2575 100644 --- a/board/kindred/board.c +++ b/board/kindred/board.c @@ -49,7 +49,6 @@ static void check_reboot_deferred(void); DECLARE_DEFERRED(check_reboot_deferred); -static int system_in_resume_state = 0; /* GPIO to enable/disable the USB Type-A port. */ const int usb_port_enable[CONFIG_USB_PORT_POWER_SMART_PORT_COUNT] = { @@ -484,19 +483,17 @@ __override uint32_t board_override_feature_flags0(uint32_t flags0) void all_sys_pgood_check_reboot(void) { - system_in_resume_state = 1; hook_call_deferred(&check_reboot_deferred_data, 3000 * MSEC); } -static void all_sys_pgood_reset_reboot(void) +__override void board_chipset_forced_shutdown(void) { - system_in_resume_state = 0; + hook_call_deferred(&check_reboot_deferred_data, -1); } -DECLARE_HOOK(HOOK_CHIPSET_SHUTDOWN, all_sys_pgood_reset_reboot, HOOK_PRIO_DEFAULT); +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_in_resume_state == 1) { + if (!gpio_get_level(GPIO_PG_EC_ALL_SYS_PWRGD)) system_reset(SYSTEM_RESET_MANUALLY_TRIGGERED); - } } diff --git a/power/cometlake.c b/power/cometlake.c index af30e750f1..8328696751 100644 --- a/power/cometlake.c +++ b/power/cometlake.c @@ -55,6 +55,12 @@ BUILD_ASSERT(ARRAY_SIZE(power_signal_list) == POWER_SIGNAL_COUNT); static int forcing_shutdown; /* Forced shutdown in progress? */ +/* Default no action, overwrite it in board.c if necessary*/ +__overridable void board_chipset_forced_shutdown(void) +{ + return; +} + void chipset_force_shutdown(enum chipset_shutdown_reason reason) { int timeout_ms = 50; @@ -76,6 +82,11 @@ void chipset_force_shutdown(enum chipset_shutdown_reason reason) gpio_set_level(GPIO_EN_PP5000_A, 0); #endif + /* For b:143440730, stop checking GPIO_ALL_SYS_PGOOD if system is + * already force to G3. + */ + board_chipset_forced_shutdown(); + /* Need to wait a min of 10 msec before check for power good */ msleep(10); diff --git a/power/cometlake.h b/power/cometlake.h index 6ef1277889..8e0aab6982 100644 --- a/power/cometlake.h +++ b/power/cometlake.h @@ -40,5 +40,6 @@ enum power_signal { }; void all_sys_pgood_check_reboot(void); +__override_proto void board_chipset_forced_shutdown(void); #endif /* __CROS_EC_COMETLAKE_H */ -- cgit v1.2.1