From c33ad29a3e949fff41a9112ccb119cd4fc0ef3a1 Mon Sep 17 00:00:00 2001 From: Jason Zhang Date: Wed, 3 Aug 2022 19:25:23 +0800 Subject: [PATCH] iio: light: ucs12cm0: fix IRQ setup Use irq trigger flags to setup interrupt, support interrupt level low and falling edge. Signed-off-by: Jason Zhang Change-Id: I463eda0e7c405a7f0bfb170ed50a889ee1fe2ed4 --- drivers/iio/light/ucs12cm0.c | 12 ++++++++++-- 1 file changed, 10 insertions(+), 2 deletions(-) diff --git a/drivers/iio/light/ucs12cm0.c b/drivers/iio/light/ucs12cm0.c index 221d1563e338..b04df7a09689 100644 --- a/drivers/iio/light/ucs12cm0.c +++ b/drivers/iio/light/ucs12cm0.c @@ -554,6 +554,7 @@ static int ucs12cm0_probe(struct i2c_client *client, struct ucs12cm0_data *data; struct iio_dev *indio_dev; struct iio_buffer *buffer; + u32 type; int ret; indio_dev = devm_iio_device_alloc(&client->dev, sizeof(*data)); @@ -586,10 +587,17 @@ static int ucs12cm0_probe(struct i2c_client *client, return -EINVAL; } + type = irqd_get_trigger_type(irq_get_irq_data(client->irq)); + if (type != IRQF_TRIGGER_LOW && type != IRQF_TRIGGER_FALLING) { + dev_err(&client->dev, + "unsupported IRQ trigger specified (%x)\n", type); + return -EINVAL; + } + ret = devm_request_threaded_irq(&client->dev, client->irq, NULL, ucs12cm0_interrupt_handler, - IRQF_TRIGGER_LOW | IRQF_ONESHOT, - "ucs12cm0_irq", indio_dev); + type | IRQF_ONESHOT, "ucs12cm0_irq", + indio_dev); if (ret) { dev_err(&client->dev, "request irq (%d) failed\n", client->irq);