staging:iio:accel: use sign extend function avoiding code duplication
Subsystems (4)
PATCH 1/1 staging:iio:accel: use sign extend function avoiding code duplication
Use sign_extend32 kernel function instead of code duplication. This function is also safe for 16 bits.
--- drivers/staging/iio/accel/adis16201.c | 4 +--- 1 file changed, 1 insertion(+), 3 deletions(-)
drivers/staging/iio/accel/adis16201.c +1 -3
@@ -227,9 +227,7 @@ static int adis16201_read_raw(struct iio_dev *indio_dev, ret =adis_read_reg_16 (st, addr, &val16);if (ret)return ret; - val16 &= (1 << bits) -1 ; - val16 = (s16)(val16 << (16 - bits)) >> (16 - bits); - *val = val16; + *val =sign_extend32 (val16, bits);return IIO_VAL_INT ; }
Signature · 1 line
2.17.1
Quoted 2 lines · Karim Eshapa
Use
sign_extend32kernel function instead of code duplication. This function is also safe for 16 bits.
Firstly:
This file is not in staging anymore.
Please use the -next tree for patches.
drivers/staging/iio/accel/adis16201.c
Quoted 1 line
drivers/staging/iio/accel/adis16201.c +0
-0
[]
drivers/staging/iio/accel/adis16201.c static int adis16201_read_raw(struct iio_dev *indio_dev, · line 232
Quoted 10 lines
drivers/staging/iio/accel/adis16201.c +1
-3@@ -227,9 +227,7 @@ static int adis16201_read_raw(struct iio_dev *indio_dev, ret =adis_read_reg_16 (st, addr, &val16);if (ret)return ret; - val16 &= (1 << bits) -1 ; - val16 = (s16)(val16 << (16 - bits)) >> (16 - bits); - *val = val16; + *val =sign_extend32 (val16, bits);return IIO_VAL_INT ; }
Secondly:
A similar patch with a different bits value was
already applied.
Please verify the appropriate bits value.
commit e7f3bfb7eb7d9307c0c157f82fceb228f0aec1d9
Author: Himanshu Jha <[email protected]> Date: Sat Mar 17 01:36:23 2018 +0530
Staging: iio: accel: adis16201: Use sign_extend32 function
Use sign_extned32() for 32 bit sign extending rather than hard coding.
--- drivers/staging/iio/accel/adis16201.c | 5 ++--- 1 file changed, 2 insertions(+), 3 deletions(-)
drivers/staging/iio/accel/adis16201.c +2 -3
@@ -173,9 +173,8 @@ static int adis16201_read_raw(struct iio_dev *indio_dev, ret =adis_read_reg_16 (st, addr, &val16);if (ret)return ret; - val16 &= (1 << bits) -1 ; - val16 = (s16)(val16 << (16 - bits)) >> (16 - bits); - *val = val16; + + *val =sign_extend32 (val16, bits -1 );return IIO_VAL_INT ; }