Lines 31-36
Link Here
|
31 |
[PM_SUSPEND_STANDBY] = ACPI_STATE_S1, |
31 |
[PM_SUSPEND_STANDBY] = ACPI_STATE_S1, |
32 |
[PM_SUSPEND_MEM] = ACPI_STATE_S3, |
32 |
[PM_SUSPEND_MEM] = ACPI_STATE_S3, |
33 |
[PM_SUSPEND_DISK] = ACPI_STATE_S4, |
33 |
[PM_SUSPEND_DISK] = ACPI_STATE_S4, |
|
|
34 |
[PM_SUSPEND_MAX] = ACPI_STATE_S5 |
34 |
}; |
35 |
}; |
35 |
|
36 |
|
36 |
static int init_8259A_after_S1; |
37 |
static int init_8259A_after_S1; |
Lines 48-56
Link Here
|
48 |
{ |
49 |
{ |
49 |
u32 acpi_state = acpi_suspend_states[pm_state]; |
50 |
u32 acpi_state = acpi_suspend_states[pm_state]; |
50 |
|
51 |
|
51 |
if (!sleep_states[acpi_state]) |
52 |
if (!sleep_states[acpi_state]) { |
|
|
53 |
printk("acpi_pm_prepare does not support %d \n", pm_state); |
52 |
return -EPERM; |
54 |
return -EPERM; |
53 |
|
55 |
} |
54 |
/* do we have a wakeup address for S2 and S3? */ |
56 |
/* do we have a wakeup address for S2 and S3? */ |
55 |
/* Here, we support only S4BIOS, those we set the wakeup address */ |
57 |
/* Here, we support only S4BIOS, those we set the wakeup address */ |
56 |
/* S4OS is only supported for now via swsusp.. */ |
58 |
/* S4OS is only supported for now via swsusp.. */ |
Lines 62-68
Link Here
|
62 |
(void *)acpi_wakeup_address)); |
64 |
(void *)acpi_wakeup_address)); |
63 |
} |
65 |
} |
64 |
ACPI_FLUSH_CPU_CACHE(); |
66 |
ACPI_FLUSH_CPU_CACHE(); |
|
|
67 |
printk("acpi_pm_prepare with %d\n", pm_state); |
65 |
acpi_enable_wakeup_device_prep(acpi_state); |
68 |
acpi_enable_wakeup_device_prep(acpi_state); |
|
|
69 |
if (acpi_state == ACPI_STATE_S5) { |
70 |
acpi_wakeup_gpe_poweroff_prepare(); |
71 |
} |
66 |
acpi_enter_sleep_state_prep(acpi_state); |
72 |
acpi_enter_sleep_state_prep(acpi_state); |
67 |
return 0; |
73 |
return 0; |
68 |
} |
74 |
} |
Lines 112-117
Link Here
|
112 |
else |
118 |
else |
113 |
do_suspend_lowlevel_s4bios(); |
119 |
do_suspend_lowlevel_s4bios(); |
114 |
break; |
120 |
break; |
|
|
121 |
case PM_SUSPEND_MAX: |
122 |
/* Some SMP machines only can poweroff in boot CPU */ |
123 |
set_cpus_allowed(current, cpumask_of_cpu(0)); |
124 |
acpi_enter_sleep_state(acpi_state); |
115 |
default: |
125 |
default: |
116 |
return -EINVAL; |
126 |
return -EINVAL; |
117 |
} |
127 |
} |
Lines 163-171
Link Here
|
163 |
[1] = PM_SUSPEND_STANDBY, |
173 |
[1] = PM_SUSPEND_STANDBY, |
164 |
[3] = PM_SUSPEND_MEM, |
174 |
[3] = PM_SUSPEND_MEM, |
165 |
[4] = PM_SUSPEND_DISK, |
175 |
[4] = PM_SUSPEND_DISK, |
|
|
176 |
[5] = PM_SUSPEND_MAX |
166 |
}; |
177 |
}; |
167 |
|
178 |
|
168 |
if (acpi_state <= 4 && states[acpi_state]) |
179 |
if (acpi_state < 6 && states[acpi_state]) |
169 |
return pm_suspend(states[acpi_state]); |
180 |
return pm_suspend(states[acpi_state]); |
170 |
return -EINVAL; |
181 |
return -EINVAL; |
171 |
} |
182 |
} |