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] = { >