Re: [PATCH v6 10/11] iio: adc: hx711: pass iio_chan_spec to hx711_reset_read

From: Jonathan Cameron

Date: Mon May 04 2026 - 12:09:08 EST


On Sun, 3 May 2026 17:39:39 +0530
Piyush Patle <piyushpatle228@xxxxxxxxx> wrote:

> Change hx711_reset_read() to accept the channel descriptor directly and
> update its callers accordingly.
>
> Split the existing HX711 channel-selection work into a small helper so a
> later variant-specific change can add a matching helper without growing
> hx711_reset_read() further.
>
> No functional change.
>
> Signed-off-by: Piyush Patle <piyushpatle228@xxxxxxxxx>
> ---
> drivers/iio/adc/hx711.c | 26 ++++++++++++++++++++------
> 1 file changed, 20 insertions(+), 6 deletions(-)
>
> diff --git a/drivers/iio/adc/hx711.c b/drivers/iio/adc/hx711.c
> index 98fb617ea32b..2229df17f350 100644
> --- a/drivers/iio/adc/hx711.c
> +++ b/drivers/iio/adc/hx711.c
> @@ -269,7 +269,22 @@ static int hx711_set_gain_for_channel(struct hx711_data *hx711_data, int chan)
> return 0;
> }
>
> -static int hx711_reset_read(struct hx711_data *hx711_data, int chan)
> +static int hx711_set_hx711_channel(struct hx711_data *hx711_data,
> + const struct iio_chan_spec *chan,
> + int *trailing_pulses)
> +{
> + int ret;
> +
> + ret = hx711_set_gain_for_channel(hx711_data, chan->channel);
> + if (ret < 0)
> + return ret;
> +
> + *trailing_pulses = hx711_get_gain_to_pulse(hx711_data->gain_set);
Really minor style thing that I'd have left if you weren't having to do
a v7 anyway.
When you have a 'bare' return like this that isn't directly related
to anything other than we reached the end of the function, my slight
preference it to add a blank line before it. Some kernel reviewers
will insist on it, I just consider it good taste as makes the return
more obviously separate as a logical thing from the line above.

> + return 0;
> +}
> +
> +static int hx711_reset_read(struct hx711_data *hx711_data,
> + const struct iio_chan_spec *chan)
> {
> int trailing_pulses;
> int ret;
> @@ -283,11 +298,10 @@ static int hx711_reset_read(struct hx711_data *hx711_data, int chan)
> return -EIO;
> }
>
> - ret = hx711_set_gain_for_channel(hx711_data, chan);
> + ret = hx711_set_hx711_channel(hx711_data, chan, &trailing_pulses);
> if (ret < 0)
> return ret;
>
> - trailing_pulses = hx711_get_gain_to_pulse(hx711_data->gain_set);
> return hx711_read(hx711_data, trailing_pulses);
> }
>
> @@ -301,7 +315,7 @@ static int hx711_read_raw(struct iio_dev *indio_dev,
> case IIO_CHAN_INFO_RAW:
> mutex_lock(&hx711_data->lock);
>
> - *val = hx711_reset_read(hx711_data, chan->channel);
> + *val = hx711_reset_read(hx711_data, chan);
>
> mutex_unlock(&hx711_data->lock);
>
> @@ -391,8 +405,8 @@ static irqreturn_t hx711_trigger(int irq, void *p)
> memset(&hx711_data->buffer, 0, sizeof(hx711_data->buffer));
>
> iio_for_each_active_channel(indio_dev, i) {
> - hx711_data->buffer.channel[j] = hx711_reset_read(hx711_data,
> - indio_dev->channels[i].channel);
> + hx711_data->buffer.channel[j] =
> + hx711_reset_read(hx711_data, &indio_dev->channels[i]);
> j++;
> }
>