History

iio: Move attach/detach of the poll func to the core

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.

Lars-Peter Clausen committed 6 years ago

Commit f11d59d1 parent 044d40649 files · +93 −429Browse files

Unified · Split

49 files
  1. drivers/iio/accel/adxl372.c +5 −15
  2. drivers/iio/accel/bmc150-accel-core.c +2 −2
  3. drivers/iio/accel/kxcjk-1013.c +0 −2
  4. drivers/iio/accel/kxsd9.c +0 −2
  5. drivers/iio/accel/st_accel_buffer.c +5 −17
  6. drivers/iio/accel/stk8312.c +0 −2
  7. drivers/iio/accel/stk8ba50.c +0 −2
  8. drivers/iio/adc/ad7266.c +0 −2
  9. drivers/iio/adc/ad7606.c +1 −2
  10. drivers/iio/adc/ad7766.c +0 −2
  11. drivers/iio/adc/ad7768-1.c +1 −7
  12. drivers/iio/adc/ad7887.c +0 −2
  13. drivers/iio/adc/ad_sigma_delta.c +0 −5
  14. drivers/iio/adc/at91-sama5d2_adc.c +0 −18
  15. drivers/iio/adc/dln2-adc.c +1 −11
  16. drivers/iio/adc/mxs-lradc-adc.c +0 −2
  17. drivers/iio/adc/stm32-adc.c +5 −31
  18. drivers/iio/adc/stm32-dfsdm-adc.c +4 −35
  19. drivers/iio/adc/ti-adc084s021.c +0 −2
  20. drivers/iio/adc/ti-ads1015.c +0 −2
  21. drivers/iio/adc/vf610_adc.c +1 −6
  22. drivers/iio/adc/xilinx-xadc-core.c +0 −2
  23. drivers/iio/buffer/industrialio-triggered-buffer.c +1 −9
  24. drivers/iio/chemical/atlas-sensor.c +1 −5
  25. drivers/iio/dummy/iio_simple_dummy_buffer.c +0 −14
  26. drivers/iio/gyro/bmg160_core.c +0 −2
  27. drivers/iio/gyro/mpu3050-core.c +0 −2
  28. drivers/iio/gyro/st_gyro_buffer.c +4 −17
  29. drivers/iio/humidity/hdc100x.c +1 −11
  30. drivers/iio/humidity/hts221_buffer.c +0 −2
  31. drivers/iio/iio_core_trigger.h +17 −0
  32. drivers/iio/industrialio-buffer.c +13 −0
  33. drivers/iio/industrialio-trigger.c +4 −18
  34. drivers/iio/light/gp2ap020a00f.c +0 −10
  35. drivers/iio/light/isl29125.c +2 −18
  36. drivers/iio/light/rpr0521.c +0 −2
  37. drivers/iio/light/si1145.c +0 −2
  38. drivers/iio/light/st_uvis25_core.c +0 −2
  39. drivers/iio/light/tcs3414.c +2 −18
  40. drivers/iio/light/vcnl4000.c +7 −28
  41. drivers/iio/magnetometer/bmc150_magn.c +0 −2
  42. drivers/iio/magnetometer/rm3100-core.c +0 −2
  43. drivers/iio/magnetometer/st_magn_buffer.c +2 −24
  44. drivers/iio/potentiostat/lmp91000.c +2 −11
  45. drivers/iio/pressure/st_pressure_buffer.c +2 −24
  46. drivers/iio/pressure/zpa2326.c +10 −17
  47. drivers/iio/proximity/sx9310.c +0 −2
  48. drivers/iio/proximity/sx9500.c +0 −9
  49. include/linux/iio/trigger_consumer.h +0 −7
drivers/iio/accel/adxl372.c+5−15
@@ -795,13 +795,9 @@ static int adxl372_buffer_postenable(struct iio_dev *indio_dev) · 794 unmodified lines
795795 unsigned int mask;
796796 int i, ret;
797797
798− ret = iio_triggered_buffer_postenable(indio_dev);
799− if (ret < 0)
800− return ret;
801−
802798 ret = adxl372_set_interrupts(st, ADXL372_INT1_MAP_FIFO_FULL_MSK, 0);
803799 if (ret < 0)
804− goto err;
800+ return ret;
805801
806802 mask = *indio_dev->active_scan_mask;
807803
@@ -810,10 +806,8 @@ static int adxl372_buffer_postenable(struct iio_dev *indio_dev) · 2 unmodified lines
810806 break;
811807 }
812808
813− if (i == ARRAY_SIZE(adxl372_axis_lookup_table)) {
814− ret = -EINVAL;
815− goto err;
816− }
809+ if (i == ARRAY_SIZE(adxl372_axis_lookup_table))
810+ return -EINVAL;
817811
818812 st->fifo_format = adxl372_axis_lookup_table[i].fifo_format;
819813 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) · 13 unmodified lines
833827 if (ret < 0) {
834828 st->fifo_mode = ADXL372_FIFO_BYPASSED;
835829 adxl372_set_interrupts(st, 0, 0);
836− goto err;
830+ return ret;
837831 }
838832
839833 return 0;
840−
841−err:
842− iio_triggered_buffer_predisable(indio_dev);
843− return ret;
844834 }
845835
846836 static int adxl372_buffer_predisable(struct iio_dev *indio_dev)
@@ -851,7 +841,7 @@ static int adxl372_buffer_predisable(struct iio_dev *indio_dev) · 4 unmodified lines
851841 st->fifo_mode = ADXL372_FIFO_BYPASSED;
852842 adxl372_configure_fifo(st);
853843
854− return iio_triggered_buffer_predisable(indio_dev);
844+ return 0;
855845 }
856846
857847 static const struct iio_buffer_setup_ops adxl372_buffer_ops = {
drivers/iio/accel/bmc150-accel-core.c+2−2
@@ -1411,7 +1411,7 @@ static int bmc150_accel_buffer_postenable(struct iio_dev *indio_dev) · 1410 unmodified lines
14111411 int ret = 0;
14121412
14131413 if (indio_dev->currentmode == INDIO_BUFFER_TRIGGERED)
1414− return iio_triggered_buffer_postenable(indio_dev);
1414+ return 0;
14151415
14161416 mutex_lock(&data->mutex);
14171417
@@ -1443,7 +1443,7 @@ static int bmc150_accel_buffer_predisable(struct iio_dev *indio_dev) · 25 unmodified lines
14431443 struct bmc150_accel_data *data = iio_priv(indio_dev);
14441444
14451445 if (indio_dev->currentmode == INDIO_BUFFER_TRIGGERED)
1446− return iio_triggered_buffer_predisable(indio_dev);
1446+ return 0;
14471447
14481448 mutex_lock(&data->mutex);
14491449
drivers/iio/accel/kxcjk-1013.c+0−2
@@ -1027,9 +1027,7 @@ static const struct iio_chan_spec kxcjk1013_channels[] = { · 1026 unmodified lines
10271027
10281028 static const struct iio_buffer_setup_ops kxcjk1013_buffer_setup_ops = {
10291029 .preenable = kxcjk1013_buffer_preenable,
1030− .postenable = iio_triggered_buffer_postenable,
10311030 .postdisable = kxcjk1013_buffer_postdisable,
1032− .predisable = iio_triggered_buffer_predisable,
10331031 };
10341032
10351033 static const struct iio_info kxcjk1013_info = {
drivers/iio/accel/kxsd9.c+0−2
@@ -252,8 +252,6 @@ static int kxsd9_buffer_postdisable(struct iio_dev *indio_dev) · 251 unmodified lines
252252
253253 static const struct iio_buffer_setup_ops kxsd9_buffer_setup_ops = {
254254 .preenable = kxsd9_buffer_preenable,
255− .postenable = iio_triggered_buffer_postenable,
256− .predisable = iio_triggered_buffer_predisable,
257255 .postdisable = kxsd9_buffer_postdisable,
258256 };
259257
drivers/iio/accel/st_accel_buffer.c+5−17
@@ -33,13 +33,9 @@ static int st_accel_buffer_postenable(struct iio_dev *indio_dev) · 32 unmodified lines
3333 {
3434 int err;
3535
36− err = iio_triggered_buffer_postenable(indio_dev);
37− if (err < 0)
38− return err;
39−
4036 err = st_sensors_set_axis_enable(indio_dev, indio_dev->active_scan_mask[0]);
4137 if (err < 0)
42− goto st_accel_buffer_predisable;
38+ return err;
4339
4440 err = st_sensors_set_enable(indio_dev, true);
4541 if (err < 0)
@@ -49,27 +45,19 @@ static int st_accel_buffer_postenable(struct iio_dev *indio_dev) · 3 unmodified lines
4945
5046 st_accel_buffer_enable_all_axis:
5147 st_sensors_set_axis_enable(indio_dev, ST_SENSORS_ENABLE_ALL_AXIS);
52−st_accel_buffer_predisable:
53− iio_triggered_buffer_predisable(indio_dev);
5448 return err;
5549 }
5650
5751 static int st_accel_buffer_predisable(struct iio_dev *indio_dev)
5852 {
59− int err, err2;
53+ int err;
6054
6155 err = st_sensors_set_enable(indio_dev, false);
6256 if (err < 0)
63− goto st_accel_buffer_predisable;
64−
65− err = st_sensors_set_axis_enable(indio_dev, ST_SENSORS_ENABLE_ALL_AXIS);
66−
67−st_accel_buffer_predisable:
68− err2 = iio_triggered_buffer_predisable(indio_dev);
69− if (!err)
70− err = err2;
57+ return err;
7158
72− return err;
59+ return st_sensors_set_axis_enable(indio_dev,
60+ ST_SENSORS_ENABLE_ALL_AXIS);
7361 }
7462
7563 static const struct iio_buffer_setup_ops st_accel_buffer_setup_ops = {
drivers/iio/accel/stk8312.c+0−2
@@ -492,8 +492,6 @@ static int stk8312_buffer_postdisable(struct iio_dev *indio_dev) · 491 unmodified lines
492492
493493 static const struct iio_buffer_setup_ops stk8312_buffer_setup_ops = {
494494 .preenable = stk8312_buffer_preenable,
495− .postenable = iio_triggered_buffer_postenable,
496− .predisable = iio_triggered_buffer_predisable,
497495 .postdisable = stk8312_buffer_postdisable,
498496 };
499497
drivers/iio/accel/stk8ba50.c+0−2
@@ -376,8 +376,6 @@ static int stk8ba50_buffer_postdisable(struct iio_dev *indio_dev) · 375 unmodified lines
376376
377377 static const struct iio_buffer_setup_ops stk8ba50_buffer_setup_ops = {
378378 .preenable = stk8ba50_buffer_preenable,
379− .postenable = iio_triggered_buffer_postenable,
380− .predisable = iio_triggered_buffer_predisable,
381379 .postdisable = stk8ba50_buffer_postdisable,
382380 };
383381
drivers/iio/adc/ad7266.c+0−2
@@ -74,8 +74,6 @@ static int ad7266_postdisable(struct iio_dev *indio_dev) · 73 unmodified lines
7474
7575 static const struct iio_buffer_setup_ops iio_triggered_buffer_setup_ops = {
7676 .preenable = &ad7266_preenable,
77− .postenable = &iio_triggered_buffer_postenable,
78− .predisable = &iio_triggered_buffer_predisable,
7977 .postdisable = &ad7266_postdisable,
8078 };
8179
drivers/iio/adc/ad7606.c+1−2
@@ -499,7 +499,6 @@ static int ad7606_buffer_postenable(struct iio_dev *indio_dev) · 498 unmodified lines
499499 {
500500 struct ad7606_state *st = iio_priv(indio_dev);
501501
502− iio_triggered_buffer_postenable(indio_dev);
503502 gpiod_set_value(st->gpio_convst, 1);
504503
505504 return 0;
@@ -511,7 +510,7 @@ static int ad7606_buffer_predisable(struct iio_dev *indio_dev) · 5 unmodified lines
511510
512511 gpiod_set_value(st->gpio_convst, 0);
513512
514− return iio_triggered_buffer_predisable(indio_dev);
513+ return 0;
515514 }
516515
517516 static const struct iio_buffer_setup_ops ad7606_buffer_ops = {
drivers/iio/adc/ad7766.c+0−2
@@ -178,8 +178,6 @@ static const struct ad7766_chip_info ad7766_chip_info[] = { · 177 unmodified lines
178178
179179 static const struct iio_buffer_setup_ops ad7766_buffer_setup_ops = {
180180 .preenable = &ad7766_preenable,
181− .postenable = &iio_triggered_buffer_postenable,
182− .predisable = &iio_triggered_buffer_predisable,
183181 .postdisable = &ad7766_postdisable,
184182 };
185183
drivers/iio/adc/ad7768-1.c+1−7
@@ -490,7 +490,6 @@ static int ad7768_buffer_postenable(struct iio_dev *indio_dev) · 489 unmodified lines
490490 {
491491 struct ad7768_state *st = iio_priv(indio_dev);
492492
493− iio_triggered_buffer_postenable(indio_dev);
494493 /*
495494 * Write a 1 to the LSB of the INTERFACE_FORMAT register to enter
496495 * continuous read mode. Subsequent data reads do not require an
@@ -502,17 +501,12 @@ static int ad7768_buffer_postenable(struct iio_dev *indio_dev) · 5 unmodified lines
502501 static int ad7768_buffer_predisable(struct iio_dev *indio_dev)
503502 {
504503 struct ad7768_state *st = iio_priv(indio_dev);
505− int ret;
506504
507505 /*
508506 * To exit continuous read mode, perform a single read of the ADC_DATA
509507 * reg (0x2C), which allows further configuration of the device.
510508 */
511− ret = ad7768_spi_reg_read(st, AD7768_REG_ADC_DATA, 3);
512− if (ret < 0)
513− return ret;
514−
515− return iio_triggered_buffer_predisable(indio_dev);
509+ return ad7768_spi_reg_read(st, AD7768_REG_ADC_DATA, 3);
516510 }
517511
518512 static const struct iio_buffer_setup_ops ad7768_buffer_ops = {
drivers/iio/adc/ad7887.c+0−2
@@ -136,8 +136,6 @@ done: · 135 unmodified lines
136136
137137 static const struct iio_buffer_setup_ops ad7887_ring_setup_ops = {
138138 .preenable = &ad7887_ring_preenable,
139− .postenable = &iio_triggered_buffer_postenable,
140− .predisable = &iio_triggered_buffer_predisable,
141139 .postdisable = &ad7887_ring_postdisable,
142140 };
143141
drivers/iio/adc/ad_sigma_delta.c+0−5
@@ -345,10 +345,6 @@ static int ad_sd_buffer_postenable(struct iio_dev *indio_dev) · 344 unmodified lines
345345 unsigned int channel;
346346 int ret;
347347
348− ret = iio_triggered_buffer_postenable(indio_dev);
349− if (ret < 0)
350− return ret;
351−
352348 channel = find_first_bit(indio_dev->active_scan_mask,
353349 indio_dev->masklength);
354350 ret = ad_sigma_delta_set_channel(sigma_delta,
@@ -441,7 +437,6 @@ static irqreturn_t ad_sd_trigger_handler(int irq, void *p) · 86 unmodified lines
441437
442438 static const struct iio_buffer_setup_ops ad_sd_buffer_setup_ops = {
443439 .postenable = &ad_sd_buffer_postenable,
444− .predisable = &iio_triggered_buffer_predisable,
445440 .postdisable = &ad_sd_buffer_postdisable,
446441 .validate_scan_mask = &iio_validate_scan_mask_onehot,
447442 };
drivers/iio/adc/at91-sama5d2_adc.c+0−18
@@ -937,14 +937,6 @@ static int at91_adc_buffer_preenable(struct iio_dev *indio_dev) · 936 unmodified lines
937937 return 0;
938938 }
939939
940−static int at91_adc_buffer_postenable(struct iio_dev *indio_dev)
941−{
942− if (at91_adc_current_chan_is_touch(indio_dev))
943− return 0;
944−
945− return iio_triggered_buffer_postenable(indio_dev);
946−}
947−
948940 static int at91_adc_buffer_postdisable(struct iio_dev *indio_dev)
949941 {
950942 struct at91_adc_state *st = iio_priv(indio_dev);
@@ -995,19 +987,9 @@ static int at91_adc_buffer_postdisable(struct iio_dev *indio_dev) · 44 unmodified lines
995987 return 0;
996988 }
997989
998−static int at91_adc_buffer_predisable(struct iio_dev *indio_dev)
999−{
1000− if (at91_adc_current_chan_is_touch(indio_dev))
1001− return 0;
1002−
1003− return iio_triggered_buffer_predisable(indio_dev);
1004−}
1005−
1006990 static const struct iio_buffer_setup_ops at91_buffer_setup_ops = {
1007991 .preenable = &at91_adc_buffer_preenable,
1008992 .postdisable = &at91_adc_buffer_postdisable,
1009− .postenable = &at91_adc_buffer_postenable,
1010− .predisable = &at91_adc_buffer_predisable,
1011993 };
1012994
1013995 static struct iio_trigger *at91_adc_allocate_trigger(struct iio_dev *indio,
drivers/iio/adc/dln2-adc.c+1−11
@@ -524,10 +524,6 @@ static int dln2_adc_triggered_buffer_postenable(struct iio_dev *indio_dev) · 523 unmodified lines
524524 u16 conflict;
525525 unsigned int trigger_chan;
526526
527− ret = iio_triggered_buffer_postenable(indio_dev);
528− if (ret)
529− return ret;
530−
531527 mutex_lock(&dln2->mutex);
532528
533529 /* Enable ADC */
@@ -541,7 +537,6 @@ static int dln2_adc_triggered_buffer_postenable(struct iio_dev *indio_dev) · 7 unmodified lines
541537 (int)conflict);
542538 ret = -EBUSY;
543539 }
544− iio_triggered_buffer_predisable(indio_dev);
545540 return ret;
546541 }
547542
@@ -555,7 +550,6 @@ static int dln2_adc_triggered_buffer_postenable(struct iio_dev *indio_dev) · 7 unmodified lines
555550 mutex_unlock(&dln2->mutex);
556551 if (ret < 0) {
557552 dev_dbg(&dln2->pdev->dev, "Problem in %s\n", __func__);
558− iio_triggered_buffer_predisable(indio_dev);
559553 return ret;
560554 }
561555 } else {
@@ -568,7 +562,7 @@ static int dln2_adc_triggered_buffer_postenable(struct iio_dev *indio_dev) · 6 unmodified lines
568562
569563 static int dln2_adc_triggered_buffer_predisable(struct iio_dev *indio_dev)
570564 {
571− int ret, ret2;
565+ int ret;
572566 struct dln2_adc *dln2 = iio_priv(indio_dev);
573567
574568 mutex_lock(&dln2->mutex);
@@ -586,10 +580,6 @@ static int dln2_adc_triggered_buffer_predisable(struct iio_dev *indio_dev) · 11 unmodified lines
586580 if (ret < 0)
587581 dev_dbg(&dln2->pdev->dev, "Problem in %s\n", __func__);
588582
589− ret2 = iio_triggered_buffer_predisable(indio_dev);
590− if (ret == 0)
591− ret = ret2;
592−
593583 return ret;
594584 }
595585
drivers/iio/adc/mxs-lradc-adc.c+0−2
@@ -568,8 +568,6 @@ static bool mxs_lradc_adc_validate_scan_mask(struct iio_dev *iio, · 567 unmodified lines
568568
569569 static const struct iio_buffer_setup_ops mxs_lradc_adc_buffer_ops = {
570570 .preenable = &mxs_lradc_adc_buffer_preenable,
571− .postenable = &iio_triggered_buffer_postenable,
572− .predisable = &iio_triggered_buffer_predisable,
573571 .postdisable = &mxs_lradc_adc_buffer_postdisable,
574572 .validate_scan_mask = &mxs_lradc_adc_validate_scan_mask,
575573 };
drivers/iio/adc/stm32-adc.c+5−31
@@ -1492,7 +1492,7 @@ static int stm32_adc_dma_start(struct iio_dev *indio_dev) · 1491 unmodified lines
14921492 return 0;
14931493 }
14941494
1495−static int __stm32_adc_buffer_postenable(struct iio_dev *indio_dev)
1495+static int stm32_adc_buffer_postenable(struct iio_dev *indio_dev)
14961496 {
14971497 struct stm32_adc *adc = iio_priv(indio_dev);
14981498 struct device *dev = indio_dev->dev.parent;
@@ -1537,22 +1537,7 @@ err_pm_put: · 38 unmodified lines
15371537 return ret;
15381538 }
15391539
1540−static int stm32_adc_buffer_postenable(struct iio_dev *indio_dev)
1541−{
1542− int ret;
1543−
1544− ret = iio_triggered_buffer_postenable(indio_dev);
1545− if (ret < 0)
1546− return ret;
1547−
1548− ret = __stm32_adc_buffer_postenable(indio_dev);
1549− if (ret < 0)
1550− iio_triggered_buffer_predisable(indio_dev);
1551−
1552− return ret;
1553−}
1554−
1555−static void __stm32_adc_buffer_predisable(struct iio_dev *indio_dev)
1540+static int stm32_adc_buffer_predisable(struct iio_dev *indio_dev)
15561541 {
15571542 struct stm32_adc *adc = iio_priv(indio_dev);
15581543 struct device *dev = indio_dev->dev.parent;
@@ -1571,19 +1556,8 @@ static void __stm32_adc_buffer_predisable(struct iio_dev *indio_dev) · 12 unmodified lines
15711556
15721557 pm_runtime_mark_last_busy(dev);
15731558 pm_runtime_put_autosuspend(dev);
1574−}
1575−
1576−static int stm32_adc_buffer_predisable(struct iio_dev *indio_dev)
1577−{
1578− int ret;
1579−
1580− __stm32_adc_buffer_predisable(indio_dev);
1581−
1582− ret = iio_triggered_buffer_predisable(indio_dev);
1583− if (ret < 0)
1584− dev_err(&indio_dev->dev, "predisable failed\n");
15851559
1586− return ret;
1560+ return 0;
15871561 }
15881562
15891563 static const struct iio_buffer_setup_ops stm32_adc_buffer_setup_ops = {
@@ -2024,7 +1998,7 @@ static int stm32_adc_suspend(struct device *dev) · 434 unmodified lines
20241998 struct iio_dev *indio_dev = dev_get_drvdata(dev);
20251999
20262000 if (iio_buffer_enabled(indio_dev))
2027− __stm32_adc_buffer_predisable(indio_dev);
2001+ stm32_adc_buffer_predisable(indio_dev);
20282002
20292003 return pm_runtime_force_suspend(dev);
20302004 }
@@ -2046,7 +2020,7 @@ static int stm32_adc_resume(struct device *dev) · 15 unmodified lines
20462020 if (ret < 0)
20472021 return ret;
20482022
2049− return __stm32_adc_buffer_postenable(indio_dev);
2023+ return stm32_adc_buffer_postenable(indio_dev);
20502024 }
20512025 #endif
20522026
drivers/iio/adc/stm32-dfsdm-adc.c+4−35
@@ -995,7 +995,7 @@ static int stm32_dfsdm_update_scan_mode(struct iio_dev *indio_dev, · 994 unmodified lines
995995 return 0;
996996 }
997997
998−static int __stm32_dfsdm_postenable(struct iio_dev *indio_dev)
998+static int stm32_dfsdm_postenable(struct iio_dev *indio_dev)
999999 {
10001000 struct stm32_dfsdm_adc *adc = iio_priv(indio_dev);
10011001 int ret;
@@ -1038,30 +1038,7 @@ err_stop_hwc: · 36 unmodified lines
10381038 return ret;
10391039 }
10401040
1041−static int stm32_dfsdm_postenable(struct iio_dev *indio_dev)
1042−{
1043− int ret;
1044−
1045− if (indio_dev->currentmode == INDIO_BUFFER_TRIGGERED) {
1046− ret = iio_triggered_buffer_postenable(indio_dev);
1047− if (ret < 0)
1048− return ret;
1049− }
1050−
1051− ret = __stm32_dfsdm_postenable(indio_dev);
1052− if (ret < 0)
1053− goto err_predisable;
1054−
1055− return 0;
1056−
1057−err_predisable:
1058− if (indio_dev->currentmode == INDIO_BUFFER_TRIGGERED)
1059− iio_triggered_buffer_predisable(indio_dev);
1060−
1061− return ret;
1062−}
1063−
1064−static void __stm32_dfsdm_predisable(struct iio_dev *indio_dev)
1041+static int stm32_dfsdm_predisable(struct iio_dev *indio_dev)
10651042 {
10661043 struct stm32_dfsdm_adc *adc = iio_priv(indio_dev);
10671044
@@ -1073,14 +1050,6 @@ static void __stm32_dfsdm_predisable(struct iio_dev *indio_dev) · 5 unmodified lines
10731050
10741051 if (adc->hwc)
10751052 iio_hw_consumer_disable(adc->hwc);
1076−}
1077−
1078−static int stm32_dfsdm_predisable(struct iio_dev *indio_dev)
1079−{
1080− __stm32_dfsdm_predisable(indio_dev);
1081−
1082− if (indio_dev->currentmode == INDIO_BUFFER_TRIGGERED)
1083− iio_triggered_buffer_predisable(indio_dev);
10841053
10851054 return 0;
10861055 }
@@ -1668,7 +1637,7 @@ static int __maybe_unused stm32_dfsdm_adc_suspend(struct device *dev) · 581 unmodified lines
16681637 struct iio_dev *indio_dev = dev_get_drvdata(dev);
16691638
16701639 if (iio_buffer_enabled(indio_dev))
1671− __stm32_dfsdm_predisable(indio_dev);
1640+ stm32_dfsdm_predisable(indio_dev);
16721641
16731642 return 0;
16741643 }
@@ -1691,7 +1660,7 @@ static int __maybe_unused stm32_dfsdm_adc_resume(struct device *dev) · 16 unmodified lines
16911660 }
16921661
16931662 if (iio_buffer_enabled(indio_dev))
1694− __stm32_dfsdm_postenable(indio_dev);
1663+ stm32_dfsdm_postenable(indio_dev);
16951664
16961665 return 0;
16971666 }
drivers/iio/adc/ti-adc084s021.c+0−2
@@ -187,8 +187,6 @@ static const struct iio_info adc084s021_info = { · 186 unmodified lines
187187
188188 static const struct iio_buffer_setup_ops adc084s021_buffer_setup_ops = {
189189 .preenable = adc084s021_buffer_preenable,
190− .postenable = iio_triggered_buffer_postenable,
191− .predisable = iio_triggered_buffer_predisable,
192190 .postdisable = adc084s021_buffer_postdisable,
193191 };
194192
drivers/iio/adc/ti-ads1015.c+0−2
@@ -788,8 +788,6 @@ static int ads1015_buffer_postdisable(struct iio_dev *indio_dev) · 787 unmodified lines
788788
789789 static const struct iio_buffer_setup_ops ads1015_buffer_setup_ops = {
790790 .preenable = ads1015_buffer_preenable,
791− .postenable = iio_triggered_buffer_postenable,
792− .predisable = iio_triggered_buffer_predisable,
793791 .postdisable = ads1015_buffer_postdisable,
794792 .validate_scan_mask = &iio_validate_scan_mask_onehot,
795793 };
drivers/iio/adc/vf610_adc.c+1−6
@@ -724,13 +724,8 @@ static int vf610_adc_buffer_postenable(struct iio_dev *indio_dev) · 723 unmodified lines
724724 {
725725 struct vf610_adc *info = iio_priv(indio_dev);
726726 unsigned int channel;
727− int ret;
728727 int val;
729728
730− ret = iio_triggered_buffer_postenable(indio_dev);
731− if (ret)
732− return ret;
733−
734729 val = readl(info->regs + VF610_REG_ADC_GC);
735730 val |= VF610_ADC_ADCON;
736731 writel(val, info->regs + VF610_REG_ADC_GC);
@@ -761,7 +756,7 @@ static int vf610_adc_buffer_predisable(struct iio_dev *indio_dev) · 24 unmodified lines
761756
762757 writel(hc_cfg, info->regs + VF610_REG_ADC_HC0);
763758
764− return iio_triggered_buffer_predisable(indio_dev);
759+ return 0;
765760 }
766761
767762 static const struct iio_buffer_setup_ops iio_triggered_buffer_setup_ops = {
drivers/iio/adc/xilinx-xadc-core.c+0−2
@@ -839,8 +839,6 @@ err: · 838 unmodified lines
839839
840840 static const struct iio_buffer_setup_ops xadc_buffer_ops = {
841841 .preenable = &xadc_preenable,
842− .postenable = &iio_triggered_buffer_postenable,
843− .predisable = &iio_triggered_buffer_predisable,
844842 .postdisable = &xadc_postdisable,
845843 };
846844
drivers/iio/buffer/industrialio-triggered-buffer.c+1−9
@@ -13,11 +13,6 @@ · 12 unmodified lines
1313 #include <linux/iio/triggered_buffer.h>
1414 #include <linux/iio/trigger_consumer.h>
1515
16−static const struct iio_buffer_setup_ops iio_triggered_buffer_setup_ops = {
17− .postenable = &iio_triggered_buffer_postenable,
18− .predisable = &iio_triggered_buffer_predisable,
19−};
20−
2116 /**
2217 * iio_triggered_buffer_setup() - Setup triggered buffer and pollfunc
2318 * @indio_dev: IIO device structure
@@ -67,10 +62,7 @@ int iio_triggered_buffer_setup(struct iio_dev *indio_dev, · 43 unmodified lines
6762 }
6863
6964 /* Ring buffer functions - here trigger setup related */
70− if (setup_ops)
71− indio_dev->setup_ops = setup_ops;
72− else
73− indio_dev->setup_ops = &iio_triggered_buffer_setup_ops;
65+ indio_dev->setup_ops = setup_ops;
7466
7567 /* Flag that polled ring buffering is possible */
7668 indio_dev->modes |= INDIO_BUFFER_TRIGGERED;
drivers/iio/chemical/atlas-sensor.c+1−5
@@ -410,10 +410,6 @@ static int atlas_buffer_postenable(struct iio_dev *indio_dev) · 409 unmodified lines
410410 struct atlas_data *data = iio_priv(indio_dev);
411411 int ret;
412412
413− ret = iio_triggered_buffer_postenable(indio_dev);
414− if (ret)
415− return ret;
416−
417413 ret = pm_runtime_get_sync(&data->client->dev);
418414 if (ret < 0) {
419415 pm_runtime_put_noidle(&data->client->dev);
@@ -437,7 +433,7 @@ static int atlas_buffer_predisable(struct iio_dev *indio_dev) · 17 unmodified lines
437433 if (ret)
438434 return ret;
439435
440− return iio_triggered_buffer_predisable(indio_dev);
436+ return 0;
441437 }
442438
443439 static const struct iio_trigger_ops atlas_interrupt_trigger_ops = {
drivers/iio/dummy/iio_simple_dummy_buffer.c+0−14
@@ -99,20 +99,6 @@ done: · 98 unmodified lines
9999 }
100100
101101 static const struct iio_buffer_setup_ops iio_simple_dummy_buffer_setup_ops = {
102− /*
103− * iio_triggered_buffer_postenable:
104− * Generic function that simply attaches the pollfunc to the trigger.
105− * Replace this to mess with hardware state before we attach the
106− * trigger.
107− */
108− .postenable = &iio_triggered_buffer_postenable,
109− /*
110− * iio_triggered_buffer_predisable:
111− * Generic function that simple detaches the pollfunc from the trigger.
112− * Replace this to put hardware state back again after the trigger is
113− * detached but before userspace knows we have disabled the ring.
114− */
115− .predisable = &iio_triggered_buffer_predisable,
116102 };
117103
118104 int iio_simple_dummy_configure_buffer(struct iio_dev *indio_dev)
drivers/iio/gyro/bmg160_core.c+0−2
@@ -1051,8 +1051,6 @@ static int bmg160_buffer_postdisable(struct iio_dev *indio_dev) · 1050 unmodified lines
10511051
10521052 static const struct iio_buffer_setup_ops bmg160_buffer_setup_ops = {
10531053 .preenable = bmg160_buffer_preenable,
1054− .postenable = iio_triggered_buffer_postenable,
1055− .predisable = iio_triggered_buffer_predisable,
10561054 .postdisable = bmg160_buffer_postdisable,
10571055 };
10581056
drivers/iio/gyro/mpu3050-core.c+0−2
@@ -662,8 +662,6 @@ static int mpu3050_buffer_postdisable(struct iio_dev *indio_dev) · 661 unmodified lines
662662
663663 static const struct iio_buffer_setup_ops mpu3050_buffer_setup_ops = {
664664 .preenable = mpu3050_buffer_preenable,
665− .postenable = iio_triggered_buffer_postenable,
666− .predisable = iio_triggered_buffer_predisable,
667665 .postdisable = mpu3050_buffer_postdisable,
668666 };
669667
drivers/iio/gyro/st_gyro_buffer.c+4−17
@@ -33,13 +33,9 @@ static int st_gyro_buffer_postenable(struct iio_dev *indio_dev) · 32 unmodified lines
3333 {
3434 int err;
3535
36− err = iio_triggered_buffer_postenable(indio_dev);
37− if (err < 0)
38− return err;
39−
4036 err = st_sensors_set_axis_enable(indio_dev, indio_dev->active_scan_mask[0]);
4137 if (err < 0)
42− goto st_gyro_buffer_predisable;
38+ return err;
4339
4440 err = st_sensors_set_enable(indio_dev, true);
4541 if (err < 0)
@@ -49,27 +45,18 @@ static int st_gyro_buffer_postenable(struct iio_dev *indio_dev) · 3 unmodified lines
4945
5046 st_gyro_buffer_enable_all_axis:
5147 st_sensors_set_axis_enable(indio_dev, ST_SENSORS_ENABLE_ALL_AXIS);
52−st_gyro_buffer_predisable:
53− iio_triggered_buffer_predisable(indio_dev);
5448 return err;
5549 }
5650
5751 static int st_gyro_buffer_predisable(struct iio_dev *indio_dev)
5852 {
59− int err, err2;
53+ int err;
6054
6155 err = st_sensors_set_enable(indio_dev, false);
6256 if (err < 0)
63− goto st_gyro_buffer_predisable;
64−
65− err = st_sensors_set_axis_enable(indio_dev, ST_SENSORS_ENABLE_ALL_AXIS);
66−
67−st_gyro_buffer_predisable:
68− err2 = iio_triggered_buffer_predisable(indio_dev);
69− if (!err)
70− err = err2;
57+ return err;
7158
72− return err;
59+ return st_sensors_set_axis_enable(indio_dev, ST_SENSORS_ENABLE_ALL_AXIS);
7360 }
7461
7562 static const struct iio_buffer_setup_ops st_gyro_buffer_setup_ops = {
drivers/iio/humidity/hdc100x.c+1−11
@@ -278,17 +278,11 @@ static int hdc100x_buffer_postenable(struct iio_dev *indio_dev) · 277 unmodified lines
278278 struct hdc100x_data *data = iio_priv(indio_dev);
279279 int ret;
280280
281− ret = iio_triggered_buffer_postenable(indio_dev);
282− if (ret)
283− return ret;
284−
285281 /* Buffer is enabled. First set ACQ Mode, then attach poll func */
286282 mutex_lock(&data->lock);
287283 ret = hdc100x_update_config(data, HDC100X_REG_CONFIG_ACQ_MODE,
288284 HDC100X_REG_CONFIG_ACQ_MODE);
289285 mutex_unlock(&data->lock);
290− if (ret)
291− iio_triggered_buffer_predisable(indio_dev);
292286
293287 return ret;
294288 }
@@ -296,16 +290,12 @@ static int hdc100x_buffer_postenable(struct iio_dev *indio_dev) · 1 unmodified line
296290 static int hdc100x_buffer_predisable(struct iio_dev *indio_dev)
297291 {
298292 struct hdc100x_data *data = iio_priv(indio_dev);
299− int ret, ret2;
293+ int ret;
300294
301295 mutex_lock(&data->lock);
302296 ret = hdc100x_update_config(data, HDC100X_REG_CONFIG_ACQ_MODE, 0);
303297 mutex_unlock(&data->lock);
304298
305− ret2 = iio_triggered_buffer_predisable(indio_dev);
306− if (ret == 0)
307− ret = ret2;
308−
309299 return ret;
310300 }
311301
drivers/iio/humidity/hts221_buffer.c+0−2
@@ -153,8 +153,6 @@ static int hts221_buffer_postdisable(struct iio_dev *iio_dev) · 152 unmodified lines
153153
154154 static const struct iio_buffer_setup_ops hts221_buffer_ops = {
155155 .preenable = hts221_buffer_preenable,
156− .postenable = iio_triggered_buffer_postenable,
157− .predisable = iio_triggered_buffer_predisable,
158156 .postdisable = hts221_buffer_postdisable,
159157 };
160158
drivers/iio/iio_core_trigger.h+17−0
@@ -18,6 +18,12 @@ void iio_device_register_trigger_consumer(struct iio_dev *indio_dev); · 17 unmodified lines
1818 **/
1919 void iio_device_unregister_trigger_consumer(struct iio_dev *indio_dev);
2020
21+
22+int iio_trigger_attach_poll_func(struct iio_trigger *trig,
23+ struct iio_poll_func *pf);
24+int iio_trigger_detach_poll_func(struct iio_trigger *trig,
25+ struct iio_poll_func *pf);
26+
2127 #else
2228
2329 /**
@@ -37,4 +43,15 @@ static void iio_device_unregister_trigger_consumer(struct iio_dev *indio_dev) · 13 unmodified lines
3743 {
3844 }
3945
46+static inline int iio_trigger_attach_poll_func(struct iio_trigger *trig,
47+ struct iio_poll_func *pf)
48+{
49+ return 0;
50+}
51+static inline int iio_trigger_detach_poll_func(struct iio_trigger *trig,
52+ struct iio_poll_func *pf)
53+{
54+ return 0;
55+}
56+
4057 #endif /* CONFIG_TRIGGER_CONSUMER */
drivers/iio/industrialio-buffer.c+13−0
@@ -20,6 +20,7 @@ · 19 unmodified lines
2020
2121 #include <linux/iio/iio.h>
2222 #include "iio_core.h"
23+#include "iio_core_trigger.h"
2324 #include <linux/iio/sysfs.h>
2425 #include <linux/iio/buffer.h>
2526 #include <linux/iio/buffer_impl.h>
@@ -972,6 +973,13 @@ static int iio_enable_buffers(struct iio_dev *indio_dev, · 946 unmodified lines
972973 }
973974 }
974975
976+ if (indio_dev->currentmode == INDIO_BUFFER_TRIGGERED) {
977+ ret = iio_trigger_attach_poll_func(indio_dev->trig,
978+ indio_dev->pollfunc);
979+ if (ret)
980+ goto err_disable_buffers;
981+ }
982+
975983 return 0;
976984
977985 err_disable_buffers:
@@ -998,6 +1006,11 @@ static int iio_disable_buffers(struct iio_dev *indio_dev) · 20 unmodified lines
9981006 if (list_empty(&indio_dev->buffer_list))
9991007 return 0;
10001008
1009+ if (indio_dev->currentmode == INDIO_BUFFER_TRIGGERED) {
1010+ iio_trigger_detach_poll_func(indio_dev->trig,
1011+ indio_dev->pollfunc);
1012+ }
1013+
10011014 /*
10021015 * If things go wrong at some step in disable we still need to continue
10031016 * to perform the other steps, otherwise we leave the device in a
drivers/iio/industrialio-trigger.c+4−18
@@ -239,8 +239,8 @@ static void iio_trigger_put_irq(struct iio_trigger *trig, int irq) · 238 unmodified lines
239239 * the relevant function is in there may be the best option.
240240 */
241241 /* Worth protecting against double additions? */
242−static int iio_trigger_attach_poll_func(struct iio_trigger *trig,
243− struct iio_poll_func *pf)
242+int iio_trigger_attach_poll_func(struct iio_trigger *trig,
243+ struct iio_poll_func *pf)
244244 {
245245 int ret = 0;
246246 bool notinuse
@@ -290,8 +290,8 @@ out_put_module: · 43 unmodified lines
290290 return ret;
291291 }
292292
293−static int iio_trigger_detach_poll_func(struct iio_trigger *trig,
294− struct iio_poll_func *pf)
293+int iio_trigger_detach_poll_func(struct iio_trigger *trig,
294+ struct iio_poll_func *pf)
295295 {
296296 int ret = 0;
297297 bool no_other_users
@@ -705,17 +705,3 @@ void iio_device_unregister_trigger_consumer(struct iio_dev *indio_dev) · 407 unmodified lines
705705 if (indio_dev->trig)
706706 iio_trigger_put(indio_dev->trig);
707707 }
708−
709−int iio_triggered_buffer_postenable(struct iio_dev *indio_dev)
710−{
711− return iio_trigger_attach_poll_func(indio_dev->trig,
712− indio_dev->pollfunc);
713−}
714−EXPORT_SYMBOL(iio_triggered_buffer_postenable);
715−
716−int iio_triggered_buffer_predisable(struct iio_dev *indio_dev)
717−{
718− return iio_trigger_detach_poll_func(indio_dev->trig,
719− indio_dev->pollfunc);
720−}
721−EXPORT_SYMBOL(iio_triggered_buffer_predisable);
drivers/iio/light/gp2ap020a00f.c+0−10
@@ -1390,12 +1390,6 @@ static int gp2ap020a00f_buffer_postenable(struct iio_dev *indio_dev) · 1389 unmodified lines
13901390
13911391 mutex_lock(&data->lock);
13921392
1393− err = iio_triggered_buffer_postenable(indio_dev);
1394− if (err < 0) {
1395− mutex_unlock(&data->lock);
1396− return err;
1397− }
1398−
13991393 /*
14001394 * Enable triggers according to the scan_mask. Enabling either
14011395 * 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) · 28 unmodified lines
14301424 err = -ENOMEM;
14311425
14321426 error_unlock:
1433− if (err < 0)
1434− iio_triggered_buffer_predisable(indio_dev);
14351427 mutex_unlock(&data->lock);
14361428
14371429 return err;
@@ -1465,8 +1457,6 @@ static int gp2ap020a00f_buffer_predisable(struct iio_dev *indio_dev) · 27 unmodified lines
14651457 if (err == 0)
14661458 kfree(data->buffer);
14671459
1468− iio_triggered_buffer_predisable(indio_dev);
1469−
14701460 mutex_unlock(&data->lock);
14711461
14721462 return err;
drivers/iio/light/isl29125.c+2−18
@@ -216,36 +216,20 @@ static const struct iio_info isl29125_info = { · 215 unmodified lines
216216 static int isl29125_buffer_postenable(struct iio_dev *indio_dev)
217217 {
218218 struct isl29125_data *data = iio_priv(indio_dev);
219− int err;
220−
221− err = iio_triggered_buffer_postenable(indio_dev);
222− if (err)
223− return err;
224219
225220 data->conf1 |= ISL29125_MODE_RGB;
226− err = i2c_smbus_write_byte_data(data->client, ISL29125_CONF1,
221+ return i2c_smbus_write_byte_data(data->client, ISL29125_CONF1,
227222 data->conf1);
228− if (err) {
229− iio_triggered_buffer_predisable(indio_dev);
230− return err;
231− }
232−
233− return 0;
234223 }
235224
236225 static int isl29125_buffer_predisable(struct iio_dev *indio_dev)
237226 {
238227 struct isl29125_data *data = iio_priv(indio_dev);
239− int ret;
240228
241229 data->conf1 &= ~ISL29125_MODE_MASK;
242230 data->conf1 |= ISL29125_MODE_PD;
243− ret = i2c_smbus_write_byte_data(data->client, ISL29125_CONF1,
231+ return i2c_smbus_write_byte_data(data->client, ISL29125_CONF1,
244232 data->conf1);
245−
246− iio_triggered_buffer_predisable(indio_dev);
247−
248− return ret;
249233 }
250234
251235 static const struct iio_buffer_setup_ops isl29125_buffer_setup_ops = {
drivers/iio/light/rpr0521.c+0−2
@@ -570,8 +570,6 @@ static int rpr0521_buffer_postdisable(struct iio_dev *indio_dev) · 569 unmodified lines
570570
571571 static const struct iio_buffer_setup_ops rpr0521_buffer_setup_ops = {
572572 .preenable = rpr0521_buffer_preenable,
573− .postenable = iio_triggered_buffer_postenable,
574− .predisable = iio_triggered_buffer_predisable,
575573 .postdisable = rpr0521_buffer_postdisable,
576574 };
577575
drivers/iio/light/si1145.c+0−2
@@ -1171,8 +1171,6 @@ static bool si1145_validate_scan_mask(struct iio_dev *indio_dev, · 1170 unmodified lines
11711171
11721172 static const struct iio_buffer_setup_ops si1145_buffer_setup_ops = {
11731173 .preenable = si1145_buffer_preenable,
1174− .postenable = iio_triggered_buffer_postenable,
1175− .predisable = iio_triggered_buffer_predisable,
11761174 .validate_scan_mask = si1145_validate_scan_mask,
11771175 };
11781176
drivers/iio/light/st_uvis25_core.c+0−2
@@ -227,8 +227,6 @@ static int st_uvis25_buffer_postdisable(struct iio_dev *iio_dev) · 226 unmodified lines
227227
228228 static const struct iio_buffer_setup_ops st_uvis25_buffer_ops = {
229229 .preenable = st_uvis25_buffer_preenable,
230− .postenable = iio_triggered_buffer_postenable,
231− .predisable = iio_triggered_buffer_predisable,
232230 .postdisable = st_uvis25_buffer_postdisable,
233231 };
234232
drivers/iio/light/tcs3414.c+2−18
@@ -243,35 +243,19 @@ static const struct iio_info tcs3414_info = { · 242 unmodified lines
243243 static int tcs3414_buffer_postenable(struct iio_dev *indio_dev)
244244 {
245245 struct tcs3414_data *data = iio_priv(indio_dev);
246− int ret;
247−
248− ret = iio_triggered_buffer_postenable(indio_dev);
249− if (ret)
250− return ret;
251246
252247 data->control |= TCS3414_CONTROL_ADC_EN;
253− ret = i2c_smbus_write_byte_data(data->client, TCS3414_CONTROL,
248+ return i2c_smbus_write_byte_data(data->client, TCS3414_CONTROL,
254249 data->control);
255− if (ret)
256− iio_triggered_buffer_predisable(indio_dev);
257−
258− return ret;
259250 }
260251
261252 static int tcs3414_buffer_predisable(struct iio_dev *indio_dev)
262253 {
263254 struct tcs3414_data *data = iio_priv(indio_dev);
264− int ret, ret2;
265255
266256 data->control &= ~TCS3414_CONTROL_ADC_EN;
267− ret = i2c_smbus_write_byte_data(data->client, TCS3414_CONTROL,
257+ return i2c_smbus_write_byte_data(data->client, TCS3414_CONTROL,
268258 data->control);
269−
270− ret2 = iio_triggered_buffer_predisable(indio_dev);
271− if (!ret)
272− ret = ret2;
273−
274− return ret;
275259 }
276260
277261 static const struct iio_buffer_setup_ops tcs3414_buffer_setup_ops = {
drivers/iio/light/vcnl4000.c+7−28
@@ -957,50 +957,29 @@ static int vcnl4010_buffer_postenable(struct iio_dev *indio_dev) · 956 unmodified lines
957957 int ret;
958958 int cmd;
959959
960− ret = iio_triggered_buffer_postenable(indio_dev);
961− if (ret)
962− return ret;
963−
964960 /* Do not enable the buffer if we are already capturing events. */
965− if (vcnl4010_is_in_periodic_mode(data)) {
966− ret = -EBUSY;
967− goto end;
968− }
961+ if (vcnl4010_is_in_periodic_mode(data))
962+ return -EBUSY;
969963
970964 ret = i2c_smbus_write_byte_data(data->client, VCNL4010_INT_CTRL,
971965 VCNL4010_INT_PROX_EN);
972966 if (ret < 0)
973− goto end;
967+ return ret;
974968
975969 cmd = VCNL4000_SELF_TIMED_EN | VCNL4000_PROX_EN;
976− ret = i2c_smbus_write_byte_data(data->client, VCNL4000_COMMAND, cmd);
977− if (ret < 0)
978− goto end;
979−
980− return 0;
981−end:
982− iio_triggered_buffer_predisable(indio_dev);
983−
984− return ret;
970+ return i2c_smbus_write_byte_data(data->client, VCNL4000_COMMAND, cmd);
985971 }
986972
987973 static int vcnl4010_buffer_predisable(struct iio_dev *indio_dev)
988974 {
989975 struct vcnl4000_data *data = iio_priv(indio_dev);
990− int ret, ret_disable;
976+ int ret;
991977
992978 ret = i2c_smbus_write_byte_data(data->client, VCNL4010_INT_CTRL, 0);
993979 if (ret < 0)
994− goto end;
995−
996− ret = i2c_smbus_write_byte_data(data->client, VCNL4000_COMMAND, 0);
997−
998−end:
999− ret_disable = iio_triggered_buffer_predisable(indio_dev);
1000− if (ret == 0)
1001− ret = ret_disable;
980+ return ret;
1002981
1003− return ret;
982+ return i2c_smbus_write_byte_data(data->client, VCNL4000_COMMAND, 0);
1004983 }
1005984
1006985 static const struct iio_buffer_setup_ops vcnl4010_buffer_ops = {
drivers/iio/magnetometer/bmc150_magn.c+0−2
@@ -836,8 +836,6 @@ static int bmc150_magn_buffer_postdisable(struct iio_dev *indio_dev) · 835 unmodified lines
836836
837837 static const struct iio_buffer_setup_ops bmc150_magn_buffer_setup_ops = {
838838 .preenable = bmc150_magn_buffer_preenable,
839− .postenable = iio_triggered_buffer_postenable,
840− .predisable = iio_triggered_buffer_predisable,
841839 .postdisable = bmc150_magn_buffer_postdisable,
842840 };
843841
drivers/iio/magnetometer/rm3100-core.c+0−2
@@ -463,8 +463,6 @@ static int rm3100_buffer_postdisable(struct iio_dev *indio_dev) · 462 unmodified lines
463463
464464 static const struct iio_buffer_setup_ops rm3100_buffer_ops = {
465465 .preenable = rm3100_buffer_preenable,
466− .postenable = iio_triggered_buffer_postenable,
467− .predisable = iio_triggered_buffer_predisable,
468466 .postdisable = rm3100_buffer_postdisable,
469467 };
470468
drivers/iio/magnetometer/st_magn_buffer.c+2−24
@@ -31,34 +31,12 @@ int st_magn_trig_set_state(struct iio_trigger *trig, bool state) · 30 unmodified lines
3131
3232 static int st_magn_buffer_postenable(struct iio_dev *indio_dev)
3333 {
34− int err;
35−
36− err = iio_triggered_buffer_postenable(indio_dev);
37− if (err < 0)
38− return err;
39−
40− err = st_sensors_set_enable(indio_dev, true);
41− if (err < 0)
42− goto st_magn_buffer_predisable;
43−
44− return 0;
45−
46−st_magn_buffer_predisable:
47− iio_triggered_buffer_predisable(indio_dev);
48− return err;
34+ return st_sensors_set_enable(indio_dev, true);
4935 }
5036
5137 static int st_magn_buffer_predisable(struct iio_dev *indio_dev)
5238 {
53− int err, err2;
54−
55− err = st_sensors_set_enable(indio_dev, false);
56−
57− err2 = iio_triggered_buffer_predisable(indio_dev);
58− if (!err)
59− err = err2;
60−
61− return err;
39+ return st_sensors_set_enable(indio_dev, false);
6240 }
6341
6442 static const struct iio_buffer_setup_ops st_magn_buffer_setup_ops = {
drivers/iio/potentiostat/lmp91000.c+2−11
@@ -278,17 +278,8 @@ static const struct iio_trigger_ops lmp91000_trigger_ops = { · 277 unmodified lines
278278 static int lmp91000_buffer_postenable(struct iio_dev *indio_dev)
279279 {
280280 struct lmp91000_data *data = iio_priv(indio_dev);
281− int err;
282281
283− err = iio_triggered_buffer_postenable(indio_dev);
284− if (err)
285− return err;
286−
287− err = iio_channel_start_all_cb(data->cb_buffer);
288− if (err)
289− iio_triggered_buffer_predisable(indio_dev);
290−
291− return err;
282+ return iio_channel_start_all_cb(data->cb_buffer);
292283 }
293284
294285 static int lmp91000_buffer_predisable(struct iio_dev *indio_dev)
@@ -297,7 +288,7 @@ static int lmp91000_buffer_predisable(struct iio_dev *indio_dev) · 2 unmodified lines
297288
298289 iio_channel_stop_all_cb(data->cb_buffer);
299290
300− return iio_triggered_buffer_predisable(indio_dev);
291+ return 0;
301292 }
302293
303294 static const struct iio_buffer_setup_ops lmp91000_buffer_setup_ops = {
drivers/iio/pressure/st_pressure_buffer.c+2−24
@@ -31,34 +31,12 @@ int st_press_trig_set_state(struct iio_trigger *trig, bool state) · 30 unmodified lines
3131
3232 static int st_press_buffer_postenable(struct iio_dev *indio_dev)
3333 {
34− int err;
35−
36− err = iio_triggered_buffer_postenable(indio_dev);
37− if (err < 0)
38− return err;
39−
40− err = st_sensors_set_enable(indio_dev, true);
41− if (err < 0)
42− goto st_press_buffer_predisable;
43−
44− return 0;
45−
46−st_press_buffer_predisable:
47− iio_triggered_buffer_predisable(indio_dev);
48− return err;
34+ return st_sensors_set_enable(indio_dev, true);
4935 }
5036
5137 static int st_press_buffer_predisable(struct iio_dev *indio_dev)
5238 {
53− int err, err2;
54−
55− err = st_sensors_set_enable(indio_dev, false);
56−
57− err2 = iio_triggered_buffer_predisable(indio_dev);
58− if (!err)
59− err = err2;
60−
61− return err;
39+ return st_sensors_set_enable(indio_dev, false);
6240 }
6341
6442 static const struct iio_buffer_setup_ops st_press_buffer_setup_ops = {
drivers/iio/pressure/zpa2326.c+10−17
@@ -1242,19 +1242,17 @@ static int zpa2326_postenable_buffer(struct iio_dev *indio_dev) · 1241 unmodified lines
12421242 const struct zpa2326_private *priv = iio_priv(indio_dev);
12431243 int err;
12441244
1245− /* Plug our own trigger event handler. */
1246− err = iio_triggered_buffer_postenable(indio_dev);
1247− if (err)
1248− goto err;
1249−
12501245 if (!priv->waken) {
12511246 /*
12521247 * We were already power supplied. Just clear hardware FIFO to
12531248 * get rid of samples acquired during previous rounds (if any).
12541249 */
12551250 err = zpa2326_clear_fifo(indio_dev, 0);
1256− if (err)
1257− goto err_buffer_predisable;
1251+ if (err) {
1252+ zpa2326_err(indio_dev,
1253+ "failed to enable buffering (%d)", err);
1254+ return err;
1255+ }
12581256 }
12591257
12601258 if (!iio_trigger_using_own(indio_dev) && priv->waken) {
@@ -1263,18 +1261,14 @@ static int zpa2326_postenable_buffer(struct iio_dev *indio_dev) · 2 unmodified lines
12631261 * powered up: reconfigure one-shot mode.
12641262 */
12651263 err = zpa2326_config_oneshot(indio_dev, priv->irq);
1266− if (err)
1267− goto err_buffer_predisable;
1264+ if (err) {
1265+ zpa2326_err(indio_dev,
1266+ "failed to enable buffering (%d)", err);
1267+ return err;
1268+ }
12681269 }
12691270
12701271 return 0;
1271−
1272−err_buffer_predisable:
1273− iio_triggered_buffer_predisable(indio_dev);
1274−err:
1275− zpa2326_err(indio_dev, "failed to enable buffering (%d)", err);
1276−
1277− return err;
12781272 }
12791273
12801274 static int zpa2326_postdisable_buffer(struct iio_dev *indio_dev)
@@ -1287,7 +1281,6 @@ static int zpa2326_postdisable_buffer(struct iio_dev *indio_dev) · 6 unmodified lines
12871281 static const struct iio_buffer_setup_ops zpa2326_buffer_setup_ops = {
12881282 .preenable = zpa2326_preenable_buffer,
12891283 .postenable = zpa2326_postenable_buffer,
1290− .predisable = iio_triggered_buffer_predisable,
12911284 .postdisable = zpa2326_postdisable_buffer
12921285 };
12931286
drivers/iio/proximity/sx9310.c+0−2
@@ -736,8 +736,6 @@ static int sx9310_buffer_postdisable(struct iio_dev *indio_dev) · 735 unmodified lines
736736
737737 static const struct iio_buffer_setup_ops sx9310_buffer_setup_ops = {
738738 .preenable = sx9310_buffer_preenable,
739− .postenable = iio_triggered_buffer_postenable,
740− .predisable = iio_triggered_buffer_predisable,
741739 .postdisable = sx9310_buffer_postdisable,
742740 };
743741
drivers/iio/proximity/sx9500.c+0−9
@@ -680,10 +680,6 @@ static int sx9500_buffer_postenable(struct iio_dev *indio_dev) · 679 unmodified lines
680680 struct sx9500_data *data = iio_priv(indio_dev);
681681 int ret = 0, i;
682682
683− ret = iio_triggered_buffer_postenable(indio_dev);
684− if (ret)
685− return ret;
686−
687683 mutex_lock(&data->mutex);
688684
689685 for (i = 0; i < SX9500_NUM_CHANNELS; i++)
@@ -700,9 +696,6 @@ static int sx9500_buffer_postenable(struct iio_dev *indio_dev) · 10 unmodified lines
700696
701697 mutex_unlock(&data->mutex);
702698
703− if (ret)
704− iio_triggered_buffer_predisable(indio_dev);
705−
706699 return ret;
707700 }
708701
@@ -727,8 +720,6 @@ static int sx9500_buffer_predisable(struct iio_dev *indio_dev) · 18 unmodified lines
727720
728721 mutex_unlock(&data->mutex);
729722
730− iio_triggered_buffer_predisable(indio_dev);
731−
732723 return ret;
733724 }
734725
include/linux/iio/trigger_consumer.h+0−7
@@ -50,11 +50,4 @@ irqreturn_t iio_pollfunc_store_time(int irq, void *p); · 49 unmodified lines
5050
5151 void iio_trigger_notify_done(struct iio_trigger *trig);
5252
53−/*
54− * Two functions for common case where all that happens is a pollfunc
55− * is attached and detached from a trigger
56− */
57−int iio_triggered_buffer_postenable(struct iio_dev *indio_dev);
58−int iio_triggered_buffer_predisable(struct iio_dev *indio_dev);
59−
6053 #endif