From: Rafael J. Wysocki Date: Thu, 5 Mar 2026 19:43:59 +0000 (+0100) Subject: platform/chrome: wilco_ec: event: Register ACPI notify handler X-Git-Tag: v7.1-rc1~159^2~3 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=25a06b7a3224161cf4b27049bea93cac21136460;p=thirdparty%2Fkernel%2Fstable.git platform/chrome: wilco_ec: event: Register ACPI notify handler 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://lore.kernel.org/r/7931926.EvYhyI6sBW@rafael.j.wysocki Signed-off-by: Tzung-Bi Shih --- diff --git a/drivers/platform/chrome/wilco_ec/event.c b/drivers/platform/chrome/wilco_ec/event.c index 743cd4839bff6..f4500dd05f933 100644 --- a/drivers/platform/chrome/wilco_ec/event.c +++ b/drivers/platform/chrome/wilco_ec/event.c @@ -253,14 +253,16 @@ static int enqueue_events(struct acpi_device *adev, const u8 *buf, u32 length) /** * event_device_notify() - Callback when EC generates an event over ACPI. - * @adev: The device that the event is coming from. + * @handle: ACPI handle of the device that the event is coming from. * @value: Value passed to Notify() in ACPI. + * @data: Notify handler data. * * This function will read the events from the device and enqueue them. */ -static void event_device_notify(struct acpi_device *adev, u32 value) +static void event_device_notify(acpi_handle handle, u32 value, void *data) { struct acpi_buffer event_buffer = { ACPI_ALLOCATE_BUFFER, NULL }; + struct acpi_device *adev = data; union acpi_object *obj; acpi_status status; @@ -489,8 +491,16 @@ static int event_device_add(struct acpi_device *adev) if (error) goto free_dev_data; + /* Install an ACPI notify handler. */ + error = acpi_dev_install_notify_handler(adev, ACPI_DEVICE_NOTIFY, + event_device_notify, adev); + if (error) + goto free_cdev; + return 0; +free_cdev: + cdev_device_del(&dev_data->cdev, &dev_data->dev); free_dev_data: hangup_device(dev_data); free_minor: @@ -502,6 +512,8 @@ static void event_device_remove(struct acpi_device *adev) { struct event_device_data *dev_data = adev->driver_data; + acpi_dev_remove_notify_handler(adev, ACPI_DEVICE_NOTIFY, + event_device_notify); cdev_device_del(&dev_data->cdev, &dev_data->dev); ida_free(&event_ida, MINOR(dev_data->dev.devt)); hangup_device(dev_data); @@ -519,7 +531,6 @@ static struct acpi_driver event_driver = { .ids = event_acpi_ids, .ops = { .add = event_device_add, - .notify = event_device_notify, .remove = event_device_remove, }, };