Documentation/timers/timers-howto.txt says: "msleep(1~20) may not do what the caller intends, and will often sleep longer (~20 ms actual sleep for any value given in the 1~20ms range)." So replace msleep(2) by usleep_range(2000, 3000). Reported-by: Hans Verkuil <hansverk@xxxxxxxxx> Cc: Matt Ranostay <matt.ranostay@xxxxxxxxxxxx> Cc: Sakari Ailus <sakari.ailus@xxxxxxxxxxxxxxx> Cc: Hans Verkuil <hansverk@xxxxxxxxx> Cc: Mauro Carvalho Chehab <mchehab@xxxxxxxxxx> Signed-off-by: Akinobu Mita <akinobu.mita@xxxxxxxxx> --- This fixes "[PATCH v4 6/6] media: video-i2c: support runtime PM" in the patchset "[PATCH v4 0/6] media: video-i2c: support changing frame interval and runtime PM". drivers/media/i2c/video-i2c.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/drivers/media/i2c/video-i2c.c b/drivers/media/i2c/video-i2c.c index 0c82131..77080d7 100644 --- a/drivers/media/i2c/video-i2c.c +++ b/drivers/media/i2c/video-i2c.c @@ -155,7 +155,7 @@ static int amg88xx_set_power_on(struct video_i2c_data *data) if (ret) return ret; - msleep(2); + usleep_range(2000, 3000); ret = regmap_write(data->regmap, AMG88XX_REG_RST, AMG88XX_RST_FLAG); if (ret) -- 2.7.4