diff options
Diffstat (limited to 'drivers/acpi/wakeup.c')
| -rw-r--r-- | drivers/acpi/wakeup.c | 20 | 
1 files changed, 7 insertions, 13 deletions
diff --git a/drivers/acpi/wakeup.c b/drivers/acpi/wakeup.c index 4b9d339a6e2..388747a7ef4 100644 --- a/drivers/acpi/wakeup.c +++ b/drivers/acpi/wakeup.c @@ -64,16 +64,13 @@ void acpi_enable_wakeup_device(u8 sleep_state)  		struct acpi_device *dev =  			container_of(node, struct acpi_device, wakeup_list); -		if (!dev->wakeup.flags.valid) -			continue; - -		if ((!dev->wakeup.state.enabled && !dev->wakeup.prepare_count) +		if (!dev->wakeup.flags.valid || !dev->wakeup.state.enabled  		    || sleep_state > (u32) dev->wakeup.sleep_state)  			continue;  		/* The wake-up power should have been enabled already. */ -		acpi_set_gpe(dev->wakeup.gpe_device, dev->wakeup.gpe_number, -				ACPI_GPE_ENABLE); +		acpi_enable_gpe(dev->wakeup.gpe_device, dev->wakeup.gpe_number, +				ACPI_GPE_TYPE_WAKE);  	}  } @@ -96,6 +93,8 @@ void acpi_disable_wakeup_device(u8 sleep_state)  		    || (sleep_state > (u32) dev->wakeup.sleep_state))  			continue; +		acpi_disable_gpe(dev->wakeup.gpe_device, dev->wakeup.gpe_number, +				ACPI_GPE_TYPE_WAKE);  		acpi_disable_wakeup_device_power(dev);  	}  } @@ -109,13 +108,8 @@ int __init acpi_wakeup_device_init(void)  		struct acpi_device *dev = container_of(node,  						       struct acpi_device,  						       wakeup_list); -		/* In case user doesn't load button driver */ -		if (!dev->wakeup.flags.always_enabled || -		    dev->wakeup.state.enabled) -			continue; - 		acpi_enable_gpe(dev->wakeup.gpe_device, dev->wakeup.gpe_number, - 				ACPI_GPE_TYPE_WAKE); -		dev->wakeup.state.enabled = 1; +		if (dev->wakeup.flags.always_enabled) +			dev->wakeup.state.enabled = 1;  	}  	mutex_unlock(&acpi_device_lock);  	return 0;  |