Commit f55b9510 authored by Chris Spencer's avatar Chris Spencer Committed by Jonathan Cameron
Browse files

iio: chemical: bme680: Fix measurement wait duration calculation

This function refers to the Bosch BME680 API as the source of the
calculation, but one of the constants does not match the Bosch
implementation. This appears to be a simple transposition of two digits,
resulting in a wait time that is too short. This can cause the following
'device measurement cycle incomplete' check to occasionally fail, returning
EBUSY to user space.

Adjust the constant to match the Bosch implementation and resolve the EBUSY
errors.

Fixes: 4241665e ("iio: chemical: bme680: Fix sensor data read operation")
Link: https://github.com/boschsensortec/BME68x_SensorAPI/blob/v4.4.8/bme68x.c#L521


Signed-off-by: default avatarChris Spencer <spencercw@gmail.com>
Acked-by: default avatarVasileios Amoiridis <vassilisamir@gmail.com>
Cc: stable@vger.kernel.org
Signed-off-by: default avatarJonathan Cameron <Jonathan.Cameron@huawei.com>
parent 5187e03b
Loading
Loading
Loading
Loading
+1 −1
Original line number Diff line number Diff line
@@ -613,7 +613,7 @@ static int bme680_wait_for_eoc(struct bme680_data *data)
	 * + heater duration
	 */
	int wait_eoc_us = ((data->oversampling_temp + data->oversampling_press +
			   data->oversampling_humid) * 1936) + (477 * 4) +
			   data->oversampling_humid) * 1963) + (477 * 4) +
			   (477 * 5) + 1000 + (data->heater_dur * 1000);

	fsleep(wait_eoc_us);