Devicetree
 help / color / mirror / Atom feed
From: Jonathan Cameron <jic23@kernel.org>
To: Piyush Patle <piyushpatle228@gmail.com>
Cc: ak@it-klinger.de, andriy.shevchenko@linux.intel.com,
	dlechner@baylibre.com, nuno.sa@analog.com, robh@kernel.org,
	krzk+dt@kernel.org, conor+dt@kernel.org,
	linux-iio@vger.kernel.org, devicetree@vger.kernel.org,
	linux-kernel@vger.kernel.org
Subject: Re: [PATCH v8 v8 06/11] iio: adc: hx711: introduce hx711_chip_info structure
Date: Tue, 12 May 2026 13:19:05 +0100	[thread overview]
Message-ID: <20260512131905.42c35224@jic23-huawei> (raw)
In-Reply-To: <20260511174342.123820-7-piyushpatle228@gmail.com>

On Mon, 11 May 2026 23:13:31 +0530
Piyush Patle <piyushpatle228@gmail.com> wrote:

> Add a per-variant static configuration structure and populate the IIO
> device fields from it at probe time.
> 
> This is a preparatory change for adding support for more HX711-compatible
> hardware variants without duplicating the probe-time setup.
> 
> No functional change for existing HX711 users.
> 
> Signed-off-by: Piyush Patle <piyushpatle228@gmail.com>
> Reviewed-by: Andy Shevchenko <andriy.shevchenko@intel.com>

Mostly for my reference when v8 sashiko comes in - there was feedback on this
in v7 but it was something we don't care about - in a driver that supports
multiple parts - if someone is using the legacy path to force a driver match
we can't do the right thing - guessing it is an hx711 is not appropriate.

Given it is vanishingly unlikely (famous last words) anyone is using that
path with a device like this one (who isn't a developer who can easily fix
that) let us merge this and see if anyone screams before trying to
deal with that case.

I'm going to hold off for now though as waiting on v8 sashiko review of the
rest of the series.

Jonathan

> ---
>  drivers/iio/adc/hx711.c | 41 ++++++++++++++++++++++++++++++++++++-----
>  1 file changed, 36 insertions(+), 5 deletions(-)
> 
> diff --git a/drivers/iio/adc/hx711.c b/drivers/iio/adc/hx711.c
> index 86d2a70dd3de..10ccc69f209b 100644
> --- a/drivers/iio/adc/hx711.c
> +++ b/drivers/iio/adc/hx711.c
> @@ -4,6 +4,8 @@
>   *
>   * Copyright (c) 2016 Andreas Klinger <ak@it-klinger.de>
>   */
> +#include <linux/array_size.h>
> +#include <linux/dev_printk.h>
>  #include <linux/err.h>
>  #include <linux/kernel.h>
>  #include <linux/module.h>
> @@ -74,6 +76,20 @@ static int hx711_get_scale_to_gain(const int *gain_scale, int scale)
>  	return -EINVAL;
>  }
>  
> +/**
> + * struct hx711_chip_info - per-variant static configuration
> + * @name: IIO device name
> + * @channels: channel specification array
> + * @num_channels: number of entries in @channels
> + * @iio_info: IIO info ops for this variant
> + */
> +struct hx711_chip_info {
> +	const char			*name;
> +	const struct iio_chan_spec	*channels __counted_by_ptr(num_channels);
> +	unsigned int			num_channels;
> +	const struct iio_info		*iio_info;
> +};
> +
>  struct hx711_data {
>  	struct device		*dev;
>  	struct gpio_desc	*gpiod_pd_sck;
> @@ -81,6 +97,7 @@ struct hx711_data {
>  	int			gain_set;	/* gain set on device */
>  	int			gain_chan_a;	/* gain for channel A */
>  	int			gain_scale[HX711_GAIN_MAX];
> +	const struct hx711_chip_info	*chip_info;
>  	struct mutex		lock;
>  	/*
>  	 * triggered buffer
> @@ -456,8 +473,16 @@ static const struct iio_chan_spec hx711_chan_spec[] = {
>  	IIO_CHAN_SOFT_TIMESTAMP(2),
>  };
>  
> +static const struct hx711_chip_info hx711_chip = {
> +	.name		= "hx711",
> +	.channels	= hx711_chan_spec,
> +	.iio_info	= &hx711_iio_info,
> +	.num_channels	= ARRAY_SIZE(hx711_chan_spec),
> +};
> +
>  static int hx711_probe(struct platform_device *pdev)
>  {
> +	const struct hx711_chip_info *chip_info;
>  	struct device *dev = &pdev->dev;
>  	struct hx711_data *hx711_data;
>  	struct iio_dev *indio_dev;
> @@ -473,6 +498,12 @@ static int hx711_probe(struct platform_device *pdev)
>  
>  	mutex_init(&hx711_data->lock);
>  
> +	chip_info = device_get_match_data(dev);
> +	if (!chip_info)
> +		return dev_err_probe(dev, -ENODEV, "missing driver data\n");
> +
> +	hx711_data->chip_info = chip_info;
> +
>  	/*
>  	 * PD_SCK stands for power down and serial clock input of HX711
>  	 * in the driver it is an output
> @@ -534,11 +565,11 @@ static int hx711_probe(struct platform_device *pdev)
>  	hx711_data->data_ready_delay_ns =
>  				1000000000 / hx711_data->clock_frequency;
>  
> -	indio_dev->name = "hx711";
> -	indio_dev->info = &hx711_iio_info;
> +	indio_dev->name = chip_info->name;
> +	indio_dev->info = chip_info->iio_info;
>  	indio_dev->modes = INDIO_DIRECT_MODE;
> -	indio_dev->channels = hx711_chan_spec;
> -	indio_dev->num_channels = ARRAY_SIZE(hx711_chan_spec);
> +	indio_dev->channels = chip_info->channels;
> +	indio_dev->num_channels = chip_info->num_channels;
>  
>  	ret = devm_iio_triggered_buffer_setup(dev, indio_dev,
>  					      iio_pollfunc_store_time,
> @@ -555,7 +586,7 @@ static int hx711_probe(struct platform_device *pdev)
>  }
>  
>  static const struct of_device_id of_hx711_match[] = {
> -	{ .compatible = "avia,hx711", },
> +	{ .compatible = "avia,hx711", .data = &hx711_chip },
>  	{ }
>  };
>  


  reply	other threads:[~2026-05-12 12:19 UTC|newest]

Thread overview: 21+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2026-05-11 17:43 [PATCH v8 00/11] iio: adc: hx711: add HX710B support Piyush Patle
2026-05-11 17:43 ` [PATCH v8 v8 01/11] dt-bindings: iio: adc: hx711: clean up existing binding text Piyush Patle
2026-05-12 12:05   ` Jonathan Cameron
2026-05-11 17:43 ` [PATCH v8 v8 02/11] dt-bindings: iio: adc: hx711: add VSUP supply property Piyush Patle
2026-05-12 12:06   ` Jonathan Cameron
2026-05-12 12:08     ` Jonathan Cameron
2026-05-11 17:43 ` [PATCH v8 v8 03/11] dt-bindings: iio: adc: hx711: add RATE GPIO property Piyush Patle
2026-05-12 12:08   ` Jonathan Cameron
2026-05-11 17:43 ` [PATCH v8 v8 04/11] dt-bindings: iio: adc: hx711: add HX710B support Piyush Patle
2026-05-12 12:13   ` Jonathan Cameron
2026-05-11 17:43 ` [PATCH v8 v8 05/11] iio: adc: hx711: move scale computation to per-device storage Piyush Patle
2026-05-12 12:14   ` Jonathan Cameron
2026-05-11 17:43 ` [PATCH v8 v8 06/11] iio: adc: hx711: introduce hx711_chip_info structure Piyush Patle
2026-05-12 12:19   ` Jonathan Cameron [this message]
2026-05-11 17:43 ` [PATCH v8 v8 07/11] iio: adc: hx711: pass trailing pulse count into hx711_read Piyush Patle
2026-05-11 17:43 ` [PATCH v8 v8 08/11] iio: adc: hx711: split variable assignments in hx711_read and hx711_reset Piyush Patle
2026-05-11 17:43 ` [PATCH v8 v8 09/11] iio: adc: hx711: localize loop iterators in hx711_read Piyush Patle
2026-05-11 17:43 ` [PATCH v8 v8 10/11] iio: adc: hx711: pass iio_chan_spec to hx711_reset_read Piyush Patle
2026-05-12 12:21   ` Jonathan Cameron
2026-05-11 17:43 ` [PATCH v8 v8 11/11] iio: adc: hx711: add support for HX710B Piyush Patle
2026-05-12 12:38   ` 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=20260512131905.42c35224@jic23-huawei \
    --to=jic23@kernel.org \
    --cc=ak@it-klinger.de \
    --cc=andriy.shevchenko@linux.intel.com \
    --cc=conor+dt@kernel.org \
    --cc=devicetree@vger.kernel.org \
    --cc=dlechner@baylibre.com \
    --cc=krzk+dt@kernel.org \
    --cc=linux-iio@vger.kernel.org \
    --cc=linux-kernel@vger.kernel.org \
    --cc=nuno.sa@analog.com \
    --cc=piyushpatle228@gmail.com \
    --cc=robh@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 a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox