Hello Tero (and anyone else),
On Wed, 24 Sep 2008, [EMAIL PROTECTED] wrote:
> clk_disable_unused (in plat-omap/clock.c) is bugged in latest kernel. It
> checks whether ck->enable_reg is zero, and in most cases this happens to
> be so (CM_FCLKEN = 0.) Seems to be caused by some late change to
> clocktree where enable_reg fields are defined as module offsets, not
> register addresses. This bug causes several clocks to remain enabled
> after boot, and at least on OMAP3 it prevents retention.
>
> Paul, you got a fix coming for this?
Yes, here's something that should at least fix the clk_disable_unused()
problem. It seems to work on 2430SDP and 3430SDP here.
Any other help testing from anyone else is appreciated -
- Paul
Author: Paul Walmsley <[EMAIL PROTECTED]>
Date: Wed Sep 24 04:48:05 2008 -0600
OMAP2/3 clock: fix CONFIG_OMAP_RESET_CLOCKS
plat-omap/clock.c was skipping clocks with enable_reg == 0. This no longer
works now that we use enable_reg as an offset from a PRCM module.
Problem found and traced by Tero Kristo <[EMAIL PROTECTED]> -
thanks Tero.
Signed-off-by: Paul Walmsley <[EMAIL PROTECTED]>
diff --git a/arch/arm/plat-omap/clock.c b/arch/arm/plat-omap/clock.c
index 197974d..7bbfba2 100644
--- a/arch/arm/plat-omap/clock.c
+++ b/arch/arm/plat-omap/clock.c
@@ -384,8 +384,11 @@ static int __init clk_disable_unused(void)
unsigned long flags;
list_for_each_entry(ck, &clocks, node) {
- if (ck->usecount > 0 || (ck->flags & ALWAYS_ENABLED) ||
- ck->enable_reg == 0)
+ if (ck->usecount > 0 ||
+ (ck->flags & (ALWAYS_ENABLED | PARENT_CONTROLS_CLOCK)))
+ continue;
+
+ if (cpu_class_is_omap1() && ck->enable_reg == 0)
continue;
spin_lock_irqsave(&clockfw_lock, flags);
--
To unsubscribe from this list: send the line "unsubscribe linux-omap" in
the body of a message to [EMAIL PROTECTED]
More majordomo info at http://vger.kernel.org/majordomo-info.html