u8 mode;
        struct iio_trigger *dready_trig;
        bool dready_trigger_on;
-       s8 buffer[16]; /* 3x8-bit channels + 5x8 padding + 64-bit timestamp */
+       /* Ensure timestamp is naturally aligned */
+       struct {
+               s8 chans[3];
+               s64 timestamp __aligned(8);
+       } scan;
 };
 
 static IIO_CONST_ATTR(in_accel_scale_available, STK8312_SCALE_AVAIL);
                ret = i2c_smbus_read_i2c_block_data(data->client,
                                                    STK8312_REG_XOUT,
                                                    STK8312_ALL_CHANNEL_SIZE,
-                                                   data->buffer);
+                                                   data->scan.chans);
                if (ret < STK8312_ALL_CHANNEL_SIZE) {
                        dev_err(&data->client->dev, "register read failed\n");
                        mutex_unlock(&data->lock);
                                mutex_unlock(&data->lock);
                                goto err;
                        }
-                       data->buffer[i++] = ret;
+                       data->scan.chans[i++] = ret;
                }
        }
        mutex_unlock(&data->lock);
 
-       iio_push_to_buffers_with_timestamp(indio_dev, data->buffer,
+       iio_push_to_buffers_with_timestamp(indio_dev, &data->scan,
                                           pf->timestamp);
 err:
        iio_trigger_notify_done(indio_dev->trig);