Merge branch 'for-next' of git://git.kernel.org/pub/scm/linux/kernel/git/jikos/apm into pm-apm-next
Pull APM update for 3.14-rc1 from Jiri Kosina. * 'for-next' of git://git.kernel.org/pub/scm/linux/kernel/git/jikos/apm: apm-emulation: add hibernation APM events to support suspend2disk
This commit is contained in:
Коммит
6a1c64cb40
|
@ -531,6 +531,7 @@ static int apm_suspend_notifier(struct notifier_block *nb,
|
|||
{
|
||||
struct apm_user *as;
|
||||
int err;
|
||||
unsigned long apm_event;
|
||||
|
||||
/* short-cut emergency suspends */
|
||||
if (atomic_read(&userspace_notification_inhibit))
|
||||
|
@ -538,6 +539,9 @@ static int apm_suspend_notifier(struct notifier_block *nb,
|
|||
|
||||
switch (event) {
|
||||
case PM_SUSPEND_PREPARE:
|
||||
case PM_HIBERNATION_PREPARE:
|
||||
apm_event = (event == PM_SUSPEND_PREPARE) ?
|
||||
APM_USER_SUSPEND : APM_USER_HIBERNATION;
|
||||
/*
|
||||
* Queue an event to all "writer" users that we want
|
||||
* to suspend and need their ack.
|
||||
|
@ -550,7 +554,7 @@ static int apm_suspend_notifier(struct notifier_block *nb,
|
|||
as->writer && as->suser) {
|
||||
as->suspend_state = SUSPEND_PENDING;
|
||||
atomic_inc(&suspend_acks_pending);
|
||||
queue_add_event(&as->queue, APM_USER_SUSPEND);
|
||||
queue_add_event(&as->queue, apm_event);
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -601,11 +605,14 @@ static int apm_suspend_notifier(struct notifier_block *nb,
|
|||
return notifier_from_errno(err);
|
||||
|
||||
case PM_POST_SUSPEND:
|
||||
case PM_POST_HIBERNATION:
|
||||
apm_event = (event == PM_POST_SUSPEND) ?
|
||||
APM_NORMAL_RESUME : APM_HIBERNATION_RESUME;
|
||||
/*
|
||||
* Anyone on the APM queues will think we're still suspended.
|
||||
* Send a message so everyone knows we're now awake again.
|
||||
*/
|
||||
queue_event(APM_NORMAL_RESUME);
|
||||
queue_event(apm_event);
|
||||
|
||||
/*
|
||||
* Finally, wake up anyone who is sleeping on the suspend.
|
||||
|
|
|
@ -67,6 +67,8 @@ struct apm_bios_info {
|
|||
#define APM_USER_SUSPEND 0x000a
|
||||
#define APM_STANDBY_RESUME 0x000b
|
||||
#define APM_CAPABILITY_CHANGE 0x000c
|
||||
#define APM_USER_HIBERNATION 0x000d
|
||||
#define APM_HIBERNATION_RESUME 0x000e
|
||||
|
||||
/*
|
||||
* Error codes
|
||||
|
|
Загрузка…
Ссылка в новой задаче