diff options
author | Shawn Nematbakhsh <shawnn@chromium.org> | 2016-06-27 10:48:53 -0700 |
---|---|---|
committer | chrome-bot <chrome-bot@chromium.org> | 2016-06-28 17:17:26 -0700 |
commit | 2f92ff3612394fe800962062c0422a46e91dbc59 (patch) | |
tree | 2b74188eada8e0116f147235c640051151194137 | |
parent | 6feb319a8710bd54bf9ad30beabd82fa828831d0 (diff) | |
download | chrome-ec-2f92ff3612394fe800962062c0422a46e91dbc59.tar.gz |
npcx: shi: Ensure SHI is initialized prior to enabling CS interrupt
shi_init() must be called before shi_enable().
BUG=chrome-os-partner:54810
BRANCH=None
TEST=Manual on gru. Power-up EC, verify no SHI error prints are
encountered. Boot to OS, run "sysjump rw", verify that host commands
continue to be handled correctly.
Signed-off-by: Shawn Nematbakhsh <shawnn@chromium.org>
Change-Id: I6ff0db87115f5b1f358d7d98e7b7050ee3e3fe0a
Reviewed-on: https://chromium-review.googlesource.com/356178
Commit-Ready: Shawn N <shawnn@chromium.org>
Tested-by: Douglas Anderson <dianders@chromium.org>
Tested-by: Vadim Bendebury <vbendeb@chromium.org>
Tested-by: Shawn N <shawnn@chromium.org>
Reviewed-by: Randall Spangler <rspangler@chromium.org>
-rw-r--r-- | chip/npcx/shi.c | 22 |
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 |