From: Slaveyko Slaveykov Date: Wed, 16 Dec 2020 11:57:20 +0000 (+0200) Subject: drivers: iio: temperature: Add delay after the addressed reset command in mlx90632.c X-Git-Tag: rel_imx_5.10.35_2.0.0-somdevices.0~363^2~2184 X-Git-Url: https://git.somdevices.com/?a=commitdiff_plain;h=dbecf66313442997dc8bd494bebe698ff571a9da;p=linux.git drivers: iio: temperature: Add delay after the addressed reset command in mlx90632.c commit cf5b1385d748b2f91b0c05bb301fcaf9bdbad385 upstream. 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 Reviewed-by: Andy Shevchenko Reviewed-by: Crt Mori Fixes: e02472f74a81 ("iio:temperature:mlx90632: Adding extended calibration option") Link: https://lore.kernel.org/r/20201216115720.12404-2-sis@melexis.com Cc: Signed-off-by: Jonathan Cameron Signed-off-by: Greg Kroah-Hartman --- diff --git a/drivers/iio/temperature/mlx90632.c b/drivers/iio/temperature/mlx90632.c index 503fe54a0bb9..608ccb1d8bc8 100644 --- a/drivers/iio/temperature/mlx90632.c +++ b/drivers/iio/temperature/mlx90632.c @@ -248,6 +248,12 @@ static int mlx90632_set_meas_type(struct regmap *regmap, u8 type) if (ret < 0) return ret; + /* + * Give the mlx90632 some time to reset properly before sending a new I2C command + * if this is not done, the following I2C command(s) will not be accepted. + */ + usleep_range(150, 200); + ret = regmap_write_bits(regmap, MLX90632_REG_CONTROL, (MLX90632_CFG_MTYP_MASK | MLX90632_CFG_PWR_MASK), (MLX90632_MTYP_STATUS(type) | MLX90632_PWR_STATUS_HALT));