[RESEND PATCH 09/14] iio: adc: ad4691: poll own trigger from interrupt handler
From: Jonathan Cameron
Date: Sun Nov 08 2026 - 23:31:07 EST
From: Jonathan Cameron <jonathan.cameron@xxxxxxxxxxxxxxxx>
Keep a pointer to the CNV burst trigger in struct ad4691_state and poll
that from ad4691_irq() rather than indio_dev->trig. The interrupt is
only enabled for CNV burst mode with the buffer enabled, and the iio_info
used in that mode only accepts the driver's own trigger via
iio_validate_own_trigger(), so this is the same trigger.
This removes a dependency on the trig field of struct iio_dev, which
is to become private to the IIO core.
Signed-off-by: Jonathan Cameron <jonathan.cameron@xxxxxxxxxxxxxxxx>
---
drivers/iio/adc/ad4691.c | 4 +++-
1 file changed, 3 insertions(+), 1 deletion(-)
diff --git a/drivers/iio/adc/ad4691.c b/drivers/iio/adc/ad4691.c
index f2f7c4c6424a..f63a68a009f8 100644
--- a/drivers/iio/adc/ad4691.c
+++ b/drivers/iio/adc/ad4691.c
@@ -441,6 +441,7 @@ struct ad4691_state {
struct spi_device *spi;
struct pwm_device *conv_trigger;
+ struct iio_trigger *trig;
int irq;
int vref_uV;
u32 cnv_period_ns;
@@ -1563,7 +1564,7 @@ static irqreturn_t ad4691_irq(int irq, void *private)
* the IRQ.
*/
disable_irq_nosync(st->irq);
- iio_trigger_poll(indio_dev->trig);
+ iio_trigger_poll(st->trig);
return IRQ_HANDLED;
}
@@ -1861,6 +1862,7 @@ static int ad4691_setup_triggered_buffer(struct iio_dev *indio_dev,
if (!trig)
return -ENOMEM;
+ st->trig = trig;
trig->ops = &ad4691_trigger_ops;
iio_trigger_set_drvdata(trig, st);
--
2.56.0