clk: meson: pll: adjust timeout in meson_clk_pll_wait_lock()
authorHeiner Kallweit <hkallweit1@gmail.com>
Mon, 29 Aug 2022 18:52:59 +0000 (20:52 +0200)
committerJerome Brunet <jbrunet@baylibre.com>
Tue, 8 Nov 2022 16:05:02 +0000 (17:05 +0100)
Currently we loop over meson_parm_read() up to 24mln times.
This results in a unpredictable timeout period. In my case
it's over 5s on a S905X4-based system. Make the timeout
period predictable and set it to 100ms.

Signed-off-by: Heiner Kallweit <hkallweit1@gmail.com>
Signed-off-by: Jerome Brunet <jbrunet@baylibre.com>
Link: https://lore.kernel.org/r/a801afc0-a8f2-a0a4-0f2b-a7201351d563@gmail.com
drivers/clk/meson/clk-pll.c

index 9e55617..f7b59f7 100644 (file)
@@ -277,15 +277,15 @@ static int meson_clk_pll_wait_lock(struct clk_hw *hw)
 {
        struct clk_regmap *clk = to_clk_regmap(hw);
        struct meson_clk_pll_data *pll = meson_clk_pll_data(clk);
-       int delay = 24000000;
+       int delay = 5000;
 
        do {
-               /* Is the clock locked now ? */
+               /* Is the clock locked now ? Time out after 100ms. */
                if (meson_parm_read(clk->map, &pll->l))
                        return 0;
 
-               delay--;
-       } while (delay > 0);
+               udelay(20);
+       } while (--delay);
 
        return -ETIMEDOUT;
 }