Quoting Dmitry Osipenko (2019-07-22 00:12:17) > 22.07.2019 10:09, Dmitry Osipenko пишет: > > 22.07.2019 9:52, Sowjanya Komatineni пишет: > >> > >> On 7/21/19 11:10 PM, Dmitry Osipenko wrote: > >>> 22.07.2019 1:45, Sowjanya Komatineni пишет: > >>>> On 7/21/19 2:38 PM, Dmitry Osipenko wrote: > >>>>> 21.07.2019 22:40, Sowjanya Komatineni пишет: > >>>>>> @@ -2853,9 +2859,8 @@ static int tegra210_enable_pllu(void) > >>>>>> reg |= PLL_ENABLE; > >>>>>> writel(reg, clk_base + PLLU_BASE); > >>>>>> - readl_relaxed_poll_timeout_atomic(clk_base + PLLU_BASE, reg, > >>>>>> - reg & PLL_BASE_LOCK, 2, 1000); > >>>>>> - if (!(reg & PLL_BASE_LOCK)) { > >>>>>> + ret = tegra210_wait_for_mask(&pllu, PLLU_BASE, PLL_BASE_LOCK); > >>>>>> + if (ret) { > >>>>> Why this is needed? Was there a bug? > >>>>> > >>>> during resume pllu init is needed and to use same terga210_init_pllu, > >>>> poll_timeout_atomic can't be used as its ony for atomic context. > >>>> > >>>> So changed to use wait_for_mask which should work in both cases. > >>> Atomic variant could be used from any context, not sure what do you > >>> mean. The 'atomic' part only means that function won't cause scheduling > >>> and that's it. > >> > >> Sorry, replied incorrect. readx_poll_timeout_atomic uses ktime_get() and > >> during resume timekeeping suspend/resume happens later than clock > >> suspend/resume. So using tegra210_wait_for_mask. > >> > >> both timekeeping and clk-tegra210 drivers are registered as syscore but > >> not ordered. > > > > Okay, thank you for the clarification. > > > > [snip] > > > > You should remove the 'iopoll.h' then, since it's not used anymore. And also add a comment to this location in the code because it's non-obvious that we can't use iopoll here.