On Sun, 16 Jan 2011, Russell King - ARM Linux wrote: > It's probably best if I just quote the boot log, and people see about > fixing the masses of WARN_ON()s. Notice that it completely obliterates > the early part of the boot log due to the number of WARN_ON()s > triggered. These come from the clockdomain code, which is missing quite a bit of OMAP4 implementation. Some patches to add that code in have been posted for the 2.6.39 timeframe[1][2], so it should be reasonable to use something like the following patch for 2.6.38, which converts those backtraces to pr_err()s. > Other stuff that shows in this boot log: ... > - Bunch of regulators are returning errors (is this a problem?) > - I2C timeouts which add quite a bit to the boot-time These two are probably related. Looks like something is wrong with communication with the TWL/TPS PMIC on that board. Those problems don't show up on the OMAP4430ES2 Panda here, so they are probably 4430SDP-specific. - Paul 1. Nayak, Rajendra. _[PATCH 0/5] Clockdomain split series_. Posted to the linux-omap@xxxxxxxxxxxxxxx mailing list on 5 January 2011. http://www.mail-archive.com/linux-omap@xxxxxxxxxxxxxxx/msg41748.html 2. Nayak, Rajendra. _[RFC 0/3] OMAP4 static dependency support_. Posted to the linux-omap@xxxxxxxxxxxxxxx mailing list on 12 January 2011. http://www.mail-archive.com/linux-omap@xxxxxxxxxxxxxxx/msg42222.html --- [PATCH] OMAP4: clockdomain: bypass unimplemented wake-up dependency functions on OMAP4 Clockdomain functions that manipulate wake-up dependencies are not implemented yet on OMAP4 for 2.6.38. This patch bypasses the OMAP2/3 functions on OMAP4, which in turn avoids the warnings when the functions would attempt to call the underlying OMAP2/3 PRCM functions. A clockdomain wake-up and sleep dependency implementation for OMAP4 from Rajendra should be possible to merge during the 2.6.39 merge window: http://www.mail-archive.com/linux-omap@xxxxxxxxxxxxxxx/msg41748.html http://www.mail-archive.com/linux-omap@xxxxxxxxxxxxxxx/msg42222.html Reported-by: Russell King <rmk+kernel@xxxxxxxxxxxxxxxx> Cc: Rajendra Nayak <rnayak@xxxxxx> Cc: Santosh Shilimkar <santosh.shilimkar@xxxxxx> Cc: Benoît Cousson <b-cousson@xxxxxx> Signed-off-by: Paul Walmsley <paul@xxxxxxxxx> --- arch/arm/mach-omap2/clockdomain.c | 30 ++++++++++++++++++++++++++---- 1 files changed, 26 insertions(+), 4 deletions(-) diff --git a/arch/arm/mach-omap2/clockdomain.c b/arch/arm/mach-omap2/clockdomain.c index e20b986..58e42f7 100644 --- a/arch/arm/mach-omap2/clockdomain.c +++ b/arch/arm/mach-omap2/clockdomain.c @@ -423,6 +423,12 @@ int clkdm_add_wkdep(struct clockdomain *clkdm1, struct clockdomain *clkdm2) { struct clkdm_dep *cd; + if (!cpu_is_omap24xx() && !cpu_is_omap34xx()) { + pr_err("clockdomain: %s/%s: %s: not yet implemented\n", + clkdm1->name, clkdm2->name, __func__); + return -EINVAL; + } + if (!clkdm1 || !clkdm2) return -EINVAL; @@ -458,6 +464,12 @@ int clkdm_del_wkdep(struct clockdomain *clkdm1, struct clockdomain *clkdm2) { struct clkdm_dep *cd; + if (!cpu_is_omap24xx() && !cpu_is_omap34xx()) { + pr_err("clockdomain: %s/%s: %s: not yet implemented\n", + clkdm1->name, clkdm2->name, __func__); + return -EINVAL; + } + if (!clkdm1 || !clkdm2) return -EINVAL; @@ -500,6 +512,12 @@ int clkdm_read_wkdep(struct clockdomain *clkdm1, struct clockdomain *clkdm2) if (!clkdm1 || !clkdm2) return -EINVAL; + if (!cpu_is_omap24xx() && !cpu_is_omap34xx()) { + pr_err("clockdomain: %s/%s: %s: not yet implemented\n", + clkdm1->name, clkdm2->name, __func__); + return -EINVAL; + } + cd = _clkdm_deps_lookup(clkdm2, clkdm1->wkdep_srcs); if (IS_ERR(cd)) { pr_debug("clockdomain: hardware cannot set/clear wake up of " @@ -527,6 +545,12 @@ int clkdm_clear_all_wkdeps(struct clockdomain *clkdm) struct clkdm_dep *cd; u32 mask = 0; + if (!cpu_is_omap24xx() && !cpu_is_omap34xx()) { + pr_err("clockdomain: %s: %s: not yet implemented\n", + clkdm->name, __func__); + return -EINVAL; + } + if (!clkdm) return -EINVAL; @@ -830,8 +854,7 @@ void omap2_clkdm_allow_idle(struct clockdomain *clkdm) * dependency code and data for OMAP4. */ if (cpu_is_omap44xx()) { - WARN_ONCE(1, "clockdomain: OMAP4 wakeup/sleep dependency " - "support is not yet implemented\n"); + pr_err("clockdomain: %s: OMAP4 wakeup/sleep dependency support: not yet implemented\n", clkdm->name); } else { if (atomic_read(&clkdm->usecount) > 0) _clkdm_add_autodeps(clkdm); @@ -872,8 +895,7 @@ void omap2_clkdm_deny_idle(struct clockdomain *clkdm) * dependency code and data for OMAP4. */ if (cpu_is_omap44xx()) { - WARN_ONCE(1, "clockdomain: OMAP4 wakeup/sleep dependency " - "support is not yet implemented\n"); + pr_err("clockdomain: %s: OMAP4 wakeup/sleep dependency support: not yet implemented\n", clkdm->name); } else { if (atomic_read(&clkdm->usecount) > 0) _clkdm_del_autodeps(clkdm); -- 1.7.2.3