Linux Kernel  3.7.1
 All Data Structures Namespaces Files Functions Variables Typedefs Enumerations Enumerator Macros Groups Pages
tegra_cpu_car.h
Go to the documentation of this file.
1 /*
2  * Copyright (c) 2012, NVIDIA CORPORATION. All rights reserved.
3  *
4  * This program is free software; you can redistribute it and/or modify it
5  * under the terms and conditions of the GNU General Public License,
6  * version 2, as published by the Free Software Foundation.
7  *
8  * This program is distributed in the hope it will be useful, but WITHOUT
9  * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
10  * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for
11  * more details.
12  *
13  * You should have received a copy of the GNU General Public License
14  * along with this program. If not, see <http://www.gnu.org/licenses/>.
15  */
16 
17 #ifndef __MACH_TEGRA_CPU_CAR_H
18 #define __MACH_TEGRA_CPU_CAR_H
19 
20 /*
21  * Tegra CPU clock and reset control ops
22  *
23  * wait_for_reset:
24  * keep waiting until the CPU in reset state
25  * put_in_reset:
26  * put the CPU in reset state
27  * out_of_reset:
28  * release the CPU from reset state
29  * enable_clock:
30  * CPU clock un-gate
31  * disable_clock:
32  * CPU clock gate
33  */
40 };
41 
43 
44 static inline void tegra_wait_cpu_in_reset(u32 cpu)
45 {
46  if (WARN_ON(!tegra_cpu_car_ops->wait_for_reset))
47  return;
48 
49  tegra_cpu_car_ops->wait_for_reset(cpu);
50 }
51 
52 static inline void tegra_put_cpu_in_reset(u32 cpu)
53 {
54  if (WARN_ON(!tegra_cpu_car_ops->put_in_reset))
55  return;
56 
57  tegra_cpu_car_ops->put_in_reset(cpu);
58 }
59 
60 static inline void tegra_cpu_out_of_reset(u32 cpu)
61 {
62  if (WARN_ON(!tegra_cpu_car_ops->out_of_reset))
63  return;
64 
65  tegra_cpu_car_ops->out_of_reset(cpu);
66 }
67 
68 static inline void tegra_enable_cpu_clock(u32 cpu)
69 {
70  if (WARN_ON(!tegra_cpu_car_ops->enable_clock))
71  return;
72 
73  tegra_cpu_car_ops->enable_clock(cpu);
74 }
75 
76 static inline void tegra_disable_cpu_clock(u32 cpu)
77 {
78  if (WARN_ON(!tegra_cpu_car_ops->disable_clock))
79  return;
80 
81  tegra_cpu_car_ops->disable_clock(cpu);
82 }
83 
84 void tegra20_cpu_car_ops_init(void);
85 void tegra30_cpu_car_ops_init(void);
86 
87 #endif /* __MACH_TEGRA_CPU_CAR_H */