Hibernation: Introduce begin() and end() callbacks
Introduce global hibernation callback .end() and rename global hibernation callback .start() to .begin(), in analogy with the recent modifications of the global suspend callbacks. Signed-off-by: Rafael J. Wysocki <rjw@sisk.pl> Signed-off-by: Len Brown <len.brown@intel.com>
This commit is contained in:
committed by
Len Brown
parent
60417f5976
commit
caea99ef33
+24
-9
@@ -54,8 +54,8 @@ static struct platform_hibernation_ops *hibernation_ops;
|
||||
|
||||
void hibernation_set_ops(struct platform_hibernation_ops *ops)
|
||||
{
|
||||
if (ops && !(ops->start && ops->pre_snapshot && ops->finish
|
||||
&& ops->prepare && ops->enter && ops->pre_restore
|
||||
if (ops && !(ops->begin && ops->end && ops->pre_snapshot
|
||||
&& ops->prepare && ops->finish && ops->enter && ops->pre_restore
|
||||
&& ops->restore_cleanup)) {
|
||||
WARN_ON(1);
|
||||
return;
|
||||
@@ -100,14 +100,25 @@ static int hibernation_test(int level) { return 0; }
|
||||
#endif /* !CONFIG_PM_DEBUG */
|
||||
|
||||
/**
|
||||
* platform_start - tell the platform driver that we're starting
|
||||
* platform_begin - tell the platform driver that we're starting
|
||||
* hibernation
|
||||
*/
|
||||
|
||||
static int platform_start(int platform_mode)
|
||||
static int platform_begin(int platform_mode)
|
||||
{
|
||||
return (platform_mode && hibernation_ops) ?
|
||||
hibernation_ops->start() : 0;
|
||||
hibernation_ops->begin() : 0;
|
||||
}
|
||||
|
||||
/**
|
||||
* platform_end - tell the platform driver that we've entered the
|
||||
* working state
|
||||
*/
|
||||
|
||||
static void platform_end(int platform_mode)
|
||||
{
|
||||
if (platform_mode && hibernation_ops)
|
||||
hibernation_ops->end();
|
||||
}
|
||||
|
||||
/**
|
||||
@@ -237,9 +248,9 @@ int hibernation_snapshot(int platform_mode)
|
||||
if (error)
|
||||
return error;
|
||||
|
||||
error = platform_start(platform_mode);
|
||||
error = platform_begin(platform_mode);
|
||||
if (error)
|
||||
return error;
|
||||
goto Close;
|
||||
|
||||
suspend_console();
|
||||
error = device_suspend(PMSG_FREEZE);
|
||||
@@ -272,6 +283,8 @@ int hibernation_snapshot(int platform_mode)
|
||||
device_resume();
|
||||
Resume_console:
|
||||
resume_console();
|
||||
Close:
|
||||
platform_end(platform_mode);
|
||||
return error;
|
||||
}
|
||||
|
||||
@@ -373,9 +386,9 @@ int hibernation_platform_enter(void)
|
||||
* hibernation_ops->finish() before saving the image, so we should let
|
||||
* the firmware know that we're going to enter the sleep state after all
|
||||
*/
|
||||
error = hibernation_ops->start();
|
||||
error = hibernation_ops->begin();
|
||||
if (error)
|
||||
return error;
|
||||
goto Close;
|
||||
|
||||
suspend_console();
|
||||
error = device_suspend(PMSG_SUSPEND);
|
||||
@@ -409,6 +422,8 @@ int hibernation_platform_enter(void)
|
||||
device_resume();
|
||||
Resume_console:
|
||||
resume_console();
|
||||
Close:
|
||||
hibernation_ops->end();
|
||||
return error;
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user