|
@@ -922,12 +922,17 @@ static void acpi_device_notify(acpi_handle handle, u32 event, void *data)
|
|
|
device->driver->ops.notify(device, event);
|
|
|
}
|
|
|
|
|
|
-static acpi_status acpi_device_notify_fixed(void *data)
|
|
|
+static void acpi_device_notify_fixed(void *data)
|
|
|
{
|
|
|
struct acpi_device *device = data;
|
|
|
|
|
|
/* Fixed hardware devices have no handles */
|
|
|
acpi_device_notify(NULL, ACPI_FIXED_HARDWARE_EVENT, device);
|
|
|
+}
|
|
|
+
|
|
|
+static acpi_status acpi_device_fixed_event(void *data)
|
|
|
+{
|
|
|
+ acpi_os_execute(OSL_NOTIFY_HANDLER, acpi_device_notify_fixed, data);
|
|
|
return AE_OK;
|
|
|
}
|
|
|
|
|
@@ -938,12 +943,12 @@ static int acpi_device_install_notify_handler(struct acpi_device *device)
|
|
|
if (device->device_type == ACPI_BUS_TYPE_POWER_BUTTON)
|
|
|
status =
|
|
|
acpi_install_fixed_event_handler(ACPI_EVENT_POWER_BUTTON,
|
|
|
- acpi_device_notify_fixed,
|
|
|
+ acpi_device_fixed_event,
|
|
|
device);
|
|
|
else if (device->device_type == ACPI_BUS_TYPE_SLEEP_BUTTON)
|
|
|
status =
|
|
|
acpi_install_fixed_event_handler(ACPI_EVENT_SLEEP_BUTTON,
|
|
|
- acpi_device_notify_fixed,
|
|
|
+ acpi_device_fixed_event,
|
|
|
device);
|
|
|
else
|
|
|
status = acpi_install_notify_handler(device->handle,
|
|
@@ -960,10 +965,10 @@ static void acpi_device_remove_notify_handler(struct acpi_device *device)
|
|
|
{
|
|
|
if (device->device_type == ACPI_BUS_TYPE_POWER_BUTTON)
|
|
|
acpi_remove_fixed_event_handler(ACPI_EVENT_POWER_BUTTON,
|
|
|
- acpi_device_notify_fixed);
|
|
|
+ acpi_device_fixed_event);
|
|
|
else if (device->device_type == ACPI_BUS_TYPE_SLEEP_BUTTON)
|
|
|
acpi_remove_fixed_event_handler(ACPI_EVENT_SLEEP_BUTTON,
|
|
|
- acpi_device_notify_fixed);
|
|
|
+ acpi_device_fixed_event);
|
|
|
else
|
|
|
acpi_remove_notify_handler(device->handle, ACPI_DEVICE_NOTIFY,
|
|
|
acpi_device_notify);
|