On Wed, May 27, 2015 at 11:22:41AM +0100, Lee Jones wrote: > > +static int resume_lpss_device(struct device *dev, void *data) > > +{ > > + pm_runtime_resume(dev); > > + return 0; > > +} > > + > > +int intel_lpss_prepare(struct device *dev) > > +{ > > + /* > > + * Resume both child devices before entering system sleep. This > > + * ensures that they are in proper state before they get suspended. > > + */ > > + device_for_each_child_reverse(dev, NULL, resume_lpss_device); > > Why can't you do this in intel_lpss_suspend()? > > Then you can get rid of all the hand-rolled nonsense you have in the > header file and use SET_SYSTEM_SLEEP_PM_OPS instead. > > Does something happen after .prepare() and before .suspend() that > prevents this from working? At that time all children are already suspended (to system sleep) so we cannot bring them out of runtime suspend anymore. .prepare() is executed for all devices before suspend callbacks for each device. -- To unsubscribe from this list: send the line "unsubscribe dmaengine" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html