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