Hi Stephen, On Tue, Mar 30, 2021 at 4:22 AM Stephen Boyd <sboyd@xxxxxxxxxx> wrote: > Quoting Geert Uytterhoeven (2021-03-26 05:00:59) > > +} > > + > > +static int cpg_pll_clk_set_rate(struct clk_hw *hw, unsigned long rate, > > + unsigned long parent_rate) > > +{ > > + struct cpg_pll_clk *pll_clk = to_pll_clk(hw); > > + unsigned int mult, i; > > + u32 val; > > + > > + mult = DIV_ROUND_CLOSEST_ULL(rate, parent_rate * pll_clk->fixed_mult); > > + mult = clamp(mult, 1U, 128U); > > + > > + val = readl(pll_clk->pllcr_reg); > > + val &= ~CPG_PLLnCR_STC_MASK; > > + val |= (mult - 1) << __ffs(CPG_PLLnCR_STC_MASK); > > + writel(val, pll_clk->pllcr_reg); > > + > > + for (i = 1000; i; i--) { > > + if (readl(pll_clk->pllecr_reg) & pll_clk->pllecr_pllst_mask) > > + return 0; > > + > > + cpu_relax(); > > + } > > Why not readl_poll_timeout()? I had considered that. But then I noticed readl_poll_timeout() does not call cpu_relax() if sleep_us == 0. Perhaps such a call should be added (at the risk of introducing a subtle regression elsewhere)? Gr{oetje,eeting}s, Geert -- Geert Uytterhoeven -- There's lots of Linux beyond ia32 -- geert@xxxxxxxxxxxxxx In personal conversations with technical people, I call myself a hacker. But when I'm talking to journalists I just say "programmer" or something like that. -- Linus Torvalds