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