static int acpi_button_resume(struct device *dev)
 {
+       struct input_dev *input;
        struct acpi_device *device = to_acpi_device(dev);
        struct acpi_button *button = acpi_driver_data(device);
 
                button->last_time = ktime_get();
                acpi_lid_initialize_state(device);
        }
+
+       if (button->type == ACPI_BUTTON_TYPE_POWER) {
+               input = button->input;
+               input_report_key(input, KEY_WAKEUP, 1);
+               input_sync(input);
+               input_report_key(input, KEY_WAKEUP, 0);
+               input_sync(input);
+       }
        return 0;
 }
 #endif
        switch (button->type) {
        case ACPI_BUTTON_TYPE_POWER:
                input_set_capability(input, EV_KEY, KEY_POWER);
+               input_set_capability(input, EV_KEY, KEY_WAKEUP);
                break;
 
        case ACPI_BUTTON_TYPE_SLEEP: