bool pxs_need_dis;
 
        struct regmap *regmap;
+
+       /*
+        * Ensure correct naturally aligned timestamp.
+        * Note that the read will put garbage data into
+        * the padding but this should not be a problem
+        */
+       struct {
+               __le16 channels[3];
+               u8 garbage;
+               s64 ts __aligned(8);
+       } scan;
 };
 
 static IIO_CONST_ATTR(in_intensity_scale_available, RPR0521_ALS_SCALE_AVAIL);
        struct rpr0521_data *data = iio_priv(indio_dev);
        int err;
 
-       u8 buffer[16]; /* 3 16-bit channels + padding + ts */
-
        /* Use irq timestamp when reasonable. */
        if (iio_trigger_using_own(indio_dev) && data->irq_timestamp) {
                pf->timestamp = data->irq_timestamp;
                pf->timestamp = iio_get_time_ns(indio_dev);
 
        err = regmap_bulk_read(data->regmap, RPR0521_REG_PXS_DATA,
-               &buffer,
+               data->scan.channels,
                (3 * 2) + 1);   /* 3 * 16-bit + (discarded) int clear reg. */
        if (!err)
                iio_push_to_buffers_with_timestamp(indio_dev,
-                                                  buffer, pf->timestamp);
+                                                  &data->scan, pf->timestamp);
        else
                dev_err(&data->client->dev,
                        "Trigger consumer can't read from sensor.\n");