diff options
author | Shawn Nematbakhsh <shawnn@chromium.org> | 2015-10-08 14:43:19 -0700 |
---|---|---|
committer | chrome-bot <chrome-bot@chromium.org> | 2015-10-08 18:42:30 -0700 |
commit | c682beaacfaaab41e942748deb19326a5700fe2c (patch) | |
tree | 7e9102a9098d922479099f5cd916a0c8d13e0ca8 | |
parent | 298845ed71f8df70132620fe36285e5f429eb4e7 (diff) | |
download | chrome-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.c | 2 |
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; |