diff mbox

ARM: ux500: Only configure wake-up reasons on ux500 based platforms

Message ID 1368702935-25599-1-git-send-email-lee.jones@linaro.org (mailing list archive)
State New, archived
Headers show

Commit Message

Lee Jones May 16, 2013, 11:15 a.m. UTC
Multiplatform calls all enabled platforms' initcalls. In the
ux500_idle_init() initcall we call into the DBx500-PRCMU which in turn
executes some ux500 specific register reads/writes. When running on
some !ux500 platforms this ends up causing a kernel Oops. This patch
ensures the PRCMU call is only invoked when running on ux500 based
platforms.

Reported-by: Rob Herring <rob.herring@calxeda.com>
Signed-off-by: Lee Jones <lee.jones@linaro.org>
---
 arch/arm/mach-ux500/cpuidle.c |    4 ++++
 1 file changed, 4 insertions(+)

Comments

Linus Walleij May 24, 2013, 7:44 a.m. UTC | #1
On Thu, May 16, 2013 at 1:15 PM, Lee Jones <lee.jones@linaro.org> wrote:

> Multiplatform calls all enabled platforms' initcalls. In the
> ux500_idle_init() initcall we call into the DBx500-PRCMU which in turn
> executes some ux500 specific register reads/writes. When running on
> some !ux500 platforms this ends up causing a kernel Oops. This patch
> ensures the PRCMU call is only invoked when running on ux500 based
> platforms.
>
> Reported-by: Rob Herring <rob.herring@calxeda.com>
> Signed-off-by: Lee Jones <lee.jones@linaro.org>

Patch applied for ux500 fixes.

Hm, again and again I get so confused by this, don't you say
"wakeup CAUSE" rather than "wakeup REASON"?

Maybe I don't know the anglo saxon well enough...

Yours,
Linus Walleij
Lee Jones May 24, 2013, 8:24 a.m. UTC | #2
On Fri, 24 May 2013, Linus Walleij wrote:

> On Thu, May 16, 2013 at 1:15 PM, Lee Jones <lee.jones@linaro.org> wrote:
> 
> > Multiplatform calls all enabled platforms' initcalls. In the
> > ux500_idle_init() initcall we call into the DBx500-PRCMU which in turn
> > executes some ux500 specific register reads/writes. When running on
> > some !ux500 platforms this ends up causing a kernel Oops. This patch
> > ensures the PRCMU call is only invoked when running on ux500 based
> > platforms.
> >
> > Reported-by: Rob Herring <rob.herring@calxeda.com>
> > Signed-off-by: Lee Jones <lee.jones@linaro.org>
> 
> Patch applied for ux500 fixes.
> 
> Hm, again and again I get so confused by this, don't you say
> "wakeup CAUSE" rather than "wakeup REASON"?
> 
> Maybe I don't know the anglo saxon well enough...

The words 'cause' and 'reason' are fairly synonymous and are
interchangeable in a great many situations. You have to be an English
literary Nazi to care enough to work out the semantics, which in case
you hadn't noticed, I'm not. :)

But, credit where credit's due, in this particular instance you are
correct. Feel free to fixup.
diff mbox

Patch

diff --git a/arch/arm/mach-ux500/cpuidle.c b/arch/arm/mach-ux500/cpuidle.c
index 317a2be..a45dd09 100644
--- a/arch/arm/mach-ux500/cpuidle.c
+++ b/arch/arm/mach-ux500/cpuidle.c
@@ -21,6 +21,7 @@ 
 #include <asm/proc-fns.h>
 
 #include "db8500-regs.h"
+#include "id.h"
 
 static atomic_t master = ATOMIC_INIT(0);
 static DEFINE_SPINLOCK(master_lock);
@@ -114,6 +115,9 @@  static struct cpuidle_driver ux500_idle_driver = {
 
 int __init ux500_idle_init(void)
 {
+	if (!(cpu_is_u8500_family() || cpu_is_ux540_family()))
+		return -ENODEV;
+
 	/* Configure wake up reasons */
 	prcmu_enable_wakeups(PRCMU_WAKEUP(ARM) | PRCMU_WAKEUP(RTC) |
 			     PRCMU_WAKEUP(ABB));