Thread (57 messages) flat view 57 messages, 6 authors, 2012-09-17
STALE5096d

[PATCH 04/29] ARM: omap: clk: use clk_prepare_enable and clk_disable_unprepare

From: Rajendra Nayak <hidden>
Date: 2012-06-15 04:56:26
Also in: linux-omap

On Friday 15 June 2012 12:41 AM, Mike Turquette wrote:
On 20120614-18:16, Rajendra Nayak wrote:
quoted
As we move to Common clk framework use clk_prepare_enable()
instead of clk_enable() and similarly clk_disable_unprepare()
instead of clk_disable()

Based on initial changes from Mike turquette.

Signed-off-by: Rajendra Nayak<redacted>
Hi Rajendra,

This change looks good except for two questions I have below, related to
calling prepare in an interrupt context.  If those are non-issues then
please add my:

Acked-by: Mike Turquette<redacted>

(or my Reviewed-by... I can never remember which one is correct)

snip
quoted
diff --git a/arch/arm/mach-omap2/display.c b/arch/arm/mach-omap2/display.c
index 5fb47a1..e5f8e48 100644
--- a/arch/arm/mach-omap2/display.c
+++ b/arch/arm/mach-omap2/display.c
@@ -471,7 +471,7 @@ int omap_dss_reset(struct omap_hwmod *oh)

  	for (i = oh->opt_clks_cnt, oc = oh->opt_clks; i>  0; i--, oc++)
  		if (oc->_clk)
-			clk_enable(oc->_clk);
+			clk_prepare_enable(oc->_clk);

  	dispc_disable_outputs();
@@ -498,7 +498,7 @@ int omap_dss_reset(struct omap_hwmod *oh)

  	for (i = oh->opt_clks_cnt, oc = oh->opt_clks; i>  0; i--, oc++)
  		if (oc->_clk)
-			clk_disable(oc->_clk);
+			clk_disable_unprepare(oc->_clk);

  	r = (c == MAX_MODULE_SOFTRESET_WAIT) ? -ETIMEDOUT : 0;
omap_dss_reset gets used by hwmod/omap_device, right?  Does the reset
path ever get called in an interrupt context?  If so clk_prepare might
sleep, which is bad.
right, I completely missed this. Will take a look at these and others
too. thanks.

regards,
Rajendra
snip
quoted
diff --git a/arch/arm/mach-omap2/omap_hwmod.c b/arch/arm/mach-omap2/omap_hwmod.c
index bf86f7e..b46ae17 100644
--- a/arch/arm/mach-omap2/omap_hwmod.c
+++ b/arch/arm/mach-omap2/omap_hwmod.c
@@ -693,7 +693,7 @@ static int _enable_clocks(struct omap_hwmod *oh)
  	pr_debug("omap_hwmod: %s: enabling clocks\n", oh->name);

  	if (oh->_clk)
-		clk_enable(oh->_clk);
+		clk_prepare_enable(oh->_clk);
The same question above applies to basically all of the hwmod function
changes below.  I don't know if runtime pm invokes these in an interrupt
context or not, but it is something to think about.

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