#define ACPI_BUTTON_LID_INIT_IGNORE 0x00
#define ACPI_BUTTON_LID_INIT_OPEN 0x01
+ +#define ACPI_BUTTON_LID_INIT_METHOD 0x02
#define _COMPONENT ACPI_BUTTON_COMPONENT
ACPI_MODULE_NAME("button");
}
if (state)
-- pm_wakeup_event(&device->dev, 0);
++ pm_wakeup_hard_event(&device->dev);
ret = blocking_notifier_call_chain(&acpi_lid_notifier, state, device);
if (ret == NOTIFY_DONE)
case ACPI_BUTTON_LID_INIT_OPEN:
(void)acpi_lid_notify_state(device, 1);
break;
+ + case ACPI_BUTTON_LID_INIT_METHOD:
+ + (void)acpi_lid_update_state(device);
+ + break;
case ACPI_BUTTON_LID_INIT_IGNORE:
default:
break;
} else {
int keycode;
-- pm_wakeup_event(&device->dev, 0);
++ pm_wakeup_hard_event(&device->dev);
if (button->suspended)
break;
lid_device = device;
}
++ device_init_wakeup(&device->dev, true);
printk(KERN_INFO PREFIX "%s [%s]\n", name, acpi_device_bid(device));
return 0;
if (!strncmp(val, "open", sizeof("open") - 1)) {
lid_init_state = ACPI_BUTTON_LID_INIT_OPEN;
pr_info("Notify initial lid state as open\n");
+ + } else if (!strncmp(val, "method", sizeof("method") - 1)) {
+ + lid_init_state = ACPI_BUTTON_LID_INIT_METHOD;
+ + pr_info("Notify initial lid state with _LID return value\n");
} else if (!strncmp(val, "ignore", sizeof("ignore") - 1)) {
lid_init_state = ACPI_BUTTON_LID_INIT_IGNORE;
pr_info("Do not notify initial lid state\n");
switch (lid_init_state) {
case ACPI_BUTTON_LID_INIT_OPEN:
return sprintf(buffer, "open");
+ + case ACPI_BUTTON_LID_INIT_METHOD:
+ + return sprintf(buffer, "method");
case ACPI_BUTTON_LID_INIT_IGNORE:
return sprintf(buffer, "ignore");
default: