Re: [PATCH v5 5/9] iio: adc: mcp3911: add support for buffers

Jonathan Cameron
2022-08-14T14:21:36Z

On Tue, 9 Aug 2022 09:36:44 +0200
Marcus Folkesson <marcus.folkesson@gmail.com> wrote:

> Add support for buffers to make the driver fit for more usecases.
>
> Signed-off-by: Marcus Folkesson <marcus.folkesson@gmail.com>
> Reviewed-by: Andy Shevchenko <andy.shevchenko@gmail.com>

One really trivial comment from me below if you are respinning anyway.

> +static irqreturn_t mcp3911_trigger_handler(int irq, void *p)
> +{
> + struct iio_poll_func *pf = p;
> + struct iio_dev *indio_dev = pf->indio_dev;
> + struct mcp3911 *adc = iio_priv(indio_dev);
> + struct spi_transfer xfer[] = {
> + {
> + .tx_buf = &adc->tx_buf,
> + .len = 1,
> + }, {
> + .rx_buf = adc->rx_buf,
> + .len = sizeof(adc->rx_buf),
> + },
> + };
> +
> + int scan_index;
> + int i = 0;
> + int ret;
> +
> + mutex_lock(&adc->lock);
> + adc->tx_buf = MCP3911_REG_READ(MCP3911_CHANNEL(0), adc->dev_addr);
> + ret = spi_sync_transfer(adc->spi, xfer, ARRAY_SIZE(xfer));
> + if (ret < 0) {
> + dev_warn(&adc->spi->dev,
> + "failed to get conversion data\n");
> + goto out;
> + }
> +
> + for_each_set_bit(scan_index, indio_dev->active_scan_mask,
> + indio_dev->masklength) {
> + const struct iio_chan_spec *scan_chan = &indio_dev->channels[scan_index];
> +
> + adc->scan.channels[i] = get_unaligned_be24(&adc->rx_buf[scan_chan->channel * 3]);
> + i++;
> + }
> + iio_push_to_buffers_with_timestamp(indio_dev, &adc->scan,
> + iio_get_time_ns(indio_dev));
iio_get_time_ns(indio_dev));

trivial: align with opening bracket unless the resulting line length is going to be very high as
a result. I could be wrong but I thought checkpatch warned on this...

> +out:
> + mutex_unlock(&adc->lock);
> + iio_trigger_notify_done(indio_dev->trig);
> +
> + return IRQ_HANDLED;
> +}