[RESEND PATCH 12/14] iio: proximity: irsd200: poll own trigger from interrupt handler
From: Jonathan Cameron
Date: Sun Nov 08 2026 - 23:31:22 EST
From: Jonathan Cameron <jonathan.cameron@xxxxxxxxxxxxxxxx>
Keep a pointer to the driver's trigger in struct irsd200_data and poll
that from irsd200_irq_thread() rather than indio_dev->trig. The data
interrupt source is only enabled by the trigger's set_trigger_state()
callback, so it is the driver's own trigger that is in use whenever this
path is reached.
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/proximity/irsd200.c | 4 +++-
1 file changed, 3 insertions(+), 1 deletion(-)
diff --git a/drivers/iio/proximity/irsd200.c b/drivers/iio/proximity/irsd200.c
index b3db7f3a49f6..82edb135f4bf 100644
--- a/drivers/iio/proximity/irsd200.c
+++ b/drivers/iio/proximity/irsd200.c
@@ -122,6 +122,7 @@ struct irsd200_data {
struct regmap *regmap;
struct regmap_field *regfields[IRS_REGF_MAX];
struct device *dev;
+ struct iio_trigger *trig;
};
static int irsd200_setup(struct irsd200_data *data)
@@ -698,7 +699,7 @@ static irqreturn_t irsd200_irq_thread(int irq, void *dev_id)
}
if (status & BIT(IRS_INTR_DATA) && iio_buffer_enabled(indio_dev)) {
- iio_trigger_poll_nested(indio_dev->trig);
+ iio_trigger_poll_nested(data->trig);
clear |= BIT(IRS_INTR_DATA);
}
@@ -917,6 +918,7 @@ static int irsd200_probe(struct i2c_client *client)
if (!trigger)
return -ENOMEM;
+ data->trig = trigger;
trigger->ops = &irsd200_trigger_ops;
iio_trigger_set_drvdata(trigger, data);
--
2.56.0