> > Our I2C driver is based on the interrupt. So we have converted 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. > In the current upstream kernel suspend/resume can't be simply moved to the > '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. Laxman, are you convinced or do you have still objections?
Attachment:
signature.asc
Description: PGP signature