On Tue, Aug 02, 2011 at 11:34:18AM -0700, Stephen Warren wrote:
We've found that switching the Tegra I2C controller from struct platform_driver.{suspend,resume} to .{suspend,resume}_noirq solves this. However, this seems like it's more of an accident than registering an explicit dependency, especially since most I2C controllers just use suspend rather than suspend_noirq.
This is about as good as it gets, actually - I2C controllers should generally suspend very late and resume early as they're needed for core system components like the RTC and PMIC.
Is there a way to explicitly indicate that sound should be suspended before the I2C controller? I assume the issue is more that snd_soc_suspend shuts
No, this is a general limitation in the Linux PM model. Everything goes by the order that devices got registered in. There's nothing doing at the minute without core work other than bodges like _noirq.