Re: [PATCH v1 3/4] platform/x86: xo15-ebook: Register ACPI notify handler directly
From: Rafael J. Wysocki
Date: Mon May 11 2026 - 10:55:19 EST
On Mon, May 11, 2026 at 3:59 PM Ilpo Järvinen
<ilpo.jarvinen@xxxxxxxxxxxxxxx> wrote:
>
> On Fri, 8 May 2026, Rafael J. Wysocki wrote:
>
> > From: "Rafael J. Wysocki" <rafael.j.wysocki@xxxxxxxxx>
> >
> > 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@xxxxxxxxx>
> > ---
> > drivers/platform/x86/xo15-ebook.c | 19 ++++++++++++++-----
> > 1 file changed, 14 insertions(+), 5 deletions(-)
> >
> > diff --git a/drivers/platform/x86/xo15-ebook.c b/drivers/platform/x86/xo15-ebook.c
> > index 616f4bb3461a..8af1b9078db8 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 @@ static int ebook_switch_add(struct acpi_device *device)
> > err_free_button:
> > kfree(button);
> > return error;
> > +
> > +err_unregister_input:
> > + input_unregister_device(input);
> > + goto err_free_button;
>
> The end result would be much simpler if there would be patch 5 to convert
> to devm_*().
Well, I can add one.
Do you want me to resend an update of the series for this?
> > }
> >
> > 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,
> > };
> >
> >
> >
>
> --