.sign = 's',                                            \
                .realbits = 16,                                 \
                .storagebits = 16,                                      \
+               .endianness = IIO_LE,                                   \
        },                                                              \
        .event_spec = &bmg160_event,                                    \
        .num_event_specs = 1                                            \
        struct iio_poll_func *pf = p;
        struct iio_dev *indio_dev = pf->indio_dev;
        struct bmg160_data *data = iio_priv(indio_dev);
-       int bit, ret, i = 0;
-       unsigned int val;
+       int ret;
 
        mutex_lock(&data->mutex);
-       for (bit = 0; bit < AXIS_MAX; bit++) {
-               ret = regmap_bulk_read(data->regmap, BMG160_AXIS_TO_REG(bit),
-                                      &val, 2);
-               if (ret < 0) {
-                       mutex_unlock(&data->mutex);
-                       goto err;
-               }
-               data->buffer[i++] = ret;
-       }
+       ret = regmap_bulk_read(data->regmap, BMG160_REG_XOUT_L,
+                              data->buffer, AXIS_MAX * 2);
        mutex_unlock(&data->mutex);
+       if (ret < 0)
+               goto err;
 
        iio_push_to_buffers_with_timestamp(indio_dev, data->buffer,
                                           pf->timestamp);