xref: /rk3399_ARM-atf/include/plat/arm/board/common/v2m_def.h (revision e29efeb1b40a3ac364fc0bf1e15928b400a57e72)
1b4315306SDan Handley /*
2bf75a371SAntonio Nino Diaz  * Copyright (c) 2015-2017, ARM Limited and Contributors. All rights reserved.
3b4315306SDan Handley  *
482cb2c1aSdp-arm  * SPDX-License-Identifier: BSD-3-Clause
5b4315306SDan Handley  */
6b4315306SDan Handley #ifndef __V2M_DEF_H__
7b4315306SDan Handley #define __V2M_DEF_H__
8b4315306SDan Handley 
93b211ff5SAntonio Nino Diaz #include <arm_xlat_tables.h>
10b4315306SDan Handley 
11b4315306SDan Handley 
12b4315306SDan Handley /* V2M motherboard system registers & offsets */
13b4315306SDan Handley #define V2M_SYSREGS_BASE		0x1c010000
14b4315306SDan Handley #define V2M_SYS_ID			0x0
15b4315306SDan Handley #define V2M_SYS_SWITCH			0x4
16b4315306SDan Handley #define V2M_SYS_LED			0x8
177b4c1405SJuan Castillo #define V2M_SYS_NVFLAGS			0x38
187b4c1405SJuan Castillo #define V2M_SYS_NVFLAGSSET		0x38
197b4c1405SJuan Castillo #define V2M_SYS_NVFLAGSCLR		0x3c
20b4315306SDan Handley #define V2M_SYS_CFGDATA			0xa0
21b4315306SDan Handley #define V2M_SYS_CFGCTRL			0xa4
22b4315306SDan Handley #define V2M_SYS_CFGSTATUS		0xa8
23b4315306SDan Handley 
24b4315306SDan Handley #define V2M_CFGCTRL_START		(1 << 31)
25b4315306SDan Handley #define V2M_CFGCTRL_RW			(1 << 30)
26b4315306SDan Handley #define V2M_CFGCTRL_FUNC_SHIFT		20
27b4315306SDan Handley #define V2M_CFGCTRL_FUNC(fn)		(fn << V2M_CFGCTRL_FUNC_SHIFT)
28b4315306SDan Handley #define V2M_FUNC_CLK_GEN		0x01
29b4315306SDan Handley #define V2M_FUNC_TEMP			0x04
30b4315306SDan Handley #define V2M_FUNC_DB_RESET		0x05
31b4315306SDan Handley #define V2M_FUNC_SCC_CFG		0x06
32b4315306SDan Handley #define V2M_FUNC_SHUTDOWN		0x08
33b4315306SDan Handley #define V2M_FUNC_REBOOT			0x09
34b4315306SDan Handley 
35b4315306SDan Handley /*
36b4315306SDan Handley  * V2M sysled bit definitions. The values written to this
37b4315306SDan Handley  * register are defined in arch.h & runtime_svc.h. Only
38b4315306SDan Handley  * used by the primary cpu to diagnose any cold boot issues.
39b4315306SDan Handley  *
40b4315306SDan Handley  * SYS_LED[0]   - Security state (S=0/NS=1)
41b4315306SDan Handley  * SYS_LED[2:1] - Exception Level (EL3-EL0)
42b4315306SDan Handley  * SYS_LED[7:3] - Exception Class (Sync/Async & origin)
43b4315306SDan Handley  *
44b4315306SDan Handley  */
45b4315306SDan Handley #define V2M_SYS_LED_SS_SHIFT		0x0
46b4315306SDan Handley #define V2M_SYS_LED_EL_SHIFT		0x1
47b4315306SDan Handley #define V2M_SYS_LED_EC_SHIFT		0x3
48b4315306SDan Handley 
49b4315306SDan Handley #define V2M_SYS_LED_SS_MASK		0x1
50b4315306SDan Handley #define V2M_SYS_LED_EL_MASK		0x3
51b4315306SDan Handley #define V2M_SYS_LED_EC_MASK		0x1f
52b4315306SDan Handley 
53b4315306SDan Handley /* V2M sysid register bits */
54b4315306SDan Handley #define V2M_SYS_ID_REV_SHIFT		28
55b4315306SDan Handley #define V2M_SYS_ID_HBI_SHIFT		16
56b4315306SDan Handley #define V2M_SYS_ID_BLD_SHIFT		12
57b4315306SDan Handley #define V2M_SYS_ID_ARCH_SHIFT		8
58b4315306SDan Handley #define V2M_SYS_ID_FPGA_SHIFT		0
59b4315306SDan Handley 
60b4315306SDan Handley #define V2M_SYS_ID_REV_MASK		0xf
61b4315306SDan Handley #define V2M_SYS_ID_HBI_MASK		0xfff
62b4315306SDan Handley #define V2M_SYS_ID_BLD_MASK		0xf
63b4315306SDan Handley #define V2M_SYS_ID_ARCH_MASK		0xf
64b4315306SDan Handley #define V2M_SYS_ID_FPGA_MASK		0xff
65b4315306SDan Handley 
66b4315306SDan Handley #define V2M_SYS_ID_BLD_LENGTH		4
67b4315306SDan Handley 
68b4315306SDan Handley 
69b4315306SDan Handley /* NOR Flash */
70b4315306SDan Handley #define V2M_FLASH0_BASE			0x08000000
71b4315306SDan Handley #define V2M_FLASH0_SIZE			0x04000000
72f145403cSRoberto Vargas #define V2M_FLASH_BLOCK_SIZE		0x00040000	/* 256 KB */
73b4315306SDan Handley 
74b4315306SDan Handley #define V2M_IOFPGA_BASE			0x1c000000
75b4315306SDan Handley #define V2M_IOFPGA_SIZE			0x03000000
76b4315306SDan Handley 
77b4315306SDan Handley /* PL011 UART related constants */
78b4315306SDan Handley #define V2M_IOFPGA_UART0_BASE		0x1c090000
79b4315306SDan Handley #define V2M_IOFPGA_UART1_BASE		0x1c0a0000
80b4315306SDan Handley #define V2M_IOFPGA_UART2_BASE		0x1c0b0000
81b4315306SDan Handley #define V2M_IOFPGA_UART3_BASE		0x1c0c0000
82b4315306SDan Handley 
83b4315306SDan Handley #define V2M_IOFPGA_UART0_CLK_IN_HZ	24000000
84b4315306SDan Handley #define V2M_IOFPGA_UART1_CLK_IN_HZ	24000000
85b4315306SDan Handley #define V2M_IOFPGA_UART2_CLK_IN_HZ	24000000
86b4315306SDan Handley #define V2M_IOFPGA_UART3_CLK_IN_HZ	24000000
87b4315306SDan Handley 
88b49b3221SRyan Harkin /* SP804 timer related constants */
89b49b3221SRyan Harkin #define V2M_SP804_TIMER0_BASE		0x1C110000
90b49b3221SRyan Harkin #define V2M_SP804_TIMER1_BASE		0x1C120000
91b4315306SDan Handley 
92540a5ba8SJuan Castillo /* SP810 controller */
93540a5ba8SJuan Castillo #define V2M_SP810_BASE			0x1c020000
94540a5ba8SJuan Castillo #define V2M_SP810_CTRL_TIM0_SEL		(1 << 15)
95540a5ba8SJuan Castillo #define V2M_SP810_CTRL_TIM1_SEL		(1 << 17)
96540a5ba8SJuan Castillo #define V2M_SP810_CTRL_TIM2_SEL		(1 << 19)
97540a5ba8SJuan Castillo #define V2M_SP810_CTRL_TIM3_SEL		(1 << 21)
98540a5ba8SJuan Castillo 
9991fad655SSandrine Bailleux /*
10091fad655SSandrine Bailleux  * The flash can be mapped either as read-only or read-write.
10191fad655SSandrine Bailleux  *
10291fad655SSandrine Bailleux  * If it is read-write then it should also be mapped as device memory because
10391fad655SSandrine Bailleux  * NOR flash programming involves sending a fixed, ordered sequence of commands.
10491fad655SSandrine Bailleux  *
10591fad655SSandrine Bailleux  * If it is read-only then it should also be mapped as:
10691fad655SSandrine Bailleux  * - Normal memory, because reading from NOR flash is transparent, it is like
10791fad655SSandrine Bailleux  *   reading from RAM.
10891fad655SSandrine Bailleux  * - Non-executable by default. If some parts of the flash need to be executable
10991fad655SSandrine Bailleux  *   then platform code is responsible for re-mapping the appropriate portion
11091fad655SSandrine Bailleux  *   of it as executable.
11191fad655SSandrine Bailleux  */
1127b4c1405SJuan Castillo #define V2M_MAP_FLASH0_RW		MAP_REGION_FLAT(V2M_FLASH0_BASE,\
1137b4c1405SJuan Castillo 						V2M_FLASH0_SIZE,	\
1147b4c1405SJuan Castillo 						MT_DEVICE | MT_RW | MT_SECURE)
1157b4c1405SJuan Castillo 
1167b4c1405SJuan Castillo #define V2M_MAP_FLASH0_RO		MAP_REGION_FLAT(V2M_FLASH0_BASE,\
117b4315306SDan Handley 						V2M_FLASH0_SIZE,	\
11891fad655SSandrine Bailleux 						MT_RO_DATA | MT_SECURE)
119b4315306SDan Handley 
120b4315306SDan Handley #define V2M_MAP_IOFPGA			MAP_REGION_FLAT(V2M_IOFPGA_BASE,\
121b4315306SDan Handley 						V2M_IOFPGA_SIZE,		\
122b4315306SDan Handley 						MT_DEVICE | MT_RW | MT_SECURE)
123b4315306SDan Handley 
124*e29efeb1SAntonio Nino Diaz /* Region equivalent to V2M_MAP_IOFPGA suitable for mapping at EL0 */
125*e29efeb1SAntonio Nino Diaz #define V2M_MAP_IOFPGA_EL0		MAP_REGION_FLAT(		\
126*e29efeb1SAntonio Nino Diaz 						V2M_IOFPGA_BASE,	\
127*e29efeb1SAntonio Nino Diaz 						V2M_IOFPGA_SIZE,	\
128*e29efeb1SAntonio Nino Diaz 						MT_DEVICE | MT_RW | MT_SECURE | MT_USER)
129b4315306SDan Handley 
130b4315306SDan Handley 
131b4315306SDan Handley #endif /* __V2M_DEF_H__ */
132