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