diff options
| author | Matt Ranostay <mranostay@gmail.com> | 2016-05-29 19:52:02 -0700 | 
|---|---|---|
| committer | Jonathan Cameron <jic23@kernel.org> | 2016-06-03 13:25:33 +0100 | 
| commit | 94bef000f1d4aa111f4ddda1482cf3b30ad069ce (patch) | |
| tree | 214790b811c6b2d18b4b557d83d64ae32756a76e /drivers/iio/humidity | |
| parent | 590b92a30242dd3f73de3d9a51d9924f1ab33e93 (diff) | |
| download | linux-94bef000f1d4aa111f4ddda1482cf3b30ad069ce.tar.bz2 | |
iio: hudmidity: hdc100x: fix incorrect shifting and scaling
Shifting sensor data to the right 2 bits was incorrect and caused the
scaling values + offsets to be invalid.
Reported-by: Alison Schofield <amsfield22@gmail.com>
Signed-off-by: Matt Ranostay <mranostay@gmail.com>
Tested-by: Alison Schofield <amsfield22@gmail.com>
Cc: <Stable@vger.kernel.org>
Signed-off-by: Jonathan Cameron <jic23@kernel.org>
Diffstat (limited to 'drivers/iio/humidity')
| -rw-r--r-- | drivers/iio/humidity/hdc100x.c | 16 | 
1 files changed, 8 insertions, 8 deletions
diff --git a/drivers/iio/humidity/hdc100x.c b/drivers/iio/humidity/hdc100x.c index 30709838dcdc..a03832a5fc95 100644 --- a/drivers/iio/humidity/hdc100x.c +++ b/drivers/iio/humidity/hdc100x.c @@ -164,14 +164,14 @@ static int hdc100x_get_measurement(struct hdc100x_data *data,  		dev_err(&client->dev, "cannot read high byte measurement");  		return ret;  	} -	val = ret << 6; +	val = ret << 8;  	ret = i2c_smbus_read_byte(client);  	if (ret < 0) {  		dev_err(&client->dev, "cannot read low byte measurement");  		return ret;  	} -	val |= ret >> 2; +	val |= ret;  	return val;  } @@ -212,17 +212,17 @@ static int hdc100x_read_raw(struct iio_dev *indio_dev,  	case IIO_CHAN_INFO_SCALE:  		if (chan->type == IIO_TEMP) {  			*val = 165000; -			*val2 = 65536 >> 2; +			*val2 = 65536;  			return IIO_VAL_FRACTIONAL;  		} else { -			*val = 0; -			*val2 = 10000; -			return IIO_VAL_INT_PLUS_MICRO; +			*val = 100; +			*val2 = 65536; +			return IIO_VAL_FRACTIONAL;  		}  		break;  	case IIO_CHAN_INFO_OFFSET: -		*val = -3971; -		*val2 = 879096; +		*val = -15887; +		*val2 = 515151;  		return IIO_VAL_INT_PLUS_MICRO;  	default:  		return -EINVAL;  |