summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorDaniel Jarai <daniel.jarai@bartec-pixavi.com>2018-12-17 15:35:05 -0800
committerandroid-build-merger <android-build-merger@google.com>2018-12-17 15:35:05 -0800
commitaae766a0aae4ddf258cd3b5a9392c2ff10d6342b (patch)
treec821d823b7aa4f9704aac7def12c1485f688cb2c
parent95064ceb1bc8b6d0c25f7f89ffaf4bfd1028ed9c (diff)
parent5ef209c86344caedf23c09eb991e7434385cba96 (diff)
downloaddevice_google_contexthub-aae766a0aae4ddf258cd3b5a9392c2ff10d6342b.tar.gz
device_google_contexthub-aae766a0aae4ddf258cd3b5a9392c2ff10d6342b.tar.bz2
device_google_contexthub-aae766a0aae4ddf258cd3b5a9392c2ff10d6342b.zip
nanohub: stm32: i2c: always wait for the BTF event in the DmaTxDone ISR
am: 5ef209c863 Change-Id: Ibf5fef28d06908d227b74868f071f6c84660b70f
-rw-r--r--firmware/os/platform/stm32/i2c.c8
1 files changed, 5 insertions, 3 deletions
diff --git a/firmware/os/platform/stm32/i2c.c b/firmware/os/platform/stm32/i2c.c
index 7ba7b7ce..8ae35cf7 100644
--- a/firmware/os/platform/stm32/i2c.c
+++ b/firmware/os/platform/stm32/i2c.c
@@ -543,14 +543,16 @@ static void stmI2cMasterDmaTxDone(void *cookie, uint16_t bytesLeft, int err)
state->tx.offset = state->tx.size - bytesLeft;
state->tx.size = 0;
+
stmI2cDmaDisable(pdev);
+
+ while (!(regs->SR1 & I2C_SR1_BTF))
+ ;
+
if (err == 0 && state->rx.size > 0) {
atomicWriteByte(&state->masterState, STM_I2C_MASTER_START);
stmI2cStartEnable(pdev);
} else {
- while (!(regs->SR1 & I2C_SR1_BTF))
- ;
-
stmI2cStopEnable(pdev);
stmI2cMasterTxRxDone(pdev, err);
}