Re: [PATCH V6 14/21] clk: tegra210: Add suspend and resume support

From: Sowjanya Komatineni
Date: Fri Aug 02 2019 - 16:40:04 EST



On 8/2/19 10:51 AM, Stephen Boyd wrote:
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.

Actually added comment during function usage instead of during include as iopoll.h is removed.

Will add additional comment in include section as well highlighting reason for removal of iopoll.h