• Rafael J. Wysocki's avatar
    PM: introduce set_target method in pm_ops · 2391dae3
    Rafael J. Wysocki authored
    Commit 52ade9b3 changed the suspend code
    ordering to execute pm_ops->prepare() after the device model per-device
    .suspend() calls in order to fix some ACPI-related issues.  Unfortunately, it
    broke the at91 platform which assumed that pm_ops->prepare() would be called
    before suspending devices.
    
    at91 used pm_ops->prepare() to get notified of the target system sleep state,
    so that it could use this information while suspending devices.  However, with
    the current suspend code ordering pm_ops->prepare() is called too late for
    this purpose.  Thus, at91 needs an additional method in 'struct pm_ops' that
    will be used for notifying the platform of the target system sleep state.
    Moreover, in the future such a method will also be needed by ACPI.
    
    This patch adds the .set_target() method to 'struct pm_ops' and makes the
    suspend code call it, if implemented, before executing the device model
    per-device .suspend() calls.  It also modifies the at91 code to use
    pm_ops->set_target() instead of pm_ops->prepare().
    Signed-off-by: default avatarRafael J. Wysocki <rjw@sisk.pl>
    Acked-by: default avatarDavid Brownell <dbrownell@users.sourceforge.net>
    Cc: Pavel Machek <pavel@ucw.cz>
    Cc: Johannes Berg <johannes@sipsolutions.net>
    Cc: Len Brown <lenb@kernel.org>
    Cc: Greg KH <greg@kroah.com>
    Signed-off-by: default avatarAndrew Morton <akpm@linux-foundation.org>
    Signed-off-by: default avatarLinus Torvalds <torvalds@linux-foundation.org>
    2391dae3
pm.c 5.54 KB