This patch is introducing preenable/postdisable in the common st_sensors_buffer code in order to remove the memory allocation / de-allocation from each single st driver. Signed-off-by: Denis Ciocca <denis.ciocca@xxxxxx> --- .../iio/common/st_sensors/st_sensors_buffer.c | 22 +++++++++++++++++++ include/linux/iio/common/st_sensors.h | 2 ++ 2 files changed, 24 insertions(+) diff --git a/drivers/iio/common/st_sensors/st_sensors_buffer.c b/drivers/iio/common/st_sensors/st_sensors_buffer.c index eee30130ae23..9da1c8104883 100644 --- a/drivers/iio/common/st_sensors/st_sensors_buffer.c +++ b/drivers/iio/common/st_sensors/st_sensors_buffer.c @@ -81,6 +81,28 @@ irqreturn_t st_sensors_trigger_handler(int irq, void *p) } EXPORT_SYMBOL(st_sensors_trigger_handler); +int st_sensors_buffer_preenable(struct iio_dev *indio_dev) +{ + struct st_sensor_data *sdata = iio_priv(indio_dev); + + sdata->buffer_data = kmalloc(indio_dev->scan_bytes, + GFP_DMA | GFP_KERNEL); + if (!sdata->buffer_data) + return -ENOMEM; + + return 0; +} +EXPORT_SYMBOL(st_sensors_buffer_preenable); + +int st_sensors_buffer_postdisable(struct iio_dev *indio_dev) +{ + struct st_sensor_data *sdata = iio_priv(indio_dev); + + kfree(sdata->buffer_data); + return 0; +} +EXPORT_SYMBOL(st_sensors_buffer_postdisable); + MODULE_AUTHOR("Denis Ciocca <denis.ciocca@xxxxxx>"); MODULE_DESCRIPTION("STMicroelectronics ST-sensors buffer"); MODULE_LICENSE("GPL v2"); diff --git a/include/linux/iio/common/st_sensors.h b/include/linux/iio/common/st_sensors.h index 28fc1f9fa7d5..c66ebb236a15 100644 --- a/include/linux/iio/common/st_sensors.h +++ b/include/linux/iio/common/st_sensors.h @@ -254,6 +254,8 @@ struct st_sensor_data { #ifdef CONFIG_IIO_BUFFER irqreturn_t st_sensors_trigger_handler(int irq, void *p); +int st_sensors_buffer_preenable(struct iio_dev *indio_dev); +int st_sensors_buffer_postdisable(struct iio_dev *indio_dev); #endif #ifdef CONFIG_IIO_TRIGGER -- 2.22.0