iio:adc:nau7802: Use IRQF_NO_AUTOEN instead of request then disable
authorJonathan Cameron <Jonathan.Cameron@huawei.com>
Fri, 2 Apr 2021 18:45:40 +0000 (19:45 +0100)
committerJonathan Cameron <Jonathan.Cameron@huawei.com>
Wed, 7 Apr 2021 07:36:39 +0000 (08:36 +0100)
Whilst a race during interrupt enabling is probably not a problem,
it is better to not enable the interrupt at all.  The new
IRQF_NO_AUTOEN flag allows us to do that.

Signed-off-by: Jonathan Cameron <Jonathan.Cameron@huawei.com>
Cc: Alexandre Belloni <alexandre.belloni@bootlin.com>
Reviewed-by: Barry Song <song.bao.hua@hisilicon.com>
Reviewed-by: Andy Shevchenko <andy.shevchenko@gmail.com>
Reviewed-by: Lars-Peter Clausen <lars@metafoo.de>
Link: https://lore.kernel.org/r/20210402184544.488862-4-jic23@kernel.org
drivers/iio/adc/nau7802.c

index 07c8543..bb70b51 100644 (file)
@@ -498,7 +498,8 @@ static int nau7802_probe(struct i2c_client *client,
                ret = request_threaded_irq(client->irq,
                                NULL,
                                nau7802_eoc_trigger,
-                               IRQF_TRIGGER_HIGH | IRQF_ONESHOT,
+                               IRQF_TRIGGER_HIGH | IRQF_ONESHOT |
+                               IRQF_NO_AUTOEN,
                                client->dev.driver->name,
                                indio_dev);
                if (ret) {
@@ -513,8 +514,7 @@ static int nau7802_probe(struct i2c_client *client,
                        dev_info(&client->dev,
                                "Failed to allocate IRQ, using polling mode\n");
                        client->irq = 0;
-               } else
-                       disable_irq(client->irq);
+               }
        }
 
        if (!client->irq) {