xref: /linux/arch/arm/mach-tegra/reset.h (revision ead5d1f4d877e92c051e1a1ade623d0d30e71619)
19c92ab61SThomas Gleixner /* SPDX-License-Identifier: GPL-2.0-only */
2b36ab975SPeter De Schrijver /*
3b36ab975SPeter De Schrijver  * arch/arm/mach-tegra/reset.h
4b36ab975SPeter De Schrijver  *
5b36ab975SPeter De Schrijver  * CPU reset dispatcher.
6b36ab975SPeter De Schrijver  *
7b36ab975SPeter De Schrijver  * Copyright (c) 2011, NVIDIA Corporation.
8b36ab975SPeter De Schrijver  */
9b36ab975SPeter De Schrijver 
10b36ab975SPeter De Schrijver #ifndef __MACH_TEGRA_RESET_H
11b36ab975SPeter De Schrijver #define __MACH_TEGRA_RESET_H
12b36ab975SPeter De Schrijver 
13b36ab975SPeter De Schrijver #define TEGRA_RESET_MASK_PRESENT	0
14b36ab975SPeter De Schrijver #define TEGRA_RESET_MASK_LP1		1
15b36ab975SPeter De Schrijver #define TEGRA_RESET_MASK_LP2		2
16b36ab975SPeter De Schrijver #define TEGRA_RESET_STARTUP_SECONDARY	3
17b36ab975SPeter De Schrijver #define TEGRA_RESET_STARTUP_LP2		4
18b36ab975SPeter De Schrijver #define TEGRA_RESET_STARTUP_LP1		5
19*d90bdb72SDmitry Osipenko #define TEGRA_RESET_TF_PRESENT		6
20*d90bdb72SDmitry Osipenko #define TEGRA_RESET_DATA_SIZE		7
212af6597aSDmitry Osipenko 
222af6597aSDmitry Osipenko #define RESET_DATA(x)	((TEGRA_RESET_##x)*4)
23b36ab975SPeter De Schrijver 
24b36ab975SPeter De Schrijver #ifndef __ASSEMBLY__
25b36ab975SPeter De Schrijver 
26d457ef35SJoseph Lo #include "irammap.h"
27d457ef35SJoseph Lo 
28b36ab975SPeter De Schrijver extern unsigned long __tegra_cpu_reset_handler_data[TEGRA_RESET_DATA_SIZE];
29b36ab975SPeter De Schrijver 
30b36ab975SPeter De Schrijver void __tegra_cpu_reset_handler_start(void);
31b36ab975SPeter De Schrijver void __tegra_cpu_reset_handler(void);
324d48edb3SDmitry Osipenko void __tegra20_cpu1_resettable_status_offset(void);
33b36ab975SPeter De Schrijver void __tegra_cpu_reset_handler_end(void);
34b36ab975SPeter De Schrijver 
35d457ef35SJoseph Lo #ifdef CONFIG_PM_SLEEP
3695872f42SJoseph Lo #define tegra_cpu_lp1_mask \
3795872f42SJoseph Lo 	(IO_ADDRESS(TEGRA_IRAM_BASE + TEGRA_IRAM_RESET_HANDLER_OFFSET + \
3895872f42SJoseph Lo 	((u32)&__tegra_cpu_reset_handler_data[TEGRA_RESET_MASK_LP1] - \
3995872f42SJoseph Lo 	 (u32)__tegra_cpu_reset_handler_start)))
40d457ef35SJoseph Lo #define tegra_cpu_lp2_mask \
41d457ef35SJoseph Lo 	(IO_ADDRESS(TEGRA_IRAM_BASE + TEGRA_IRAM_RESET_HANDLER_OFFSET + \
42d457ef35SJoseph Lo 	((u32)&__tegra_cpu_reset_handler_data[TEGRA_RESET_MASK_LP2] - \
43d457ef35SJoseph Lo 	 (u32)__tegra_cpu_reset_handler_start)))
44d457ef35SJoseph Lo #endif
45d457ef35SJoseph Lo 
46b36ab975SPeter De Schrijver #define tegra_cpu_reset_handler_offset \
47b36ab975SPeter De Schrijver 		((u32)__tegra_cpu_reset_handler - \
48b36ab975SPeter De Schrijver 		 (u32)__tegra_cpu_reset_handler_start)
49b36ab975SPeter De Schrijver 
50b36ab975SPeter De Schrijver #define tegra_cpu_reset_handler_size \
51b36ab975SPeter De Schrijver 		(__tegra_cpu_reset_handler_end - \
52b36ab975SPeter De Schrijver 		 __tegra_cpu_reset_handler_start)
53b36ab975SPeter De Schrijver 
54b36ab975SPeter De Schrijver void __init tegra_cpu_reset_handler_init(void);
55b36ab975SPeter De Schrijver 
56b36ab975SPeter De Schrijver #endif
57b36ab975SPeter De Schrijver #endif
58