[RESEND PATCH 11/14] iio: proximity: vl53l1x-i2c: poll own trigger from interrupt handler
From: Jonathan Cameron
Date: Sun Nov 08 2026 - 23:30:35 EST
From: Jonathan Cameron <jonathan.cameron@xxxxxxxxxxxxxxxx>
Keep a pointer to the driver's trigger in struct vl53l1x_data and poll
that from vl53l1x_irq_handler() rather than indio_dev->trig. Only the
driver's own trigger is accepted, via iio_validate_own_trigger(), so
with the buffer enabled that is the trigger in use.
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/vl53l1x-i2c.c | 4 +++-
1 file changed, 3 insertions(+), 1 deletion(-)
diff --git a/drivers/iio/proximity/vl53l1x-i2c.c b/drivers/iio/proximity/vl53l1x-i2c.c
index bce238d1b6de..ffc6fe45b165 100644
--- a/drivers/iio/proximity/vl53l1x-i2c.c
+++ b/drivers/iio/proximity/vl53l1x-i2c.c
@@ -102,6 +102,7 @@ struct vl53l1x_data {
enum vl53l1x_distance_mode distance_mode;
u8 gpio_polarity;
int irq;
+ struct iio_trigger *trig;
};
static const struct regmap_range vl53l1x_volatile_ranges[] = {
@@ -587,7 +588,7 @@ static irqreturn_t vl53l1x_irq_handler(int irq, void *priv)
struct vl53l1x_data *data = iio_priv(indio_dev);
if (iio_buffer_enabled(indio_dev))
- iio_trigger_poll(indio_dev->trig);
+ iio_trigger_poll(data->trig);
else
complete(&data->completion);
@@ -707,6 +708,7 @@ static int vl53l1x_probe(struct i2c_client *client)
if (!trig)
return -ENOMEM;
+ data->trig = trig;
trig->ops = &vl53l1x_trigger_ops;
iio_trigger_set_drvdata(trig, indio_dev);
ret = devm_iio_trigger_register(dev, trig);
--
2.56.0