* @part_info: Part information
  * @trig:      Pointer to iio trigger
  * @meas_rate: Value of MEAS_RATE register. Only set in HW in auto mode
+ * @buffer:    Used to pack data read from sensor.
  */
 struct si1145_data {
        struct i2c_client *client;
        bool autonomous;
        struct iio_trigger *trig;
        int meas_rate;
+       /*
+        * Ensure timestamp will be naturally aligned if present.
+        * Maximum buffer size (may be only partly used if not all
+        * channels are enabled):
+        *   6*2 bytes channels data + 4 bytes alignment +
+        *   8 bytes timestamp
+        */
+       u8 buffer[24] __aligned(8);
 };
 
 /*
        struct iio_poll_func *pf = private;
        struct iio_dev *indio_dev = pf->indio_dev;
        struct si1145_data *data = iio_priv(indio_dev);
-       /*
-        * Maximum buffer size:
-        *   6*2 bytes channels data + 4 bytes alignment +
-        *   8 bytes timestamp
-        */
-       u8 buffer[24];
        int i, j = 0;
        int ret;
        u8 irq_status = 0;
 
                ret = i2c_smbus_read_i2c_block_data_or_emulated(
                                data->client, indio_dev->channels[i].address,
-                               sizeof(u16) * run, &buffer[j]);
+                               sizeof(u16) * run, &data->buffer[j]);
                if (ret < 0)
                        goto done;
                j += run * sizeof(u16);
                        goto done;
        }
 
-       iio_push_to_buffers_with_timestamp(indio_dev, buffer,
+       iio_push_to_buffers_with_timestamp(indio_dev, data->buffer,
                iio_get_time_ns(indio_dev));
 
 done: