[RESEND PATCH 01/14] iio: accel: mma8452: unregister own trigger rather than current one
From: Jonathan Cameron
Date: Sun Nov 08 2026 - 23:32:44 EST
From: Jonathan Cameron <jonathan.cameron@xxxxxxxxxxxxxxxx>
mma8452_trigger_cleanup() uses indio_dev->trig to unregister the trigger.
That may or may not be the one it registered as this driver allows
triggers other than its own to be used.
Keep a pointer to the driver's own trigger in struct mma8452_data and
unregister that instead.
Fixes: ae6d9ce05691 ("iio: mma8452: Add support for interrupt driven triggers.")
Cc: stable@xxxxxxxxxxxxxxx
Signed-off-by: Jonathan Cameron <jonathan.cameron@xxxxxxxxxxxxxxxx>
---
drivers/iio/accel/mma8452.c | 9 +++++++--
1 file changed, 7 insertions(+), 2 deletions(-)
diff --git a/drivers/iio/accel/mma8452.c b/drivers/iio/accel/mma8452.c
index dc8031e14c29..f9abff3842fc 100644
--- a/drivers/iio/accel/mma8452.c
+++ b/drivers/iio/accel/mma8452.c
@@ -115,6 +115,7 @@
* @orientation: mounting matrix, flipped axis etc.
* @chip_info: chip specific data
* @regs: reference to voltage regulators
+ * @trig: data ready trigger, if an interrupt is available
* @buffer: triggered buffer
* @sleep_val: time in ms to sleep while waiting for drdy
* @ctrl_reg1: CTRL_REG1 register shadow value
@@ -127,6 +128,7 @@ struct mma8452_data {
struct iio_mount_matrix orientation;
const struct mma_chip_info *chip_info;
struct regulator_bulk_data regs[2];
+ struct iio_trigger *trig;
/* Ensure correct alignment of time stamp when present */
struct {
@@ -1526,6 +1528,7 @@ static int mma8452_trigger_setup(struct iio_dev *indio_dev)
if (ret)
return ret;
+ data->trig = trig;
indio_dev->trig = iio_trigger_get(trig);
return 0;
@@ -1533,8 +1536,10 @@ static int mma8452_trigger_setup(struct iio_dev *indio_dev)
static void mma8452_trigger_cleanup(struct iio_dev *indio_dev)
{
- if (indio_dev->trig)
- iio_trigger_unregister(indio_dev->trig);
+ struct mma8452_data *data = iio_priv(indio_dev);
+
+ if (data->trig)
+ iio_trigger_unregister(data->trig);
}
static int mma8452_reset(struct i2c_client *client)
--
2.56.0