ee87164f5369a388d1c6021ad0f28e916dba8cf0
[linux-3.10.git] / arch / arm / mach-tegra / timer.h
1 /*
2  * arch/arm/mach-tegra/timer.h
3  *
4  * Copyright (C) 2010-2011 NVIDIA Corporation
5  *
6  * This software is licensed under the terms of the GNU General Public
7  * License version 2, as published by the Free Software Foundation, and
8  * may be copied, distributed, and modified under those terms.
9  *
10  * This program is distributed in the hope that it will be useful,
11  * but WITHOUT ANY WARRANTY; without even the implied warranty of
12  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
13  * GNU General Public License for more details.
14  *
15  */
16
17 #ifndef _MACH_TEGRA_TIMER_H_
18 #define _MACH_TEGRA_TIMER_H_
19
20 #include <linux/io.h>
21
22 #define RTC_SECONDS             0x08
23 #define RTC_SHADOW_SECONDS      0x0c
24 #define RTC_MILLISECONDS        0x10
25
26 #define TIMER_PTV               0x0
27 #define TIMER_PCR               0x4
28
29 #define TIMERUS_CNTR_1US        0x10
30 #define TIMERUS_USEC_CFG        0x14
31 #define TIMERUS_CNTR_FREEZE     0x4c
32
33
34 #ifdef CONFIG_ARCH_TEGRA_2x_SOC
35 void __init tegra2_init_timer(u32 *offset, int *irq, unsigned long rate);
36 #else
37 void __init tegra3_init_timer(u32 *offset, int *irq, unsigned long rate);
38 #endif
39
40 struct tegra_twd_context {
41         u32 twd_ctrl;
42         u32 twd_load;
43         u32 twd_cnt;
44 };
45
46 #ifdef CONFIG_HAVE_ARM_TWD
47 static void __iomem *twd_base = IO_ADDRESS(TEGRA_ARM_PERIF_BASE + 0x600);
48 int tegra_twd_get_state(struct tegra_twd_context *context);
49 void tegra_twd_suspend(struct tegra_twd_context *context);
50 void tegra_twd_resume(struct tegra_twd_context *context);
51 #else
52 static inline int tegra_twd_get_state(struct tegra_twd_context *context)
53 { return -ENODEV; }
54 static inline void tegra_twd_suspend(struct tegra_twd_context *context) {}
55 static inline void tegra_twd_resume(struct tegra_twd_context *context) {}
56 #endif
57
58 #endif /* _MACH_TEGRA_TIMER_H_ */