On 07.08.2020 22:20, Stephen Boyd wrote: > Quoting Sylwester Nawrocki (2020-08-07 10:06:08) >> On 8/6/20 18:11, Tomasz Figa wrote: >>>> --- a/drivers/clk/samsung/clk-pll.c >>>> +++ b/drivers/clk/samsung/clk-pll.c >>>> @@ -63,6 +63,27 @@ static long samsung_pll_round_rate(struct clk_hw *hw, >>>> return rate_table[i - 1].rate; >>>> } >>>> >>>> +static int samsung_pll_lock_wait(struct samsung_clk_pll *pll, >>>> + unsigned int reg_mask) >>>> +{ >>>> + ktime_t timeout; >>>> + >>>> + /* Wait until the PLL is in steady locked state */ >>>> + timeout = ktime_add_ms(ktime_get(), PLL_TIMEOUT_MS); >>>> + >>>> + while (!(readl_relaxed(pll->con_reg) & reg_mask)) { >>>> + if (ktime_after(ktime_get(), timeout)) { >>>> + pr_err("%s: Could not lock PLL %s\n", >>>> + __func__, clk_hw_get_name(&pll->hw)); >>>> + return -EFAULT; >>>> + } >>>> + >>>> + cpu_relax(); >>>> + } >> >>> Thanks for the patch! Good to have this consolidated. How about going >>> one step further and using the generic >>> readl_relaxed_poll_timeout_atomic() helper? >> >> Might be a good suggestion, I was considering those helpers but ended >> up not using them in the patch. The cpu_relax() call might also not be >> really needed now, when there is the ktime code within the loop. >> Having multiple occurrences of readl_relaxed_poll_timeout_atomic() could >> increase the code size due to inlining. How about keeping the >> samsung_pll_lock_wait() function and just changing its implementation? > > None of these concerns are mentioned in the commit text. And they seem > like problems that should be addressed if they're actually problems vs. > avoiding a common macro and not mentioning them. Sure, I will improve the commit text, I just didn't investigate in detail how the common macro could or could not be used before Tomasz's review.