diff options
Diffstat (limited to 'drivers/acpi/sleep.c')
| -rw-r--r-- | drivers/acpi/sleep.c | 15 | 
1 files changed, 12 insertions, 3 deletions
diff --git a/drivers/acpi/sleep.c b/drivers/acpi/sleep.c index 79d33d908b5..3bde594a997 100644 --- a/drivers/acpi/sleep.c +++ b/drivers/acpi/sleep.c @@ -745,9 +745,18 @@ int acpi_pm_device_sleep_wake(struct device *dev, bool enable)  		return -ENODEV;  	} -	error = enable ? -		acpi_enable_wakeup_device_power(adev, acpi_target_sleep_state) : -		acpi_disable_wakeup_device_power(adev); +	if (enable) { +		error = acpi_enable_wakeup_device_power(adev, +						acpi_target_sleep_state); +		if (!error) +			acpi_enable_gpe(adev->wakeup.gpe_device, +					adev->wakeup.gpe_number, +					ACPI_GPE_TYPE_WAKE); +	} else { +		acpi_disable_gpe(adev->wakeup.gpe_device, adev->wakeup.gpe_number, +				ACPI_GPE_TYPE_WAKE); +		error = acpi_disable_wakeup_device_power(adev); +	}  	if (!error)  		dev_info(dev, "wake-up capability %s by ACPI\n",  				enable ? "enabled" : "disabled");  |