const struct zpa2326_private *priv = iio_priv(indio_dev);
        int                           err;
 
+       /* Plug our own trigger event handler. */
+       err = iio_triggered_buffer_postenable(indio_dev);
+       if (err)
+               goto err;
+
        if (!priv->waken) {
                /*
                 * We were already power supplied. Just clear hardware FIFO to
                 */
                err = zpa2326_clear_fifo(indio_dev, 0);
                if (err)
-                       goto err;
+                       goto err_buffer_predisable;
        }
 
        if (!iio_trigger_using_own(indio_dev) && priv->waken) {
                 */
                err = zpa2326_config_oneshot(indio_dev, priv->irq);
                if (err)
-                       goto err;
+                       goto err_buffer_predisable;
        }
 
-       /* Plug our own trigger event handler. */
-       err = iio_triggered_buffer_postenable(indio_dev);
-       if (err)
-               goto err;
-
        return 0;
 
+err_buffer_predisable:
+       iio_triggered_buffer_predisable(indio_dev);
 err:
        zpa2326_err(indio_dev, "failed to enable buffering (%d)", err);