On Sun, Sep 6, 2020 at 9:51 PM Dmitry Osipenko <digetx@xxxxxxxxx> wrote: > > The tegra_i2c_flush_fifos() shouldn't sleep in atomic transfer and jiffies > are not updating if interrupts are disabled. Let's switch to use iopoll > API helpers for register-polling. The iopoll API provides helpers for both > atomic and non-atomic cases. > > Note that this patch doesn't fix any known problem because normally FIFO > is flushed at the time of starting a new transfer. ... > + if (i2c_dev->is_curr_atomic_xfer) > + err = readl_relaxed_poll_timeout_atomic(addr, val, !(val & mask), > + 1000, 1000000); > + else > + err = readl_relaxed_poll_timeout(addr, val, !(val & mask), > + 1000, 1000000); > + > + if (err) { > + dev_err(i2c_dev->dev, "failed to flush FIFO\n"); > + return err; > } > return 0; return err; ? -- With Best Regards, Andy Shevchenko