Thread (10 messages) 10 messages, 5 authors, 2014-05-01

[PATCH/RFC 3/4] of/clk: Register clocks suitable for Runtime PM with the PM core

From: Grant Likely <hidden>
Date: 2014-05-01 13:56:32
Also in: linux-devicetree, linux-omap, linux-pm, linux-sh, lkml

On Thu, May 1, 2014 at 2:41 PM, Geert Uytterhoeven [off-list ref] wrote:
Hi Grant,

On Thu, May 1, 2014 at 10:03 AM, Grant Likely [off-list ref] wrote:
quoted
On Wed, 30 Apr 2014 23:54:37 +0200, Geert Uytterhoeven [off-list ref] wrote:
quoted
On Tue, Apr 29, 2014 at 3:16 PM, Grant Likely [off-list ref] wrote:
quoted
I also don't like that it tries to set up every clock, but there is no
guarantee that the driver will even use it. I would rather see this
behaviour linked into the function that obtains the clock at driver
.probe() time. That way it can handle deferred probe correctly and it
only sets up clocks that are actually used by the driver.
Not every clock. Only the clocks that are advertised by the clock driver as
being suitable for runtime_pm management. These are typically module
clocks, that must be enabled for the module to work. The driver doesn't
always want to handle these explicitly.
Help me out here becasue I don't understand how that works with this
patch set. From my, admittedly naive, reading it looks like the setup is
being done at device creation time, but if the driver (or module) gets
to declare which clocks need to be enabled in order to work, then that
information is not available at device creation time.
Setup is indeed done at registration time. Note the check calling
clk_may_runtime_pm(), which is introduced in "[PATCH/RFC 1/4] clk: Add
CLK_RUNTIME_PM and clk_may_runtime_pm()".

Clock drivers are initialized much earlier, so they can set the CLK_RUNTIME_PM
flag for suitable clocks before platform devices are created from DT, cfr. the
example for shmobile MSTP clocks in "[PATCH/RFC 4/4] clk: shmobile: mstp:
Set CLK_RUNTIME_PM flag".
This is where I have issue. You're *assuming* clock drivers are
initialized much earlier. That is not guaranteed. It is perfectly
valid for clocks to be set up by a normal device driver, just like for
interrupt controllers or gpio controllers.

g.
Keyboard shortcuts
hback out one level
jnext message in thread
kprevious message in thread
ldrill in
Escclose help / fold thread tree
?toggle this help