Re: [PATCH] implement pm_ops.valid for everybody

David Brownell
2007-03-24T22:19:58Z

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