summaryrefslogtreecommitdiff
path: root/chip/npcx/shi.c
diff options
context:
space:
mode:
Diffstat (limited to 'chip/npcx/shi.c')
-rw-r--r--chip/npcx/shi.c22
1 files changed, 14 insertions, 8 deletions
diff --git a/chip/npcx/shi.c b/chip/npcx/shi.c
index 54d6209e59..4d69220893 100644
--- a/chip/npcx/shi.c
+++ b/chip/npcx/shi.c
@@ -731,6 +731,18 @@ static void shi_enable(void)
}
DECLARE_HOOK(HOOK_CHIPSET_RESUME, shi_enable, HOOK_PRIO_DEFAULT);
+static void shi_reenable_on_sysjump(void)
+{
+#if !(DEBUG_SHI)
+ if (system_jumped_to_this_image() && chipset_in_state(CHIPSET_STATE_ON))
+#endif
+ shi_enable();
+}
+/* Call hook after chipset sets initial power state */
+DECLARE_HOOK(HOOK_INIT,
+ shi_reenable_on_sysjump,
+ HOOK_PRIO_INIT_CHIPSET + 1);
+
/* Disable SHI bus */
static void shi_disable(void)
{
@@ -799,15 +811,9 @@ static void shi_init(void)
/* Clear SHI events status register */
NPCX_EVSTAT = 0XFF;
-
- /* If chipset is already on, prepare for transactions */
-#if !(DEBUG_SHI)
- if (chipset_in_state(CHIPSET_STATE_ON))
-#endif
- shi_enable();
-
}
-DECLARE_HOOK(HOOK_INIT, shi_init, HOOK_PRIO_DEFAULT);
+/* Call hook before chipset sets initial power state and calls resume hooks */
+DECLARE_HOOK(HOOK_INIT, shi_init, HOOK_PRIO_INIT_CHIPSET - 1);
/**
* Get protocol information