summaryrefslogtreecommitdiff
path: root/arch/arm/mach-ns9xxx/include/mach/system.h
diff options
context:
space:
mode:
Diffstat (limited to 'arch/arm/mach-ns9xxx/include/mach/system.h')
-rw-r--r--arch/arm/mach-ns9xxx/include/mach/system.h23
1 files changed, 20 insertions, 3 deletions
diff --git a/arch/arm/mach-ns9xxx/include/mach/system.h b/arch/arm/mach-ns9xxx/include/mach/system.h
index e2068c57415f..e4ae479dc5b2 100644
--- a/arch/arm/mach-ns9xxx/include/mach/system.h
+++ b/arch/arm/mach-ns9xxx/include/mach/system.h
@@ -1,7 +1,7 @@
/*
* arch/arm/mach-ns9xxx/include/mach/system.h
*
- * Copyright (C) 2006,2007 by Digi International Inc.
+ * Copyright (C) 2006-2008 by Digi International Inc.
* All rights reserved.
*
* This program is free software; you can redistribute it and/or modify it
@@ -13,15 +13,32 @@
#include <asm/proc-fns.h>
#include <mach/processor.h>
-#include <mach/processor-ns9360.h>
static inline void arch_idle(void)
{
- cpu_do_idle();
+ /*
+ * When a Camry (i.e. ns921x) executes
+ *
+ * mcr p15, 0, r0, c7, c0, 4 @ Wait for interrupt
+ *
+ * the CPU is stopped, so are all timers. This is not something I want
+ * to handle. As the "wait for interrupt" instruction is part of
+ * cpu_arm926_do_idle, it's not called for it.
+ */
+ if (!processor_is_ns921x())
+ cpu_do_idle();
}
+void ns921x_reset(char);
+void ns9360_reset(char);
+
static inline void arch_reset(char mode)
{
+#ifdef CONFIG_PROCESSOR_NS921X
+ if (processor_is_ns921x())
+ ns921x_reset(mode);
+ else
+#endif
#ifdef CONFIG_PROCESSOR_NS9360
if (processor_is_ns9360())
ns9360_reset(mode);