arm: tegra: Move driver files to drivers/platform
[linux-3.10.git] / include / linux / platform / tegra / reset.h
1 /*
2  * include/linux/platform/reset.h
3  *
4  * CPU reset dispatcher.
5  *
6  * Copyright (c) 2011-2014, NVIDIA CORPORATION.  All rights reserved.
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 #ifndef __MACH_TEGRA_RESET_H
19 #define __MACH_TEGRA_RESET_H
20
21 #define TEGRA_RESET_MASK_PRESENT        0
22 #define TEGRA_RESET_MASK_LP1            1
23 #define TEGRA_RESET_MASK_LP2            2
24 #define TEGRA_RESET_STARTUP_SECONDARY   3
25 #define TEGRA_RESET_STARTUP_LP2         4
26 #define TEGRA_RESET_STARTUP_LP1         5
27 #define TEGRA_RESET_C0_L2_TAG_LATENCY   6
28 #define TEGRA_RESET_C0_L2_DATA_LATENCY  7
29 #define TEGRA_RESET_C1_L2_TAG_LATENCY   8
30 #define TEGRA_RESET_C1_L2_DATA_LATENCY  9
31 #define TEGRA_RESET_MASK_MC_CLK         10
32 #define TEGRA_RESET_SECURE_FW_PRESENT   11
33 #define TEGRA_RESET_DATA_SIZE           12
34
35 #ifdef CONFIG_ARM64
36 #define RESET_DATA(x)   ((TEGRA_RESET_##x)*8)
37 #else
38 #define RESET_DATA(x)   ((TEGRA_RESET_##x)*4)
39 #endif
40
41 #ifndef __ASSEMBLY__
42
43 #include <linux/cpumask.h>
44
45 extern unsigned long __tegra_cpu_reset_handler_data[TEGRA_RESET_DATA_SIZE];
46
47 void __tegra_cpu_reset_handler_start(void);
48 void __tegra_cpu_reset_handler(void);
49 void __tegra_cpu_reset_handler_end(void);
50 void tegra_secondary_startup(void);
51
52 #ifdef CONFIG_PM_SLEEP
53 #define tegra_cpu_lp1_mask ((unsigned long *)(IO_ADDRESS(TEGRA_RESET_HANDLER_BASE + \
54                 ((ulong)&__tegra_cpu_reset_handler_data[TEGRA_RESET_MASK_LP1] - \
55                  (ulong)__tegra_cpu_reset_handler_start))))
56
57 #define tegra_mc_clk_mask ((unsigned long *)(IO_ADDRESS(TEGRA_RESET_HANDLER_BASE + \
58                 ((ulong)&__tegra_cpu_reset_handler_data[TEGRA_RESET_MASK_MC_CLK] - \
59                  (ulong)__tegra_cpu_reset_handler_start))))
60
61 #define tegra_cpu_reset_handler_ptr ((u32 *)(IO_ADDRESS(TEGRA_RESET_HANDLER_BASE + \
62                 ((ulong)__tegra_cpu_reset_handler_data - \
63                  (ulong)__tegra_cpu_reset_handler_start))))
64
65 #define tegra_cpu_lp2_mask ((cpumask_t *)(IO_ADDRESS(TEGRA_RESET_HANDLER_BASE + \
66                 ((ulong)&__tegra_cpu_reset_handler_data[TEGRA_RESET_MASK_LP2] - \
67                  (ulong)__tegra_cpu_reset_handler_start))))
68 #endif
69
70 #define tegra_cpu_c0_l2_tag_latency \
71         __tegra_cpu_reset_handler_data[TEGRA_RESET_C0_L2_TAG_LATENCY]
72
73 #define tegra_cpu_c0_l2_tag_latency_iram \
74         ((ulong *)(IO_ADDRESS(TEGRA_RESET_HANDLER_BASE +                        \
75         ((ulong)&__tegra_cpu_reset_handler_data[TEGRA_RESET_C0_L2_TAG_LATENCY] \
76          - (ulong)__tegra_cpu_reset_handler_start))))
77
78 #define tegra_cpu_c0_l2_data_latency \
79         __tegra_cpu_reset_handler_data[TEGRA_RESET_C0_L2_DATA_LATENCY]
80
81 #define tegra_cpu_c0_l2_data_latency_iram \
82         ((ulong *)(IO_ADDRESS(TEGRA_RESET_HANDLER_BASE +                        \
83         ((ulong)&__tegra_cpu_reset_handler_data[TEGRA_RESET_C0_L2_DATA_LATENCY] \
84          - (ulong)__tegra_cpu_reset_handler_start))))
85
86 #define tegra_cpu_c1_l2_tag_latency \
87         __tegra_cpu_reset_handler_data[TEGRA_RESET_C1_L2_TAG_LATENCY]
88
89 #define tegra_cpu_c1_l2_tag_latency_iram \
90         ((ulong *)(IO_ADDRESS(TEGRA_RESET_HANDLER_BASE +                        \
91         ((ulong)&__tegra_cpu_reset_handler_data[TEGRA_RESET_C1_L2_TAG_LATENCY] \
92          - (ulong)__tegra_cpu_reset_handler_start))))
93
94 #define tegra_cpu_c1_l2_data_latency \
95         __tegra_cpu_reset_handler_data[TEGRA_RESET_C1_L2_DATA_LATENCY]
96
97 #define tegra_cpu_c1_l2_data_latency_iram \
98         ((ulong *)(IO_ADDRESS(TEGRA_RESET_HANDLER_BASE +                        \
99         ((ulong)&__tegra_cpu_reset_handler_data[TEGRA_RESET_C1_L2_DATA_LATENCY] \
100          - (ulong)__tegra_cpu_reset_handler_start))))
101
102 #define tegra_cpu_reset_handler_offset \
103                 ((ulong)__tegra_cpu_reset_handler - \
104                  (ulong)__tegra_cpu_reset_handler_start)
105
106 #define tegra_cpu_reset_handler_size \
107                 (__tegra_cpu_reset_handler_end - \
108                  __tegra_cpu_reset_handler_start)
109
110 #ifdef CONFIG_PM_SLEEP
111 void tegra_cpu_reset_handler_save(void);
112 void tegra_cpu_reset_handler_restore(void);
113 #endif
114 #endif
115 #endif