Re: [PATCH v2 1/3] iio: adc: ad7192: Add IRQ flag

From: Jonathan Cameron
Date: Sat Sep 11 2021 - 13:41:07 EST


On Sat, 11 Sep 2021 18:39:21 +0100
Jonathan Cameron <jic23@xxxxxxxxxx> wrote:

> On Mon, 6 Sep 2021 09:56:28 +0300
> <alexandru.tachici@xxxxxxxxxx> wrote:
>
> > From: Alexandru Tachici <alexandru.tachici@xxxxxxxxxx>
> >
> > IRQ type in ad_sigma_delta_info struct was missing.
> >
> > In Sigma-Delta devices the SDO line is also used as an interrupt.
> > Leaving IRQ on level instead of falling might trigger a sample read
> > when the IRQ is enabled, as the SDO line is already low. Not sure
> > if SDO line will always imediately go high in ad_sd_buffer_postenable
> > before the IRQ is enabled.
> >
> > Also the datasheet seem to explicitly say the falling edge of the SDO
> > should be used as an interrupt:
> > From the AD7192 datasheet: "The DOUT/RDY falling edge can be used
> > as an interrupt to a processor,"
> >
> > Fixes: da4d3d6bb9f6 ("iio: adc: ad-sigma-delta: Allow custom IRQ flags")
> > Signed-off-by: Alexandru Tachici <alexandru.tachici@xxxxxxxxxx>
>
> As in thread discussing previous version. This one should probably be left
> to firmware to configure. It's not 'wrong' before this point as firmware
> should be specifying it correctly. That allows for the interrupt line
> to the processor to be inverted and other silliness that happens on real
> boards.

Ignore that - I'd forgotten this is a joint DOUT / Data ready pin so it's
polarity needs to track that of the SPI pin and inverting that isn't
something we cope with.

So applied to the fixes-togreg branch of iio.git and marked for stable.

Thanks,

Jonathan

>
> Jonathan
>
> > ---
> > drivers/iio/adc/ad7192.c | 1 +
> > 1 file changed, 1 insertion(+)
> >
> > diff --git a/drivers/iio/adc/ad7192.c b/drivers/iio/adc/ad7192.c
> > index ee8ed9481025..2121a812b0c3 100644
> > --- a/drivers/iio/adc/ad7192.c
> > +++ b/drivers/iio/adc/ad7192.c
> > @@ -293,6 +293,7 @@ static const struct ad_sigma_delta_info ad7192_sigma_delta_info = {
> > .has_registers = true,
> > .addr_shift = 3,
> > .read_mask = BIT(6),
> > + .irq_flags = IRQF_TRIGGER_FALLING,
> > };
> >
> > static const struct ad_sd_calib_data ad7192_calib_arr[8] = {
>