summaryrefslogtreecommitdiff
path: root/chip/ish/aontaskfw
diff options
context:
space:
mode:
authorHu, Hebo <hebo.hu@intel.com>2019-05-08 17:12:59 +0800
committerchrome-bot <chrome-bot@chromium.org>2019-05-12 19:27:51 -0700
commitb0b956cc0b17a04ffdff7d15292ecb33b4b8235b (patch)
tree49d7c8fcac8aa0d6fc457428314f290388c70053 /chip/ish/aontaskfw
parent1fd8e3b0c5609612cf3339edab73bd7b7bb93f54 (diff)
downloadchrome-ec-b0b956cc0b17a04ffdff7d15292ecb33b4b8235b.tar.gz
ish/ish5: fixed both-edge triggered gpio configuration blocking D0ix issue
ISH PMU does not support both-edge interrupt triggered gpio configuration. If both edges are configured, then the ISH can't stay in low power mode because it will exit immediately. As a W/A, we scan all gpio pins which have been configured as both-edge triggered, and then temporarily set each gpio pin to the single edge trigger that is opposite of its value, then restore the both-edge trigger configuration immediately after exiting low power mode. BUG=b:132001235 BRANCH=none TEST= tested on arcada platform, console should freeze after entered low power mode Change-Id: I83a43d9fbee6cfd1a6820bdb44c1446f109ffb32 Signed-off-by: Hu, Hebo <hebo.hu@intel.com> Reviewed-on: https://chromium-review.googlesource.com/1600310 Commit-Ready: ChromeOS CL Exonerator Bot <chromiumos-cl-exonerator@appspot.gserviceaccount.com> Tested-by: Jett Rink <jettrink@chromium.org> Reviewed-by: Jett Rink <jettrink@chromium.org> Reviewed-by: Hebo Hu <hebo.hu@intel.corp-partner.google.com> Reviewed-by: Jack Rosenthal <jrosenth@chromium.org>
Diffstat (limited to 'chip/ish/aontaskfw')
-rw-r--r--chip/ish/aontaskfw/ish_aontask.c5
1 files changed, 5 insertions, 0 deletions
diff --git a/chip/ish/aontaskfw/ish_aontask.c b/chip/ish/aontaskfw/ish_aontask.c
index 95b6d9ce5d..7c0809b4a2 100644
--- a/chip/ish/aontaskfw/ish_aontask.c
+++ b/chip/ish/aontaskfw/ish_aontask.c
@@ -546,6 +546,11 @@ static void handle_reset(int pm_state)
/* disable watch dog */
WDT_CONTROL &= ~WDT_CONTROL_ENABLE_BIT;
+ /* disable all gpio interrupts */
+ ISH_GPIO_GRER = 0;
+ ISH_GPIO_GFER = 0;
+ ISH_GPIO_GIMR = 0;
+
/* disable CSME CSR irq */
IPC_PIMR &= ~IPC_PIMR_CSME_CSR_BIT;