diff options
Diffstat (limited to 'drivers/acpi/button.c')
| -rw-r--r-- | drivers/acpi/button.c | 17 | 
1 files changed, 10 insertions, 7 deletions
| diff --git a/drivers/acpi/button.c b/drivers/acpi/button.c index 2345a5ee2dbb..a19ff3977ac4 100644 --- a/drivers/acpi/button.c +++ b/drivers/acpi/button.c @@ -21,6 +21,7 @@  #define pr_fmt(fmt) "ACPI: button: " fmt +#include <linux/compiler.h>  #include <linux/kernel.h>  #include <linux/module.h>  #include <linux/init.h> @@ -235,9 +236,6 @@ static int acpi_lid_notify_state(struct acpi_device *device, int state)  		button->last_time = ktime_get();  	} -	if (state) -		acpi_pm_wakeup_event(&device->dev); -  	ret = blocking_notifier_call_chain(&acpi_lid_notifier, state, device);  	if (ret == NOTIFY_DONE)  		ret = blocking_notifier_call_chain(&acpi_lid_notifier, state, @@ -252,7 +250,8 @@ static int acpi_lid_notify_state(struct acpi_device *device, int state)  	return ret;  } -static int acpi_button_state_seq_show(struct seq_file *seq, void *offset) +static int __maybe_unused acpi_button_state_seq_show(struct seq_file *seq, +						     void *offset)  {  	struct acpi_device *device = seq->private;  	int state; @@ -366,7 +365,8 @@ int acpi_lid_open(void)  }  EXPORT_SYMBOL(acpi_lid_open); -static int acpi_lid_update_state(struct acpi_device *device) +static int acpi_lid_update_state(struct acpi_device *device, +				 bool signal_wakeup)  {  	int state; @@ -374,6 +374,9 @@ static int acpi_lid_update_state(struct acpi_device *device)  	if (state < 0)  		return state; +	if (state && signal_wakeup) +		acpi_pm_wakeup_event(&device->dev); +  	return acpi_lid_notify_state(device, state);  } @@ -384,7 +387,7 @@ static void acpi_lid_initialize_state(struct acpi_device *device)  		(void)acpi_lid_notify_state(device, 1);  		break;  	case ACPI_BUTTON_LID_INIT_METHOD: -		(void)acpi_lid_update_state(device); +		(void)acpi_lid_update_state(device, false);  		break;  	case ACPI_BUTTON_LID_INIT_IGNORE:  	default: @@ -409,7 +412,7 @@ static void acpi_button_notify(struct acpi_device *device, u32 event)  			users = button->input->users;  			mutex_unlock(&button->input->mutex);  			if (users) -				acpi_lid_update_state(device); +				acpi_lid_update_state(device, true);  		} else {  			int keycode; |