0001
0002
0003
0004
0005
0006
0007
0008
0009
0010 #include <linux/kernel.h>
0011 #include <linux/iio/iio.h>
0012 #include <linux/iio/buffer.h>
0013 #include <linux/iio/trigger.h>
0014 #include <linux/iio/triggered_buffer.h>
0015
0016 #include <linux/iio/common/st_sensors.h>
0017 #include "st_pressure.h"
0018
0019 int st_press_trig_set_state(struct iio_trigger *trig, bool state)
0020 {
0021 struct iio_dev *indio_dev = iio_trigger_get_drvdata(trig);
0022
0023 return st_sensors_set_dataready_irq(indio_dev, state);
0024 }
0025
0026 static int st_press_buffer_postenable(struct iio_dev *indio_dev)
0027 {
0028 return st_sensors_set_enable(indio_dev, true);
0029 }
0030
0031 static int st_press_buffer_predisable(struct iio_dev *indio_dev)
0032 {
0033 return st_sensors_set_enable(indio_dev, false);
0034 }
0035
0036 static const struct iio_buffer_setup_ops st_press_buffer_setup_ops = {
0037 .postenable = &st_press_buffer_postenable,
0038 .predisable = &st_press_buffer_predisable,
0039 };
0040
0041 int st_press_allocate_ring(struct iio_dev *indio_dev)
0042 {
0043 return devm_iio_triggered_buffer_setup(indio_dev->dev.parent, indio_dev,
0044 NULL, &st_sensors_trigger_handler, &st_press_buffer_setup_ops);
0045 }