On Saturday 24 March 2007 2:36 pm, Rafael J. Wysocki wrote: > On Saturday, 24 March 2007 21:49, David Brownell wrote: > > You seem to have overlooked the clk_must_disable() patches I > > recently re-sent. In conjunction with the driver model wakeup > > flags, that can solve the problem on every SOC platform I've > > had a reason to look at ... see how it works for AT91 USB. > > Do I understand correctly that the idea is to introduce some functions > (eg. clk_must_disable()) that each platform can define differently The definition is the same, it's the behavior that differs. :) That's no change from the rest of the clock framework, of course; essentially every chip has a unique clock tree, but the interface to that tree is defined the same on all systems. > and > that can be used by device drivers to obtain the additional information > needed to figure out what they are expected to do in .suspend()? Yes. See how it works for AT91 USB. In sleep states where the 48 MHz PLL is off, suspend() fully disables host or peripheral controllers and resume() re-initializes them from scratch. But otherwise the controller will often stay partially active, so that it can be a wakeup event source and/or maintain any current sessions. The UART is a funky case; it usually can't adjust its internal clock divisor (maybe at 1200 baud it could?), but some systems reprogram RXD as a wakeup GPIO. That particular patch doesn't do either of those things -- but that could be done. - Dave _______________________________________________ linux-pm mailing list linux-pm@xxxxxxxxxxxxxxxxxxxxxxxxxx https://lists.linux-foundation.org/mailman/listinfo/linux-pm