summaryrefslogtreecommitdiffstats
path: root/drivers/staging/iio/adc
diff options
context:
space:
mode:
authorLars-Peter Clausen <lars@metafoo.de>2016-10-19 19:07:06 +0200
committerJonathan Cameron <jic23@kernel.org>2016-10-23 19:34:17 +0100
commitf52666772d579233b5aa3e1fb57187bbec80fc50 (patch)
tree7d46f92bed39784a8685106418a61fba387d4308 /drivers/staging/iio/adc
parenta866058f8e40a30c62027990c91aa71008617207 (diff)
downloadlinux-stable-f52666772d579233b5aa3e1fb57187bbec80fc50.tar.gz
linux-stable-f52666772d579233b5aa3e1fb57187bbec80fc50.tar.bz2
linux-stable-f52666772d579233b5aa3e1fb57187bbec80fc50.zip
staging:iio:ad7606: Run trigger handler only once per trigger event
Currently the ad7606 driver installs the same function for the hard-irq and threaded trigger handlers. This was introduced in commit 1caf7cb46135 ("staging:iio:adc:ad7606 Convert to new channel registration method Update Add missing call to iio_trigger_notify_done() Set pollfunc top and bottom half handler"). Unfortunately the commit message does not mention why this was done and Michael does not remember either. Since the trigger handler function is idempotent (set a GPIO to 1) running it twice does not do any harm, but is simply not necessary either. So set the threaded trigger handler for the driver to NULL. While we are at it also remove the function description comment that does no say anything that can't be derived from the function name itself. Signed-off-by: Lars-Peter Clausen <lars@metafoo.de> Signed-off-by: Jonathan Cameron <jic23@kernel.org>
Diffstat (limited to 'drivers/staging/iio/adc')
-rw-r--r--drivers/staging/iio/adc/ad7606_ring.c11
1 files changed, 3 insertions, 8 deletions
diff --git a/drivers/staging/iio/adc/ad7606_ring.c b/drivers/staging/iio/adc/ad7606_ring.c
index b7bf0cf87b10..81e4a0ac51b7 100644
--- a/drivers/staging/iio/adc/ad7606_ring.c
+++ b/drivers/staging/iio/adc/ad7606_ring.c
@@ -18,11 +18,7 @@
#include "ad7606.h"
-/**
- * ad7606_trigger_handler_th() th/bh of trigger launched polling to ring buffer
- *
- **/
-static irqreturn_t ad7606_trigger_handler_th_bh(int irq, void *p)
+static irqreturn_t ad7606_trigger_handler(int irq, void *p)
{
struct iio_poll_func *pf = p;
struct ad7606_state *st = iio_priv(pf->indio_dev);
@@ -63,9 +59,8 @@ int ad7606_register_ring_funcs_and_init(struct iio_dev *indio_dev)
INIT_WORK(&st->poll_work, &ad7606_poll_bh_to_ring);
- return iio_triggered_buffer_setup(indio_dev,
- &ad7606_trigger_handler_th_bh, &ad7606_trigger_handler_th_bh,
- NULL);
+ return iio_triggered_buffer_setup(indio_dev, &ad7606_trigger_handler,
+ NULL, NULL);
}
void ad7606_ring_cleanup(struct iio_dev *indio_dev)