diff options
author | Daniel Jarai <daniel.jarai@bartec-pixavi.com> | 2018-12-17 15:40:11 -0800 |
---|---|---|
committer | android-build-merger <android-build-merger@google.com> | 2018-12-17 15:40:11 -0800 |
commit | 202ee11a1820303f5b02ded09bb50d11cce32d60 (patch) | |
tree | c821d823b7aa4f9704aac7def12c1485f688cb2c | |
parent | b48b14c07192e42f0ced1d898562b9f644487314 (diff) | |
parent | aae766a0aae4ddf258cd3b5a9392c2ff10d6342b (diff) | |
download | device_google_contexthub-202ee11a1820303f5b02ded09bb50d11cce32d60.tar.gz device_google_contexthub-202ee11a1820303f5b02ded09bb50d11cce32d60.tar.bz2 device_google_contexthub-202ee11a1820303f5b02ded09bb50d11cce32d60.zip |
nanohub: stm32: i2c: always wait for the BTF event in the DmaTxDone ISR am: 5ef209c863
am: aae766a0aa
Change-Id: I562a37c0596bb43d2d847f1b2d0e00c74224afe4
-rw-r--r-- | firmware/os/platform/stm32/i2c.c | 8 |
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); } |