On Mon, May 14, 2018 at 12:13:47AM +0300, Dmitry Osipenko wrote: > Nothing prevents I2C clients to access I2C while Tegra's driver is being > suspended, this results in -EBUSY error returned to the clients and that > may have unfortunate consequences. In particular this causes problems > for the TPS6586x MFD driver which emits hundreds of "failed to read > interrupt status" error messages on resume from suspend. This happens if > TPS6586X is used to wake system from suspend by the expired RTC alarm > timer because TPS6586X is an I2C device driver and its IRQ handler reads > the status register while Tegra's I2C driver is suspended, i.e. just after > kernel enabled IRQ's during of resume-from-suspend process. > > Note that the removed tegra_i2c_resume() invoked tegra_i2c_init() which > performs HW reset. That seems was also not entirely correct because moving > tegra_i2c_resume to an earlier stage of resume-from-suspend process causes > I2C transfer to fail in the case of TPS6586X. It is fine to remove the > HW-reinitialization for now because it should be only needed in a case of > using lowest power-mode during suspend, which upstream kernel doesn't > support. > > Signed-off-by: Dmitry Osipenko <digetx@xxxxxxxxx> > Cc: <stable@xxxxxxxxxxxxxxx> Applied to for-next, thanks!
Attachment:
signature.asc
Description: PGP signature