mirror of https://lore.kernel.org/lkml/
 help / color / mirror / Atom feed
From: Jonathan Cameron <jic23@kernel.org>
To: Svyatoslav Ryhel <clamor95@gmail.com>
Cc: "David Lechner" <dlechner@baylibre.com>,
	"Nuno Sá" <nuno.sa@analog.com>,
	"Andy Shevchenko" <andy@kernel.org>,
	"Rob Herring" <robh@kernel.org>,
	"Krzysztof Kozlowski" <krzk+dt@kernel.org>,
	"Conor Dooley" <conor+dt@kernel.org>,
	"Esben Haabendal" <esben@geanix.com>,
	"Kuppuswamy Sathyanarayanan"
	<sathyanarayanan.kuppuswamy@linux.intel.com>,
	"Uwe Kleine-König (The Capable Hub)"
	<u.kleine-koenig@baylibre.com>, "Pan Chuang" <panchuang@vivo.com>,
	"Hemanth Selam" <hemanth.selam@gmail.com>,
	"Antoniu Miclaus" <antoniu.miclaus@analog.com>,
	"Nikita Travkin" <nikita@trvn.ru>,
	linux-iio@vger.kernel.org, devicetree@vger.kernel.org,
	linux-kernel@vger.kernel.org
Subject: Re: [PATCH v2 2/4] iio: light: ltr501: Switch to modern match mechanism
Date: Sat, 7 Nov 2026 03:30:29 +0000	[thread overview]
Message-ID: <20261107033029.0b2d3ee1@jic23-hlaptop> (raw)
In-Reply-To: <20261106091943.35783-3-clamor95@gmail.com>

On Fri,  6 Nov 2026 11:19:41 +0200
Svyatoslav Ryhel <clamor95@gmail.com> wrote:

> Remove the chip enum, break the chip list structure into individual
> elements, and pass each element using i2c_get_match_data().

Sashiko calls out that for ACPI this results in an ABI change.
The original code did the ABI wrong but that unfortunately doesn't
mean we can change this one as it is an artefact of a time when
we weren't so careful about those names.

So you'll need to put special handling back in for the ACPI parts
and that name. Some other things in the existing code noted inline
that would be nice to clean up whilst you are here.

> 
> Signed-off-by: Svyatoslav Ryhel <clamor95@gmail.com>
> ---
>  drivers/iio/light/ltr501.c | 165 +++++++++++++++++--------------------
>  1 file changed, 74 insertions(+), 91 deletions(-)
> 
> diff --git a/drivers/iio/light/ltr501.c b/drivers/iio/light/ltr501.c
> index cc5d7af44d77c..d5ce6468a229b 100644
> --- a/drivers/iio/light/ltr501.c
> +++ b/drivers/iio/light/ltr501.c

> +static const struct ltr501_chip_info ltr301_chip_info_tbl = {
> +	.partid = 0x08,
> +	.als_gain = ltr501_als_gain_tbl,
> +	.als_gain_tbl_size = ARRAY_SIZE(ltr501_als_gain_tbl),
> +	.als_mode_active = BIT(0) | BIT(1),
> +	.als_gain_mask = BIT(3),
> +	.als_gain_shift = 3,
> +	.channels = ltr301_channels,
> +	.no_channels = ARRAY_SIZE(ltr301_channels),
> +};
> +
> +static const struct ltr501_chip_info ltr303_chip_info_tbl = {
> +	.partid = 0x0A,
> +	.als_gain = ltr559_als_gain_tbl,
> +	.als_gain_tbl_size = ARRAY_SIZE(ltr559_als_gain_tbl),
> +	.als_mode_active = BIT(0),
> +	.als_gain_mask = BIT(2) | BIT(3) | BIT(4),
> +	.als_gain_shift = 2,
> +	.channels = ltr301_channels,
> +	.no_channels = ARRAY_SIZE(ltr301_channels),
> +};
> +
> +static const struct ltr501_chip_info ltr329_chip_info_tbl = {
> +	.partid = 0x0A,
> +	.als_gain = ltr559_als_gain_tbl,
> +	.als_gain_tbl_size = ARRAY_SIZE(ltr559_als_gain_tbl),
> +	.als_mode_active = BIT(0),
> +	.als_gain_mask = BIT(2) | BIT(3) | BIT(4),

As below.  Same for all the others.  That would be a separate
cleanup patch though -> perhaps do it with getting rid of
the als_gain_shift.

> +	.als_gain_shift = 2,
> +	.no_irq_support = true,
> +	.channels = ltr301_channels,
> +	.no_channels = ARRAY_SIZE(ltr301_channels),
> +};
> +
> +static const struct ltr501_chip_info ltr501_chip_info_tbl = {
> +	.partid = 0x08,
> +	.als_gain = ltr501_als_gain_tbl,
> +	.als_gain_tbl_size = ARRAY_SIZE(ltr501_als_gain_tbl),
> +	.ps_gain = ltr501_ps_gain_tbl,
> +	.ps_gain_tbl_size = ARRAY_SIZE(ltr501_ps_gain_tbl),
> +	.als_mode_active = BIT(0) | BIT(1),
As below
> +	.als_gain_mask = BIT(3),
> +	.als_gain_shift = 3,
> +	.channels = ltr501_channels,
> +	.no_channels = ARRAY_SIZE(ltr501_channels),
> +};
> +
> +static const struct ltr501_chip_info ltr559_chip_info_tbl = {
> +	.partid = 0x09,
> +	.als_gain = ltr559_als_gain_tbl,
> +	.als_gain_tbl_size = ARRAY_SIZE(ltr559_als_gain_tbl),
> +	.ps_gain = ltr559_ps_gain_tbl,
> +	.ps_gain_tbl_size = ARRAY_SIZE(ltr559_ps_gain_tbl),
> +	.als_mode_active = BIT(0),
> +	.als_gain_mask = BIT(2) | BIT(3) | BIT(4),
Is it really 3 separate bits, or GENMASK(4, 2) to
represent a 3 bit shift?  

Whilst you are touching the driver can we get rid of the
separate shift by using field_prep() field_get() using
just the mask?

> +	.als_gain_shift = 2,
> +	.channels = ltr501_channels,
> +	.no_channels = ARRAY_SIZE(ltr501_channels),
>  };
>  
>  static int ltr501_write_contr(struct ltr501_data *data, u8 als_val, u8 ps_val)
> @@ -1393,14 +1387,11 @@ static int ltr501_powerdown(struct ltr501_data *data)
>  
>  static int ltr501_probe(struct i2c_client *client)
>  {
> -	const struct i2c_device_id *id = i2c_client_get_device_id(client);
>  	static const char * const regulator_names[] = { "vdd", "vddio" };
>  	struct ltr501_data *data;
>  	struct iio_dev *indio_dev;
>  	struct regmap *regmap;
> -	const void *ddata = NULL;
> -	int partid, chip_idx;
> -	const char *name;
> +	int partid;
>  	int ret;
>  
>  	indio_dev = devm_iio_device_alloc(&client->dev, sizeof(*data));
> @@ -1480,18 +1471,10 @@ static int ltr501_probe(struct i2c_client *client)
>  	if (ret < 0)
>  		return ret;
>  
> -	if (id) {
> -		name = id->name;
> -		chip_idx = id->driver_data;
> -	} else {
> -		name = iio_get_acpi_device_name_and_data(&client->dev, &ddata);
> -		chip_idx = (intptr_t)ddata;
> -	}
> -	if (!name)
> +	data->chip_info = i2c_get_match_data(client);
> +	if (!data->chip_info)
>  		return -ENODEV;

As above. Unfortunately at this point we'll still need to
do some special handling to match the existing indio_dev->name.

>  
> -	data->chip_info = &ltr501_chip_info_tbl[chip_idx];
> -
>  	if ((partid >> 4) != data->chip_info->partid)
>  		return -ENODEV;
>  
> @@ -1502,7 +1485,7 @@ static int ltr501_probe(struct i2c_client *client)
>  	indio_dev->info = &ltr501_info;
>  	indio_dev->channels = data->chip_info->channels;
>  	indio_dev->num_channels = data->chip_info->no_channels;
> -	indio_dev->name = name;
> +	indio_dev->name = client->name;
>  	indio_dev->modes = INDIO_DIRECT_MODE;
>  

  reply	other threads:[~2026-11-07  3:30 UTC|newest]

Thread overview: 9+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2026-11-06  9:19 [PATCH v2 0/4] iio: light: ltr501: Add LTR-659PS-01 prox sensor support Svyatoslav Ryhel
2026-11-06  9:19 ` [PATCH v2 1/4] iio: light: ltr501: Switch to read_avail() op from manual attribute registration Svyatoslav Ryhel
2026-11-07  3:20   ` Jonathan Cameron
2026-11-06  9:19 ` [PATCH v2 2/4] iio: light: ltr501: Switch to modern match mechanism Svyatoslav Ryhel
2026-11-07  3:30   ` Jonathan Cameron [this message]
2026-11-06  9:19 ` [PATCH v2 3/4] dt-bindings: iio: light: ltr501: Document LTR659 proximity sensor Svyatoslav Ryhel
2026-11-06 17:31   ` Conor Dooley
2026-11-06  9:19 ` [PATCH v2 4/4] iio: light: ltr501: Add support for the LTR-659PS-01 " Svyatoslav Ryhel
2026-11-07  3:33   ` Jonathan Cameron

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=20261107033029.0b2d3ee1@jic23-hlaptop \
    --to=jic23@kernel.org \
    --cc=andy@kernel.org \
    --cc=antoniu.miclaus@analog.com \
    --cc=clamor95@gmail.com \
    --cc=conor+dt@kernel.org \
    --cc=devicetree@vger.kernel.org \
    --cc=dlechner@baylibre.com \
    --cc=esben@geanix.com \
    --cc=hemanth.selam@gmail.com \
    --cc=krzk+dt@kernel.org \
    --cc=linux-iio@vger.kernel.org \
    --cc=linux-kernel@vger.kernel.org \
    --cc=nikita@trvn.ru \
    --cc=nuno.sa@analog.com \
    --cc=panchuang@vivo.com \
    --cc=robh@kernel.org \
    --cc=sathyanarayanan.kuppuswamy@linux.intel.com \
    --cc=u.kleine-koenig@baylibre.com \
    /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 a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox

all inboxes | Powered by JetHome®