xref: /arm-trusted-firmware/plat/qti/sc7180/inc/platform_def.h (revision 91f16700b400a8c0651d24a598fc48ee2997a0d7)
1*91f16700Schasinglulu /*
2*91f16700Schasinglulu  * Copyright (c) 2018, ARM Limited and Contributors. All rights reserved.
3*91f16700Schasinglulu  * Copyright (c) 2018-2020, The Linux Foundation. All rights reserved.
4*91f16700Schasinglulu  *
5*91f16700Schasinglulu  * SPDX-License-Identifier: BSD-3-Clause
6*91f16700Schasinglulu  */
7*91f16700Schasinglulu #ifndef PLATFORM_DEF_H
8*91f16700Schasinglulu #define PLATFORM_DEF_H
9*91f16700Schasinglulu 
10*91f16700Schasinglulu /* Enable the dynamic translation tables library. */
11*91f16700Schasinglulu #define PLAT_XLAT_TABLES_DYNAMIC	1
12*91f16700Schasinglulu 
13*91f16700Schasinglulu #include <common_def.h>
14*91f16700Schasinglulu 
15*91f16700Schasinglulu #include <qti_board_def.h>
16*91f16700Schasinglulu #include <qtiseclib_defs_plat.h>
17*91f16700Schasinglulu 
18*91f16700Schasinglulu /*----------------------------------------------------------------------------*/
19*91f16700Schasinglulu 
20*91f16700Schasinglulu /*----------------------------------------------------------------------------*/
21*91f16700Schasinglulu /*
22*91f16700Schasinglulu  * MPIDR_PRIMARY_CPU
23*91f16700Schasinglulu  * You just need to have the correct core_affinity_val i.e. [7:0]
24*91f16700Schasinglulu  * and cluster_affinity_val i.e. [15:8]
25*91f16700Schasinglulu  * the other bits will be ignored
26*91f16700Schasinglulu  */
27*91f16700Schasinglulu /*----------------------------------------------------------------------------*/
28*91f16700Schasinglulu #define MPIDR_PRIMARY_CPU	0x0000
29*91f16700Schasinglulu /*----------------------------------------------------------------------------*/
30*91f16700Schasinglulu 
31*91f16700Schasinglulu #define QTI_PWR_LVL0		MPIDR_AFFLVL0
32*91f16700Schasinglulu #define QTI_PWR_LVL1		MPIDR_AFFLVL1
33*91f16700Schasinglulu #define QTI_PWR_LVL2		MPIDR_AFFLVL2
34*91f16700Schasinglulu #define QTI_PWR_LVL3		MPIDR_AFFLVL3
35*91f16700Schasinglulu 
36*91f16700Schasinglulu /*
37*91f16700Schasinglulu  *  Macros for local power states encoded by State-ID field
38*91f16700Schasinglulu  *  within the power-state parameter.
39*91f16700Schasinglulu  */
40*91f16700Schasinglulu /* Local power state for power domains in Run state. */
41*91f16700Schasinglulu #define QTI_LOCAL_STATE_RUN	0
42*91f16700Schasinglulu /*
43*91f16700Schasinglulu  * Local power state for clock-gating. Valid only for CPU and not cluster power
44*91f16700Schasinglulu  * domains
45*91f16700Schasinglulu  */
46*91f16700Schasinglulu #define QTI_LOCAL_STATE_STB	1
47*91f16700Schasinglulu /*
48*91f16700Schasinglulu  * Local power state for retention. Valid for CPU and cluster power
49*91f16700Schasinglulu  * domains
50*91f16700Schasinglulu  */
51*91f16700Schasinglulu #define QTI_LOCAL_STATE_RET	2
52*91f16700Schasinglulu /*
53*91f16700Schasinglulu  * Local power state for OFF/power down. Valid for CPU, cluster, RSC and PDC
54*91f16700Schasinglulu  * power domains
55*91f16700Schasinglulu  */
56*91f16700Schasinglulu #define QTI_LOCAL_STATE_OFF	3
57*91f16700Schasinglulu /*
58*91f16700Schasinglulu  * Local power state for DEEPOFF/power rail down. Valid for CPU, cluster and RSC
59*91f16700Schasinglulu  * power domains
60*91f16700Schasinglulu  */
61*91f16700Schasinglulu #define QTI_LOCAL_STATE_DEEPOFF	4
62*91f16700Schasinglulu 
63*91f16700Schasinglulu /*
64*91f16700Schasinglulu  * This macro defines the deepest retention state possible. A higher state
65*91f16700Schasinglulu  * id will represent an invalid or a power down state.
66*91f16700Schasinglulu  */
67*91f16700Schasinglulu #define PLAT_MAX_RET_STATE	QTI_LOCAL_STATE_RET
68*91f16700Schasinglulu 
69*91f16700Schasinglulu /*
70*91f16700Schasinglulu  * This macro defines the deepest power down states possible. Any state ID
71*91f16700Schasinglulu  * higher than this is invalid.
72*91f16700Schasinglulu  */
73*91f16700Schasinglulu #define PLAT_MAX_OFF_STATE	QTI_LOCAL_STATE_DEEPOFF
74*91f16700Schasinglulu 
75*91f16700Schasinglulu /******************************************************************************
76*91f16700Schasinglulu  * Required platform porting definitions common to all ARM standard platforms
77*91f16700Schasinglulu  *****************************************************************************/
78*91f16700Schasinglulu 
79*91f16700Schasinglulu /*
80*91f16700Schasinglulu  * Platform specific page table and MMU setup constants.
81*91f16700Schasinglulu  */
82*91f16700Schasinglulu #define MAX_MMAP_REGIONS	(PLAT_QTI_MMAP_ENTRIES)
83*91f16700Schasinglulu 
84*91f16700Schasinglulu #define PLAT_PHY_ADDR_SPACE_SIZE	(1ull << 36)
85*91f16700Schasinglulu #define PLAT_VIRT_ADDR_SPACE_SIZE	(1ull << 36)
86*91f16700Schasinglulu 
87*91f16700Schasinglulu #define ARM_CACHE_WRITEBACK_SHIFT	6
88*91f16700Schasinglulu 
89*91f16700Schasinglulu /*
90*91f16700Schasinglulu  * Some data must be aligned on the biggest cache line size in the platform.
91*91f16700Schasinglulu  * This is known only to the platform as it might have a combination of
92*91f16700Schasinglulu  * integrated and external caches.
93*91f16700Schasinglulu  */
94*91f16700Schasinglulu #define CACHE_WRITEBACK_GRANULE		(1 << ARM_CACHE_WRITEBACK_SHIFT)
95*91f16700Schasinglulu 
96*91f16700Schasinglulu /*
97*91f16700Schasinglulu  * One cache line needed for bakery locks on ARM platforms
98*91f16700Schasinglulu  */
99*91f16700Schasinglulu #define PLAT_PERCPU_BAKERY_LOCK_SIZE	(1 * CACHE_WRITEBACK_GRANULE)
100*91f16700Schasinglulu 
101*91f16700Schasinglulu /*----------------------------------------------------------------------------*/
102*91f16700Schasinglulu /* PSCI power domain topology definitions */
103*91f16700Schasinglulu /*----------------------------------------------------------------------------*/
104*91f16700Schasinglulu /* One domain each to represent RSC and PDC level */
105*91f16700Schasinglulu #define PLAT_PDC_COUNT			1
106*91f16700Schasinglulu #define PLAT_RSC_COUNT			1
107*91f16700Schasinglulu 
108*91f16700Schasinglulu /* There is one top-level FCM cluster */
109*91f16700Schasinglulu #define PLAT_CLUSTER_COUNT		1
110*91f16700Schasinglulu 
111*91f16700Schasinglulu /* No. of cores in the FCM cluster */
112*91f16700Schasinglulu #define PLAT_CLUSTER0_CORE_COUNT	8
113*91f16700Schasinglulu 
114*91f16700Schasinglulu #define PLATFORM_CORE_COUNT		(PLAT_CLUSTER0_CORE_COUNT)
115*91f16700Schasinglulu 
116*91f16700Schasinglulu #define PLAT_NUM_PWR_DOMAINS		(PLAT_PDC_COUNT +\
117*91f16700Schasinglulu 					PLAT_RSC_COUNT	+\
118*91f16700Schasinglulu 					PLAT_CLUSTER_COUNT	+\
119*91f16700Schasinglulu 					PLATFORM_CORE_COUNT)
120*91f16700Schasinglulu 
121*91f16700Schasinglulu #define PLAT_MAX_PWR_LVL		3
122*91f16700Schasinglulu 
123*91f16700Schasinglulu /*****************************************************************************/
124*91f16700Schasinglulu /* Memory mapped Generic timer interfaces  */
125*91f16700Schasinglulu /*****************************************************************************/
126*91f16700Schasinglulu 
127*91f16700Schasinglulu /*----------------------------------------------------------------------------*/
128*91f16700Schasinglulu /* GIC-600 constants */
129*91f16700Schasinglulu /*----------------------------------------------------------------------------*/
130*91f16700Schasinglulu #define BASE_GICD_BASE		0x17A00000
131*91f16700Schasinglulu #define BASE_GICR_BASE		0x17A60000
132*91f16700Schasinglulu #define BASE_GICC_BASE		0x0
133*91f16700Schasinglulu #define BASE_GICH_BASE		0x0
134*91f16700Schasinglulu #define BASE_GICV_BASE		0x0
135*91f16700Schasinglulu 
136*91f16700Schasinglulu #define QTI_GICD_BASE		BASE_GICD_BASE
137*91f16700Schasinglulu #define QTI_GICR_BASE		BASE_GICR_BASE
138*91f16700Schasinglulu #define QTI_GICC_BASE		BASE_GICC_BASE
139*91f16700Schasinglulu 
140*91f16700Schasinglulu /*----------------------------------------------------------------------------*/
141*91f16700Schasinglulu 
142*91f16700Schasinglulu /*----------------------------------------------------------------------------*/
143*91f16700Schasinglulu /* UART related constants. */
144*91f16700Schasinglulu /*----------------------------------------------------------------------------*/
145*91f16700Schasinglulu /* BASE ADDRESS OF DIFFERENT REGISTER SPACES IN HW */
146*91f16700Schasinglulu #define GENI4_CFG				0x0
147*91f16700Schasinglulu #define GENI4_IMAGE_REGS			0x100
148*91f16700Schasinglulu #define GENI4_DATA				0x600
149*91f16700Schasinglulu 
150*91f16700Schasinglulu /* COMMON STATUS/CONFIGURATION REGISTERS AND MASKS */
151*91f16700Schasinglulu #define GENI_STATUS_REG				(GENI4_CFG + 0x00000040)
152*91f16700Schasinglulu #define GENI_STATUS_M_GENI_CMD_ACTIVE_MASK	(0x1)
153*91f16700Schasinglulu #define UART_TX_TRANS_LEN_REG			(GENI4_IMAGE_REGS + 0x00000170)
154*91f16700Schasinglulu /* MASTER/TX ENGINE REGISTERS */
155*91f16700Schasinglulu #define GENI_M_CMD0_REG				(GENI4_DATA + 0x00000000)
156*91f16700Schasinglulu /* FIFO, STATUS REGISTERS AND MASKS */
157*91f16700Schasinglulu #define GENI_TX_FIFOn_REG			(GENI4_DATA + 0x00000100)
158*91f16700Schasinglulu 
159*91f16700Schasinglulu #define GENI_M_CMD_TX				(0x08000000)
160*91f16700Schasinglulu 
161*91f16700Schasinglulu /*----------------------------------------------------------------------------*/
162*91f16700Schasinglulu /* Device address space for mapping. Excluding starting 4K */
163*91f16700Schasinglulu /*----------------------------------------------------------------------------*/
164*91f16700Schasinglulu #define QTI_DEVICE_BASE				0x1000
165*91f16700Schasinglulu #define QTI_DEVICE_SIZE				(0x80000000 - QTI_DEVICE_BASE)
166*91f16700Schasinglulu 
167*91f16700Schasinglulu /*******************************************************************************
168*91f16700Schasinglulu  * BL31 specific defines.
169*91f16700Schasinglulu  ******************************************************************************/
170*91f16700Schasinglulu /*
171*91f16700Schasinglulu  * Put BL31 at DDR as per memory map. BL31_BASE is calculated using the
172*91f16700Schasinglulu  * current BL31 debug size plus a little space for growth.
173*91f16700Schasinglulu  */
174*91f16700Schasinglulu #define BL31_LIMIT				(BL31_BASE + BL31_SIZE)
175*91f16700Schasinglulu 
176*91f16700Schasinglulu /*----------------------------------------------------------------------------*/
177*91f16700Schasinglulu /* AOSS registers */
178*91f16700Schasinglulu /*----------------------------------------------------------------------------*/
179*91f16700Schasinglulu #define QTI_PS_HOLD_REG				0x0C264000
180*91f16700Schasinglulu /*----------------------------------------------------------------------------*/
181*91f16700Schasinglulu /* AOP CMD DB  address space for mapping */
182*91f16700Schasinglulu /*----------------------------------------------------------------------------*/
183*91f16700Schasinglulu #define QTI_AOP_CMD_DB_BASE			0x80820000
184*91f16700Schasinglulu #define QTI_AOP_CMD_DB_SIZE			0x00020000
185*91f16700Schasinglulu /*----------------------------------------------------------------------------*/
186*91f16700Schasinglulu /* SOC hw version register */
187*91f16700Schasinglulu /*----------------------------------------------------------------------------*/
188*91f16700Schasinglulu #define QTI_SOC_VERSION_MASK			U(0xFFFF)
189*91f16700Schasinglulu #define QTI_SOC_REVISION_REG			0x1FC8000
190*91f16700Schasinglulu #define QTI_SOC_REVISION_MASK			U(0xFFFF)
191*91f16700Schasinglulu /*----------------------------------------------------------------------------*/
192*91f16700Schasinglulu /* LC PON register offsets */
193*91f16700Schasinglulu /*----------------------------------------------------------------------------*/
194*91f16700Schasinglulu #define PON_PS_HOLD_RESET_CTL			0x85a
195*91f16700Schasinglulu #define PON_PS_HOLD_RESET_CTL2			0x85b
196*91f16700Schasinglulu /*----------------------------------------------------------------------------*/
197*91f16700Schasinglulu 
198*91f16700Schasinglulu #endif /* PLATFORM_DEF_H */
199