|
@@ -62,8 +62,6 @@ static u32 acpi_suspend_states[] = {
|
|
|
[PM_SUSPEND_MAX] = ACPI_STATE_S5
|
|
|
};
|
|
|
|
|
|
-static int init_8259A_after_S1;
|
|
|
-
|
|
|
/**
|
|
|
* acpi_suspend_begin - Set the target system sleep state to the state
|
|
|
* associated with given @pm_state, if supported.
|
|
@@ -186,13 +184,6 @@ static void acpi_suspend_finish(void)
|
|
|
acpi_set_firmware_waking_vector((acpi_physical_address) 0);
|
|
|
|
|
|
acpi_target_sleep_state = ACPI_STATE_S0;
|
|
|
-
|
|
|
-#ifdef CONFIG_X86
|
|
|
- if (init_8259A_after_S1) {
|
|
|
- printk("Broken toshiba laptop -> kicking interrupts\n");
|
|
|
- init_8259A(0);
|
|
|
- }
|
|
|
-#endif
|
|
|
}
|
|
|
|
|
|
/**
|
|
@@ -232,26 +223,6 @@ static struct platform_suspend_ops acpi_suspend_ops = {
|
|
|
.finish = acpi_suspend_finish,
|
|
|
.end = acpi_suspend_end,
|
|
|
};
|
|
|
-
|
|
|
-/*
|
|
|
- * Toshiba fails to preserve interrupts over S1, reinitialization
|
|
|
- * of 8259 is needed after S1 resume.
|
|
|
- */
|
|
|
-static int __init init_ints_after_s1(const struct dmi_system_id *d)
|
|
|
-{
|
|
|
- printk(KERN_WARNING "%s with broken S1 detected.\n", d->ident);
|
|
|
- init_8259A_after_S1 = 1;
|
|
|
- return 0;
|
|
|
-}
|
|
|
-
|
|
|
-static struct dmi_system_id __initdata acpisleep_dmi_table[] = {
|
|
|
- {
|
|
|
- .callback = init_ints_after_s1,
|
|
|
- .ident = "Toshiba Satellite 4030cdt",
|
|
|
- .matches = {DMI_MATCH(DMI_PRODUCT_NAME, "S4030CDT/4.3"),},
|
|
|
- },
|
|
|
- {},
|
|
|
-};
|
|
|
#endif /* CONFIG_SUSPEND */
|
|
|
|
|
|
#ifdef CONFIG_HIBERNATION
|
|
@@ -369,8 +340,8 @@ int acpi_suspend(u32 acpi_state)
|
|
|
/**
|
|
|
* acpi_pm_device_sleep_state - return preferred power state of ACPI device
|
|
|
* in the system sleep state given by %acpi_target_sleep_state
|
|
|
- * @dev: device to examine
|
|
|
- * @wake: if set, the device should be able to wake up the system
|
|
|
+ * @dev: device to examine; its driver model wakeup flags control
|
|
|
+ * whether it should be able to wake up the system
|
|
|
* @d_min_p: used to store the upper limit of allowed states range
|
|
|
* Return value: preferred power state of the device on success, -ENODEV on
|
|
|
* failure (ie. if there's no 'struct acpi_device' for @dev)
|
|
@@ -388,7 +359,7 @@ int acpi_suspend(u32 acpi_state)
|
|
|
* via @wake.
|
|
|
*/
|
|
|
|
|
|
-int acpi_pm_device_sleep_state(struct device *dev, int wake, int *d_min_p)
|
|
|
+int acpi_pm_device_sleep_state(struct device *dev, int *d_min_p)
|
|
|
{
|
|
|
acpi_handle handle = DEVICE_ACPI_HANDLE(dev);
|
|
|
struct acpi_device *adev;
|
|
@@ -427,7 +398,7 @@ int acpi_pm_device_sleep_state(struct device *dev, int wake, int *d_min_p)
|
|
|
* can wake the system. _S0W may be valid, too.
|
|
|
*/
|
|
|
if (acpi_target_sleep_state == ACPI_STATE_S0 ||
|
|
|
- (wake && adev->wakeup.state.enabled &&
|
|
|
+ (device_may_wakeup(dev) && adev->wakeup.state.enabled &&
|
|
|
adev->wakeup.sleep_state <= acpi_target_sleep_state)) {
|
|
|
acpi_status status;
|
|
|
|
|
@@ -473,8 +444,6 @@ int __init acpi_sleep_init(void)
|
|
|
u8 type_a, type_b;
|
|
|
#ifdef CONFIG_SUSPEND
|
|
|
int i = 0;
|
|
|
-
|
|
|
- dmi_check_system(acpisleep_dmi_table);
|
|
|
#endif
|
|
|
|
|
|
if (acpi_disabled)
|