diff options
author | Jonathan Cameron <Jonathan.Cameron@huawei.com> | 2021-04-02 19:45:44 +0100 |
---|---|---|
committer | Jonathan Cameron <Jonathan.Cameron@huawei.com> | 2021-04-07 08:36:39 +0100 |
commit | eaa17fa7d8da035541bb99fe91dcd4b77dd1f275 (patch) | |
tree | 6710477f3e434e944bf70c375ee2ff0b1664dd8b /drivers | |
parent | 30f6a542b7d39b1ba990a28a3891bc03691d8d41 (diff) |
iio:adc:ad_sigma_delta: Use IRQF_NO_AUTOEN rather than request and disable
These devices are not able to mask the signal used as a data ready
interrupt. As such they previously requested the irq then immediately
disabled it. Now we can avoid the potential of a spurious interrupt
by avoiding the irq being auto enabled in the first place.
I'm not sure how this code could have been called with the irq already
disabled, so I believe the conditional would always have been true and
have removed it.
Signed-off-by: Jonathan Cameron <Jonathan.Cameron@huawei.com>
Cc: Lars-Peter Clausen <lars@metafoo.de>
Cc: Alexandru Ardelean <ardeleanalex@gmail.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-8-jic23@kernel.org
Diffstat (limited to 'drivers')
-rw-r--r-- | drivers/iio/adc/ad_sigma_delta.c | 7 |
1 files changed, 2 insertions, 5 deletions
diff --git a/drivers/iio/adc/ad_sigma_delta.c b/drivers/iio/adc/ad_sigma_delta.c index 9289812c0a94..e777ec718973 100644 --- a/drivers/iio/adc/ad_sigma_delta.c +++ b/drivers/iio/adc/ad_sigma_delta.c @@ -485,18 +485,15 @@ static int ad_sd_probe_trigger(struct iio_dev *indio_dev) sigma_delta->trig->ops = &ad_sd_trigger_ops; init_completion(&sigma_delta->completion); + sigma_delta->irq_dis = true; ret = request_irq(sigma_delta->spi->irq, ad_sd_data_rdy_trig_poll, - sigma_delta->info->irq_flags, + sigma_delta->info->irq_flags | IRQF_NO_AUTOEN, indio_dev->name, sigma_delta); if (ret) goto error_free_trig; - if (!sigma_delta->irq_dis) { - sigma_delta->irq_dis = true; - disable_irq_nosync(sigma_delta->spi->irq); - } iio_trigger_set_drvdata(sigma_delta->trig, sigma_delta); ret = iio_trigger_register(sigma_delta->trig); |