Re: [PATCH v2 04/10] iio: adc: mcp3911: add support for interrupts
From: Jonathan Cameron
Date: Sat Jun 25 2022 - 07:57:15 EST
...
> > static int mcp3911_probe(struct spi_device *spi)
> > {
> > struct iio_dev *indio_dev;
> > @@ -352,6 +382,15 @@ static int mcp3911_probe(struct spi_device *spi)
> > if (ret)
> > goto clk_disable;
> >
> > + if (device_property_read_bool(&adc->spi->dev, "microchip,data-ready-hiz"))
> > + ret = mcp3911_update(adc, MCP3911_REG_STATUSCOM, MCP3911_STATUSCOM_DRHIZ,
> > + 0, 2);
> > + else
> > + ret = mcp3911_update(adc, MCP3911_REG_STATUSCOM, MCP3911_STATUSCOM_DRHIZ,
> > + MCP3911_STATUSCOM_DRHIZ, 2);
> > + if (ret < 0)
> > + goto clk_disable;
> > +
> > indio_dev->name = spi_get_device_id(spi)->name;
> > indio_dev->modes = INDIO_DIRECT_MODE | INDIO_BUFFER_TRIGGERED;
> > indio_dev->info = &mcp3911_info;
> > @@ -362,6 +401,32 @@ static int mcp3911_probe(struct spi_device *spi)
> >
> > mutex_init(&adc->lock);
> >
> > + if (spi->irq > 0) {
> > + adc->trig = devm_iio_trigger_alloc(&spi->dev, "%s-dev%d",
> > + indio_dev->name,
> > + iio_device_id(indio_dev));
> > + if (!adc->trig)
> > + goto clk_disable;
> You definitely want to use devm managed cleanup for these.
>
> There is a patch set that adds these as standard functions, but I haven't
> yet seen it being picked up for this cycle (reviews have been slow coming).
>
> https://lore.kernel.org/all/20220520075737.758761-1-u.kleine-koenig@xxxxxxxxxxxxxx/
Ah, elsewhere in my unread email was a thread that says it's in clk-next so
will be in the next merge window. I haven't confirmed, but looks like Stephen
put up an immutable branch so I could pull it into the IIO togreg branch if you
want to transition directly to that new code. @Stephen, would you be fine
with me pulling your clk-devm-enable branch into IIO (with the fix which
got posted earlier in the week presumably also going on that branch when
you push out?)
Thanks,
Jonathan
>
> In meantime role your own with devm_add_action_or_reset()