xref: /rk3399_ARM-atf/plat/marvell/armada/a8k/common/include/a8k_plat_def.h (revision 2939f68add3269bf0e67f7a25c4a1b404a25c616)
1a2847172SGrzegorz Jaszczyk /*
2a2847172SGrzegorz Jaszczyk  * Copyright (C) 2018 Marvell International Ltd.
3a2847172SGrzegorz Jaszczyk  *
4a2847172SGrzegorz Jaszczyk  * SPDX-License-Identifier:     BSD-3-Clause
5a2847172SGrzegorz Jaszczyk  * https://spdx.org/licenses
6a2847172SGrzegorz Jaszczyk  */
7a2847172SGrzegorz Jaszczyk 
8a2847172SGrzegorz Jaszczyk #ifndef A8K_PLAT_DEF_H
9a2847172SGrzegorz Jaszczyk #define A8K_PLAT_DEF_H
10a2847172SGrzegorz Jaszczyk 
11a2847172SGrzegorz Jaszczyk #include <marvell_def.h>
12a2847172SGrzegorz Jaszczyk 
13a2847172SGrzegorz Jaszczyk #define MVEBU_PRIMARY_CPU		0x0
14a2847172SGrzegorz Jaszczyk #define MVEBU_AP0			0x0
15a2847172SGrzegorz Jaszczyk 
16a2847172SGrzegorz Jaszczyk /* APN806 revision ID */
17a2847172SGrzegorz Jaszczyk #define MVEBU_CSS_GWD_CTRL_IIDR2_REG	(MVEBU_REGS_BASE + 0x610FCC)
18a2847172SGrzegorz Jaszczyk #define GWD_IIDR2_REV_ID_OFFSET		12
19a2847172SGrzegorz Jaszczyk #define GWD_IIDR2_REV_ID_MASK		0xF
20a2847172SGrzegorz Jaszczyk #define GWD_IIDR2_CHIP_ID_OFFSET	20
21a2847172SGrzegorz Jaszczyk #define GWD_IIDR2_CHIP_ID_MASK		(0xFFFu << GWD_IIDR2_CHIP_ID_OFFSET)
22a2847172SGrzegorz Jaszczyk 
23a2847172SGrzegorz Jaszczyk #define CHIP_ID_AP806			0x806
24a2847172SGrzegorz Jaszczyk #define CHIP_ID_AP807			0x807
25a2847172SGrzegorz Jaszczyk 
26a2847172SGrzegorz Jaszczyk #define COUNTER_FREQUENCY		25000000
27a2847172SGrzegorz Jaszczyk 
28a2847172SGrzegorz Jaszczyk #define MVEBU_REGS_BASE			0xF0000000
29a2847172SGrzegorz Jaszczyk #define MVEBU_REGS_BASE_MASK		0xF0000000
30a2847172SGrzegorz Jaszczyk #define MVEBU_REGS_BASE_AP(ap)		MVEBU_REGS_BASE
31a2847172SGrzegorz Jaszczyk #define MVEBU_AP_IO_BASE(ap)		0xF2000000
32a2847172SGrzegorz Jaszczyk #define MVEBU_CP_OFFSET			0x2000000
33a2847172SGrzegorz Jaszczyk #define MVEBU_CP_REGS_BASE(cp_index)	(MVEBU_AP_IO_BASE(0) + \
34a2847172SGrzegorz Jaszczyk 						(cp_index) * MVEBU_CP_OFFSET)
35a2847172SGrzegorz Jaszczyk #define MVEBU_RFU_BASE			(MVEBU_REGS_BASE + 0x6F0000)
36a2847172SGrzegorz Jaszczyk #define MVEBU_IO_WIN_BASE(ap_index)	(MVEBU_RFU_BASE)
37a2847172SGrzegorz Jaszczyk #define MVEBU_IO_WIN_GCR_OFFSET		(0x70)
38a2847172SGrzegorz Jaszczyk #define MVEBU_IO_WIN_MAX_WINS		(7)
39a2847172SGrzegorz Jaszczyk 
40a2847172SGrzegorz Jaszczyk /* Misc SoC configurations Base */
41a2847172SGrzegorz Jaszczyk #define MVEBU_MISC_SOC_BASE		(MVEBU_REGS_BASE + 0x6F4300)
42a2847172SGrzegorz Jaszczyk 
43a2847172SGrzegorz Jaszczyk #define MVEBU_CCU_BASE(ap_index)	(MVEBU_REGS_BASE + 0x4000)
44a2847172SGrzegorz Jaszczyk #define MVEBU_CCU_MAX_WINS		(8)
45a2847172SGrzegorz Jaszczyk 
46a2847172SGrzegorz Jaszczyk #define MVEBU_LLC_BASE(ap_index)	(MVEBU_REGS_BASE + 0x8000)
47a2847172SGrzegorz Jaszczyk #define MVEBU_DRAM_MAC_BASE		(MVEBU_REGS_BASE + 0x20000)
48a2847172SGrzegorz Jaszczyk #define MVEBU_DRAM_PHY_BASE		(MVEBU_REGS_BASE + 0x20000)
49a2847172SGrzegorz Jaszczyk #define MVEBU_SMMU_BASE			(MVEBU_REGS_BASE + 0x100000)
50a2847172SGrzegorz Jaszczyk #define MVEBU_CP_MPP_REGS(cp_index, n)	(MVEBU_CP_REGS_BASE(cp_index) + \
51a2847172SGrzegorz Jaszczyk 						0x440000 + ((n) << 2))
52a2847172SGrzegorz Jaszczyk #define MVEBU_PM_MPP_REGS(cp_index, n)	(MVEBU_CP_REGS_BASE(cp_index) + \
53a2847172SGrzegorz Jaszczyk 						0x440000 + ((n / 8) << 2))
54a2847172SGrzegorz Jaszczyk #define MVEBU_CP_GPIO_DATA_OUT(cp_index, n) \
55a2847172SGrzegorz Jaszczyk 					(MVEBU_CP_REGS_BASE(cp_index) + \
56a2847172SGrzegorz Jaszczyk 					0x440100 + ((n > 31) ? 0x40 : 0x00))
57a2847172SGrzegorz Jaszczyk #define MVEBU_CP_GPIO_DATA_OUT_EN(cp_index, n) \
58a2847172SGrzegorz Jaszczyk 					(MVEBU_CP_REGS_BASE(cp_index) + \
59a2847172SGrzegorz Jaszczyk 					0x440104 + ((n > 31) ? 0x40 : 0x00))
60a2847172SGrzegorz Jaszczyk #define MVEBU_CP_GPIO_DATA_IN(cp_index, n) (MVEBU_CP_REGS_BASE(cp_index) + \
61a2847172SGrzegorz Jaszczyk 					0x440110 + ((n > 31) ? 0x40 : 0x00))
62a2847172SGrzegorz Jaszczyk #define MVEBU_AP_MPP_REGS(n)		(MVEBU_RFU_BASE + 0x4000 + ((n) << 2))
63a2847172SGrzegorz Jaszczyk #define MVEBU_AP_GPIO_REGS		(MVEBU_RFU_BASE + 0x5040)
64a2847172SGrzegorz Jaszczyk #define MVEBU_AP_GPIO_DATA_IN		(MVEBU_AP_GPIO_REGS + 0x10)
65a2847172SGrzegorz Jaszczyk #define MVEBU_AP_I2C_BASE		(MVEBU_REGS_BASE + 0x511000)
66a2847172SGrzegorz Jaszczyk #define MVEBU_CP0_I2C_BASE		(MVEBU_CP_REGS_BASE(0) + 0x701000)
67*90eac170SKonstantin Porotchkin #define MVEBU_AP_GEN_MGMT_BASE		(MVEBU_RFU_BASE + 0x8000)
68*90eac170SKonstantin Porotchkin #define MVEBU_AP_EXT_TSEN_BASE		(MVEBU_AP_GEN_MGMT_BASE + 0x84)
69a2847172SGrzegorz Jaszczyk 
70a2847172SGrzegorz Jaszczyk #define MVEBU_AP_MC_TRUSTZONE_REG_LOW(ap, win)	(MVEBU_REGS_BASE_AP(ap) + \
71a2847172SGrzegorz Jaszczyk 							0x20080 + ((win) * 0x8))
72a2847172SGrzegorz Jaszczyk #define MVEBU_AP_MC_TRUSTZONE_REG_HIGH(ap, win)	(MVEBU_REGS_BASE_AP(ap) + \
73a2847172SGrzegorz Jaszczyk 							0x20084 + ((win) * 0x8))
74a2847172SGrzegorz Jaszczyk 
75a2847172SGrzegorz Jaszczyk /* MCI indirect access definitions */
76a2847172SGrzegorz Jaszczyk #define MCI_MAX_UNIT_ID				2
77a2847172SGrzegorz Jaszczyk /* SoC RFU / IHBx4 Control */
78a2847172SGrzegorz Jaszczyk #define MCIX4_REG_START_ADDRESS_REG(unit_id)	(MVEBU_RFU_BASE + \
79a2847172SGrzegorz Jaszczyk 						0x4218 + (unit_id * 0x20))
80a2847172SGrzegorz Jaszczyk #define MCI_REMAP_OFF_SHIFT			8
81a2847172SGrzegorz Jaszczyk 
82a2847172SGrzegorz Jaszczyk #define MVEBU_MCI_REG_BASE_REMAP(index)		(0xFD000000 + \
83a2847172SGrzegorz Jaszczyk 						((index) * 0x1000000))
84a2847172SGrzegorz Jaszczyk 
85a2847172SGrzegorz Jaszczyk #define MVEBU_PCIE_X4_MAC_BASE(x)	(MVEBU_CP_REGS_BASE(x) + 0x600000)
86a2847172SGrzegorz Jaszczyk #define MVEBU_COMPHY_BASE(x)		(MVEBU_CP_REGS_BASE(x) + 0x441000)
87a2847172SGrzegorz Jaszczyk #define MVEBU_HPIPE_BASE(x)		(MVEBU_CP_REGS_BASE(x) + 0x120000)
88a2847172SGrzegorz Jaszczyk #define MVEBU_CP_DFX_OFFSET		(0x400200)
89a2847172SGrzegorz Jaszczyk 
90a2847172SGrzegorz Jaszczyk /*****************************************************************************
91a2847172SGrzegorz Jaszczyk  * MVEBU memory map related constants
92a2847172SGrzegorz Jaszczyk  *****************************************************************************
93a2847172SGrzegorz Jaszczyk  */
94a2847172SGrzegorz Jaszczyk /* Aggregate of all devices in the first GB */
95a2847172SGrzegorz Jaszczyk #define DEVICE0_BASE			MVEBU_REGS_BASE
96a2847172SGrzegorz Jaszczyk #define DEVICE0_SIZE			0x10000000
97a2847172SGrzegorz Jaszczyk 
98a2847172SGrzegorz Jaszczyk /*****************************************************************************
99a2847172SGrzegorz Jaszczyk  * GIC-400 & interrupt handling related constants
100a2847172SGrzegorz Jaszczyk  *****************************************************************************
101a2847172SGrzegorz Jaszczyk  */
102a2847172SGrzegorz Jaszczyk /* Base MVEBU compatible GIC memory map */
103a2847172SGrzegorz Jaszczyk #define MVEBU_GICD_BASE			0x210000
104a2847172SGrzegorz Jaszczyk #define MVEBU_GICC_BASE			0x220000
105a2847172SGrzegorz Jaszczyk 
106a2847172SGrzegorz Jaszczyk 
107a2847172SGrzegorz Jaszczyk /*****************************************************************************
108a2847172SGrzegorz Jaszczyk  * AXI Configuration
109a2847172SGrzegorz Jaszczyk  *****************************************************************************
110a2847172SGrzegorz Jaszczyk  */
111a2847172SGrzegorz Jaszczyk #define MVEBU_AXI_ATTR_ARCACHE_OFFSET		4
112a2847172SGrzegorz Jaszczyk #define MVEBU_AXI_ATTR_ARCACHE_MASK		(0xF << \
113a2847172SGrzegorz Jaszczyk 						 MVEBU_AXI_ATTR_ARCACHE_OFFSET)
114a2847172SGrzegorz Jaszczyk #define MVEBU_AXI_ATTR_ARDOMAIN_OFFSET		12
115a2847172SGrzegorz Jaszczyk #define MVEBU_AXI_ATTR_ARDOMAIN_MASK		(0x3 << \
116a2847172SGrzegorz Jaszczyk 						 MVEBU_AXI_ATTR_ARDOMAIN_OFFSET)
117a2847172SGrzegorz Jaszczyk #define MVEBU_AXI_ATTR_AWCACHE_OFFSET		20
118a2847172SGrzegorz Jaszczyk #define MVEBU_AXI_ATTR_AWCACHE_MASK		(0xF << \
119a2847172SGrzegorz Jaszczyk 						 MVEBU_AXI_ATTR_AWCACHE_OFFSET)
120a2847172SGrzegorz Jaszczyk #define MVEBU_AXI_ATTR_AWDOMAIN_OFFSET		28
121a2847172SGrzegorz Jaszczyk #define MVEBU_AXI_ATTR_AWDOMAIN_MASK		(0x3 << \
122a2847172SGrzegorz Jaszczyk 						 MVEBU_AXI_ATTR_AWDOMAIN_OFFSET)
123a2847172SGrzegorz Jaszczyk 
124a2847172SGrzegorz Jaszczyk /* SATA MBUS to AXI configuration */
125a2847172SGrzegorz Jaszczyk #define MVEBU_SATA_M2A_AXI_ARCACHE_OFFSET	1
126a2847172SGrzegorz Jaszczyk #define MVEBU_SATA_M2A_AXI_ARCACHE_MASK		(0xF << \
127a2847172SGrzegorz Jaszczyk 					MVEBU_SATA_M2A_AXI_ARCACHE_OFFSET)
128a2847172SGrzegorz Jaszczyk #define MVEBU_SATA_M2A_AXI_AWCACHE_OFFSET	5
129a2847172SGrzegorz Jaszczyk #define MVEBU_SATA_M2A_AXI_AWCACHE_MASK		(0xF << \
130a2847172SGrzegorz Jaszczyk 					MVEBU_SATA_M2A_AXI_AWCACHE_OFFSET)
131a2847172SGrzegorz Jaszczyk 
132a2847172SGrzegorz Jaszczyk /* ARM cache attributes */
133a2847172SGrzegorz Jaszczyk #define CACHE_ATTR_BUFFERABLE			0x1
134a2847172SGrzegorz Jaszczyk #define CACHE_ATTR_CACHEABLE			0x2
135a2847172SGrzegorz Jaszczyk #define CACHE_ATTR_READ_ALLOC			0x4
136a2847172SGrzegorz Jaszczyk #define CACHE_ATTR_WRITE_ALLOC			0x8
137a2847172SGrzegorz Jaszczyk /* Domain */
138a2847172SGrzegorz Jaszczyk #define DOMAIN_NON_SHAREABLE			0x0
139a2847172SGrzegorz Jaszczyk #define DOMAIN_INNER_SHAREABLE			0x1
140a2847172SGrzegorz Jaszczyk #define DOMAIN_OUTER_SHAREABLE			0x2
141a2847172SGrzegorz Jaszczyk #define DOMAIN_SYSTEM_SHAREABLE			0x3
142a2847172SGrzegorz Jaszczyk 
143a2847172SGrzegorz Jaszczyk /************************************************************************
144a2847172SGrzegorz Jaszczyk  * Required platform porting definitions common to all
145a2847172SGrzegorz Jaszczyk  * Management Compute SubSystems (MSS)
146a2847172SGrzegorz Jaszczyk  ************************************************************************
147a2847172SGrzegorz Jaszczyk  */
148a2847172SGrzegorz Jaszczyk /*
149a2847172SGrzegorz Jaszczyk  * Load address of SCP_BL2
150a2847172SGrzegorz Jaszczyk  * SCP_BL2 is loaded to the same place as BL31.
151a2847172SGrzegorz Jaszczyk  * Once SCP_BL2 is transferred to the SCP,
152a2847172SGrzegorz Jaszczyk  * it is discarded and BL31 is loaded over the top.
153a2847172SGrzegorz Jaszczyk  */
154a2847172SGrzegorz Jaszczyk #ifdef SCP_IMAGE
155a2847172SGrzegorz Jaszczyk #define SCP_BL2_BASE			BL31_BASE
156a2847172SGrzegorz Jaszczyk #define SCP_BL2_SIZE			BL31_LIMIT
157a2847172SGrzegorz Jaszczyk #endif
158a2847172SGrzegorz Jaszczyk 
159a2847172SGrzegorz Jaszczyk #ifndef __ASSEMBLER__
160a2847172SGrzegorz Jaszczyk enum ap806_sar_target_dev {
161a2847172SGrzegorz Jaszczyk 	SAR_PIDI_MCIX2		= 0x0,
162a2847172SGrzegorz Jaszczyk 	SAR_MCIX4		= 0x1,
163a2847172SGrzegorz Jaszczyk 	SAR_SPI			= 0x2,
164a2847172SGrzegorz Jaszczyk 	SAR_SD			= 0x3,
165a2847172SGrzegorz Jaszczyk 	SAR_PIDI_MCIX2_BD	= 0x4, /* BootRom disabled */
166a2847172SGrzegorz Jaszczyk 	SAR_MCIX4_DB		= 0x5, /* BootRom disabled */
167a2847172SGrzegorz Jaszczyk 	SAR_SPI_DB		= 0x6, /* BootRom disabled */
168a2847172SGrzegorz Jaszczyk 	SAR_EMMC		= 0x7
169a2847172SGrzegorz Jaszczyk };
170a2847172SGrzegorz Jaszczyk 
171a2847172SGrzegorz Jaszczyk enum io_win_target_ids {
172a2847172SGrzegorz Jaszczyk 	MCI_0_TID	 = 0x0,
173a2847172SGrzegorz Jaszczyk 	MCI_1_TID	 = 0x1,
174a2847172SGrzegorz Jaszczyk 	MCI_2_TID	 = 0x2,
175a2847172SGrzegorz Jaszczyk 	PIDI_TID	 = 0x3,
176a2847172SGrzegorz Jaszczyk 	SPI_TID		 = 0x4,
177a2847172SGrzegorz Jaszczyk 	STM_TID		 = 0x5,
178a2847172SGrzegorz Jaszczyk 	BOOTROM_TID	 = 0x6,
179a2847172SGrzegorz Jaszczyk 	IO_WIN_MAX_TID
180a2847172SGrzegorz Jaszczyk };
181a2847172SGrzegorz Jaszczyk 
182a2847172SGrzegorz Jaszczyk enum ccu_target_ids {
183a2847172SGrzegorz Jaszczyk 	IO_0_TID        = 0x00,
184a2847172SGrzegorz Jaszczyk 	DRAM_0_TID      = 0x03,
185a2847172SGrzegorz Jaszczyk 	IO_1_TID        = 0x0F,
186a2847172SGrzegorz Jaszczyk 	CFG_REG_TID     = 0x10,
187a2847172SGrzegorz Jaszczyk 	RAR_TID         = 0x20,
188a2847172SGrzegorz Jaszczyk 	SRAM_TID        = 0x40,
189a2847172SGrzegorz Jaszczyk 	DRAM_1_TID      = 0xC0,
190a2847172SGrzegorz Jaszczyk 	CCU_MAX_TID,
191a2847172SGrzegorz Jaszczyk 	INVALID_TID     = 0xFF
192a2847172SGrzegorz Jaszczyk };
193a2847172SGrzegorz Jaszczyk #endif /* __ASSEMBLER__ */
194a2847172SGrzegorz Jaszczyk 
195a2847172SGrzegorz Jaszczyk #endif /* A8K_PLAT_DEF_H */
196