ACPI: bus: Simplify installation and removal of notify callback
authorRafael J. Wysocki <rafael.j.wysocki@intel.com>
Sun, 4 Jun 2023 15:23:40 +0000 (17:23 +0200)
committerRafael J. Wysocki <rafael.j.wysocki@intel.com>
Fri, 16 Jun 2023 17:48:09 +0000 (19:48 +0200)
Because the only drivers that cared about button fixed events take care
of those events by themselves now, eliminate the code related to them
from acpi_device_install_notify_handler() and
acpi_device_remove_notify_handler().

Signed-off-by: Rafael J. Wysocki <rafael.j.wysocki@intel.com>
drivers/acpi/bus.c

index d161ff707de4a6ca4193c96afc53c1b2c7944950..b6ab3608d782ca71ae12e71b79e05d99d4f71f9f 100644 (file)
@@ -530,65 +530,30 @@ static void acpi_notify_device(acpi_handle handle, u32 event, void *data)
        acpi_drv->ops.notify(device, event);
 }
 
-static void acpi_notify_device_fixed(void *data)
-{
-       struct acpi_device *device = data;
-
-       /* Fixed hardware devices have no handles */
-       acpi_notify_device(NULL, ACPI_FIXED_HARDWARE_EVENT, device);
-}
-
-static u32 acpi_device_fixed_event(void *data)
-{
-       acpi_os_execute(OSL_NOTIFY_HANDLER, acpi_notify_device_fixed, data);
-       return ACPI_INTERRUPT_HANDLED;
-}
-
 static int acpi_device_install_notify_handler(struct acpi_device *device,
                                              struct acpi_driver *acpi_drv)
 {
-       acpi_status status;
-
-       if (device->device_type == ACPI_BUS_TYPE_POWER_BUTTON) {
-               status =
-                   acpi_install_fixed_event_handler(ACPI_EVENT_POWER_BUTTON,
-                                                    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_fixed_event,
-                                                    device);
-       } else {
-               u32 type = acpi_drv->flags & ACPI_DRIVER_ALL_NOTIFY_EVENTS ?
+       u32 type = acpi_drv->flags & ACPI_DRIVER_ALL_NOTIFY_EVENTS ?
                                ACPI_ALL_NOTIFY : ACPI_DEVICE_NOTIFY;
+       acpi_status status;
 
-               status = acpi_install_notify_handler(device->handle, type,
-                                                    acpi_notify_device,
-                                                    device);
-       }
-
+       status = acpi_install_notify_handler(device->handle, type,
+                                            acpi_notify_device, device);
        if (ACPI_FAILURE(status))
                return -EINVAL;
+
        return 0;
 }
 
 static void acpi_device_remove_notify_handler(struct acpi_device *device,
                                              struct acpi_driver *acpi_drv)
 {
-       if (device->device_type == ACPI_BUS_TYPE_POWER_BUTTON) {
-               acpi_remove_fixed_event_handler(ACPI_EVENT_POWER_BUTTON,
-                                               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_fixed_event);
-       } else {
-               u32 type = acpi_drv->flags & ACPI_DRIVER_ALL_NOTIFY_EVENTS ?
+       u32 type = acpi_drv->flags & ACPI_DRIVER_ALL_NOTIFY_EVENTS ?
                                ACPI_ALL_NOTIFY : ACPI_DEVICE_NOTIFY;
 
-               acpi_remove_notify_handler(device->handle, type,
-                                          acpi_notify_device);
-       }
+       acpi_remove_notify_handler(device->handle, type,
+                                  acpi_notify_device);
+
        acpi_os_wait_events_complete();
 }