Commit 9436f45d authored by Mike Looijmans's avatar Mike Looijmans Committed by Jonathan Cameron
Browse files

iio:chemical:bme680: Fix, report temperature in millidegrees



The standard unit for temperature is millidegrees Celcius. Adapt the
driver to report in millidegrees instead of degrees.

Signed-off-by: default avatarMike Looijmans <mike.looijmans@topic.nl>
Fixes: 1b3bd859 ("iio: chemical: Add support for Bosch BME680 sensor");
Cc: <Stable@vger.kernel.org>
Signed-off-by: default avatarJonathan Cameron <Jonathan.Cameron@huawei.com>
parent 831d2fef
Loading
Loading
Loading
Loading
+7 −9
Original line number Diff line number Diff line
@@ -583,8 +583,7 @@ static int bme680_gas_config(struct bme680_data *data)
	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;
@@ -617,10 +616,9 @@ static int bme680_read_temp(struct bme680_data *data,
	 * 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;
@@ -635,7 +633,7 @@ static int bme680_read_press(struct bme680_data *data,
	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;

@@ -668,7 +666,7 @@ static int bme680_read_humid(struct bme680_data *data,
	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;

@@ -761,7 +759,7 @@ static int bme680_read_raw(struct iio_dev *indio_dev,
	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: