Skip to content

Commit 09d0235

Browse files
spencercwgregkh
authored andcommitted
iio: chemical: bme680: Fix measurement wait duration calculation
commit f55b951 upstream. 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> Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
1 parent 6b0224d commit 09d0235

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)