On Fri, Aug 23, 2024 at 08:17:10PM +0200, Vasileios Amoiridis wrote: > When there is a change in the configuration of the BMP3xx device, several > steps take place. These steps include: > > 1) Update the OSR settings and check if there was an update > 2) Update the ODR settings and check if there was an update > 3) Update the IIR settings and check if there was an update > 4) Check if there was an update with the following procedure: > a) Set sensor to SLEEP mode and after to NORMAL mode to trigger > a new measurement. > b) Wait the maximum amount possible depending on the OSR settings > c) Check the configuration error register if there was an error > during the configuration of the sensor. > > This check is necessary, because there could be a case where the OSR is > too high for the requested ODR so either the ODR needs to be slower or the > OSR needs to be less. This is something that is checked internally by the > sensor when it runs in NORMAL mode. > > In the BMP58x devices the previous steps are done internally by the sensor. > > The IIR filter settings do not depend on the OSR or ODR settings, and there > is no need to run a check in case they change. ... > + ret = regmap_update_bits(data->regmap, BMP580_REG_DSP_IIR, > + BMP580_DSP_IIR_PRESS_MASK | > + BMP580_DSP_IIR_TEMP_MASK, reg_val); Better to split on logical bounds ret = regmap_update_bits(data->regmap, BMP580_REG_DSP_IIR, BMP580_DSP_IIR_PRESS_MASK | BMP580_DSP_IIR_TEMP_MASK, reg_val); -- With Best Regards, Andy Shevchenko