summaryrefslogtreecommitdiff
path: root/arch/arm/mach-tegra/timer.c
diff options
context:
space:
mode:
authorScott Williams <scwilliams@nvidia.com>2011-07-20 18:13:59 -0700
committerDan Willemsen <dwillemsen@nvidia.com>2011-11-30 21:46:57 -0800
commitedd6779f31582fb6acdb59f58dfb4471fa4078d6 (patch)
tree51da38228f6253fffa6fda2907b4a3d0d850c19e /arch/arm/mach-tegra/timer.c
parent6031a0cd1a2391a30e30a5edbcaccf5a1868969c (diff)
ARM: tegra: power: Add TWD context save/restore
Change-Id: I629f77041ce444dfff32b563795573174afea3a1 Signed-off-by: Scott Williams <scwilliams@nvidia.com> Signed-off-by: Dan Willemsen <dwillemsen@nvidia.com> Rebase-Id: R7a21e91127b44461d219a8bfd388f99ba7a72b53
Diffstat (limited to 'arch/arm/mach-tegra/timer.c')
-rw-r--r--arch/arm/mach-tegra/timer.c16
1 files changed, 16 insertions, 0 deletions
diff --git a/arch/arm/mach-tegra/timer.c b/arch/arm/mach-tegra/timer.c
index 2e42da31479d..c17d8e8ecca4 100644
--- a/arch/arm/mach-tegra/timer.c
+++ b/arch/arm/mach-tegra/timer.c
@@ -33,6 +33,7 @@
#include <asm/mach/time.h>
#include <asm/localtimer.h>
+#include <asm/smp_twd.h>
#include <asm/sched_clock.h>
#include <mach/iomap.h>
@@ -201,6 +202,21 @@ static struct syscore_ops tegra_timer_syscore_ops = {
.resume = tegra_timer_resume,
};
+#ifdef CONFIG_HAVE_ARM_TWD
+void tegra_twd_suspend(struct tegra_twd_context *context)
+{
+ context->twd_ctrl = readl(twd_base + TWD_TIMER_CONTROL);
+ context->twd_load = readl(twd_base + TWD_TIMER_LOAD);
+ __raw_writel(0, twd_base + TWD_TIMER_CONTROL);
+}
+
+void tegra_twd_resume(struct tegra_twd_context *context)
+{
+ writel(context->twd_load, twd_base + TWD_TIMER_LOAD);
+ writel(context->twd_ctrl, twd_base + TWD_TIMER_CONTROL);
+}
+#endif
+
static void __init tegra_init_timer(void)
{
struct clk *clk;