#define ST_GYRO_FS_AVL_500DPS                  500
 #define ST_GYRO_FS_AVL_2000DPS                 2000
 
+static const struct iio_mount_matrix *
+st_gyro_get_mount_matrix(const struct iio_dev *indio_dev,
+                        const struct iio_chan_spec *chan)
+{
+       struct st_sensor_data *gdata = iio_priv(indio_dev);
+
+       return &gdata->mount_matrix;
+}
+
+static const struct iio_chan_spec_ext_info st_gyro_mount_matrix_ext_info[] = {
+       IIO_MOUNT_MATRIX(IIO_SHARED_BY_ALL, st_gyro_get_mount_matrix),
+       { }
+};
+
 static const struct iio_chan_spec st_gyro_16bit_channels[] = {
-       ST_SENSORS_LSM_CHANNELS(IIO_ANGL_VEL,
+       ST_SENSORS_LSM_CHANNELS_EXT(IIO_ANGL_VEL,
                        BIT(IIO_CHAN_INFO_RAW) | BIT(IIO_CHAN_INFO_SCALE),
                        ST_SENSORS_SCAN_X, 1, IIO_MOD_X, 's', IIO_LE, 16, 16,
-                       ST_GYRO_DEFAULT_OUT_X_L_ADDR),
-       ST_SENSORS_LSM_CHANNELS(IIO_ANGL_VEL,
+                       ST_GYRO_DEFAULT_OUT_X_L_ADDR,
+                       st_gyro_mount_matrix_ext_info),
+       ST_SENSORS_LSM_CHANNELS_EXT(IIO_ANGL_VEL,
                        BIT(IIO_CHAN_INFO_RAW) | BIT(IIO_CHAN_INFO_SCALE),
                        ST_SENSORS_SCAN_Y, 1, IIO_MOD_Y, 's', IIO_LE, 16, 16,
-                       ST_GYRO_DEFAULT_OUT_Y_L_ADDR),
-       ST_SENSORS_LSM_CHANNELS(IIO_ANGL_VEL,
+                       ST_GYRO_DEFAULT_OUT_Y_L_ADDR,
+                       st_gyro_mount_matrix_ext_info),
+       ST_SENSORS_LSM_CHANNELS_EXT(IIO_ANGL_VEL,
                        BIT(IIO_CHAN_INFO_RAW) | BIT(IIO_CHAN_INFO_SCALE),
                        ST_SENSORS_SCAN_Z, 1, IIO_MOD_Z, 's', IIO_LE, 16, 16,
-                       ST_GYRO_DEFAULT_OUT_Z_L_ADDR),
+                       ST_GYRO_DEFAULT_OUT_Z_L_ADDR,
+                       st_gyro_mount_matrix_ext_info),
        IIO_CHAN_SOFT_TIMESTAMP(3)
 };
 
        indio_dev->channels = gdata->sensor_settings->ch;
        indio_dev->num_channels = ST_SENSORS_NUMBER_ALL_CHANNELS;
 
+       err = iio_read_mount_matrix(gdata->dev, &gdata->mount_matrix);
+       if (err)
+               return err;
+
        gdata->current_fullscale = &gdata->sensor_settings->fs.fs_avl[0];
        gdata->odr = gdata->sensor_settings->odr.odr_avl[0].hz;