iio: Move attach/detach of the poll func to the core
authorLars-Peter Clausen <lars@metafoo.de>
Mon, 25 May 2020 11:38:53 +0000 (14:38 +0300)
committerJonathan Cameron <Jonathan.Cameron@huawei.com>
Sat, 20 Jun 2020 16:34:44 +0000 (17:34 +0100)
All devices using a triggered buffer need to attach and detach the trigger
to the device in order to properly work. Instead of doing this in each and
every driver by hand move this into the core.

At this point in time, all drivers should have been resolved to
attach/detach the poll-function in the same order.

This patch removes all explicit calls of iio_triggered_buffer_postenable()
& iio_triggered_buffer_predisable() in all drivers, since the core handles
now the pollfunc attach/detach.

The more peculiar change is for the 'at91-sama5d2_adc' driver, since it's
not immediately obvious that removing the hooks doesn't break anything.
Eugen was able to test on at91-sama5d2-adc driver, sama5d2-xplained board.
All seems to be fine.

Signed-off-by: Lars-Peter Clausen <lars@metafoo.de>
Signed-off-by: Alexandru Ardelean <alexandru.ardelean@analog.com>
Tested-by: Eugen Hristev <eugen.hristev@microchip.com> #for at91-sama5d2-adc
Signed-off-by: Jonathan Cameron <Jonathan.Cameron@huawei.com>
49 files changed:
drivers/iio/accel/adxl372.c
drivers/iio/accel/bmc150-accel-core.c
drivers/iio/accel/kxcjk-1013.c
drivers/iio/accel/kxsd9.c
drivers/iio/accel/st_accel_buffer.c
drivers/iio/accel/stk8312.c
drivers/iio/accel/stk8ba50.c
drivers/iio/adc/ad7266.c
drivers/iio/adc/ad7606.c
drivers/iio/adc/ad7766.c
drivers/iio/adc/ad7768-1.c
drivers/iio/adc/ad7887.c
drivers/iio/adc/ad_sigma_delta.c
drivers/iio/adc/at91-sama5d2_adc.c
drivers/iio/adc/dln2-adc.c
drivers/iio/adc/mxs-lradc-adc.c
drivers/iio/adc/stm32-adc.c
drivers/iio/adc/stm32-dfsdm-adc.c
drivers/iio/adc/ti-adc084s021.c
drivers/iio/adc/ti-ads1015.c
drivers/iio/adc/vf610_adc.c
drivers/iio/adc/xilinx-xadc-core.c
drivers/iio/buffer/industrialio-triggered-buffer.c
drivers/iio/chemical/atlas-sensor.c
drivers/iio/dummy/iio_simple_dummy_buffer.c
drivers/iio/gyro/bmg160_core.c
drivers/iio/gyro/mpu3050-core.c
drivers/iio/gyro/st_gyro_buffer.c
drivers/iio/humidity/hdc100x.c
drivers/iio/humidity/hts221_buffer.c
drivers/iio/iio_core_trigger.h
drivers/iio/industrialio-buffer.c
drivers/iio/industrialio-trigger.c
drivers/iio/light/gp2ap020a00f.c
drivers/iio/light/isl29125.c
drivers/iio/light/rpr0521.c
drivers/iio/light/si1145.c
drivers/iio/light/st_uvis25_core.c
drivers/iio/light/tcs3414.c
drivers/iio/light/vcnl4000.c
drivers/iio/magnetometer/bmc150_magn.c
drivers/iio/magnetometer/rm3100-core.c
drivers/iio/magnetometer/st_magn_buffer.c
drivers/iio/potentiostat/lmp91000.c
drivers/iio/pressure/st_pressure_buffer.c
drivers/iio/pressure/zpa2326.c
drivers/iio/proximity/sx9310.c
drivers/iio/proximity/sx9500.c
include/linux/iio/trigger_consumer.h

index 26ca45073a56cd3e92e6ea735cab8fc3152b6a35..e7e316b75e8702ecab14cdfa4b072dbdc725d243 100644 (file)
@@ -795,13 +795,9 @@ static int adxl372_buffer_postenable(struct iio_dev *indio_dev)
        unsigned int mask;
        int i, ret;
 
-       ret = iio_triggered_buffer_postenable(indio_dev);
-       if (ret < 0)
-               return ret;
-
        ret = adxl372_set_interrupts(st, ADXL372_INT1_MAP_FIFO_FULL_MSK, 0);
        if (ret < 0)
-               goto err;
+               return ret;
 
        mask = *indio_dev->active_scan_mask;
 
@@ -810,10 +806,8 @@ static int adxl372_buffer_postenable(struct iio_dev *indio_dev)
                        break;
        }
 
-       if (i == ARRAY_SIZE(adxl372_axis_lookup_table)) {
-               ret = -EINVAL;
-               goto err;
-       }
+       if (i == ARRAY_SIZE(adxl372_axis_lookup_table))
+               return -EINVAL;
 
        st->fifo_format = adxl372_axis_lookup_table[i].fifo_format;
        st->fifo_set_size = bitmap_weight(indio_dev->active_scan_mask,
@@ -833,14 +827,10 @@ static int adxl372_buffer_postenable(struct iio_dev *indio_dev)
        if (ret < 0) {
                st->fifo_mode = ADXL372_FIFO_BYPASSED;
                adxl372_set_interrupts(st, 0, 0);
-               goto err;
+               return ret;
        }
 
        return 0;
-
-err:
-       iio_triggered_buffer_predisable(indio_dev);
-       return ret;
 }
 
 static int adxl372_buffer_predisable(struct iio_dev *indio_dev)
@@ -851,7 +841,7 @@ static int adxl372_buffer_predisable(struct iio_dev *indio_dev)
        st->fifo_mode = ADXL372_FIFO_BYPASSED;
        adxl372_configure_fifo(st);
 
-       return iio_triggered_buffer_predisable(indio_dev);
+       return 0;
 }
 
 static const struct iio_buffer_setup_ops adxl372_buffer_ops = {
index 8f60d0727ee8067c7dedcafc8b0bcd1529214f17..24864d9dfab5d09e274c5d9529676af300f58c78 100644 (file)
@@ -1411,7 +1411,7 @@ static int bmc150_accel_buffer_postenable(struct iio_dev *indio_dev)
        int ret = 0;
 
        if (indio_dev->currentmode == INDIO_BUFFER_TRIGGERED)
-               return iio_triggered_buffer_postenable(indio_dev);
+               return 0;
 
        mutex_lock(&data->mutex);
 
@@ -1443,7 +1443,7 @@ static int bmc150_accel_buffer_predisable(struct iio_dev *indio_dev)
        struct bmc150_accel_data *data = iio_priv(indio_dev);
 
        if (indio_dev->currentmode == INDIO_BUFFER_TRIGGERED)
-               return iio_triggered_buffer_predisable(indio_dev);
+               return 0;
 
        mutex_lock(&data->mutex);
 
index 6b93521c0e178f55ba5c529272a86139c35c7bde..beb38d9d607dc4fac58660826f5c6473c94c9bba 100644 (file)
@@ -1027,9 +1027,7 @@ static const struct iio_chan_spec kxcjk1013_channels[] = {
 
 static const struct iio_buffer_setup_ops kxcjk1013_buffer_setup_ops = {
        .preenable              = kxcjk1013_buffer_preenable,
-       .postenable             = iio_triggered_buffer_postenable,
        .postdisable            = kxcjk1013_buffer_postdisable,
-       .predisable             = iio_triggered_buffer_predisable,
 };
 
 static const struct iio_info kxcjk1013_info = {
index 63b1d8ee6c6faa99c352883e333b13b591904c21..66b2e4cf24cfab91f1a5a559d5f52fd97a58ce3b 100644 (file)
@@ -252,8 +252,6 @@ static int kxsd9_buffer_postdisable(struct iio_dev *indio_dev)
 
 static const struct iio_buffer_setup_ops kxsd9_buffer_setup_ops = {
        .preenable = kxsd9_buffer_preenable,
-       .postenable = iio_triggered_buffer_postenable,
-       .predisable = iio_triggered_buffer_predisable,
        .postdisable = kxsd9_buffer_postdisable,
 };
 
index b5c814ef16379d85b4e3097fd7afc079b7158c92..492263589e0447a5ef93d3e1d9370f65255ad811 100644 (file)
@@ -33,13 +33,9 @@ static int st_accel_buffer_postenable(struct iio_dev *indio_dev)
 {
        int err;
 
-       err = iio_triggered_buffer_postenable(indio_dev);
-       if (err < 0)
-               return err;
-
        err = st_sensors_set_axis_enable(indio_dev, indio_dev->active_scan_mask[0]);
        if (err < 0)
-               goto st_accel_buffer_predisable;
+               return err;
 
        err = st_sensors_set_enable(indio_dev, true);
        if (err < 0)
@@ -49,27 +45,19 @@ static int st_accel_buffer_postenable(struct iio_dev *indio_dev)
 
 st_accel_buffer_enable_all_axis:
        st_sensors_set_axis_enable(indio_dev, ST_SENSORS_ENABLE_ALL_AXIS);
-st_accel_buffer_predisable:
-       iio_triggered_buffer_predisable(indio_dev);
        return err;
 }
 
 static int st_accel_buffer_predisable(struct iio_dev *indio_dev)
 {
-       int err, err2;
+       int err;
 
        err = st_sensors_set_enable(indio_dev, false);
        if (err < 0)
-               goto st_accel_buffer_predisable;
-
-       err = st_sensors_set_axis_enable(indio_dev, ST_SENSORS_ENABLE_ALL_AXIS);
-
-st_accel_buffer_predisable:
-       err2 = iio_triggered_buffer_predisable(indio_dev);
-       if (!err)
-               err = err2;
+               return err;
 
-       return err;
+       return st_sensors_set_axis_enable(indio_dev,
+                                         ST_SENSORS_ENABLE_ALL_AXIS);
 }
 
 static const struct iio_buffer_setup_ops st_accel_buffer_setup_ops = {
index 616d0b90dd9200073293f86881b9c3148328c112..3b59887a8581bcd49a925a290ebe7cbe6d6d58a3 100644 (file)
@@ -492,8 +492,6 @@ static int stk8312_buffer_postdisable(struct iio_dev *indio_dev)
 
 static const struct iio_buffer_setup_ops stk8312_buffer_setup_ops = {
        .preenable   = stk8312_buffer_preenable,
-       .postenable  = iio_triggered_buffer_postenable,
-       .predisable  = iio_triggered_buffer_predisable,
        .postdisable = stk8312_buffer_postdisable,
 };
 
index 98fad8cd6fe79d116f6981c4aed42a83febf78be..3ead378b02c9b395ffa22ed520b7a287d8763499 100644 (file)
@@ -376,8 +376,6 @@ static int stk8ba50_buffer_postdisable(struct iio_dev *indio_dev)
 
 static const struct iio_buffer_setup_ops stk8ba50_buffer_setup_ops = {
        .preenable   = stk8ba50_buffer_preenable,
-       .postenable  = iio_triggered_buffer_postenable,
-       .predisable  = iio_triggered_buffer_predisable,
        .postdisable = stk8ba50_buffer_postdisable,
 };
 
index 3dc15ec04f6684eb887ce463c2a4478a4cb27d1c..a8ec3efd659eda9654ecbbf18014ca5c5d7a684a 100644 (file)
@@ -74,8 +74,6 @@ static int ad7266_postdisable(struct iio_dev *indio_dev)
 
 static const struct iio_buffer_setup_ops iio_triggered_buffer_setup_ops = {
        .preenable = &ad7266_preenable,
-       .postenable = &iio_triggered_buffer_postenable,
-       .predisable = &iio_triggered_buffer_predisable,
        .postdisable = &ad7266_postdisable,
 };
 
index 23d8277086ee7c897fabd65b9e7746f60b8d6e3c..ee7b108688b33537095874e988c07905c63f56a2 100644 (file)
@@ -499,7 +499,6 @@ static int ad7606_buffer_postenable(struct iio_dev *indio_dev)
 {
        struct ad7606_state *st = iio_priv(indio_dev);
 
-       iio_triggered_buffer_postenable(indio_dev);
        gpiod_set_value(st->gpio_convst, 1);
 
        return 0;
@@ -511,7 +510,7 @@ static int ad7606_buffer_predisable(struct iio_dev *indio_dev)
 
        gpiod_set_value(st->gpio_convst, 0);
 
-       return iio_triggered_buffer_predisable(indio_dev);
+       return 0;
 }
 
 static const struct iio_buffer_setup_ops ad7606_buffer_ops = {
index 4bcf8a34bc46f044af1fbcefa4a4f4f3dc836698..b6b6765be7b49b25e9bea6603f73dbc62866fd9b 100644 (file)
@@ -178,8 +178,6 @@ static const struct ad7766_chip_info ad7766_chip_info[] = {
 
 static const struct iio_buffer_setup_ops ad7766_buffer_setup_ops = {
        .preenable = &ad7766_preenable,
-       .postenable = &iio_triggered_buffer_postenable,
-       .predisable = &iio_triggered_buffer_predisable,
        .postdisable = &ad7766_postdisable,
 };
 
index be2aed551324f7e8d1a7f742da9a9d2557c4ce5f..0e93b0766eb45b5d87464ef395998d7c2a141533 100644 (file)
@@ -490,7 +490,6 @@ static int ad7768_buffer_postenable(struct iio_dev *indio_dev)
 {
        struct ad7768_state *st = iio_priv(indio_dev);
 
-       iio_triggered_buffer_postenable(indio_dev);
        /*
         * Write a 1 to the LSB of the INTERFACE_FORMAT register to enter
         * continuous read mode. Subsequent data reads do not require an
@@ -502,17 +501,12 @@ static int ad7768_buffer_postenable(struct iio_dev *indio_dev)
 static int ad7768_buffer_predisable(struct iio_dev *indio_dev)
 {
        struct ad7768_state *st = iio_priv(indio_dev);
-       int ret;
 
        /*
         * To exit continuous read mode, perform a single read of the ADC_DATA
         * reg (0x2C), which allows further configuration of the device.
         */
-       ret = ad7768_spi_reg_read(st, AD7768_REG_ADC_DATA, 3);
-       if (ret < 0)
-               return ret;
-
-       return iio_triggered_buffer_predisable(indio_dev);
+       return ad7768_spi_reg_read(st, AD7768_REG_ADC_DATA, 3);
 }
 
 static const struct iio_buffer_setup_ops ad7768_buffer_ops = {
index d1d43fb700bac9fd4db347ed34172424b4ad8d2d..f8e6243457bb9ab3861da1596e2e0f70633c229a 100644 (file)
@@ -136,8 +136,6 @@ done:
 
 static const struct iio_buffer_setup_ops ad7887_ring_setup_ops = {
        .preenable = &ad7887_ring_preenable,
-       .postenable = &iio_triggered_buffer_postenable,
-       .predisable = &iio_triggered_buffer_predisable,
        .postdisable = &ad7887_ring_postdisable,
 };
 
index dd3d54b3bc8bba19612451e4546a326181fc3512..3554ee6ee0999780d2cb13d8ea5131933e8bc3a9 100644 (file)
@@ -345,10 +345,6 @@ static int ad_sd_buffer_postenable(struct iio_dev *indio_dev)
        unsigned int channel;
        int ret;
 
-       ret = iio_triggered_buffer_postenable(indio_dev);
-       if (ret < 0)
-               return ret;
-
        channel = find_first_bit(indio_dev->active_scan_mask,
                                 indio_dev->masklength);
        ret = ad_sigma_delta_set_channel(sigma_delta,
@@ -441,7 +437,6 @@ static irqreturn_t ad_sd_trigger_handler(int irq, void *p)
 
 static const struct iio_buffer_setup_ops ad_sd_buffer_setup_ops = {
        .postenable = &ad_sd_buffer_postenable,
-       .predisable = &iio_triggered_buffer_predisable,
        .postdisable = &ad_sd_buffer_postdisable,
        .validate_scan_mask = &iio_validate_scan_mask_onehot,
 };
index 1b4340a6c6bbb877fe89dd4a2ce049c08fa51505..6cc06f1566eb4e9231ab1b79322cc401fe4ab065 100644 (file)
@@ -937,14 +937,6 @@ static int at91_adc_buffer_preenable(struct iio_dev *indio_dev)
        return 0;
 }
 
-static int at91_adc_buffer_postenable(struct iio_dev *indio_dev)
-{
-       if (at91_adc_current_chan_is_touch(indio_dev))
-               return 0;
-
-       return iio_triggered_buffer_postenable(indio_dev);
-}
-
 static int at91_adc_buffer_postdisable(struct iio_dev *indio_dev)
 {
        struct at91_adc_state *st = iio_priv(indio_dev);
@@ -995,19 +987,9 @@ static int at91_adc_buffer_postdisable(struct iio_dev *indio_dev)
        return 0;
 }
 
-static int at91_adc_buffer_predisable(struct iio_dev *indio_dev)
-{
-       if (at91_adc_current_chan_is_touch(indio_dev))
-               return 0;
-
-       return iio_triggered_buffer_predisable(indio_dev);
-}
-
 static const struct iio_buffer_setup_ops at91_buffer_setup_ops = {
        .preenable = &at91_adc_buffer_preenable,
        .postdisable = &at91_adc_buffer_postdisable,
-       .postenable = &at91_adc_buffer_postenable,
-       .predisable = &at91_adc_buffer_predisable,
 };
 
 static struct iio_trigger *at91_adc_allocate_trigger(struct iio_dev *indio,
index 6689cb93c6a20038ef3a557a53d7380923b411f6..0d53ef18e0459ce204889a8dfb18e360e44b4854 100644 (file)
@@ -524,10 +524,6 @@ static int dln2_adc_triggered_buffer_postenable(struct iio_dev *indio_dev)
        u16 conflict;
        unsigned int trigger_chan;
 
-       ret = iio_triggered_buffer_postenable(indio_dev);
-       if (ret)
-               return ret;
-
        mutex_lock(&dln2->mutex);
 
        /* Enable ADC */
@@ -541,7 +537,6 @@ static int dln2_adc_triggered_buffer_postenable(struct iio_dev *indio_dev)
                                (int)conflict);
                        ret = -EBUSY;
                }
-               iio_triggered_buffer_predisable(indio_dev);
                return ret;
        }
 
@@ -555,7 +550,6 @@ static int dln2_adc_triggered_buffer_postenable(struct iio_dev *indio_dev)
                mutex_unlock(&dln2->mutex);
                if (ret < 0) {
                        dev_dbg(&dln2->pdev->dev, "Problem in %s\n", __func__);
-                       iio_triggered_buffer_predisable(indio_dev);
                        return ret;
                }
        } else {
@@ -568,7 +562,7 @@ static int dln2_adc_triggered_buffer_postenable(struct iio_dev *indio_dev)
 
 static int dln2_adc_triggered_buffer_predisable(struct iio_dev *indio_dev)
 {
-       int ret, ret2;
+       int ret;
        struct dln2_adc *dln2 = iio_priv(indio_dev);
 
        mutex_lock(&dln2->mutex);
@@ -586,10 +580,6 @@ static int dln2_adc_triggered_buffer_predisable(struct iio_dev *indio_dev)
        if (ret < 0)
                dev_dbg(&dln2->pdev->dev, "Problem in %s\n", __func__);
 
-       ret2 = iio_triggered_buffer_predisable(indio_dev);
-       if (ret == 0)
-               ret = ret2;
-
        return ret;
 }
 
index c371565374d135b2ff7f945449b823a133fee917..30e29f44ebd2ee6bf3ac8bc950a8e043f44ae214 100644 (file)
@@ -568,8 +568,6 @@ static bool mxs_lradc_adc_validate_scan_mask(struct iio_dev *iio,
 
 static const struct iio_buffer_setup_ops mxs_lradc_adc_buffer_ops = {
        .preenable = &mxs_lradc_adc_buffer_preenable,
-       .postenable = &iio_triggered_buffer_postenable,
-       .predisable = &iio_triggered_buffer_predisable,
        .postdisable = &mxs_lradc_adc_buffer_postdisable,
        .validate_scan_mask = &mxs_lradc_adc_validate_scan_mask,
 };
index e5a2bfcb5681ef903396230186e7973441c36017..3eb9ebe8372fce23911d71c9ba7eafc10665f113 100644 (file)
@@ -1492,7 +1492,7 @@ static int stm32_adc_dma_start(struct iio_dev *indio_dev)
        return 0;
 }
 
-static int __stm32_adc_buffer_postenable(struct iio_dev *indio_dev)
+static int stm32_adc_buffer_postenable(struct iio_dev *indio_dev)
 {
        struct stm32_adc *adc = iio_priv(indio_dev);
        struct device *dev = indio_dev->dev.parent;
@@ -1537,22 +1537,7 @@ err_pm_put:
        return ret;
 }
 
-static int stm32_adc_buffer_postenable(struct iio_dev *indio_dev)
-{
-       int ret;
-
-       ret = iio_triggered_buffer_postenable(indio_dev);
-       if (ret < 0)
-               return ret;
-
-       ret = __stm32_adc_buffer_postenable(indio_dev);
-       if (ret < 0)
-               iio_triggered_buffer_predisable(indio_dev);
-
-       return ret;
-}
-
-static void __stm32_adc_buffer_predisable(struct iio_dev *indio_dev)
+static int stm32_adc_buffer_predisable(struct iio_dev *indio_dev)
 {
        struct stm32_adc *adc = iio_priv(indio_dev);
        struct device *dev = indio_dev->dev.parent;
@@ -1571,19 +1556,8 @@ static void __stm32_adc_buffer_predisable(struct iio_dev *indio_dev)
 
        pm_runtime_mark_last_busy(dev);
        pm_runtime_put_autosuspend(dev);
-}
-
-static int stm32_adc_buffer_predisable(struct iio_dev *indio_dev)
-{
-       int ret;
-
-       __stm32_adc_buffer_predisable(indio_dev);
-
-       ret = iio_triggered_buffer_predisable(indio_dev);
-       if (ret < 0)
-               dev_err(&indio_dev->dev, "predisable failed\n");
 
-       return ret;
+       return 0;
 }
 
 static const struct iio_buffer_setup_ops stm32_adc_buffer_setup_ops = {
@@ -2024,7 +1998,7 @@ static int stm32_adc_suspend(struct device *dev)
        struct iio_dev *indio_dev = dev_get_drvdata(dev);
 
        if (iio_buffer_enabled(indio_dev))
-               __stm32_adc_buffer_predisable(indio_dev);
+               stm32_adc_buffer_predisable(indio_dev);
 
        return pm_runtime_force_suspend(dev);
 }
@@ -2046,7 +2020,7 @@ static int stm32_adc_resume(struct device *dev)
        if (ret < 0)
                return ret;
 
-       return __stm32_adc_buffer_postenable(indio_dev);
+       return stm32_adc_buffer_postenable(indio_dev);
 }
 #endif
 
index 017d1ba4c14e295e5cd0f1025e749457d77ad3c6..5e10fb4f3704d041dca78288e4a5d0db9c9e987d 100644 (file)
@@ -995,7 +995,7 @@ static int stm32_dfsdm_update_scan_mode(struct iio_dev *indio_dev,
        return 0;
 }
 
-static int __stm32_dfsdm_postenable(struct iio_dev *indio_dev)
+static int stm32_dfsdm_postenable(struct iio_dev *indio_dev)
 {
        struct stm32_dfsdm_adc *adc = iio_priv(indio_dev);
        int ret;
@@ -1038,30 +1038,7 @@ err_stop_hwc:
        return ret;
 }
 
-static int stm32_dfsdm_postenable(struct iio_dev *indio_dev)
-{
-       int ret;
-
-       if (indio_dev->currentmode == INDIO_BUFFER_TRIGGERED) {
-               ret = iio_triggered_buffer_postenable(indio_dev);
-               if (ret < 0)
-                       return ret;
-       }
-
-       ret = __stm32_dfsdm_postenable(indio_dev);
-       if (ret < 0)
-               goto err_predisable;
-
-       return 0;
-
-err_predisable:
-       if (indio_dev->currentmode == INDIO_BUFFER_TRIGGERED)
-               iio_triggered_buffer_predisable(indio_dev);
-
-       return ret;
-}
-
-static void __stm32_dfsdm_predisable(struct iio_dev *indio_dev)
+static int stm32_dfsdm_predisable(struct iio_dev *indio_dev)
 {
        struct stm32_dfsdm_adc *adc = iio_priv(indio_dev);
 
@@ -1073,14 +1050,6 @@ static void __stm32_dfsdm_predisable(struct iio_dev *indio_dev)
 
        if (adc->hwc)
                iio_hw_consumer_disable(adc->hwc);
-}
-
-static int stm32_dfsdm_predisable(struct iio_dev *indio_dev)
-{
-       __stm32_dfsdm_predisable(indio_dev);
-
-       if (indio_dev->currentmode == INDIO_BUFFER_TRIGGERED)
-               iio_triggered_buffer_predisable(indio_dev);
 
        return 0;
 }
@@ -1668,7 +1637,7 @@ static int __maybe_unused stm32_dfsdm_adc_suspend(struct device *dev)
        struct iio_dev *indio_dev = dev_get_drvdata(dev);
 
        if (iio_buffer_enabled(indio_dev))
-               __stm32_dfsdm_predisable(indio_dev);
+               stm32_dfsdm_predisable(indio_dev);
 
        return 0;
 }
@@ -1691,7 +1660,7 @@ static int __maybe_unused stm32_dfsdm_adc_resume(struct device *dev)
        }
 
        if (iio_buffer_enabled(indio_dev))
-               __stm32_dfsdm_postenable(indio_dev);
+               stm32_dfsdm_postenable(indio_dev);
 
        return 0;
 }
index f22f004c1eb6bcc3b7b711be5206a4f745bbb24f..c2db2435f419e75340da4c87c14d857ee5870bd0 100644 (file)
@@ -187,8 +187,6 @@ static const struct iio_info adc084s021_info = {
 
 static const struct iio_buffer_setup_ops adc084s021_buffer_setup_ops = {
        .preenable = adc084s021_buffer_preenable,
-       .postenable = iio_triggered_buffer_postenable,
-       .predisable = iio_triggered_buffer_predisable,
        .postdisable = adc084s021_buffer_postdisable,
 };
 
index 1a5f520080d270962c1edc8eb337c3ee3513b1ff..f42ab112986ec0aa04f9ae43a7676aa1f7cd57b1 100644 (file)
@@ -788,8 +788,6 @@ static int ads1015_buffer_postdisable(struct iio_dev *indio_dev)
 
 static const struct iio_buffer_setup_ops ads1015_buffer_setup_ops = {
        .preenable      = ads1015_buffer_preenable,
-       .postenable     = iio_triggered_buffer_postenable,
-       .predisable     = iio_triggered_buffer_predisable,
        .postdisable    = ads1015_buffer_postdisable,
        .validate_scan_mask = &iio_validate_scan_mask_onehot,
 };
index f5637bf38d37707bcfe222dc65cad0e85bb13318..1d794cf3e3f1395f38556d3a3a1da27ec789252d 100644 (file)
@@ -724,13 +724,8 @@ static int vf610_adc_buffer_postenable(struct iio_dev *indio_dev)
 {
        struct vf610_adc *info = iio_priv(indio_dev);
        unsigned int channel;
-       int ret;
        int val;
 
-       ret = iio_triggered_buffer_postenable(indio_dev);
-       if (ret)
-               return ret;
-
        val = readl(info->regs + VF610_REG_ADC_GC);
        val |= VF610_ADC_ADCON;
        writel(val, info->regs + VF610_REG_ADC_GC);
@@ -761,7 +756,7 @@ static int vf610_adc_buffer_predisable(struct iio_dev *indio_dev)
 
        writel(hc_cfg, info->regs + VF610_REG_ADC_HC0);
 
-       return iio_triggered_buffer_predisable(indio_dev);
+       return 0;
 }
 
 static const struct iio_buffer_setup_ops iio_triggered_buffer_setup_ops = {
index 69be9e82fe3e5ef25a9f0a9fc21f8b9389cb293e..d0b7ef296afb45a23d8505326350116364d67d3b 100644 (file)
@@ -839,8 +839,6 @@ err:
 
 static const struct iio_buffer_setup_ops xadc_buffer_ops = {
        .preenable = &xadc_preenable,
-       .postenable = &iio_triggered_buffer_postenable,
-       .predisable = &iio_triggered_buffer_predisable,
        .postdisable = &xadc_postdisable,
 };
 
index e8046c1ecd6b56d77be04faaf2a383432aa75f70..6c20a83f887e53c5d8194285497d94a10f9f21fb 100644 (file)
 #include <linux/iio/triggered_buffer.h>
 #include <linux/iio/trigger_consumer.h>
 
-static const struct iio_buffer_setup_ops iio_triggered_buffer_setup_ops = {
-       .postenable = &iio_triggered_buffer_postenable,
-       .predisable = &iio_triggered_buffer_predisable,
-};
-
 /**
  * iio_triggered_buffer_setup() - Setup triggered buffer and pollfunc
  * @indio_dev:         IIO device structure
@@ -67,10 +62,7 @@ int iio_triggered_buffer_setup(struct iio_dev *indio_dev,
        }
 
        /* Ring buffer functions - here trigger setup related */
-       if (setup_ops)
-               indio_dev->setup_ops = setup_ops;
-       else
-               indio_dev->setup_ops = &iio_triggered_buffer_setup_ops;
+       indio_dev->setup_ops = setup_ops;
 
        /* Flag that polled ring buffering is possible */
        indio_dev->modes |= INDIO_BUFFER_TRIGGERED;
index 047f4b3f5a0eb8d93f35c8c2b78a2274726442b9..43069636fcd5128696464d12bc781038471e37ee 100644 (file)
@@ -410,10 +410,6 @@ static int atlas_buffer_postenable(struct iio_dev *indio_dev)
        struct atlas_data *data = iio_priv(indio_dev);
        int ret;
 
-       ret = iio_triggered_buffer_postenable(indio_dev);
-       if (ret)
-               return ret;
-
        ret = pm_runtime_get_sync(&data->client->dev);
        if (ret < 0) {
                pm_runtime_put_noidle(&data->client->dev);
@@ -437,7 +433,7 @@ static int atlas_buffer_predisable(struct iio_dev *indio_dev)
        if (ret)
                return ret;
 
-       return iio_triggered_buffer_predisable(indio_dev);
+       return 0;
 }
 
 static const struct iio_trigger_ops atlas_interrupt_trigger_ops = {
index 17606eca42b43989808da6011df2b14b1da771d2..8e13c53d4360825e203fcb00ab59291f687b782a 100644 (file)
@@ -99,20 +99,6 @@ done:
 }
 
 static const struct iio_buffer_setup_ops iio_simple_dummy_buffer_setup_ops = {
-       /*
-        * iio_triggered_buffer_postenable:
-        * Generic function that simply attaches the pollfunc to the trigger.
-        * Replace this to mess with hardware state before we attach the
-        * trigger.
-        */
-       .postenable = &iio_triggered_buffer_postenable,
-       /*
-        * iio_triggered_buffer_predisable:
-        * Generic function that simple detaches the pollfunc from the trigger.
-        * Replace this to put hardware state back again after the trigger is
-        * detached but before userspace knows we have disabled the ring.
-        */
-       .predisable = &iio_triggered_buffer_predisable,
 };
 
 int iio_simple_dummy_configure_buffer(struct iio_dev *indio_dev)
index 933492b33189a3a6e9bfef6351a20c54a0a0e935..8ddda96455fcb1fffaf44ae715a43cb2507c16df 100644 (file)
@@ -1051,8 +1051,6 @@ static int bmg160_buffer_postdisable(struct iio_dev *indio_dev)
 
 static const struct iio_buffer_setup_ops bmg160_buffer_setup_ops = {
        .preenable = bmg160_buffer_preenable,
-       .postenable = iio_triggered_buffer_postenable,
-       .predisable = iio_triggered_buffer_predisable,
        .postdisable = bmg160_buffer_postdisable,
 };
 
index 157330451e0a178c900cda53fdbc566a4ab7efcb..00e58060968c9da81133711ac6aa7c2c5a157ca1 100644 (file)
@@ -662,8 +662,6 @@ static int mpu3050_buffer_postdisable(struct iio_dev *indio_dev)
 
 static const struct iio_buffer_setup_ops mpu3050_buffer_setup_ops = {
        .preenable = mpu3050_buffer_preenable,
-       .postenable = iio_triggered_buffer_postenable,
-       .predisable = iio_triggered_buffer_predisable,
        .postdisable = mpu3050_buffer_postdisable,
 };
 
index 9c92ff7a82bee846dbf7b6bc9963bf418bcc60c8..4feb7ada71953bbaf91d8e646c5cb79b77ce8bc0 100644 (file)
@@ -33,13 +33,9 @@ static int st_gyro_buffer_postenable(struct iio_dev *indio_dev)
 {
        int err;
 
-       err = iio_triggered_buffer_postenable(indio_dev);
-       if (err < 0)
-               return err;
-
        err = st_sensors_set_axis_enable(indio_dev, indio_dev->active_scan_mask[0]);
        if (err < 0)
-               goto st_gyro_buffer_predisable;
+               return err;
 
        err = st_sensors_set_enable(indio_dev, true);
        if (err < 0)
@@ -49,27 +45,18 @@ static int st_gyro_buffer_postenable(struct iio_dev *indio_dev)
 
 st_gyro_buffer_enable_all_axis:
        st_sensors_set_axis_enable(indio_dev, ST_SENSORS_ENABLE_ALL_AXIS);
-st_gyro_buffer_predisable:
-       iio_triggered_buffer_predisable(indio_dev);
        return err;
 }
 
 static int st_gyro_buffer_predisable(struct iio_dev *indio_dev)
 {
-       int err, err2;
+       int err;
 
        err = st_sensors_set_enable(indio_dev, false);
        if (err < 0)
-               goto st_gyro_buffer_predisable;
-
-       err = st_sensors_set_axis_enable(indio_dev, ST_SENSORS_ENABLE_ALL_AXIS);
-
-st_gyro_buffer_predisable:
-       err2 = iio_triggered_buffer_predisable(indio_dev);
-       if (!err)
-               err = err2;
+               return err;
 
-       return err;
+       return st_sensors_set_axis_enable(indio_dev, ST_SENSORS_ENABLE_ALL_AXIS);
 }
 
 static const struct iio_buffer_setup_ops st_gyro_buffer_setup_ops = {
index 3331141734c8f1e066c50882bc94f22cc5186170..413204cd9bbd16e6f1b3ac6a21a4330527396cf3 100644 (file)
@@ -278,17 +278,11 @@ static int hdc100x_buffer_postenable(struct iio_dev *indio_dev)
        struct hdc100x_data *data = iio_priv(indio_dev);
        int ret;
 
-       ret = iio_triggered_buffer_postenable(indio_dev);
-       if (ret)
-               return ret;
-
        /* Buffer is enabled. First set ACQ Mode, then attach poll func */
        mutex_lock(&data->lock);
        ret = hdc100x_update_config(data, HDC100X_REG_CONFIG_ACQ_MODE,
                                    HDC100X_REG_CONFIG_ACQ_MODE);
        mutex_unlock(&data->lock);
-       if (ret)
-               iio_triggered_buffer_predisable(indio_dev);
 
        return ret;
 }
@@ -296,16 +290,12 @@ static int hdc100x_buffer_postenable(struct iio_dev *indio_dev)
 static int hdc100x_buffer_predisable(struct iio_dev *indio_dev)
 {
        struct hdc100x_data *data = iio_priv(indio_dev);
-       int ret, ret2;
+       int ret;
 
        mutex_lock(&data->lock);
        ret = hdc100x_update_config(data, HDC100X_REG_CONFIG_ACQ_MODE, 0);
        mutex_unlock(&data->lock);
 
-       ret2 = iio_triggered_buffer_predisable(indio_dev);
-       if (ret == 0)
-               ret = ret2;
-
        return ret;
 }
 
index 21c6c160462d4cfeace7933f52136bad0279f63b..f75f0b218fea3cdebff037b6cb593a1cbb11b322 100644 (file)
@@ -153,8 +153,6 @@ static int hts221_buffer_postdisable(struct iio_dev *iio_dev)
 
 static const struct iio_buffer_setup_ops hts221_buffer_ops = {
        .preenable = hts221_buffer_preenable,
-       .postenable = iio_triggered_buffer_postenable,
-       .predisable = iio_triggered_buffer_predisable,
        .postdisable = hts221_buffer_postdisable,
 };
 
index e59fe2f36bbbb141a0df2d176b727292a0c1d22f..9d1a92cc648042292edbea9497f629b2c07923e3 100644 (file)
@@ -18,6 +18,12 @@ void iio_device_register_trigger_consumer(struct iio_dev *indio_dev);
  **/
 void iio_device_unregister_trigger_consumer(struct iio_dev *indio_dev);
 
+
+int iio_trigger_attach_poll_func(struct iio_trigger *trig,
+                                struct iio_poll_func *pf);
+int iio_trigger_detach_poll_func(struct iio_trigger *trig,
+                                struct iio_poll_func *pf);
+
 #else
 
 /**
@@ -37,4 +43,15 @@ static void iio_device_unregister_trigger_consumer(struct iio_dev *indio_dev)
 {
 }
 
+static inline int iio_trigger_attach_poll_func(struct iio_trigger *trig,
+                                              struct iio_poll_func *pf)
+{
+       return 0;
+}
+static inline int iio_trigger_detach_poll_func(struct iio_trigger *trig,
+                                              struct iio_poll_func *pf)
+{
+       return 0;
+}
+
 #endif /* CONFIG_TRIGGER_CONSUMER */
index 9fa238c0a7d4f4fc0d9372854ee30c2c1fb4b6d4..329dd4d6757ae72e1075180f511cc8cbecdd88c2 100644 (file)
@@ -20,6 +20,7 @@
 
 #include <linux/iio/iio.h>
 #include "iio_core.h"
+#include "iio_core_trigger.h"
 #include <linux/iio/sysfs.h>
 #include <linux/iio/buffer.h>
 #include <linux/iio/buffer_impl.h>
@@ -972,6 +973,13 @@ static int iio_enable_buffers(struct iio_dev *indio_dev,
                }
        }
 
+       if (indio_dev->currentmode == INDIO_BUFFER_TRIGGERED) {
+               ret = iio_trigger_attach_poll_func(indio_dev->trig,
+                                                  indio_dev->pollfunc);
+               if (ret)
+                       goto err_disable_buffers;
+       }
+
        return 0;
 
 err_disable_buffers:
@@ -998,6 +1006,11 @@ static int iio_disable_buffers(struct iio_dev *indio_dev)
        if (list_empty(&indio_dev->buffer_list))
                return 0;
 
+       if (indio_dev->currentmode == INDIO_BUFFER_TRIGGERED) {
+               iio_trigger_detach_poll_func(indio_dev->trig,
+                                            indio_dev->pollfunc);
+       }
+
        /*
         * If things go wrong at some step in disable we still need to continue
         * to perform the other steps, otherwise we leave the device in a
index 53d1931f6be8b20496a61238bbd1c72426f67ca3..6f16357fd732234afe282abc97fd60e62d13500b 100644 (file)
@@ -239,8 +239,8 @@ static void iio_trigger_put_irq(struct iio_trigger *trig, int irq)
  * the relevant function is in there may be the best option.
  */
 /* Worth protecting against double additions? */
-static int iio_trigger_attach_poll_func(struct iio_trigger *trig,
-                                       struct iio_poll_func *pf)
+int iio_trigger_attach_poll_func(struct iio_trigger *trig,
+                                struct iio_poll_func *pf)
 {
        int ret = 0;
        bool notinuse
@@ -290,8 +290,8 @@ out_put_module:
        return ret;
 }
 
-static int iio_trigger_detach_poll_func(struct iio_trigger *trig,
-                                        struct iio_poll_func *pf)
+int iio_trigger_detach_poll_func(struct iio_trigger *trig,
+                                struct iio_poll_func *pf)
 {
        int ret = 0;
        bool no_other_users
@@ -705,17 +705,3 @@ void iio_device_unregister_trigger_consumer(struct iio_dev *indio_dev)
        if (indio_dev->trig)
                iio_trigger_put(indio_dev->trig);
 }
-
-int iio_triggered_buffer_postenable(struct iio_dev *indio_dev)
-{
-       return iio_trigger_attach_poll_func(indio_dev->trig,
-                                           indio_dev->pollfunc);
-}
-EXPORT_SYMBOL(iio_triggered_buffer_postenable);
-
-int iio_triggered_buffer_predisable(struct iio_dev *indio_dev)
-{
-       return iio_trigger_detach_poll_func(indio_dev->trig,
-                                            indio_dev->pollfunc);
-}
-EXPORT_SYMBOL(iio_triggered_buffer_predisable);
index dd9ad880deca963fe62e9cd588b9f34d674bbb52..e2850c1a735339b4b9582728b06647383ac77a09 100644 (file)
@@ -1390,12 +1390,6 @@ static int gp2ap020a00f_buffer_postenable(struct iio_dev *indio_dev)
 
        mutex_lock(&data->lock);
 
-       err = iio_triggered_buffer_postenable(indio_dev);
-       if (err < 0) {
-               mutex_unlock(&data->lock);
-               return err;
-       }
-
        /*
         * Enable triggers according to the scan_mask. Enabling either
         * LIGHT_CLEAR or LIGHT_IR scan mode results in enabling ALS
@@ -1430,8 +1424,6 @@ static int gp2ap020a00f_buffer_postenable(struct iio_dev *indio_dev)
                err = -ENOMEM;
 
 error_unlock:
-       if (err < 0)
-               iio_triggered_buffer_predisable(indio_dev);
        mutex_unlock(&data->lock);
 
        return err;
@@ -1465,8 +1457,6 @@ static int gp2ap020a00f_buffer_predisable(struct iio_dev *indio_dev)
        if (err == 0)
                kfree(data->buffer);
 
-       iio_triggered_buffer_predisable(indio_dev);
-
        mutex_unlock(&data->lock);
 
        return err;
index 663c7261065535352e0d9253b68a638ae765c7d5..b93b85dbc3a6a15e0d267ddf1634b33a855f50b8 100644 (file)
@@ -216,36 +216,20 @@ static const struct iio_info isl29125_info = {
 static int isl29125_buffer_postenable(struct iio_dev *indio_dev)
 {
        struct isl29125_data *data = iio_priv(indio_dev);
-       int err;
-
-       err = iio_triggered_buffer_postenable(indio_dev);
-       if (err)
-               return err;
 
        data->conf1 |= ISL29125_MODE_RGB;
-       err = i2c_smbus_write_byte_data(data->client, ISL29125_CONF1,
+       return i2c_smbus_write_byte_data(data->client, ISL29125_CONF1,
                data->conf1);
-       if (err) {
-               iio_triggered_buffer_predisable(indio_dev);
-               return err;
-       }
-
-       return 0;
 }
 
 static int isl29125_buffer_predisable(struct iio_dev *indio_dev)
 {
        struct isl29125_data *data = iio_priv(indio_dev);
-       int ret;
 
        data->conf1 &= ~ISL29125_MODE_MASK;
        data->conf1 |= ISL29125_MODE_PD;
-       ret = i2c_smbus_write_byte_data(data->client, ISL29125_CONF1,
+       return i2c_smbus_write_byte_data(data->client, ISL29125_CONF1,
                data->conf1);
-
-       iio_triggered_buffer_predisable(indio_dev);
-
-       return ret;
 }
 
 static const struct iio_buffer_setup_ops isl29125_buffer_setup_ops = {
index c20fbc730d65966127ed0a40daed0a08441544fc..aa2972b0483344476ff88563e1d0c603a350bfa1 100644 (file)
@@ -570,8 +570,6 @@ static int rpr0521_buffer_postdisable(struct iio_dev *indio_dev)
 
 static const struct iio_buffer_setup_ops rpr0521_buffer_setup_ops = {
        .preenable = rpr0521_buffer_preenable,
-       .postenable = iio_triggered_buffer_postenable,
-       .predisable = iio_triggered_buffer_predisable,
        .postdisable = rpr0521_buffer_postdisable,
 };
 
index e1f989dd3a3ded7af962ffdbb35744ba6ac8f9ef..521e8adb93a7741af1b41a62434cd1e11bfc69e4 100644 (file)
@@ -1171,8 +1171,6 @@ static bool si1145_validate_scan_mask(struct iio_dev *indio_dev,
 
 static const struct iio_buffer_setup_ops si1145_buffer_setup_ops = {
        .preenable = si1145_buffer_preenable,
-       .postenable = iio_triggered_buffer_postenable,
-       .predisable = iio_triggered_buffer_predisable,
        .validate_scan_mask = si1145_validate_scan_mask,
 };
 
index 4d001d50e7753c4081e82b0031d41c022080790f..a18a82e6bbf5d6f76876b1c9ca2cbe5a64def8bf 100644 (file)
@@ -227,8 +227,6 @@ static int st_uvis25_buffer_postdisable(struct iio_dev *iio_dev)
 
 static const struct iio_buffer_setup_ops st_uvis25_buffer_ops = {
        .preenable = st_uvis25_buffer_preenable,
-       .postenable = iio_triggered_buffer_postenable,
-       .predisable = iio_triggered_buffer_predisable,
        .postdisable = st_uvis25_buffer_postdisable,
 };
 
index bd6d3e4a0c4dcc40215e40990b2766d582732e34..6fe5d46f80d40126a07247a42a1c62cd05a87cca 100644 (file)
@@ -243,35 +243,19 @@ static const struct iio_info tcs3414_info = {
 static int tcs3414_buffer_postenable(struct iio_dev *indio_dev)
 {
        struct tcs3414_data *data = iio_priv(indio_dev);
-       int ret;
-
-       ret = iio_triggered_buffer_postenable(indio_dev);
-       if (ret)
-               return ret;
 
        data->control |= TCS3414_CONTROL_ADC_EN;
-       ret = i2c_smbus_write_byte_data(data->client, TCS3414_CONTROL,
+       return i2c_smbus_write_byte_data(data->client, TCS3414_CONTROL,
                data->control);
-       if (ret)
-               iio_triggered_buffer_predisable(indio_dev);
-
-       return ret;
 }
 
 static int tcs3414_buffer_predisable(struct iio_dev *indio_dev)
 {
        struct tcs3414_data *data = iio_priv(indio_dev);
-       int ret, ret2;
 
        data->control &= ~TCS3414_CONTROL_ADC_EN;
-       ret = i2c_smbus_write_byte_data(data->client, TCS3414_CONTROL,
+       return i2c_smbus_write_byte_data(data->client, TCS3414_CONTROL,
                data->control);
-
-       ret2 = iio_triggered_buffer_predisable(indio_dev);
-       if (!ret)
-               ret = ret2;
-
-       return ret;
 }
 
 static const struct iio_buffer_setup_ops tcs3414_buffer_setup_ops = {
index ac1ab715d4ddc1bdfb0cee3c1205e2a6ea79f85d..fff4b36b8b58dc04cc197b52a846d9737a95648a 100644 (file)
@@ -957,50 +957,29 @@ static int vcnl4010_buffer_postenable(struct iio_dev *indio_dev)
        int ret;
        int cmd;
 
-       ret = iio_triggered_buffer_postenable(indio_dev);
-       if (ret)
-               return ret;
-
        /* Do not enable the buffer if we are already capturing events. */
-       if (vcnl4010_is_in_periodic_mode(data)) {
-               ret = -EBUSY;
-               goto end;
-       }
+       if (vcnl4010_is_in_periodic_mode(data))
+               return -EBUSY;
 
        ret = i2c_smbus_write_byte_data(data->client, VCNL4010_INT_CTRL,
                                        VCNL4010_INT_PROX_EN);
        if (ret < 0)
-               goto end;
+               return ret;
 
        cmd = VCNL4000_SELF_TIMED_EN | VCNL4000_PROX_EN;
-       ret = i2c_smbus_write_byte_data(data->client, VCNL4000_COMMAND, cmd);
-       if (ret < 0)
-               goto end;
-
-       return 0;
-end:
-       iio_triggered_buffer_predisable(indio_dev);
-
-       return ret;
+       return i2c_smbus_write_byte_data(data->client, VCNL4000_COMMAND, cmd);
 }
 
 static int vcnl4010_buffer_predisable(struct iio_dev *indio_dev)
 {
        struct vcnl4000_data *data = iio_priv(indio_dev);
-       int ret, ret_disable;
+       int ret;
 
        ret = i2c_smbus_write_byte_data(data->client, VCNL4010_INT_CTRL, 0);
        if (ret < 0)
-               goto end;
-
-       ret = i2c_smbus_write_byte_data(data->client, VCNL4000_COMMAND, 0);
-
-end:
-       ret_disable = iio_triggered_buffer_predisable(indio_dev);
-       if (ret == 0)
-               ret = ret_disable;
+               return ret;
 
-       return ret;
+       return i2c_smbus_write_byte_data(data->client, VCNL4000_COMMAND, 0);
 }
 
 static const struct iio_buffer_setup_ops vcnl4010_buffer_ops = {
index 8fc52057837d02778ded896db5e21ff9bd23b4f2..fc6840f9c1fa6a23f5c680db339d574703a20403 100644 (file)
@@ -836,8 +836,6 @@ static int bmc150_magn_buffer_postdisable(struct iio_dev *indio_dev)
 
 static const struct iio_buffer_setup_ops bmc150_magn_buffer_setup_ops = {
        .preenable = bmc150_magn_buffer_preenable,
-       .postenable = iio_triggered_buffer_postenable,
-       .predisable = iio_triggered_buffer_predisable,
        .postdisable = bmc150_magn_buffer_postdisable,
 };
 
index a3e754943456464e32f24ecded054d332ccc607c..7242897a05e956ee853ebb30a7c8c862bf72722e 100644 (file)
@@ -463,8 +463,6 @@ static int rm3100_buffer_postdisable(struct iio_dev *indio_dev)
 
 static const struct iio_buffer_setup_ops rm3100_buffer_ops = {
        .preenable = rm3100_buffer_preenable,
-       .postenable = iio_triggered_buffer_postenable,
-       .predisable = iio_triggered_buffer_predisable,
        .postdisable = rm3100_buffer_postdisable,
 };
 
index bb425c167a9698f1aa931ef160bd8a3178f8142d..4917721fa2e5acf4be639d6caacd6c7b2a2dd8eb 100644 (file)
@@ -31,34 +31,12 @@ int st_magn_trig_set_state(struct iio_trigger *trig, bool state)
 
 static int st_magn_buffer_postenable(struct iio_dev *indio_dev)
 {
-       int err;
-
-       err = iio_triggered_buffer_postenable(indio_dev);
-       if (err < 0)
-               return err;
-
-       err = st_sensors_set_enable(indio_dev, true);
-       if (err < 0)
-               goto st_magn_buffer_predisable;
-
-       return 0;
-
-st_magn_buffer_predisable:
-       iio_triggered_buffer_predisable(indio_dev);
-       return err;
+       return st_sensors_set_enable(indio_dev, true);
 }
 
 static int st_magn_buffer_predisable(struct iio_dev *indio_dev)
 {
-       int err, err2;
-
-       err = st_sensors_set_enable(indio_dev, false);
-
-       err2 = iio_triggered_buffer_predisable(indio_dev);
-       if (!err)
-               err = err2;
-
-       return err;
+       return st_sensors_set_enable(indio_dev, false);
 }
 
 static const struct iio_buffer_setup_ops st_magn_buffer_setup_ops = {
index 2d601889c8c056bccce2c2258ac6f89c0ab99aec..67ae635a05f3d29d52cc990d716d27b5ca832c19 100644 (file)
@@ -278,17 +278,8 @@ static const struct iio_trigger_ops lmp91000_trigger_ops = {
 static int lmp91000_buffer_postenable(struct iio_dev *indio_dev)
 {
        struct lmp91000_data *data = iio_priv(indio_dev);
-       int err;
 
-       err = iio_triggered_buffer_postenable(indio_dev);
-       if (err)
-               return err;
-
-       err = iio_channel_start_all_cb(data->cb_buffer);
-       if (err)
-               iio_triggered_buffer_predisable(indio_dev);
-
-       return err;
+       return iio_channel_start_all_cb(data->cb_buffer);
 }
 
 static int lmp91000_buffer_predisable(struct iio_dev *indio_dev)
@@ -297,7 +288,7 @@ static int lmp91000_buffer_predisable(struct iio_dev *indio_dev)
 
        iio_channel_stop_all_cb(data->cb_buffer);
 
-       return iio_triggered_buffer_predisable(indio_dev);
+       return 0;
 }
 
 static const struct iio_buffer_setup_ops lmp91000_buffer_setup_ops = {
index 418dbf9e6e1e350b20fa9be1ac4a3170ec56da3f..7cf6f06797e1e7d2a192dd44b5a207f904250f24 100644 (file)
@@ -31,34 +31,12 @@ int st_press_trig_set_state(struct iio_trigger *trig, bool state)
 
 static int st_press_buffer_postenable(struct iio_dev *indio_dev)
 {
-       int err;
-
-       err = iio_triggered_buffer_postenable(indio_dev);
-       if (err < 0)
-               return err;
-
-       err = st_sensors_set_enable(indio_dev, true);
-       if (err < 0)
-               goto st_press_buffer_predisable;
-
-       return 0;
-
-st_press_buffer_predisable:
-       iio_triggered_buffer_predisable(indio_dev);
-       return err;
+       return st_sensors_set_enable(indio_dev, true);
 }
 
 static int st_press_buffer_predisable(struct iio_dev *indio_dev)
 {
-       int err, err2;
-
-       err = st_sensors_set_enable(indio_dev, false);
-
-       err2 = iio_triggered_buffer_predisable(indio_dev);
-       if (!err)
-               err = err2;
-
-       return err;
+       return st_sensors_set_enable(indio_dev, false);
 }
 
 static const struct iio_buffer_setup_ops st_press_buffer_setup_ops = {
index ef818f2aebd6e84a1a2e5acb2cc8963eca8336b5..2b8796ef91ef1f1c639b6ffc84d3f3b5ce977097 100644 (file)
@@ -1242,19 +1242,17 @@ static int zpa2326_postenable_buffer(struct iio_dev *indio_dev)
        const struct zpa2326_private *priv = iio_priv(indio_dev);
        int                           err;
 
-       /* Plug our own trigger event handler. */
-       err = iio_triggered_buffer_postenable(indio_dev);
-       if (err)
-               goto err;
-
        if (!priv->waken) {
                /*
                 * We were already power supplied. Just clear hardware FIFO to
                 * get rid of samples acquired during previous rounds (if any).
                 */
                err = zpa2326_clear_fifo(indio_dev, 0);
-               if (err)
-                       goto err_buffer_predisable;
+               if (err) {
+                       zpa2326_err(indio_dev,
+                                   "failed to enable buffering (%d)", err);
+                       return err;
+               }
        }
 
        if (!iio_trigger_using_own(indio_dev) && priv->waken) {
@@ -1263,18 +1261,14 @@ static int zpa2326_postenable_buffer(struct iio_dev *indio_dev)
                 * powered up: reconfigure one-shot mode.
                 */
                err = zpa2326_config_oneshot(indio_dev, priv->irq);
-               if (err)
-                       goto err_buffer_predisable;
+               if (err) {
+                       zpa2326_err(indio_dev,
+                                   "failed to enable buffering (%d)", err);
+                       return err;
+               }
        }
 
        return 0;
-
-err_buffer_predisable:
-       iio_triggered_buffer_predisable(indio_dev);
-err:
-       zpa2326_err(indio_dev, "failed to enable buffering (%d)", err);
-
-       return err;
 }
 
 static int zpa2326_postdisable_buffer(struct iio_dev *indio_dev)
@@ -1287,7 +1281,6 @@ static int zpa2326_postdisable_buffer(struct iio_dev *indio_dev)
 static const struct iio_buffer_setup_ops zpa2326_buffer_setup_ops = {
        .preenable   = zpa2326_preenable_buffer,
        .postenable  = zpa2326_postenable_buffer,
-       .predisable  = iio_triggered_buffer_predisable,
        .postdisable = zpa2326_postdisable_buffer
 };
 
index 08c6100e2c94897da8029c5cea6477af4d36a2d2..dc2e11b43431dea3f6c0fa94a1178b581cef66f2 100644 (file)
@@ -736,8 +736,6 @@ static int sx9310_buffer_postdisable(struct iio_dev *indio_dev)
 
 static const struct iio_buffer_setup_ops sx9310_buffer_setup_ops = {
        .preenable = sx9310_buffer_preenable,
-       .postenable = iio_triggered_buffer_postenable,
-       .predisable = iio_triggered_buffer_predisable,
        .postdisable = sx9310_buffer_postdisable,
 };
 
index f6eec54faef45926a77f25f977d3affff04fbb91..acb821cbad46ffdcee84ccf73249c0b8d81a7b06 100644 (file)
@@ -680,10 +680,6 @@ static int sx9500_buffer_postenable(struct iio_dev *indio_dev)
        struct sx9500_data *data = iio_priv(indio_dev);
        int ret = 0, i;
 
-       ret = iio_triggered_buffer_postenable(indio_dev);
-       if (ret)
-               return ret;
-
        mutex_lock(&data->mutex);
 
        for (i = 0; i < SX9500_NUM_CHANNELS; i++)
@@ -700,9 +696,6 @@ static int sx9500_buffer_postenable(struct iio_dev *indio_dev)
 
        mutex_unlock(&data->mutex);
 
-       if (ret)
-               iio_triggered_buffer_predisable(indio_dev);
-
        return ret;
 }
 
@@ -727,8 +720,6 @@ static int sx9500_buffer_predisable(struct iio_dev *indio_dev)
 
        mutex_unlock(&data->mutex);
 
-       iio_triggered_buffer_predisable(indio_dev);
-
        return ret;
 }
 
index c3c6ba5ec423fb76ef6cf08d1240dfba8f5db73a..3aa2f132dd67d26b645be8105aeb569588504ba3 100644 (file)
@@ -50,11 +50,4 @@ irqreturn_t iio_pollfunc_store_time(int irq, void *p);
 
 void iio_trigger_notify_done(struct iio_trigger *trig);
 
-/*
- * Two functions for common case where all that happens is a pollfunc
- * is attached and detached from a trigger
- */
-int iio_triggered_buffer_postenable(struct iio_dev *indio_dev);
-int iio_triggered_buffer_predisable(struct iio_dev *indio_dev);
-
 #endif