Re: [PATCH] implement pm_ops.valid for everybody

David Brownell
2007-03-24T20:49:18Z

On Friday 23 March 2007 1:39 pm, Rafael J. Wysocki wrote:

> After we have frozen tasks, we need to
> call something like device_suspend(some_argument) where the argument should
> tell drivers what to do.

That parameter can't suffice, since the exact details depend on
system-dependent context. Example, on one system a given sleep
state will allow a given device to issue wakeups ... on another,
it won't.

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.

(SOC "power management" documentatation invariably dwells on
clock gating ... and as previously discussed, those platforms
with "power domains", to help manage leakage current not just
clocking, can generally couple them to clocks. So software
clock gating would normally put controllers into "retention"
mode like PCI D2, or in a few cases into a suspend" mode with
power off like PCI D3cold. And if the state doesn't require
a given clock to be gated off, then the driver wakeup config
may direct that it's active enough to be a wakeup source.)

That is, we don't need a new method or complexified parameter
to the existing driver->suspend()...

> Say we use something like PMSG_STANDBY and now
> do you think the meaning of it can change from one platform to another?

No, let's not complexify that pm_message_t mistake any further.

> And if it can, how can the drivers figure out the meaning?

See summary above. PCI devices have pci_choose_state(), which
is currently broken but ISTR is sort of fixable -- same notion,
once it does sane things.

- Dave