#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_accel_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_accel_buffer_preenable(struct iio_dev *indio_dev)
return st_sensors_set_enable(indio_dev, true);
static int st_accel_buffer_postenable(struct iio_dev *indio_dev)
struct st_sensor_data *adata = iio_priv(indio_dev);
adata->buffer_data = kmalloc(indio_dev->scan_bytes, GFP_KERNEL);
if (adata->buffer_data == NULL) {
goto allocate_memory_error;
err = st_sensors_set_axis_enable(indio_dev,
(u8)indio_dev->active_scan_mask[0]);
goto st_accel_buffer_postenable_error;
err = iio_triggered_buffer_postenable(indio_dev);
goto st_accel_buffer_postenable_error;
st_accel_buffer_postenable_error:
kfree(adata->buffer_data);