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 <[email protected]>
---
 drivers/base/regmap/regmap.c | 4 ++--
 1 file changed, 2 insertions(+), 2 deletions(-)

diff --git a/drivers/base/regmap/regmap.c b/drivers/base/regmap/regmap.c
index e93700af7e6e..a417cb1a11dc 100644
--- a/drivers/base/regmap/regmap.c
+++ b/drivers/base/regmap/regmap.c
@@ -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;
        }
-- 
2.27.0

Reply via email to