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>
This commit is contained in:
Shawn Nematbakhsh
2015-10-08 14:43:19 -07:00
committed by chrome-bot
parent 298845ed71
commit c682beaacf

View File

@@ -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;