xref: /rk3399_ARM-atf/plat/arm/board/morello/include/platform_def.h (revision 145572914b7a665ca54afe9c8d00196d2e0a39ed)
1dfd5bfb0SChandni Cherukuri /*
248d42ed5STamas Ban  * Copyright (c) 2020-2024, Arm Limited. All rights reserved.
3dfd5bfb0SChandni Cherukuri  *
4dfd5bfb0SChandni Cherukuri  * SPDX-License-Identifier: BSD-3-Clause
5dfd5bfb0SChandni Cherukuri  */
6dfd5bfb0SChandni Cherukuri 
7dfd5bfb0SChandni Cherukuri #ifndef PLATFORM_DEF_H
8dfd5bfb0SChandni Cherukuri #define PLATFORM_DEF_H
9dfd5bfb0SChandni Cherukuri 
10dfd5bfb0SChandni Cherukuri #include <plat/arm/board/common/v2m_def.h>
11dfd5bfb0SChandni Cherukuri #include <plat/arm/common/arm_def.h>
12dfd5bfb0SChandni Cherukuri #include <plat/arm/css/common/css_def.h>
13dfd5bfb0SChandni Cherukuri 
14dfd5bfb0SChandni Cherukuri /* UART related constants */
15dfd5bfb0SChandni Cherukuri #define PLAT_ARM_BOOT_UART_BASE 		ULL(0x2A400000)
16dfd5bfb0SChandni Cherukuri #define PLAT_ARM_BOOT_UART_CLK_IN_HZ		U(50000000)
17dfd5bfb0SChandni Cherukuri 
1807302a23SChandni Cherukuri /* IOFPGA UART0 */
1907302a23SChandni Cherukuri #define PLAT_ARM_RUN_UART_BASE			ULL(0x1C090000)
2007302a23SChandni Cherukuri #define PLAT_ARM_RUN_UART_CLK_IN_HZ		U(24000000)
21dfd5bfb0SChandni Cherukuri 
22dfd5bfb0SChandni Cherukuri #define PLAT_ARM_CRASH_UART_BASE		PLAT_ARM_RUN_UART_BASE
23dfd5bfb0SChandni Cherukuri #define PLAT_ARM_CRASH_UART_CLK_IN_HZ		PLAT_ARM_RUN_UART_CLK_IN_HZ
24dfd5bfb0SChandni Cherukuri 
25dfd5bfb0SChandni Cherukuri #define PLAT_ARM_DRAM2_BASE			ULL(0x8080000000)
26dfd5bfb0SChandni Cherukuri #define PLAT_ARM_DRAM2_SIZE			ULL(0xF80000000)
27dfd5bfb0SChandni Cherukuri 
284af53977SManoj Kumar #define MAX_IO_DEVICES				U(3)
294af53977SManoj Kumar #define MAX_IO_HANDLES				U(4)
304af53977SManoj Kumar 
314af53977SManoj Kumar #define PLAT_ARM_FLASH_IMAGE_BASE		ULL(0x1A000000)
324af53977SManoj Kumar #define PLAT_ARM_FLASH_IMAGE_MAX_SIZE		ULL(0x01000000)
334af53977SManoj Kumar 
344af53977SManoj Kumar #define PLAT_ARM_NVM_BASE			ULL(0x1A000000)
354af53977SManoj Kumar #define PLAT_ARM_NVM_SIZE			ULL(0x01000000)
364af53977SManoj Kumar 
374af53977SManoj Kumar #if defined NS_BL1U_BASE
384af53977SManoj Kumar #undef NS_BL1U_BASE
394af53977SManoj Kumar #define NS_BL1U_BASE			(PLAT_ARM_NVM_BASE + UL(0x00800000))
404af53977SManoj Kumar #endif
414af53977SManoj Kumar 
424af53977SManoj Kumar /*
434af53977SManoj Kumar  * There are no non-volatile counters in morello, these macros points
444af53977SManoj Kumar  * to unused addresses.
454af53977SManoj Kumar  */
464af53977SManoj Kumar #define SOC_TRUSTED_NVCTR_BASE		ULL(0x7FE70000)
474af53977SManoj Kumar #define TFW_NVCTR_BASE			(SOC_TRUSTED_NVCTR_BASE + U(0x0000))
484af53977SManoj Kumar #define TFW_NVCTR_SIZE			U(4)
494af53977SManoj Kumar #define NTFW_CTR_BASE			(SOC_TRUSTED_NVCTR_BASE + U(0x0004))
504af53977SManoj Kumar #define NTFW_CTR_SIZE			U(4)
514af53977SManoj Kumar 
52dfd5bfb0SChandni Cherukuri /*
53dfd5bfb0SChandni Cherukuri  * To access the complete DDR memory along with remote chip's DDR memory,
54dfd5bfb0SChandni Cherukuri  * which is at 4 TB offset, physical and virtual address space limits are
55dfd5bfb0SChandni Cherukuri  * extended to 43-bits.
56dfd5bfb0SChandni Cherukuri  */
57dfd5bfb0SChandni Cherukuri #define PLAT_PHY_ADDR_SPACE_SIZE		(1ULL << 43)
58dfd5bfb0SChandni Cherukuri #define PLAT_VIRT_ADDR_SPACE_SIZE		(1ULL << 43)
59dfd5bfb0SChandni Cherukuri 
60dfd5bfb0SChandni Cherukuri #if CSS_USE_SCMI_SDS_DRIVER
61dfd5bfb0SChandni Cherukuri #define MORELLO_SCMI_PAYLOAD_BASE		ULL(0x45400000)
6248d42ed5STamas Ban /*
6348d42ed5STamas Ban  * Index of SDS region used in the communication with SCP
6448d42ed5STamas Ban  */
6548d42ed5STamas Ban #define SDS_SCP_AP_REGION_ID			U(0)
66dfd5bfb0SChandni Cherukuri #else
67dfd5bfb0SChandni Cherukuri #define PLAT_CSS_SCP_COM_SHARED_MEM_BASE	ULL(0x45400000)
68dfd5bfb0SChandni Cherukuri #endif
69dfd5bfb0SChandni Cherukuri 
70dfd5bfb0SChandni Cherukuri #define PLAT_ARM_TRUSTED_SRAM_SIZE		UL(0x00080000)
714af53977SManoj Kumar 
724af53977SManoj Kumar /*
734af53977SManoj Kumar  * PLAT_ARM_MAX_BL1_RW_SIZE is calculated using the current BL1 RW debug size
744af53977SManoj Kumar  * plus a little space for growth.
754af53977SManoj Kumar  */
764af53977SManoj Kumar #define PLAT_ARM_MAX_BL1_RW_SIZE		UL(0xC000)
774af53977SManoj Kumar 
78*df960bccSHarrison Mutai /* Define memory configuration for device tree files. */
79*df960bccSHarrison Mutai #define PLAT_ARM_HW_CONFIG_SIZE			U(0x8000)
80*df960bccSHarrison Mutai 
814af53977SManoj Kumar /*
824af53977SManoj Kumar  * PLAT_ARM_MAX_ROMLIB_RW_SIZE is define to use a full page
834af53977SManoj Kumar  */
844af53977SManoj Kumar 
854af53977SManoj Kumar #if USE_ROMLIB
864af53977SManoj Kumar #define PLAT_ARM_MAX_ROMLIB_RW_SIZE		UL(0x1000)
874af53977SManoj Kumar #define PLAT_ARM_MAX_ROMLIB_RO_SIZE		UL(0xE000)
884af53977SManoj Kumar #else
894af53977SManoj Kumar #define PLAT_ARM_MAX_ROMLIB_RW_SIZE		U(0)
904af53977SManoj Kumar #define PLAT_ARM_MAX_ROMLIB_RO_SIZE		U(0)
914af53977SManoj Kumar #endif
924af53977SManoj Kumar 
934af53977SManoj Kumar /*
944af53977SManoj Kumar  * PLAT_ARM_MAX_BL2_SIZE is calculated using the current BL2 debug size plus a
954af53977SManoj Kumar  * little space for growth.
964af53977SManoj Kumar  */
974af53977SManoj Kumar #if TRUSTED_BOARD_BOOT
984af53977SManoj Kumar # define PLAT_ARM_MAX_BL2_SIZE			UL(0x1D000)
994af53977SManoj Kumar #else
1004af53977SManoj Kumar # define PLAT_ARM_MAX_BL2_SIZE			UL(0x14000)
1014af53977SManoj Kumar #endif
1024af53977SManoj Kumar 
1034af53977SManoj Kumar #define PLAT_ARM_MAX_BL31_SIZE			UL(0x3B000)
104dfd5bfb0SChandni Cherukuri 
105dfd5bfb0SChandni Cherukuri /*******************************************************************************
106dfd5bfb0SChandni Cherukuri  * MORELLO topology related constants
107dfd5bfb0SChandni Cherukuri  ******************************************************************************/
108dfd5bfb0SChandni Cherukuri #define MORELLO_MAX_CPUS_PER_CLUSTER		U(2)
109dfd5bfb0SChandni Cherukuri #define PLAT_ARM_CLUSTER_COUNT			U(2)
110dfd5bfb0SChandni Cherukuri #define PLAT_MORELLO_CHIP_COUNT			U(1)
111dfd5bfb0SChandni Cherukuri #define MORELLO_MAX_CLUSTERS_PER_CHIP		U(2)
112dfd5bfb0SChandni Cherukuri #define MORELLO_MAX_PE_PER_CPU			U(1)
113dfd5bfb0SChandni Cherukuri 
114dfd5bfb0SChandni Cherukuri #define PLATFORM_CORE_COUNT			(PLAT_MORELLO_CHIP_COUNT *	\
115dfd5bfb0SChandni Cherukuri 						PLAT_ARM_CLUSTER_COUNT *	\
116dfd5bfb0SChandni Cherukuri 						MORELLO_MAX_CPUS_PER_CLUSTER *	\
117dfd5bfb0SChandni Cherukuri 						MORELLO_MAX_PE_PER_CPU)
118dfd5bfb0SChandni Cherukuri 
119dfd5bfb0SChandni Cherukuri /* System power domain level */
120dfd5bfb0SChandni Cherukuri #define CSS_SYSTEM_PWR_DMN_LVL			ARM_PWR_LVL3
121dfd5bfb0SChandni Cherukuri 
122dfd5bfb0SChandni Cherukuri /*
123dfd5bfb0SChandni Cherukuri  * PLAT_ARM_MMAP_ENTRIES depends on the number of entries in the
124dfd5bfb0SChandni Cherukuri  * plat_arm_mmap array defined for each BL stage.
125dfd5bfb0SChandni Cherukuri  */
1264af53977SManoj Kumar #if IMAGE_BL1 || IMAGE_BL31
1274af53977SManoj Kumar # define PLAT_ARM_MMAP_ENTRIES			U(6)
1284af53977SManoj Kumar # define MAX_XLAT_TABLES			U(7)
1294af53977SManoj Kumar #else
1304af53977SManoj Kumar # define PLAT_ARM_MMAP_ENTRIES			U(5)
1314af53977SManoj Kumar # define MAX_XLAT_TABLES			U(6)
1324af53977SManoj Kumar #endif
133dfd5bfb0SChandni Cherukuri 
1344af53977SManoj Kumar /*
1354af53977SManoj Kumar  * Size of cacheable stacks
1364af53977SManoj Kumar  */
1374af53977SManoj Kumar #if defined(IMAGE_BL1)
1384af53977SManoj Kumar # if TRUSTED_BOARD_BOOT
1394af53977SManoj Kumar #  define PLATFORM_STACK_SIZE			UL(0x1000)
1404af53977SManoj Kumar # else
1414af53977SManoj Kumar #  define PLATFORM_STACK_SIZE			UL(0x440)
1424af53977SManoj Kumar # endif
1434af53977SManoj Kumar #elif defined(IMAGE_BL2)
1444af53977SManoj Kumar # if TRUSTED_BOARD_BOOT
1454af53977SManoj Kumar #  define PLATFORM_STACK_SIZE			UL(0x1000)
1464af53977SManoj Kumar # else
1474af53977SManoj Kumar #  define PLATFORM_STACK_SIZE			UL(0x400)
1484af53977SManoj Kumar # endif
1494af53977SManoj Kumar #elif defined(IMAGE_BL2U)
1504af53977SManoj Kumar # define PLATFORM_STACK_SIZE			UL(0x400)
1514af53977SManoj Kumar #elif defined(IMAGE_BL31)
1524af53977SManoj Kumar # if SPM_MM
1534af53977SManoj Kumar #  define PLATFORM_STACK_SIZE			UL(0x500)
1544af53977SManoj Kumar # else
1554af53977SManoj Kumar #  define PLATFORM_STACK_SIZE			UL(0x400)
1564af53977SManoj Kumar # endif
1574af53977SManoj Kumar #elif defined(IMAGE_BL32)
1584af53977SManoj Kumar # define PLATFORM_STACK_SIZE			UL(0x440)
1594af53977SManoj Kumar #endif
160dfd5bfb0SChandni Cherukuri 
161dfd5bfb0SChandni Cherukuri #define PLAT_ARM_NSTIMER_FRAME_ID		U(0)
1624af53977SManoj Kumar 
1634af53977SManoj Kumar #define PLAT_ARM_TRUSTED_ROM_BASE		U(0x0)
1644af53977SManoj Kumar #define PLAT_ARM_TRUSTED_ROM_SIZE		UL(0x00020000)	/* 128KB */
1654af53977SManoj Kumar 
1664af53977SManoj Kumar #define PLAT_ARM_NSRAM_BASE			ULL(0x06000000)
1674af53977SManoj Kumar #define PLAT_ARM_NSRAM_SIZE			UL(0x00010000)	/* 64KB */
1684af53977SManoj Kumar 
169dfd5bfb0SChandni Cherukuri #define PLAT_CSS_MHU_BASE			UL(0x45000000)
170dfd5bfb0SChandni Cherukuri #define PLAT_MHUV2_BASE				PLAT_CSS_MHU_BASE
171dfd5bfb0SChandni Cherukuri #define PLAT_MAX_PWR_LVL			U(2)
172dfd5bfb0SChandni Cherukuri 
17380f8769bSWerner Lewis /* Interrupt handling constants */
17480f8769bSWerner Lewis #define MORELLO_IRQ_SEC_UART			U(87)
17580f8769bSWerner Lewis #define MORELLO_IRQ_DISPLAY_TCU_EVENT_Q		U(107)
17680f8769bSWerner Lewis #define MORELLO_IRQ_DISPLAY_TCU_CMD_SYNC	U(111)
17780f8769bSWerner Lewis #define MORELLO_IRQ_DISPLAY_TCU_GLOBAL		U(113)
17880f8769bSWerner Lewis #define MORELLO_IRQ_MMU_TCU1_EVENT_Q		U(257)
17980f8769bSWerner Lewis #define MORELLO_IRQ_MMU_TCU1_CMD_SYNC		U(258)
18080f8769bSWerner Lewis #define MORELLO_IRQ_MMU_TCU1_GLOBAL		U(259)
18180f8769bSWerner Lewis #define MORELLO_IRQ_MMU_TCU2_EVENT_Q		U(264)
18280f8769bSWerner Lewis #define MORELLO_IRQ_MMU_TCU2_CMD_SYNC		U(265)
18380f8769bSWerner Lewis #define MORELLO_IRQ_MMU_TCU2_GLOBAL		U(266)
18480f8769bSWerner Lewis #define MORELLO_IRQ_CLUSTER0_MHU		U(349)
18580f8769bSWerner Lewis #define MORELLO_IRQ_CLUSTER1_MHU		U(351)
18680f8769bSWerner Lewis #define MORELLO_IRQ_P0_REFCLK			U(412)
18780f8769bSWerner Lewis #define MORELLO_IRQ_P1_REFCLK			U(413)
18880f8769bSWerner Lewis 
18980f8769bSWerner Lewis #define PLAT_ARM_G1S_IRQ_PROPS(grp) \
19080f8769bSWerner Lewis 	ARM_G1S_IRQ_PROPS(grp), \
19180f8769bSWerner Lewis 	INTR_PROP_DESC(CSS_IRQ_MHU, \
19280f8769bSWerner Lewis 			GIC_HIGHEST_SEC_PRIORITY, grp, GIC_INTR_CFG_LEVEL), \
19380f8769bSWerner Lewis 	INTR_PROP_DESC(CSS_IRQ_TZ_WDOG, \
19480f8769bSWerner Lewis 			GIC_HIGHEST_SEC_PRIORITY, grp, GIC_INTR_CFG_LEVEL), \
19580f8769bSWerner Lewis 	INTR_PROP_DESC(CSS_IRQ_SEC_SYS_TIMER, \
19680f8769bSWerner Lewis 			GIC_HIGHEST_SEC_PRIORITY, grp, GIC_INTR_CFG_LEVEL), \
19780f8769bSWerner Lewis 	INTR_PROP_DESC(MORELLO_IRQ_SEC_UART, \
19880f8769bSWerner Lewis 			GIC_HIGHEST_SEC_PRIORITY, grp, GIC_INTR_CFG_LEVEL), \
19980f8769bSWerner Lewis 	INTR_PROP_DESC(MORELLO_IRQ_DISPLAY_TCU_EVENT_Q, \
20080f8769bSWerner Lewis 			GIC_HIGHEST_SEC_PRIORITY, grp, GIC_INTR_CFG_LEVEL), \
20180f8769bSWerner Lewis 	INTR_PROP_DESC(MORELLO_IRQ_DISPLAY_TCU_CMD_SYNC, \
20280f8769bSWerner Lewis 			GIC_HIGHEST_SEC_PRIORITY, grp, GIC_INTR_CFG_LEVEL), \
20380f8769bSWerner Lewis 	INTR_PROP_DESC(MORELLO_IRQ_DISPLAY_TCU_GLOBAL, \
20480f8769bSWerner Lewis 			GIC_HIGHEST_SEC_PRIORITY, grp, GIC_INTR_CFG_LEVEL), \
20580f8769bSWerner Lewis 	INTR_PROP_DESC(MORELLO_IRQ_MMU_TCU1_EVENT_Q, \
20680f8769bSWerner Lewis 			GIC_HIGHEST_SEC_PRIORITY, grp, GIC_INTR_CFG_LEVEL), \
20780f8769bSWerner Lewis 	INTR_PROP_DESC(MORELLO_IRQ_MMU_TCU1_CMD_SYNC, \
20880f8769bSWerner Lewis 			GIC_HIGHEST_SEC_PRIORITY, grp, GIC_INTR_CFG_LEVEL), \
20980f8769bSWerner Lewis 	INTR_PROP_DESC(MORELLO_IRQ_MMU_TCU1_GLOBAL, \
21080f8769bSWerner Lewis 			GIC_HIGHEST_SEC_PRIORITY, grp, GIC_INTR_CFG_LEVEL), \
21180f8769bSWerner Lewis 	INTR_PROP_DESC(MORELLO_IRQ_MMU_TCU2_EVENT_Q, \
21280f8769bSWerner Lewis 			GIC_HIGHEST_SEC_PRIORITY, grp, GIC_INTR_CFG_LEVEL), \
21380f8769bSWerner Lewis 	INTR_PROP_DESC(MORELLO_IRQ_MMU_TCU2_CMD_SYNC, \
21480f8769bSWerner Lewis 			GIC_HIGHEST_SEC_PRIORITY, grp, GIC_INTR_CFG_LEVEL), \
21580f8769bSWerner Lewis 	INTR_PROP_DESC(MORELLO_IRQ_MMU_TCU2_GLOBAL, \
21680f8769bSWerner Lewis 			GIC_HIGHEST_SEC_PRIORITY, grp, GIC_INTR_CFG_LEVEL), \
21780f8769bSWerner Lewis 	INTR_PROP_DESC(MORELLO_IRQ_CLUSTER0_MHU, \
21880f8769bSWerner Lewis 			GIC_HIGHEST_SEC_PRIORITY, grp, GIC_INTR_CFG_LEVEL), \
21980f8769bSWerner Lewis 	INTR_PROP_DESC(MORELLO_IRQ_CLUSTER1_MHU, \
22080f8769bSWerner Lewis 			GIC_HIGHEST_SEC_PRIORITY, grp, GIC_INTR_CFG_LEVEL), \
22180f8769bSWerner Lewis 	INTR_PROP_DESC(MORELLO_IRQ_P0_REFCLK, \
22280f8769bSWerner Lewis 			GIC_HIGHEST_SEC_PRIORITY, grp, GIC_INTR_CFG_LEVEL), \
22380f8769bSWerner Lewis 	INTR_PROP_DESC(MORELLO_IRQ_P1_REFCLK, \
22480f8769bSWerner Lewis 			GIC_HIGHEST_SEC_PRIORITY, grp, GIC_INTR_CFG_LEVEL)
22580f8769bSWerner Lewis 
226dfd5bfb0SChandni Cherukuri #define PLAT_ARM_G0_IRQ_PROPS(grp)		ARM_G0_IRQ_PROPS(grp)
227dfd5bfb0SChandni Cherukuri 
228dfd5bfb0SChandni Cherukuri #define MORELLO_DEVICE_BASE			ULL(0x08000000)
229dfd5bfb0SChandni Cherukuri #define MORELLO_DEVICE_SIZE			ULL(0x48000000)
230dfd5bfb0SChandni Cherukuri 
2314af53977SManoj Kumar /*Secure Watchdog Constants */
2324af53977SManoj Kumar #define SBSA_SECURE_WDOG_BASE			UL(0x2A480000)
2334af53977SManoj Kumar #define SBSA_SECURE_WDOG_TIMEOUT		UL(1000)
2344af53977SManoj Kumar 
235dfd5bfb0SChandni Cherukuri #define MORELLO_MAP_DEVICE			MAP_REGION_FLAT(	\
236dfd5bfb0SChandni Cherukuri 						MORELLO_DEVICE_BASE,	\
237dfd5bfb0SChandni Cherukuri 						MORELLO_DEVICE_SIZE,	\
238dfd5bfb0SChandni Cherukuri 						MT_DEVICE | MT_RW | MT_SECURE)
239dfd5bfb0SChandni Cherukuri 
240dfd5bfb0SChandni Cherukuri #define ARM_MAP_DRAM1				MAP_REGION_FLAT(	\
241dfd5bfb0SChandni Cherukuri 						ARM_DRAM1_BASE,		\
242dfd5bfb0SChandni Cherukuri 						ARM_DRAM1_SIZE,		\
243dfd5bfb0SChandni Cherukuri 						MT_MEMORY | MT_RW | MT_NS)
244dfd5bfb0SChandni Cherukuri 
245dfd5bfb0SChandni Cherukuri /* GIC related constants */
246dfd5bfb0SChandni Cherukuri #define PLAT_ARM_GICD_BASE			UL(0x30000000)
247dfd5bfb0SChandni Cherukuri #define PLAT_ARM_GICC_BASE			UL(0x2C000000)
248dfd5bfb0SChandni Cherukuri #define PLAT_ARM_GICR_BASE			UL(0x300C0000)
249dfd5bfb0SChandni Cherukuri 
2506c07a927SChandni Cherukuri /* Number of SCMI channels on the platform */
2516c07a927SChandni Cherukuri #define PLAT_ARM_SCMI_CHANNEL_COUNT		U(1)
2526c07a927SChandni Cherukuri 
253cc266bcdSChandni Cherukuri /* Platform ID address */
254cc266bcdSChandni Cherukuri #define SSC_VERSION				(SSC_REG_BASE + SSC_VERSION_OFFSET)
255cc266bcdSChandni Cherukuri 
256dfd5bfb0SChandni Cherukuri #endif /* PLATFORM_DEF_H */
257