Skip to content

Commit f55b951

Browse files
spencercwjic23
authored andcommitted
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: 4241665 ("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: Chris Spencer <spencercw@gmail.com> Acked-by: Vasileios Amoiridis <vassilisamir@gmail.com> Cc: stable@vger.kernel.org Signed-off-by: Jonathan Cameron <Jonathan.Cameron@huawei.com>
1 parent 5187e03 commit f55b951

1 file changed

Lines changed: 1 addition & 1 deletion

File tree

drivers/iio/chemical/bme680_core.c

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -613,7 +613,7 @@ static int bme680_wait_for_eoc(struct bme680_data *data)
613613
* + heater duration
614614
*/
615615
int wait_eoc_us = ((data->oversampling_temp + data->oversampling_press +
616-
data->oversampling_humid) * 1936) + (477 * 4) +
616+
data->oversampling_humid) * 1963) + (477 * 4) +
617617
(477 * 5) + 1000 + (data->heater_dur * 1000);
618618

619619
fsleep(wait_eoc_us);

0 commit comments

Comments
 (0)