On Tue, 14 Dec 2010, Rabin Vincent wrote: > Hello, > > If an i2c driver uses dev_pm_ops and pm_runtime_suspended() returns true > for the device, the i2c core will not call the driver's pm->suspend() > routine. Similar behaviour (except for the if dev_pm_ops check) is > present in the generic PM ops provided in > drivers/base/power/generic_ops.c. > > Since pm_runtime_suspended() returns true if the relevant driver did not > call any pm_runtime functions, this means that any driver which does not > use pm_runtime APIs will not get its pm->suspend() callback called > during system sleep, if CONFIG_PM_RUNTIME is enabled. > > For the i2c case, there are several such drivers (in drivers/input/*, > etc) lacking these calls. How is this to be handled? Do all of these > drivers need to be patched to use the pm_runtime API if they are to be > used on a kernel with PM_RUNTIME enabled? I'm not familiar with the details of how the i2c subsystem works. But in general, the subsystem code should call pm_runtime_set_active() for every device before registering it. Then if a driver doesn't use any runtime-PM functions, pm_runtime_suspended() will return false. Alan Stern -- To unsubscribe from this list: send the line "unsubscribe linux-i2c" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html