On Wed, 16 Dec 2015, Wolfram Sang wrote: > From: Wolfram Sang <wsa+renesas@xxxxxxxxxxxxxxxxxxxx> > > When we also are I2C slave, we need to disable runtime PM because the > address detection mechanism needs to be active all the time. However, we > can reenable runtime PM once the slave instance was unregistered. So, > use pm_runtime_disable/enable to achieve this, since it has proper > refcounting. pm_runtime_allow/forbid is like a global switch which is > unsuitable here. > > Signed-off-by: Wolfram Sang <wsa+renesas@xxxxxxxxxxxxxxxxxxxx> > --- > > I'd be grateful to get an ACK from a runtime PM expert to verify that my > assumptions match reality :) Yes, disabling runtime PM will do what you want. However you might consider using pm_runtime_get_sync() and pm_runtime_put() instead, because pm_runtime_enable() does not check to see if the device is idle and can be suspended right away. Alternatively, you can call pm_runtime_idle() after pm_runtime_enable(). pm_runtime_allow/forbid is even more unsuitable than you said, because it can be overridden by the user. 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