PM / sleep: Export dpm_suspend_late/noirq() and dpm_resume_early/noirq()
Subsequent change sets will add platform-related operations between dpm_suspend_late() and dpm_suspend_noirq() as well as between dpm_resume_noirq() and dpm_resume_early() in suspend_enter(), so export these functions for suspend_enter() to be able to call them separately and split the invocations of dpm_suspend_end() and dpm_resume_start() in there accordingly. Signed-off-by: Rafael J. Wysocki <rafael.j.wysocki@intel.com>
This commit is contained in:
Родитель
e1253e5e3f
Коммит
2a8a8ce651
|
@ -540,7 +540,7 @@ static void async_resume_noirq(void *data, async_cookie_t cookie)
|
|||
* Call the "noirq" resume handlers for all devices in dpm_noirq_list and
|
||||
* enable device drivers to receive interrupts.
|
||||
*/
|
||||
static void dpm_resume_noirq(pm_message_t state)
|
||||
void dpm_resume_noirq(pm_message_t state)
|
||||
{
|
||||
struct device *dev;
|
||||
ktime_t starttime = ktime_get();
|
||||
|
@ -662,7 +662,7 @@ static void async_resume_early(void *data, async_cookie_t cookie)
|
|||
* dpm_resume_early - Execute "early resume" callbacks for all devices.
|
||||
* @state: PM transition of the system being carried out.
|
||||
*/
|
||||
static void dpm_resume_early(pm_message_t state)
|
||||
void dpm_resume_early(pm_message_t state)
|
||||
{
|
||||
struct device *dev;
|
||||
ktime_t starttime = ktime_get();
|
||||
|
@ -1093,7 +1093,7 @@ static int device_suspend_noirq(struct device *dev)
|
|||
* Prevent device drivers from receiving interrupts and call the "noirq" suspend
|
||||
* handlers for all non-sysdev devices.
|
||||
*/
|
||||
static int dpm_suspend_noirq(pm_message_t state)
|
||||
int dpm_suspend_noirq(pm_message_t state)
|
||||
{
|
||||
ktime_t starttime = ktime_get();
|
||||
int error = 0;
|
||||
|
@ -1232,7 +1232,7 @@ static int device_suspend_late(struct device *dev)
|
|||
* dpm_suspend_late - Execute "late suspend" callbacks for all devices.
|
||||
* @state: PM transition of the system being carried out.
|
||||
*/
|
||||
static int dpm_suspend_late(pm_message_t state)
|
||||
int dpm_suspend_late(pm_message_t state)
|
||||
{
|
||||
ktime_t starttime = ktime_get();
|
||||
int error = 0;
|
||||
|
|
|
@ -679,12 +679,16 @@ struct dev_pm_domain {
|
|||
extern void device_pm_lock(void);
|
||||
extern void dpm_resume_start(pm_message_t state);
|
||||
extern void dpm_resume_end(pm_message_t state);
|
||||
extern void dpm_resume_noirq(pm_message_t state);
|
||||
extern void dpm_resume_early(pm_message_t state);
|
||||
extern void dpm_resume(pm_message_t state);
|
||||
extern void dpm_complete(pm_message_t state);
|
||||
|
||||
extern void device_pm_unlock(void);
|
||||
extern int dpm_suspend_end(pm_message_t state);
|
||||
extern int dpm_suspend_start(pm_message_t state);
|
||||
extern int dpm_suspend_noirq(pm_message_t state);
|
||||
extern int dpm_suspend_late(pm_message_t state);
|
||||
extern int dpm_suspend(pm_message_t state);
|
||||
extern int dpm_prepare(pm_message_t state);
|
||||
|
||||
|
|
|
@ -265,11 +265,16 @@ static int suspend_enter(suspend_state_t state, bool *wakeup)
|
|||
if (error)
|
||||
goto Platform_finish;
|
||||
|
||||
error = dpm_suspend_end(PMSG_SUSPEND);
|
||||
error = dpm_suspend_late(PMSG_SUSPEND);
|
||||
if (error) {
|
||||
printk(KERN_ERR "PM: Some devices failed to power down\n");
|
||||
printk(KERN_ERR "PM: late suspend of devices failed\n");
|
||||
goto Platform_finish;
|
||||
}
|
||||
error = dpm_suspend_noirq(PMSG_SUSPEND);
|
||||
if (error) {
|
||||
printk(KERN_ERR "PM: noirq suspend of devices failed\n");
|
||||
goto Devices_early_resume;
|
||||
}
|
||||
error = platform_suspend_prepare_late(state);
|
||||
if (error)
|
||||
goto Platform_wake;
|
||||
|
@ -319,7 +324,10 @@ static int suspend_enter(suspend_state_t state, bool *wakeup)
|
|||
|
||||
Platform_wake:
|
||||
platform_suspend_wake(state);
|
||||
dpm_resume_start(PMSG_RESUME);
|
||||
dpm_resume_noirq(PMSG_RESUME);
|
||||
|
||||
Devices_early_resume:
|
||||
dpm_resume_early(PMSG_RESUME);
|
||||
|
||||
Platform_finish:
|
||||
platform_suspend_finish(state);
|
||||
|
|
Загрузка…
Ссылка в новой задаче