First version
[3rdparty/ote_partner/tlk.git] / platform / tegra / include / platform / tzrammap.h
1 /*
2  * Copyright (c) 2012-2013, NVIDIA CORPORATION. All rights reserved
3  *
4  * Permission is hereby granted, free of charge, to any person obtaining
5  * a copy of this software and associated documentation files
6  * (the "Software"), to deal in the Software without restriction,
7  * including without limitation the rights to use, copy, modify, merge,
8  * publish, distribute, sublicense, and/or sell copies of the Software,
9  * and to permit persons to whom the Software is furnished to do so,
10  * subject to the following conditions:
11  *
12  * The above copyright notice and this permission notice shall be
13  * included in all copies or substantial portions of the Software.
14  *
15  * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
16  * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
17  * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.
18  * IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY
19  * CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,
20  * TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE
21  * SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
22  */
23 #ifndef __PLATFORM_TEGRA_TZRAMMAP_H
24 #define __PLATFORM_TEGRA_TZRAMMAP_H
25
26 #define CPU_NOT_IN_LP           0
27 #define CPU_IN_LP0              1
28 #define CPU_IN_LP1              2
29 #define CPU_IN_LP2              3
30
31 /*
32  * These offsets describe the layout of TZRAM as setup for LP1 resume.
33  *
34  * When resuming from LP1 the code at TZRAM_LP1_RESUME_HANDLER is
35  * executed.  While executing this code, DRAM will be in self-refresh
36  * and so all required state must be first copied into TZRAM
37  * prior to entering LP1 so that it is present for later resume from LP1.
38  */
39
40 /* stores DRAM address of non-secure resume routine */
41 #define TZRAM_NS_RESUME_ADDR            (TEGRA_TZRAM_BASE + 0x1000)
42
43 /* stores DRAM address of boot_secondary_cpu routine restored by LP1 resume */
44 #define TZRAM_BOOT_SECONDARY_CPU_ADDR   (TEGRA_TZRAM_BASE + 0x1004)
45
46 /* indicates if we should avoid switch to CLKM during LP1 resume */
47 #define TZRAM_CPU_AVOID_CLKM_SWITCH     (TEGRA_TZRAM_BASE + 0x1008)
48
49 /* stores DRAM address of top of monitor stack */
50 #define TZRAM_MON_STACK_TOP             (TEGRA_TZRAM_BASE + 0x1010)
51
52 /* stores DRAM address of monitor vector base (MVBAR) */
53 #define TZRAM_MVBAR             (TEGRA_TZRAM_BASE + 0x1020)
54
55 /* stores contents of cpu_context for use in in LP1 resume */
56 #define TZRAM_CPU_CONTEXT               (TEGRA_TZRAM_BASE + 0x1030)
57
58 /* TZRAM offset of temporary SVC stack used in LP1 resume */
59 #define TZRAM_TEMP_SVC_SP               (TEGRA_TZRAM_BASE + 0x1080)
60
61 /* TZRAM offset of LP1 resume handler (needs LP1_RESUME_HANDLER_SIZE bytes) */
62 #define TZRAM_LP1_RESUME_HANDLER        (TEGRA_TZRAM_BASE + 0x2000)
63
64 #define TZRAM_STORE(offset,value)       (*(volatile uint32_t *)(offset) = value)
65
66 #endif /*__PLATFORM_TEGRA_TZRAMMAP_H */