diff options
author | Scott Williams <scwilliams@nvidia.com> | 2011-07-20 18:13:59 -0700 |
---|---|---|
committer | Dan Willemsen <dwillemsen@nvidia.com> | 2011-11-30 21:46:57 -0800 |
commit | edd6779f31582fb6acdb59f58dfb4471fa4078d6 (patch) | |
tree | 51da38228f6253fffa6fda2907b4a3d0d850c19e /arch/arm/mach-tegra/timer.c | |
parent | 6031a0cd1a2391a30e30a5edbcaccf5a1868969c (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.c | 16 |
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; |