i2c: tegra: Check DMA completion status in addition to left time
authorDmitry Osipenko <digetx@gmail.com>
Tue, 14 Jan 2020 01:34:42 +0000 (04:34 +0300)
committerWolfram Sang <wsa@the-dreams.de>
Wed, 15 Jan 2020 17:32:37 +0000 (18:32 +0100)
commitb3ec946975737b949137fbb1a2db9e7cc5b9ae82
tree86ed3d8dc87862cf7f3e40e2b7578602768394cd
parent28d98666dbc033e8834edcba75dc1984efde0279
i2c: tegra: Check DMA completion status in addition to left time

It is more robust to check completion status in addition to the left time
in a case of DMA transfer because transfer's completion happens in two
phases [one is ISR, other is tasklet] and thus it is possible that DMA is
completed while I2C completion awaiting times out because of the deferred
notification done by the DMA driver. The DMA completion status becomes
100% actual after DMA synchronization. This fixes spurious DMA timeouts
when system is under load.

Tested-by: Thierry Reding <treding@nvidia.com>
Signed-off-by: Dmitry Osipenko <digetx@gmail.com>
Signed-off-by: Wolfram Sang <wsa@the-dreams.de>
drivers/i2c/busses/i2c-tegra.c