]> git.ipfire.org Git - thirdparty/linux.git/commitdiff
platform/x86: xo15-ebook: Register ACPI notify handler directly
authorRafael J. Wysocki <rafael.j.wysocki@intel.com>
Fri, 8 May 2026 17:43:13 +0000 (19:43 +0200)
committerIlpo Järvinen <ilpo.jarvinen@linux.intel.com>
Mon, 11 May 2026 16:10:10 +0000 (19:10 +0300)
To facilitate subsequent conversion of the driver to a platform one,
make it install an ACPI notify handler directly instead of using
a .notify() callback in struct acpi_driver.

No intentional functional impact.

Signed-off-by: Rafael J. Wysocki <rafael.j.wysocki@intel.com>
Link: https://patch.msgid.link/3420768.aeNJFYEL58@rafael.j.wysocki
Reviewed-by: Ilpo Järvinen <ilpo.jarvinen@linux.intel.com>
Signed-off-by: Ilpo Järvinen <ilpo.jarvinen@linux.intel.com>
drivers/platform/x86/xo15-ebook.c

index 616f4bb3461aec4c3c77d34985f4f1d029524f99..8af1b9078db80f8dec520a841aaa7895286d618f 100644 (file)
@@ -57,16 +57,15 @@ static int ebook_send_state(struct acpi_device *device)
        return 0;
 }
 
-static void ebook_switch_notify(struct acpi_device *device, u32 event)
+static void ebook_switch_notify(acpi_handle handle, u32 event, void *data)
 {
        switch (event) {
        case ACPI_FIXED_HARDWARE_EVENT:
        case XO15_EBOOK_NOTIFY_STATUS:
-               ebook_send_state(device);
+               ebook_send_state(data);
                break;
        default:
-               acpi_handle_debug(device->handle,
-                                 "Unsupported event [0x%x]\n", event);
+               acpi_handle_debug(handle, "Unsupported event [0x%x]\n", event);
                break;
        }
 }
@@ -123,6 +122,11 @@ static int ebook_switch_add(struct acpi_device *device)
        if (error)
                goto err_free_input;
 
+       error = acpi_dev_install_notify_handler(device, ACPI_DEVICE_NOTIFY,
+                                               ebook_switch_notify, device);
+       if (error)
+               goto err_unregister_input;
+
        ebook_send_state(device);
 
        if (device->wakeup.flags.valid) {
@@ -139,6 +143,10 @@ err_free_input:
 err_free_button:
        kfree(button);
        return error;
+
+err_unregister_input:
+       input_unregister_device(input);
+       goto err_free_button;
 }
 
 static void ebook_switch_remove(struct acpi_device *device)
@@ -149,6 +157,8 @@ static void ebook_switch_remove(struct acpi_device *device)
                acpi_disable_gpe(device->wakeup.gpe_device,
                                 device->wakeup.gpe_number);
 
+       acpi_dev_remove_notify_handler(device, ACPI_DEVICE_NOTIFY,
+                                      ebook_switch_notify);
        input_unregister_device(button->input);
        kfree(button);
 }
@@ -160,7 +170,6 @@ static struct acpi_driver xo15_ebook_driver = {
        .ops = {
                .add = ebook_switch_add,
                .remove = ebook_switch_remove,
-               .notify = ebook_switch_notify,
        },
        .drv.pm = &ebook_switch_pm,
 };