struct iio_dev *indio_dev = pf->indio_dev;
        struct isl29501_private *isl29501 = iio_priv(indio_dev);
        const unsigned long *active_mask = indio_dev->active_scan_mask;
-       u32 buffer[4] __aligned(8) = {}; /* 1x16-bit + naturally aligned ts */
-
-       if (test_bit(ISL29501_DISTANCE_SCAN_INDEX, active_mask))
-               isl29501_register_read(isl29501, REG_DISTANCE, buffer);
+       u32 value;
+       struct {
+               u16 data;
+               aligned_s64 ts;
+       } scan = { };
+
+       if (test_bit(ISL29501_DISTANCE_SCAN_INDEX, active_mask)) {
+               isl29501_register_read(isl29501, REG_DISTANCE, &value);
+               scan.data = value;
+       }
 
-       iio_push_to_buffers_with_timestamp(indio_dev, buffer, pf->timestamp);
+       iio_push_to_buffers_with_timestamp(indio_dev, &scan, pf->timestamp);
        iio_trigger_notify_done(indio_dev->trig);
 
        return IRQ_HANDLED;