| From 9436f45dd53595e21566a8c6627411077dfdb776 Mon Sep 17 00:00:00 2001 |
| From: Mike Looijmans <mike.looijmans@topic.nl> |
| Date: Wed, 6 Mar 2019 08:31:47 +0100 |
| Subject: iio:chemical:bme680: Fix, report temperature in millidegrees |
| |
| From: Mike Looijmans <mike.looijmans@topic.nl> |
| |
| commit 9436f45dd53595e21566a8c6627411077dfdb776 upstream. |
| |
| The standard unit for temperature is millidegrees Celcius. Adapt the |
| driver to report in millidegrees instead of degrees. |
| |
| Signed-off-by: Mike Looijmans <mike.looijmans@topic.nl> |
| Fixes: 1b3bd8592780 ("iio: chemical: Add support for Bosch BME680 sensor"); |
| Cc: <Stable@vger.kernel.org> |
| Signed-off-by: Jonathan Cameron <Jonathan.Cameron@huawei.com> |
| Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org> |
| |
| --- |
| drivers/iio/chemical/bme680_core.c | 16 +++++++--------- |
| 1 file changed, 7 insertions(+), 9 deletions(-) |
| |
| --- a/drivers/iio/chemical/bme680_core.c |
| +++ b/drivers/iio/chemical/bme680_core.c |
| @@ -591,8 +591,7 @@ static int bme680_gas_config(struct bme6 |
| return ret; |
| } |
| |
| -static int bme680_read_temp(struct bme680_data *data, |
| - int *val, int *val2) |
| +static int bme680_read_temp(struct bme680_data *data, int *val) |
| { |
| struct device *dev = regmap_get_device(data->regmap); |
| int ret; |
| @@ -625,10 +624,9 @@ static int bme680_read_temp(struct bme68 |
| * compensate_press/compensate_humid to get compensated |
| * pressure/humidity readings. |
| */ |
| - if (val && val2) { |
| - *val = comp_temp; |
| - *val2 = 100; |
| - return IIO_VAL_FRACTIONAL; |
| + if (val) { |
| + *val = comp_temp * 10; /* Centidegrees to millidegrees */ |
| + return IIO_VAL_INT; |
| } |
| |
| return ret; |
| @@ -643,7 +641,7 @@ static int bme680_read_press(struct bme6 |
| s32 adc_press; |
| |
| /* Read and compensate temperature to get a reading of t_fine */ |
| - ret = bme680_read_temp(data, NULL, NULL); |
| + ret = bme680_read_temp(data, NULL); |
| if (ret < 0) |
| return ret; |
| |
| @@ -676,7 +674,7 @@ static int bme680_read_humid(struct bme6 |
| u32 comp_humidity; |
| |
| /* Read and compensate temperature to get a reading of t_fine */ |
| - ret = bme680_read_temp(data, NULL, NULL); |
| + ret = bme680_read_temp(data, NULL); |
| if (ret < 0) |
| return ret; |
| |
| @@ -769,7 +767,7 @@ static int bme680_read_raw(struct iio_de |
| case IIO_CHAN_INFO_PROCESSED: |
| switch (chan->type) { |
| case IIO_TEMP: |
| - return bme680_read_temp(data, val, val2); |
| + return bme680_read_temp(data, val); |
| case IIO_PRESSURE: |
| return bme680_read_press(data, val, val2); |
| case IIO_HUMIDITYRELATIVE: |