summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorShawn Nematbakhsh <shawnn@chromium.org>2015-10-08 14:43:19 -0700
committerchrome-bot <chrome-bot@chromium.org>2015-10-08 18:42:30 -0700
commitc682beaacfaaab41e942748deb19326a5700fe2c (patch)
tree7e9102a9098d922479099f5cd916a0c8d13e0ca8
parent298845ed71f8df70132620fe36285e5f429eb4e7 (diff)
downloadchrome-ec-c682beaacfaaab41e942748deb19326a5700fe2c.tar.gz
mec1322: i2c: Disable i2c interrupts after failed wait
If we timeout waiting for an i2c interrupt, we will exit wait_for_interrupt() with the i2c interrupt still enabled. Fix this by explicitly disabling the i2c interrupt before returning. BUG=None TEST=Manual on Glados, verify no i2c errors during normal functionality. BRANCH=None Signed-off-by: Shawn Nematbakhsh <shawnn@chromium.org> Change-Id: Icd85acb6de1d499a29f33ebda594f739cdf9fd3e Reviewed-on: https://chromium-review.googlesource.com/304841 Commit-Ready: Shawn N <shawnn@chromium.org> Tested-by: Shawn N <shawnn@chromium.org> Reviewed-by: Alec Berg <alecaberg@chromium.org>
-rw-r--r--chip/mec1322/i2c.c2
1 files changed, 2 insertions, 0 deletions
diff --git a/chip/mec1322/i2c.c b/chip/mec1322/i2c.c
index 19b65e0c55..0d3ef5a0da 100644
--- a/chip/mec1322/i2c.c
+++ b/chip/mec1322/i2c.c
@@ -133,6 +133,8 @@ static int wait_for_interrupt(int controller)
/* Wait until I2C interrupt or timeout. */
event = task_wait_event_mask(TASK_EVENT_I2C_IDLE,
cdata[controller].timeout_us);
+
+ task_disable_irq(MEC1322_IRQ_I2C_0 + controller);
cdata[controller].task_waiting = TASK_ID_INVALID;
return (event & TASK_EVENT_TIMER) ? EC_ERROR_TIMEOUT : EC_SUCCESS;