summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorFurquan Shaikh <furquan@chromium.org>2016-09-22 22:16:55 -0700
committerchrome-bot <chrome-bot@chromium.org>2016-09-23 12:21:29 -0700
commit773c5db6d4253b651789dd11a2267b92fc9aaf83 (patch)
treee721235ac30b72b60d18ba904966ab76f8612890
parent4a974141a5b70ce97800f209a6bc0644d8249c99 (diff)
downloadchrome-ec-773c5db6d4253b651789dd11a2267b92fc9aaf83.tar.gz
chip/npcx: Close LPC window before sysjump
Before performing a sysjump, ensure that: 1. LPC interrupts are disabled : Ensures interrupts are not taken until next enable. 2. LPC window is closed by writing 0xfffffff8 to window base addresses: Prevents any memory corruption by host. BUG=chrome-os-partner:57642 BRANCH=None TEST=Verfied that LPC communication works after sysjump to RW. Change-Id: I7b7826b2544f1c94cfa9c96b6ac82bc3517b1820 Signed-off-by: Furquan Shaikh <furquan@chromium.org> Reviewed-on: https://chromium-review.googlesource.com/388755 Reviewed-by: Aaron Durbin <adurbin@chromium.org> Reviewed-by: Mulin Chao <mlchao@nuvoton.com>
-rw-r--r--chip/npcx/lpc.c12
1 files changed, 12 insertions, 0 deletions
diff --git a/chip/npcx/lpc.c b/chip/npcx/lpc.c
index 43330e906c..0ec1c904b9 100644
--- a/chip/npcx/lpc.c
+++ b/chip/npcx/lpc.c
@@ -608,6 +608,18 @@ DECLARE_IRQ(NPCX_IRQ_PORT80, lpc_port80_interrupt, 3);
*/
static void lpc_sysjump(void)
{
+ lpc_task_disable_irq();
+
+ /* Disable protect for Win 1 and 2. */
+ NPCX_WIN_WR_PROT(0) = 0;
+ NPCX_WIN_WR_PROT(1) = 0;
+ NPCX_WIN_RD_PROT(0) = 0;
+ NPCX_WIN_RD_PROT(1) = 0;
+
+ /* Reset base address for Win 1 and 2. */
+ NPCX_WIN_BASE(0) = 0xfffffff8;
+ NPCX_WIN_BASE(1) = 0xfffffff8;
+
system_add_jump_tag(LPC_SYSJUMP_TAG, 1,
sizeof(event_mask), event_mask);
}