xref: /rk3399_ARM-atf/plat/imx/imx9/imx95/include/platform_def.h (revision 480e8dd9df291cc0e31695983fa6ff235e1671cd)
1d70b09f8SPeng Fan /*
2d70b09f8SPeng Fan  * Copyright 2022-2025 NXP
3d70b09f8SPeng Fan  *
4d70b09f8SPeng Fan  * SPDX-License-Identifier: BSD-3-Clause
5d70b09f8SPeng Fan  */
6d70b09f8SPeng Fan #ifndef PLATFORM_DEF_H
7d70b09f8SPeng Fan #define PLATFORM_DEF_H
8d70b09f8SPeng Fan 
9d70b09f8SPeng Fan #include <lib/utils_def.h>
10d70b09f8SPeng Fan #include <lib/xlat_tables/xlat_tables_v2.h>
11d70b09f8SPeng Fan 
12d70b09f8SPeng Fan #include <imx95_scmi_def.h>
13d70b09f8SPeng Fan 
14d70b09f8SPeng Fan #define PLATFORM_LINKER_FORMAT		"elf64-littleaarch64"
15d70b09f8SPeng Fan #define PLATFORM_LINKER_ARCH		aarch64
16d70b09f8SPeng Fan 
17d70b09f8SPeng Fan #define PLATFORM_STACK_SIZE		0xB00
18d70b09f8SPeng Fan #define CACHE_WRITEBACK_GRANULE		64
19d70b09f8SPeng Fan 
20d70b09f8SPeng Fan #define PLAT_PRIMARY_CPU		U(0x0)
21d70b09f8SPeng Fan #define PLATFORM_MAX_CPU_PER_CLUSTER	U(6)
22d70b09f8SPeng Fan #define PLATFORM_CLUSTER_COUNT		U(1)
23d70b09f8SPeng Fan #define PLATFORM_CLUSTER0_CORE_COUNT	U(6)
24d70b09f8SPeng Fan #define PLATFORM_CORE_COUNT		U(6)
25d70b09f8SPeng Fan 
26d70b09f8SPeng Fan #define IMX_PWR_LVL0			MPIDR_AFFLVL0
27d70b09f8SPeng Fan 
28d70b09f8SPeng Fan #define PWR_DOMAIN_AT_MAX_LVL		U(1)
29d70b09f8SPeng Fan #define PLAT_MAX_PWR_LVL		U(2)
30d70b09f8SPeng Fan #define PLAT_MAX_OFF_STATE		U(4)
31d70b09f8SPeng Fan #define PLAT_MAX_RET_STATE		U(2)
32d70b09f8SPeng Fan 
33d70b09f8SPeng Fan /* DDR region 256KB */
34d70b09f8SPeng Fan #define BL31_BASE			U(0x8A200000)
35d70b09f8SPeng Fan #define BL31_LIMIT			U(0x8A240000)
36d70b09f8SPeng Fan 
37d70b09f8SPeng Fan /* non-secure uboot base */
38d70b09f8SPeng Fan /* TODO */
39d70b09f8SPeng Fan #define PLAT_NS_IMAGE_OFFSET		U(0x90200000)
40*7bde9a4eSSahil Malhotra #define BL32_FDT_OVERLAY_ADDR           (PLAT_NS_IMAGE_OFFSET + 0x3000000)
41d70b09f8SPeng Fan 
42d70b09f8SPeng Fan /* GICv4 base address */
43d70b09f8SPeng Fan #define PLAT_GICD_BASE			U(0x48000000)
44d70b09f8SPeng Fan #define PLAT_GICR_BASE			U(0x48060000)
45d70b09f8SPeng Fan #define PLAT_ARM_GICR_BASE		PLAT_GICR_BASE
46d70b09f8SPeng Fan #define PLAT_ARM_GICD_BASE		PLAT_GICD_BASE
47d70b09f8SPeng Fan 
48b182f709SJi Luo #define PLAT_VIRT_ADDR_SPACE_SIZE	(ULL(1) << 36)
49b182f709SJi Luo #define PLAT_PHY_ADDR_SPACE_SIZE	(ULL(1) << 36)
50d70b09f8SPeng Fan 
51b182f709SJi Luo #ifdef SPD_trusty
52b182f709SJi Luo #define MAX_XLAT_TABLES			17
53b182f709SJi Luo #define MAX_MMAP_REGIONS		35
54b182f709SJi Luo #else
55d70b09f8SPeng Fan #define MAX_XLAT_TABLES			14
56d70b09f8SPeng Fan #define MAX_MMAP_REGIONS		32
57b182f709SJi Luo #endif
58d70b09f8SPeng Fan 
59d70b09f8SPeng Fan #define IMX_LPUART_BASE			0x44380000
60d70b09f8SPeng Fan #define IMX_BOOT_UART_CLK_IN_HZ		24000000 /* Select 24MHz oscillator */
61d70b09f8SPeng Fan #define IMX_CONSOLE_BAUDRATE		115200
62d70b09f8SPeng Fan 
63d70b09f8SPeng Fan #define AIPSx_SIZE			U(0x800000)
64d70b09f8SPeng Fan #define AIPS1_BASE			U(0x44000000)
65d70b09f8SPeng Fan #define AIPS2_BASE			U(0x42000000)
66d70b09f8SPeng Fan #define AIPS3_BASE			U(0x42800000)
67d70b09f8SPeng Fan #define AIPS4_BASE			U(0x49000000)
68d70b09f8SPeng Fan #define MU_SECURE_BASE			U(0x44220000)
69d70b09f8SPeng Fan #define GPIO1_BASE			U(0x47400000)
70d70b09f8SPeng Fan #define GPIO2_BASE			U(0x43810000)
71d70b09f8SPeng Fan #define GPIO3_BASE			U(0x43820000)
72d70b09f8SPeng Fan #define GPIO4_BASE			U(0x43840000)
73d70b09f8SPeng Fan #define GPIO5_BASE			U(0x43850000)
74d70b09f8SPeng Fan #define WDOG3_BASE			U(0x42490000)
75d70b09f8SPeng Fan #define WDOG4_BASE			U(0x424A0000)
76d70b09f8SPeng Fan 
77d70b09f8SPeng Fan #define ELE_MU_BASE			U(0x47540000)
78d70b09f8SPeng Fan 
79d70b09f8SPeng Fan #define SMT_BUFFER_BASE			U(0x8A246000)
80d70b09f8SPeng Fan #define SMT_BUFFER_SIZE			0x1000
81d70b09f8SPeng Fan 
82d70b09f8SPeng Fan #define IMX9_SCMI_PAYLOAD_BASE		0x44221000
83d70b09f8SPeng Fan #define IMX9_MU1_BASE			0x44220000
84d70b09f8SPeng Fan #define MU_GCR_OFF			0x114
85d70b09f8SPeng Fan 
86f7e7ea1fSRanjani Vaidyanathan /* Used for GIC_WAKER sync between AP and SM. */
87f7e7ea1fSRanjani Vaidyanathan #define SM_AP_SEMA_ADDR			0x442213F8
88f7e7ea1fSRanjani Vaidyanathan 
89d70b09f8SPeng Fan #define GPIO_NUM			U(4)
90d70b09f8SPeng Fan #define PER_NUM				U(15)
91d70b09f8SPeng Fan #define WDOG_NUM			U(2)
92d70b09f8SPeng Fan 
93d70b09f8SPeng Fan #define NETC_IREC_PCI_INT_X0		U(304)
94d70b09f8SPeng Fan 
95d70b09f8SPeng Fan #define COUNTER_FREQUENCY		24000000
96d70b09f8SPeng Fan 
97b182f709SJi Luo #define TRUSTY_PARAMS_LEN_BYTES		(4096 * 2)
98b182f709SJi Luo #define IMX_TRUSTY_STACK_SIZE		0x200
99b182f709SJi Luo #define TRUSTY_SHARED_MEMORY_OBJ_SIZE	(12 * 1024)
100b182f709SJi Luo 
101d70b09f8SPeng Fan /*
102d70b09f8SPeng Fan  * Define a list of Group 1 Secure and Group 0 interrupt properties
103d70b09f8SPeng Fan  * as per GICv3 terminology.
104d70b09f8SPeng Fan  */
105d70b09f8SPeng Fan #define PLAT_ARM_G1S_IRQ_PROPS(grp) \
106d70b09f8SPeng Fan 	INTR_PROP_DESC(29U, GIC_HIGHEST_SEC_PRIORITY, grp,   \
107d70b09f8SPeng Fan 		       GIC_INTR_CFG_LEVEL)
108d70b09f8SPeng Fan 
109d70b09f8SPeng Fan #define PLAT_ARM_G0_IRQ_PROPS(grp) \
110d70b09f8SPeng Fan 	INTR_PROP_DESC(8U, GIC_HIGHEST_SEC_PRIORITY, \
111d70b09f8SPeng Fan 		       (grp), GIC_INTR_CFG_LEVEL)
112d70b09f8SPeng Fan 
113d70b09f8SPeng Fan /* memory mapping  */
114d70b09f8SPeng Fan #define AIPS2_MAP	MAP_REGION_FLAT(AIPS2_BASE, AIPSx_SIZE, MT_DEVICE | MT_RW)
115d70b09f8SPeng Fan #define GIC_MAP		MAP_REGION_FLAT(PLAT_GICD_BASE, 0x200000, MT_DEVICE | MT_RW)
116d70b09f8SPeng Fan #define AIPS1_MAP	MAP_REGION_FLAT(AIPS1_BASE, AIPSx_SIZE, MT_DEVICE | MT_RW)
117d70b09f8SPeng Fan #define GPIO2_MAP	MAP_REGION_FLAT(GPIO2_BASE, 0x20000, MT_DEVICE | MT_RW)
118d70b09f8SPeng Fan #define GPIO4_MAP	MAP_REGION_FLAT(GPIO4_BASE, 0x20000, MT_DEVICE | MT_RW)
119d70b09f8SPeng Fan #define ELE_MAP		MAP_REGION_FLAT(ELE_MU_BASE, 0x10000, MT_DEVICE | MT_RW)
120d70b09f8SPeng Fan 
121d70b09f8SPeng Fan #endif /* PLATFORM_DEF_H */
122