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