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)
 {
-       int err;
        struct st_sensor_data *adata = iio_priv(indio_dev);
+       int err;
 
        adata->buffer_data = kmalloc(indio_dev->scan_bytes,
                                     GFP_DMA | GFP_KERNEL);
-       if (adata->buffer_data == NULL) {
-               err = -ENOMEM;
-               goto allocate_memory_error;
-       }
+       if (!adata->buffer_data)
+               return -ENOMEM;
 
        err = iio_triggered_buffer_postenable(indio_dev);
        if (err < 0)
-               goto st_accel_buffer_postenable_error;
+               goto st_accel_free_buffer;
 
        err = st_sensors_set_axis_enable(indio_dev,
-                                       (u8)indio_dev->active_scan_mask[0]);
+                                        (u8)indio_dev->active_scan_mask[0]);
        if (err < 0)
-               goto st_sensors_set_axis_enable_error;
+               goto st_accel_buffer_predisable;
 
-       return err;
+       err = st_sensors_set_enable(indio_dev, true);
+       if (err < 0)
+               goto st_accel_buffer_enable_all_axis;
+
+       return 0;
 
-st_sensors_set_axis_enable_error:
+st_accel_buffer_enable_all_axis:
+       st_sensors_set_axis_enable(indio_dev, ST_SENSORS_ENABLE_ALL_AXIS);
+st_accel_buffer_predisable:
        iio_triggered_buffer_predisable(indio_dev);
-st_accel_buffer_postenable_error:
+st_accel_free_buffer:
        kfree(adata->buffer_data);
-allocate_memory_error:
        return err;
 }
 
 static int st_accel_buffer_predisable(struct iio_dev *indio_dev)
 {
-       int err, err2;
        struct st_sensor_data *adata = iio_priv(indio_dev);
-
-       err = st_sensors_set_axis_enable(indio_dev, ST_SENSORS_ENABLE_ALL_AXIS);
-       if (err < 0)
-               goto st_accel_buffer_predisable_error;
+       int err, err2;
 
        err = st_sensors_set_enable(indio_dev, false);
        if (err < 0)
-               goto st_accel_buffer_predisable_error;
+               goto st_accel_buffer_predisable;
+
+       err = st_sensors_set_axis_enable(indio_dev, ST_SENSORS_ENABLE_ALL_AXIS);
 
-st_accel_buffer_predisable_error:
+st_accel_buffer_predisable:
        err2 = iio_triggered_buffer_predisable(indio_dev);
        if (!err)
                err = err2;
 }
 
 static const struct iio_buffer_setup_ops st_accel_buffer_setup_ops = {
-       .preenable = &st_accel_buffer_preenable,
        .postenable = &st_accel_buffer_postenable,
        .predisable = &st_accel_buffer_predisable,
 };