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