summaryrefslogtreecommitdiff
path: root/arch/arm/mach-at91/at91x40.c
diff options
context:
space:
mode:
authorArnd Bergmann <arnd@arndb.de>2012-03-21 18:27:34 +0400
committerArnd Bergmann <arnd@arndb.de>2012-03-21 18:27:34 +0400
commit2cbe23e3a432e3d09a849adb197c8fcc09e7391d (patch)
tree711fe5845c4c7e7eaf8c57a597d86c0f9dda5b06 /arch/arm/mach-at91/at91x40.c
parentb2f1df8d2fc14bf7e6d9d967043d4b60c2efd8dc (diff)
parented1b4acc43b0c3289faa30cf184f322ab70a5be3 (diff)
downloadlinux-2cbe23e3a432e3d09a849adb197c8fcc09e7391d.tar.xz
Merge branch 'tegra/cleanups' into next/timer
Conflicts: arch/arm/mach-tegra/Makefile arch/arm/mach-vexpress/core.h The tegra Makefile was changed in four different branches in the same line. This merge should reduce the amount of churn. Signed-off-by: Arnd Bergmann <arnd@arndb.de>
Diffstat (limited to 'arch/arm/mach-at91/at91x40.c')
-rw-r--r--arch/arm/mach-at91/at91x40.c12
1 files changed, 12 insertions, 0 deletions
diff --git a/arch/arm/mach-at91/at91x40.c b/arch/arm/mach-at91/at91x40.c
index 56ba3bd035ae..0154b7f44ff1 100644
--- a/arch/arm/mach-at91/at91x40.c
+++ b/arch/arm/mach-at91/at91x40.c
@@ -13,6 +13,7 @@
#include <linux/kernel.h>
#include <linux/init.h>
#include <linux/irq.h>
+#include <asm/proc-fns.h>
#include <asm/mach/arch.h>
#include <mach/at91x40.h>
#include <mach/at91_st.h>
@@ -37,8 +38,19 @@ unsigned long clk_get_rate(struct clk *clk)
return AT91X40_MASTER_CLOCK;
}
+static void at91x40_idle(void)
+{
+ /*
+ * Disable the processor clock. The processor will be automatically
+ * re-enabled by an interrupt or by a reset.
+ */
+ at91_sys_write(AT91_PS_CR, AT91_PS_CR_CPU);
+ cpu_do_idle();
+}
+
void __init at91x40_initialize(unsigned long main_clock)
{
+ arm_pm_idle = at91x40_idle;
at91_extern_irq = (1 << AT91X40_ID_IRQ0) | (1 << AT91X40_ID_IRQ1)
| (1 << AT91X40_ID_IRQ2);
}