On Fri, Jan 12, 2018 at 06:29:01PM +0100, Emiliano Ingrassia wrote: > An sht3x sensor include limits register which contains temperature > and humidity limit values. After a reset, pre-defined values are loaded > into that register. During the probe function, the driver reads the > limits register. However, if the reads are made too early, for example > because the I2C bus frequency is high (e.g. 400 kHz), the loading could be > not completed and the sensor returns a NACK which causes the probe to fail. > A delay of 500 us before the first read solves this issue. > > Signed-off-by: Emiliano Ingrassia <ingrassia@xxxxxxxxxxxxxx> > --- > drivers/hwmon/sht3x.c | 2 ++ > 1 file changed, 2 insertions(+) > > diff --git a/drivers/hwmon/sht3x.c b/drivers/hwmon/sht3x.c > index 6ea99cd6ae79..cec06b76656e 100644 > --- a/drivers/hwmon/sht3x.c > +++ b/drivers/hwmon/sht3x.c > @@ -732,6 +732,8 @@ static int sht3x_probe(struct i2c_client *client, > mutex_init(&data->i2c_lock); > mutex_init(&data->data_lock); > > + udelay(500); > + Why is it necessary to perform an active wait, ie why don't you use usleep_range() ? Please explain. Also, please add a comment into the code, describing why the delay is necessary. Thanks, Guenter -- To unsubscribe from this list: send the line "unsubscribe linux-hwmon" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html