diff options
| -rw-r--r-- | drivers/iio/imu/bno055/bno055.c | 11 | 
1 files changed, 8 insertions, 3 deletions
| diff --git a/drivers/iio/imu/bno055/bno055.c b/drivers/iio/imu/bno055/bno055.c index 3f4c18dc3ee9..0eb5e1334e55 100644 --- a/drivers/iio/imu/bno055/bno055.c +++ b/drivers/iio/imu/bno055/bno055.c @@ -118,6 +118,7 @@ struct bno055_sysfs_attr {  	int len;  	int *fusion_vals;  	int *hw_xlate; +	int hw_xlate_len;  	int type;  }; @@ -170,20 +171,24 @@ static int bno055_gyr_scale_vals[] = {  	1000, 1877467, 2000, 1877467,  }; +static int bno055_gyr_scale_hw_xlate[] = {0, 1, 2, 3, 4};  static struct bno055_sysfs_attr bno055_gyr_scale = {  	.vals = bno055_gyr_scale_vals,  	.len = ARRAY_SIZE(bno055_gyr_scale_vals),  	.fusion_vals = (int[]){1, 900}, -	.hw_xlate = (int[]){4, 3, 2, 1, 0}, +	.hw_xlate = bno055_gyr_scale_hw_xlate, +	.hw_xlate_len = ARRAY_SIZE(bno055_gyr_scale_hw_xlate),  	.type = IIO_VAL_FRACTIONAL,  };  static int bno055_gyr_lpf_vals[] = {12, 23, 32, 47, 64, 116, 230, 523}; +static int bno055_gyr_lpf_hw_xlate[] = {5, 4, 7, 3, 6, 2, 1, 0};  static struct bno055_sysfs_attr bno055_gyr_lpf = {  	.vals = bno055_gyr_lpf_vals,  	.len = ARRAY_SIZE(bno055_gyr_lpf_vals),  	.fusion_vals = (int[]){32}, -	.hw_xlate = (int[]){5, 4, 7, 3, 6, 2, 1, 0}, +	.hw_xlate = bno055_gyr_lpf_hw_xlate, +	.hw_xlate_len = ARRAY_SIZE(bno055_gyr_lpf_hw_xlate),  	.type = IIO_VAL_INT,  }; @@ -561,7 +566,7 @@ static int bno055_get_regmask(struct bno055_priv *priv, int *val, int *val2,  	idx = (hwval & mask) >> shift;  	if (attr->hw_xlate) -		for (i = 0; i < attr->len; i++) +		for (i = 0; i < attr->hw_xlate_len; i++)  			if (attr->hw_xlate[i] == idx) {  				idx = i;  				break; | 
