8f17ba66aa8556ddafd400567f568b8a07ba40fe
[linux-3.10.git] / arch / arm / mach-tegra / cpuidle.h
1 /*
2  * arch/arm/mach-tegra/cpuidle.h
3  *
4  * Declarations for power state transition code
5  *
6  * Copyright (c) 2011, NVIDIA Corporation.
7  *
8  * This software is licensed under the terms of the GNU General Public
9  * License version 2, as published by the Free Software Foundation, and
10  * may be copied, distributed, and modified under those terms.
11  *
12  * This program is distributed in the hope that it will be useful,
13  * but WITHOUT ANY WARRANTY; without even the implied warranty of
14  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
15  * GNU General Public License for more details.
16  *
17  */
18
19 #ifndef __MACH_TEGRA_CPUIDLE_H
20 #define __MACH_TEGRA_CPUIDLE_H
21
22 #include <linux/cpuidle.h>
23
24 #ifdef CONFIG_PM_SLEEP
25
26 #ifdef CONFIG_ARCH_TEGRA_2x_SOC
27 void tegra2_idle_lp2(struct cpuidle_device *dev, struct cpuidle_state *state);
28 void tegra2_cpu_idle_stats_lp2_ready(unsigned int cpu);
29 void tegra2_cpu_idle_stats_lp2_time(unsigned int cpu, s64 us);
30 bool tegra2_lp2_is_allowed(struct cpuidle_device *dev,
31                         struct cpuidle_state *state);
32 #ifdef CONFIG_DEBUG_FS
33 int tegra2_lp2_debug_show(struct seq_file *s, void *data);
34 #endif
35 #endif
36
37 static inline void tegra_cpu_idle_stats_lp2_ready(unsigned int cpu)
38 {
39 #ifdef CONFIG_ARCH_TEGRA_2x_SOC
40         tegra2_cpu_idle_stats_lp2_ready(cpu);
41 #endif
42 }
43
44 static inline void tegra_cpu_idle_stats_lp2_time(unsigned int cpu, s64 us)
45 {
46 #ifdef CONFIG_ARCH_TEGRA_2x_SOC
47         tegra2_cpu_idle_stats_lp2_time(cpu, us);
48 #endif
49 }
50
51 static inline void tegra_idle_lp2(struct cpuidle_device *dev,
52                         struct cpuidle_state *state)
53 {
54 #ifdef CONFIG_ARCH_TEGRA_2x_SOC
55         tegra2_idle_lp2(dev, state);
56 #endif
57 }
58
59 static inline bool tegra_lp2_is_allowed(struct cpuidle_device *dev,
60                         struct cpuidle_state *state)
61 {
62 #ifdef CONFIG_ARCH_TEGRA_2x_SOC
63         return tegra2_lp2_is_allowed(dev, state);
64 #endif
65 }
66
67 #ifdef CONFIG_DEBUG_FS
68 static inline int tegra_lp2_debug_show(struct seq_file *s, void *data)
69 {
70 #ifdef CONFIG_ARCH_TEGRA_2x_SOC
71         return tegra2_lp2_debug_show(s, data);
72 #endif
73 }
74 #endif
75
76 #ifdef CONFIG_CPU_IDLE
77 void tegra_lp2_in_idle(bool enable);
78 #else
79 static inline void tegra_lp2_in_idle(bool enable) {}
80 #endif
81 #endif /* CONFIG_PM_SLEEP */
82
83 #endif