Question about suspend/resume clock handling in dwc3-of-simple.c

From: Guenter Roeck
Date: Mon Sep 12 2016 - 14:56:36 EST


Hi folks,

In dwc3-of-simple.c:dwc3_of_simple_remove(), I see the following code.

for (i = 0; i < simple->num_clocks; i++) {
clk_unprepare(simple->clks[i]);
clk_put(simple->clks[i]);
}

What I don't understand is why clk_unprepare() is called instead
of clk_disable_unprepare(). Someone told me that it was due to
dwc3_of_simple_runtime_suspend(), which would call clk_disable().

That doesn't really make sense to me, since after all CONFIG_PM
can be disabled.

Should it be clk_disable_unprepare(), or maybe something like the
following

if (!pm_runtime_status_suspended(dev))
clk_disable_unprepare();
else
clk_unprepare();

or am I missing something ?

Thanks,
Guenter