On Tue, 8 Jan 2008, Pavel Machek wrote:
quoted
In fact suspend methods already do take an argument specifying the
reason they were called. It wouldn't be hard to add a couple of extra
PM_EVENT_* values for manual suspend and autosuspend. The problem is
that resume methods don't take a corresponding argument.
Well, you could store the value in struct device or something.
There's other problem: if autosuspend is != NULL, you know device
supports autosuspend.
If you call existing suspend(PMSG_AUTOSUSPEND), and driver does not
support it, it will crash and burn.
That's right. The problem doesn't arise in SCSI because there only the
sd driver supports suspend at all -- and now it supports autosuspend as
well. In USB I had to add an extra "supports_autosuspend" bitflag to
the usb_driver structure.
Alan Stern