Fine with me. Please add my AckLaxman, are you convinced or do you have still objections?Our I2C driver is based on the interrupt. So we have converted theIn the current upstream kernel suspend/resume can't be simply moved to the
suspend/resume to suspend_noirq and reseume_noirq so that we will not allow the
transfer when system interrupt disabled in downstream.
SET_NOIRQ_SYSTEM_SLEEP_PM_OPS(tegra_i2c_suspend, tegra_i2c_resume)
In shutdown path, where interrupt disabled and still need i2c, we use the
bit-bang method via GPIO for i2c transfer.
'noirq' stage because resume invokes tegra_i2c_init() which uses runtime PM and
that doesn't work with the IRQ's being disabled. But things do not work even
with the tegra_i2c_init() changed to work with the disabled IRQ's, like I wrote
above the I2C transfer fails (due to timeout) and a "fix" for that failure was
to remove reset_control_assert/deassert from the tegra_i2c_init(). So I'd go for
a complete suspend/resume removal for now as it is causes problem.