summaryrefslogtreecommitdiff
path: root/power
diff options
context:
space:
mode:
authorWai-Hong Tam <waihong@google.com>2020-06-02 19:54:18 -0700
committerCommit Bot <commit-bot@chromium.org>2020-06-06 05:51:51 +0000
commit8565d057518369a9e21d596d76a2dcf0c2fa7a7f (patch)
treeec6afae25be072e8f1461c53c8249c9d430766ab /power
parente4bfe793ce90d7e9a42ab4a2c6427381ab7f4092 (diff)
downloadchrome-ec-8565d057518369a9e21d596d76a2dcf0c2fa7a7f.tar.gz
hooks: Introduce HOOK_CHIPSET_SHUTDOWN_COMPLETE
A new hook HOOK_CHIPSET_SHUTDOWN_COMPLETE is introduced, which are called from the chipset task, while the system has already shut down and all the suspend rails are already off. It will be used for executing pending EC reboot at the chipset shutdown. The EC reboot should be executed when the chipset is completely off. BRANCH=None BUG=b:156981868 TEST=Built all boards. Change-Id: I12f26957e46a1bb34ef079f127b0bddd133cd4e7 Signed-off-by: Wai-Hong Tam <waihong@google.com> Reviewed-on: https://chromium-review.googlesource.com/c/chromiumos/platform/ec/+/2228395 Reviewed-by: Paul Fagerburg <pfagerburg@chromium.org> Reviewed-by: Daisuke Nojiri <dnojiri@chromium.org>
Diffstat (limited to 'power')
-rw-r--r--power/braswell.c3
-rw-r--r--power/intel_x86.c3
-rw-r--r--power/mt817x.c3
-rw-r--r--power/mt8183.c3
-rw-r--r--power/mt8192.c3
-rw-r--r--power/rk3288.c3
-rw-r--r--power/rk3399.c3
-rw-r--r--power/sc7180.c3
-rw-r--r--power/sdm845.c3
-rw-r--r--power/stoney.c3
10 files changed, 30 insertions, 0 deletions
diff --git a/power/braswell.c b/power/braswell.c
index eac3c63534..288092c795 100644
--- a/power/braswell.c
+++ b/power/braswell.c
@@ -269,6 +269,9 @@ enum power_state power_handle_state(enum power_state state)
/*wireless_set_state(WIRELESS_OFF);*/
+ /* Call hooks after we remove power rails */
+ hook_notify(HOOK_CHIPSET_SHUTDOWN_COMPLETE);
+
/* Start shutting down */
return power_get_pause_in_s5() ? POWER_S5 : POWER_S5G3;
diff --git a/power/intel_x86.c b/power/intel_x86.c
index d1f0b17d84..a4de71ff5f 100644
--- a/power/intel_x86.c
+++ b/power/intel_x86.c
@@ -559,6 +559,9 @@ enum power_state common_intel_x86_power_handle_state(enum power_state state)
/* Disable wireless */
wireless_set_state(WIRELESS_OFF);
+ /* Call hooks after we remove power rails */
+ hook_notify(HOOK_CHIPSET_SHUTDOWN_COMPLETE);
+
/* Always enter into S5 state. The S5 state is required to
* correctly handle global resets which have a bit of delay
* while the SLP_Sx_L signals are asserted then deasserted.
diff --git a/power/mt817x.c b/power/mt817x.c
index 368712965b..e7e23605f2 100644
--- a/power/mt817x.c
+++ b/power/mt817x.c
@@ -514,6 +514,9 @@ static void power_off(void)
powerled_set_state(POWERLED_STATE_OFF);
#endif
CPRINTS("power shutdown complete");
+
+ /* Call hooks after we drop power rails */
+ hook_notify(HOOK_CHIPSET_SHUTDOWN_COMPLETE);
}
/**
diff --git a/power/mt8183.c b/power/mt8183.c
index 735e59830f..d8d5a8e1a3 100644
--- a/power/mt8183.c
+++ b/power/mt8183.c
@@ -486,6 +486,9 @@ enum power_state power_handle_state(enum power_state state)
gpio_disable_interrupt(GPIO_AP_EC_WATCHDOG_L);
power_seq_run(s3s5_power_seq, ARRAY_SIZE(s3s5_power_seq));
+ /* Call hooks after we remove power rails */
+ hook_notify(HOOK_CHIPSET_SHUTDOWN_COMPLETE);
+
/* Start shutting down */
return POWER_S5;
diff --git a/power/mt8192.c b/power/mt8192.c
index 749424b2c9..43d5a5c23f 100644
--- a/power/mt8192.c
+++ b/power/mt8192.c
@@ -409,6 +409,9 @@ enum power_state power_handle_state(enum power_state state)
GPIO_SET_LEVEL(GPIO_EN_PP1800_U, 0);
GPIO_SET_LEVEL(GPIO_EN_PP3300_U, 0);
+ /* Call hooks after we remove power rails */
+ hook_notify(HOOK_CHIPSET_SHUTDOWN_COMPLETE);
+
/* Start shutting down */
return POWER_S5;
diff --git a/power/rk3288.c b/power/rk3288.c
index a44df2ffbc..c647ab97b2 100644
--- a/power/rk3288.c
+++ b/power/rk3288.c
@@ -380,6 +380,9 @@ static void power_off(void)
powerled_set_state(POWERLED_STATE_OFF);
CPRINTS("power shutdown complete");
+
+ /* Call hooks after we drop power rails */
+ hook_notify(HOOK_CHIPSET_SHUTDOWN_COMPLETE);
}
void chipset_reset(enum chipset_reset_reason reason)
diff --git a/power/rk3399.c b/power/rk3399.c
index 9f146fccf9..9db25f0b28 100644
--- a/power/rk3399.c
+++ b/power/rk3399.c
@@ -521,6 +521,9 @@ enum power_state power_handle_state(enum power_state state)
power_seq_run(s3s5_power_seq, ARRAY_SIZE(s3s5_power_seq));
+ /* Call hooks after we remove power rails */
+ hook_notify(HOOK_CHIPSET_SHUTDOWN_COMPLETE);
+
/* Start shutting down */
return POWER_S5;
diff --git a/power/sc7180.c b/power/sc7180.c
index 2011f503e2..be2ee90f8b 100644
--- a/power/sc7180.c
+++ b/power/sc7180.c
@@ -496,6 +496,9 @@ static void power_off(void)
lid_opened = 0;
enable_sleep(SLEEP_MASK_AP_RUN);
CPRINTS("power shutdown complete");
+
+ /* Call hooks after we drop power rails */
+ hook_notify(HOOK_CHIPSET_SHUTDOWN_COMPLETE);
}
/**
diff --git a/power/sdm845.c b/power/sdm845.c
index 79dde38f9f..1556dbb111 100644
--- a/power/sdm845.c
+++ b/power/sdm845.c
@@ -479,6 +479,9 @@ static void power_off(void)
lid_opened = 0;
enable_sleep(SLEEP_MASK_AP_RUN);
CPRINTS("power shutdown complete");
+
+ /* Call hooks after we drop power rails */
+ hook_notify(HOOK_CHIPSET_SHUTDOWN_COMPLETE);
}
/**
diff --git a/power/stoney.c b/power/stoney.c
index 9bbfc75d33..1547957d01 100644
--- a/power/stoney.c
+++ b/power/stoney.c
@@ -272,6 +272,9 @@ enum power_state power_handle_state(enum power_state state)
/* Disable wireless */
wireless_set_state(WIRELESS_OFF);
+ /* Call hooks after we remove power rails */
+ hook_notify(HOOK_CHIPSET_SHUTDOWN_COMPLETE);
+
return POWER_S5;
case POWER_S5G3: