#include <linux/module.h>
#include <linux/kernel.h>
#include <linux/interrupt.h>
#include <linux/iio/iio.h>
#include <linux/iio/buffer.h>
#include <linux/iio/trigger_consumer.h>
#include <linux/iio/triggered_buffer.h>
#include <linux/iio/common/st_sensors.h>
int st_press_trig_set_state(struct iio_trigger *trig, bool state)
struct iio_dev *indio_dev = iio_trigger_get_drvdata(trig);
return st_sensors_set_dataready_irq(indio_dev, state);
static int st_press_buffer_preenable(struct iio_dev *indio_dev)
return st_sensors_set_enable(indio_dev, true);
static int st_press_buffer_postenable(struct iio_dev *indio_dev)
struct st_sensor_data *press_data = iio_priv(indio_dev);
press_data->buffer_data = kmalloc(indio_dev->scan_bytes, GFP_KERNEL);
if (press_data->buffer_data == NULL) {
goto allocate_memory_error;
err = iio_triggered_buffer_postenable(indio_dev);
goto st_press_buffer_postenable_error;
st_press_buffer_postenable_error:
kfree(press_data->buffer_data);
static int st_press_buffer_predisable(struct iio_dev *indio_dev)