i2c: imx: Fix race condition in dma read
authorEsben Haabendal <eha@deif.com>
Thu, 16 Aug 2018 08:43:12 +0000 (10:43 +0200)
committerWolfram Sang <wsa@the-dreams.de>
Mon, 20 Aug 2018 09:13:09 +0000 (11:13 +0200)
commitbed4ff1ed4d8f2ef5007c5c6ae1b29c5677a3632
tree62e0e8b251ca36d6eadee3df8013e36962b23a37
parent5c18d12ced225fa0ad5a03fb42bbb293815d1342
i2c: imx: Fix race condition in dma read

This fixes a race condition, where the DMAEN bit ends up being set after
I2C slave has transmitted a byte following the dummy read.  When that
happens, an interrupt is generated instead, and no DMA request is generated
to kickstart the DMA read, and a timeout happens after DMA_TIMEOUT (1 sec).

Fixed by setting the DMAEN bit before the dummy read.

Signed-off-by: Esben Haabendal <eha@deif.com>
Acked-by: Uwe Kleine-König <u.kleine-koenig@pengutronix.de>
Signed-off-by: Wolfram Sang <wsa@the-dreams.de>
Cc: stable@kernel.org
drivers/i2c/busses/i2c-imx.c