[PATCH v3 3/4] iio: accel: mma8452: Only apply trigger type when not set by firmware
Esben Haabendal <[email protected]>
| Newsgroups | org.kernel.vger.linux-iio,org.kernel.vger.linux-devicetree,org.kernel.vger.linux-kernel |
|---|---|
| Message-ID | <[email protected]> |
Instead of unconditionally overriding the trigger type, it is better to only apply a default when no trigger type is set by firmware. This should be reasonably backward compatible, and should only potentially cause problems if systems exist where firmware specifies an incorrect trigger type. With a bit of luck, there are no such systems. Signed-off-by: Esben Haabendal <[email protected]> --- 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 f645a5c6fd1c..723ca3d9cb96 100644 --- a/drivers/iio/accel/mma8452.c +++ b/drivers/iio/accel/mma8452.c @@ -1683,9 +1683,14 @@ static int mma8452_probe(struct i2c_client *client) goto trigger_cleanup; if (client->irq) { + unsigned long irq_flags; + + irq_flags = irq_get_trigger_type(client->irq); + if (irq_flags == IRQ_TYPE_NONE) + irq_flags = IRQF_TRIGGER_LOW; + irq_flags |= IRQF_ONESHOT; ret = request_threaded_irq(client->irq, NULL, mma8452_interrupt, - IRQF_TRIGGER_LOW | IRQF_ONESHOT, - client->name, indio_dev); + irq_flags, client->name, indio_dev); if (ret) goto buffer_cleanup; } -- 2.55.0