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