From: Rafael J. Wysocki Date: Fri, 8 May 2026 17:43:13 +0000 (+0200) Subject: platform/x86: xo15-ebook: Register ACPI notify handler directly X-Git-Url: http://git.ipfire.org/gitweb/index.cgi?a=commitdiff_plain;h=60e68011d8ecdb3071cc7713e05750e6b08aec12;p=thirdparty%2Fkernel%2Flinux.git platform/x86: xo15-ebook: Register ACPI notify handler directly 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 Link: https://patch.msgid.link/3420768.aeNJFYEL58@rafael.j.wysocki Reviewed-by: Ilpo Järvinen Signed-off-by: Ilpo Järvinen --- diff --git a/drivers/platform/x86/xo15-ebook.c b/drivers/platform/x86/xo15-ebook.c index 616f4bb3461ae..8af1b9078db80 100644 --- a/drivers/platform/x86/xo15-ebook.c +++ b/drivers/platform/x86/xo15-ebook.c @@ -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, };