Linux kernel mirror (for testing) git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
kernel os linux

drivers: iio: temperature: Add delay after the addressed reset command in mlx90632.c

After an I2C reset command, the mlx90632 needs some time before
responding to other I2C commands. Without that delay, there is a chance
that the I2C command(s) after the reset will not be accepted.

Signed-off-by: Slaveyko Slaveykov <sis@melexis.com>
Reviewed-by: Andy Shevchenko <andy.shevchenko@gmail.com>
Reviewed-by: Crt Mori <cmo@melexis.com>
Fixes: e02472f74a81 ("iio:temperature:mlx90632: Adding extended calibration option")
Link: https://lore.kernel.org/r/20201216115720.12404-2-sis@melexis.com
Cc: <Stable@vger.kernel.org>
Signed-off-by: Jonathan Cameron <Jonathan.Cameron@huawei.com>

authored by

Slaveyko Slaveykov and committed by
Jonathan Cameron
cf5b1385 7e6d9788

+6
+6
drivers/iio/temperature/mlx90632.c
··· 248 248 if (ret < 0) 249 249 return ret; 250 250 251 + /* 252 + * Give the mlx90632 some time to reset properly before sending a new I2C command 253 + * if this is not done, the following I2C command(s) will not be accepted. 254 + */ 255 + usleep_range(150, 200); 256 + 251 257 ret = regmap_write_bits(regmap, MLX90632_REG_CONTROL, 252 258 (MLX90632_CFG_MTYP_MASK | MLX90632_CFG_PWR_MASK), 253 259 (MLX90632_MTYP_STATUS(type) | MLX90632_PWR_STATUS_HALT));