All of lore.kernel.org
 help / color / mirror / Atom feed
From: Jonathan Cameron <jic23@kernel.org>
To: Michal Wilczynski <michal.wilczynski@intel.com>
Cc: Lars-Peter Clausen <lars@metafoo.de>,
	linux-iio@vger.kernel.org, linux-acpi@vger.kernel.org,
	platform-driver-x86@vger.kernel.org, rafael@kernel.org
Subject: Re: [PATCH v4 11/35] iio/acpi-als: Move handler installing logic to driver
Date: Sun, 4 Jun 2023 11:53:35 +0100	[thread overview]
Message-ID: <20230604115335.0e66ca2f@jic23-huawei> (raw)
In-Reply-To: <20230601131739.300760-12-michal.wilczynski@intel.com>

On Thu,  1 Jun 2023 15:17:14 +0200
Michal Wilczynski <michal.wilczynski@intel.com> wrote:

> Currently logic for installing notifications from ACPI devices is
> implemented using notify callback in struct acpi_driver. Preparations
> are being made to replace acpi_driver with more generic struct
> platform_driver, which doesn't contain notify callback. Furthermore
> as of now handlers are being called indirectly through
> acpi_notify_device(), which decreases performance.
> 
> Call acpi_device_install_event_handler() at the end of .add() callback.
> Call acpi_device_remove_event_handler() at the beginning of .remove()
> callback. Change arguments passed to the notify callback to match with
> what's required by acpi_device_install_event_handler().
> 
> Signed-off-by: Michal Wilczynski <michal.wilczynski@intel.com>
Hi Michal,

Comments inline.

> ---
>  drivers/iio/light/acpi-als.c | 23 ++++++++++++++++++-----
>  1 file changed, 18 insertions(+), 5 deletions(-)
> 
> diff --git a/drivers/iio/light/acpi-als.c b/drivers/iio/light/acpi-als.c
> index 2d91caf24dd0..5e200c6d91bc 100644
> --- a/drivers/iio/light/acpi-als.c
> +++ b/drivers/iio/light/acpi-als.c
> @@ -100,10 +100,14 @@ static int acpi_als_read_value(struct acpi_als *als, char *prop, s32 *val)
>  	return 0;
>  }
>  
> -static void acpi_als_notify(struct acpi_device *device, u32 event)
> +static void acpi_als_notify(acpi_handle handle, u32 event, void *data)
>  {
> -	struct iio_dev *indio_dev = acpi_driver_data(device);
> -	struct acpi_als *als = iio_priv(indio_dev);
> +	struct acpi_device *device = data;
> +	struct iio_dev *indio_dev;
> +	struct acpi_als *als;
> +
> +	indio_dev = acpi_driver_data(device);
> +	als = iio_priv(indio_dev);

Not particularly important, but I'd have kept to existing style

	struct acpi_device *device = data;
	struct iio_dev *indio_dev = acpi_driver_data(device);
	struct acpi_als *als = iio_priv(indio_dev);

Less churn that way.

>  
>  	if (iio_buffer_enabled(indio_dev) && iio_trigger_using_own(indio_dev)) {
>  		switch (event) {
> @@ -225,7 +229,16 @@ static int acpi_als_add(struct acpi_device *device)
>  	if (ret)
>  		return ret;
>  
> -	return devm_iio_device_register(dev, indio_dev);
> +	ret = devm_iio_device_register(dev, indio_dev);
> +	if (ret)
> +		return ret;
> +
> +	return acpi_device_install_event_handler(device, ACPI_DEVICE_NOTIFY, acpi_als_notify);

Prefer to keep to a fully devm managed flow for removal

So use a devm_add_action_or_reset() to unwind this rather than adding a remove()
callback.

Obviously ordering is the same currently but that may change if this driver
is modified in future and it's a lot easier to get that right if fully devm
(or fully not).

Jonathan

> +}
> +
> +static void acpi_als_remove(struct acpi_device *device)
> +{
> +	acpi_device_remove_event_handler(device, ACPI_DEVICE_NOTIFY, acpi_als_notify);
>  }
>  
>  static const struct acpi_device_id acpi_als_device_ids[] = {
> @@ -241,7 +254,7 @@ static struct acpi_driver acpi_als_driver = {
>  	.ids	= acpi_als_device_ids,
>  	.ops = {
>  		.add	= acpi_als_add,
> -		.notify	= acpi_als_notify,
> +		.remove = acpi_als_remove,
>  	},
>  };
>  


  reply	other threads:[~2023-06-04 10:53 UTC|newest]

Thread overview: 44+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2023-06-01 13:17 [PATCH v4 02/35] acpi/ac: Move handler installing logic to driver Michal Wilczynski
2023-06-01 13:17 ` [PATCH v4 03/35] acpi/video: " Michal Wilczynski
2023-06-01 13:17 ` [PATCH v4 04/35] acpi/battery: " Michal Wilczynski
2023-06-01 13:17 ` [PATCH v4 05/35] acpi/button: " Michal Wilczynski
2023-06-01 13:17 ` [PATCH v4 06/35] acpi/hed: " Michal Wilczynski
2023-06-01 13:17 ` [PATCH v4 07/35] acpi/nfit: " Michal Wilczynski
2023-06-01 13:17 ` [PATCH v4 08/35] acpi/thermal: " Michal Wilczynski
2023-06-01 13:17 ` [PATCH v4 09/35] acpi/tiny-power-button: " Michal Wilczynski
2023-06-01 13:17 ` [PATCH v4 10/35] hwmon/acpi_power_meter: " Michal Wilczynski
2023-06-01 13:51   ` Guenter Roeck
2023-06-01 13:17 ` [PATCH v4 11/35] iio/acpi-als: " Michal Wilczynski
2023-06-04 10:53   ` Jonathan Cameron [this message]
2023-06-01 13:17 ` [PATCH v4 12/35] platform/chromeos_tbmc: " Michal Wilczynski
2023-06-01 13:17 ` [PATCH v4 13/35] platform/wilco_ec: " Michal Wilczynski
2023-06-01 13:17 ` [PATCH v4 14/35] platform/surface/button: " Michal Wilczynski
2023-06-01 13:17 ` [PATCH v4 15/35] platform/x86/acer-wireless: " Michal Wilczynski
2023-06-01 13:17 ` [PATCH v4 16/35] platform/x86/asus-laptop: " Michal Wilczynski
2023-06-01 13:17 ` [PATCH v4 17/35] platform/x86/asus-wireless: " Michal Wilczynski
2023-06-02 13:09   ` Ilpo Järvinen
2023-06-02 13:16     ` Wilczynski, Michal
2023-06-01 13:17 ` [PATCH v4 18/35] platform/x86/classmate-laptop: " Michal Wilczynski
2023-06-02 10:29   ` Thadeu Lima de Souza Cascardo
2023-06-02 13:25     ` Wilczynski, Michal
2023-06-01 13:17 ` [PATCH v4 19/35] platform/x86/dell/dell-rbtn: " Michal Wilczynski
2023-06-02 13:20   ` Ilpo Järvinen
2023-06-02 13:41     ` Wilczynski, Michal
2023-06-02 14:01       ` Ilpo Järvinen
2023-06-01 13:17 ` [PATCH v4 20/35] platform/x86/eeepc-laptop: " Michal Wilczynski
2023-06-02 13:24   ` Ilpo Järvinen
2023-06-01 13:17 ` [PATCH v4 21/35] platform/x86/fujitsu-laptop: " Michal Wilczynski
2023-06-02 13:30   ` Ilpo Järvinen
2023-06-02 13:49     ` Wilczynski, Michal
2023-06-02 13:55       ` Ilpo Järvinen
2023-06-01 13:17 ` [PATCH v4 22/35] platform/x86/lg-laptop: " Michal Wilczynski
2023-06-01 13:17 ` [PATCH v4 23/35] platform/x86/panasonic-laptop: " Michal Wilczynski
2023-06-01 13:17 ` [PATCH v4 24/35] platform/x86/system76_acpi: " Michal Wilczynski
2023-06-01 13:17 ` [PATCH v4 25/35] platform/x86/topstar-laptop: " Michal Wilczynski
2023-06-01 13:17 ` [PATCH v4 26/35] platform/x86/toshiba_acpi: " Michal Wilczynski
2023-06-01 13:17 ` [PATCH v4 27/35] platform/x86/toshiba_bluetooth: " Michal Wilczynski
2023-06-01 13:17 ` [PATCH v4 28/35] platform/x86/toshiba_haps: " Michal Wilczynski
2023-06-01 13:17 ` [PATCH v4 29/35] platform/x86/wireless-hotkey: " Michal Wilczynski
2023-06-01 13:17 ` [PATCH v4 30/35] platform/x86/xo15-ebook: " Michal Wilczynski
2023-06-01 13:17 ` [PATCH v4 31/35] platform/x86/sony-laptop: " Michal Wilczynski
2023-06-01 13:17 ` [PATCH v4 32/35] virt/vmgenid: " Michal Wilczynski

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=20230604115335.0e66ca2f@jic23-huawei \
    --to=jic23@kernel.org \
    --cc=lars@metafoo.de \
    --cc=linux-acpi@vger.kernel.org \
    --cc=linux-iio@vger.kernel.org \
    --cc=michal.wilczynski@intel.com \
    --cc=platform-driver-x86@vger.kernel.org \
    --cc=rafael@kernel.org \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.