regmap: Use flexible sleep
authorDmitry Osipenko <digetx@gmail.com>
Sun, 30 Aug 2020 18:53:52 +0000 (21:53 +0300)
committerMark Brown <broonie@kernel.org>
Tue, 1 Sep 2020 13:54:52 +0000 (14:54 +0100)
The multi-reg write function uses udelay(), which is a busy-loop based
delaying function that is not suitable for a long delays. Hence let's
replace the udelay() with fsleep(), which is flexible sleep function that
selects best delay function based on the delay-time.

Signed-off-by: Dmitry Osipenko <digetx@gmail.com>
Link: https://lore.kernel.org/r/20200830185356.5365-3-digetx@gmail.com
Signed-off-by: Mark Brown <broonie@kernel.org>
drivers/base/regmap/regmap.c

index e93700a..a417cb1 100644 (file)
@@ -2231,7 +2231,7 @@ static int _regmap_range_multi_paged_reg_write(struct regmap *map,
                                        return ret;
 
                                if (regs[i].delay_us)
-                                       udelay(regs[i].delay_us);
+                                       fsleep(regs[i].delay_us);
 
                                base += n;
                                n = 0;
@@ -2268,7 +2268,7 @@ static int _regmap_multi_reg_write(struct regmap *map,
                                return ret;
 
                        if (regs[i].delay_us)
-                               udelay(regs[i].delay_us);
+                               fsleep(regs[i].delay_us);
                }
                return 0;
        }