summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--board/kindred/board.c11
-rw-r--r--power/cometlake.c11
-rw-r--r--power/cometlake.h1
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 */