Revert "Merge commit 'main-jb-2012.08.03-B4' into t114-0806"
[linux-2.6.git] / arch / arm / mach-tegra / timer.h
1 /*
2  * arch/arm/mach-tegra/timer.h
3  *
4  * Copyright (C) 2010-2012 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 #define RTC_SECONDS             0x08
21 #define RTC_SHADOW_SECONDS      0x0c
22 #define RTC_MILLISECONDS        0x10
23
24 #define TIMERUS_CNTR_1US        0x10
25 #define TIMERUS_USEC_CFG        0x14
26 #define TIMERUS_CNTR_FREEZE     0x4c
27
28 #define TIMER1_BASE             0x0
29 #define TIMER2_BASE             0x8
30 #define TIMER3_BASE             0x50
31 #define TIMER4_BASE             0x58
32
33 #define TIMER_PTV               0x0
34 #define TIMER_PCR               0x4
35
36 void __init tegra_init_timer(void);
37
38 #ifdef CONFIG_ARCH_TEGRA_2x_SOC
39 void __init tegra20_init_timer(void);
40 #else
41 void __init tegra30_init_timer(void);
42 #endif
43
44 struct tegra_twd_context {
45         u32 twd_ctrl;
46         u32 twd_load;
47         u32 twd_cnt;
48 };
49
50 void __init tegra_cpu_timer_init(void);
51
52 #ifdef CONFIG_HAVE_ARM_TWD
53 int tegra_twd_get_state(struct tegra_twd_context *context);
54 void tegra_twd_suspend(struct tegra_twd_context *context);
55 void tegra_twd_resume(struct tegra_twd_context *context);
56 #else
57 static inline int tegra_twd_get_state(struct tegra_twd_context *context)
58 { return -ENODEV; }
59 static inline void tegra_twd_suspend(struct tegra_twd_context *context) {}
60 static inline void tegra_twd_resume(struct tegra_twd_context *context) {}
61 #endif
62
63 #ifdef CONFIG_ARM_ARCH_TIMER
64 struct arch_timer_context {
65         u32 cntp_tval;
66         u32 cntp_ctl;
67         u32 cntfrq;
68 };
69
70 int arch_timer_get_state(struct arch_timer_context *);
71 void arch_timer_suspend(struct arch_timer_context *);
72 void arch_timer_resume(struct arch_timer_context *);
73 #endif
74
75 #if defined(CONFIG_ARM_ARCH_TIMER) && defined(CONFIG_PM_SLEEP)
76 void tegra_tsc_suspend(void);
77 void tegra_tsc_resume(void);
78 void tegra_tsc_wait_for_suspend(void);
79 void tegra_tsc_wait_for_resume(void);
80 #else
81 static inline void tegra_tsc_suspend(void) {}
82 static inline void tegra_tsc_resume(void) {}
83 static inline void tegra_tsc_wait_for_suspend(void) {};
84 static inline void tegra_tsc_wait_for_resume(void) {};
85 #endif
86
87 #endif /* _MACH_TEGRA_TIMER_H_ */