power management: implement pm_ops.valid for everybody

Almost all users of pm_ops only support mem sleep, don't check in .valid and
don't reject any others in .prepare so users can be confused if they check
/sys/power/state, especially when new states are added (these would then
result in s-t-r although they're supposed to be something different).

This patch implements a generic pm_valid_only_mem function that is then
exported for users and puts it to use in almost all existing pm_ops.

Signed-off-by: Johannes Berg <[email protected]>
Cc: David Brownell <[email protected]>
Acked-by: Pavel Machek <[email protected]>
Cc: [email protected]
Cc: Len Brown <[email protected]>
Acked-by: Russell King <[email protected]>
Cc: Greg KH <[email protected]>
Cc: "Rafael J. Wysocki" <[email protected]>
Cc: Paul Mundt <[email protected]>
Signed-off-by: Andrew Morton <[email protected]>
Signed-off-by: Linus Torvalds <[email protected]>
This commit is contained in:
Johannes Berg 2007-04-30 15:09:54 -07:00 • committed by Linus Torvalds
commit e8c9c50269
11 changed files with 39 additions and 55 deletions

View file

@ -48,6 +48,19 @@ void pm_set_ops(struct pm_ops * ops)
mutex_unlock(&pm_mutex);
}
/**
* pm_valid_only_mem - generic memory-only valid callback
*
* pm_ops drivers that implement mem suspend only and only need
* to check for that in their .valid callback can use this instead
* of rolling their own .valid callback.
*/
int pm_valid_only_mem(suspend_state_t state)
{
return state == PM_SUSPEND_MEM;
}
static inline void pm_finish(suspend_state_t state)
{
if (pm_ops->finish)