xref: /rk3399_ARM-atf/plat/imx/imx8m/imx8mq/include/platform_def.h (revision 613892cfefaba655cfa6548488d086be0a2f3b47)
181136819SBai Ping /*
2a18e3933SJi Luo  * Copyright (c) 2018-2022, ARM Limited and Contributors. All rights reserved.
381136819SBai Ping  *
481136819SBai Ping  * SPDX-License-Identifier: BSD-3-Clause
581136819SBai Ping  */
681136819SBai Ping 
7dd108c3cSJacky Bai #include <lib/utils_def.h>
80445a4abSLucas Stach #include <plat/common/common_def.h>
90445a4abSLucas Stach 
1081136819SBai Ping #define PLATFORM_LINKER_FORMAT		"elf64-littleaarch64"
1181136819SBai Ping #define PLATFORM_LINKER_ARCH		aarch64
1281136819SBai Ping 
133a36f70bSJacky Bai #define PLATFORM_STACK_SIZE		0xb00
1481136819SBai Ping #define CACHE_WRITEBACK_GRANULE		64
1581136819SBai Ping 
167a57188bSDeepika Bhavnani #define PLAT_PRIMARY_CPU		U(0x0)
177a57188bSDeepika Bhavnani #define PLATFORM_MAX_CPU_PER_CLUSTER	U(4)
187a57188bSDeepika Bhavnani #define PLATFORM_CLUSTER_COUNT		U(1)
197a57188bSDeepika Bhavnani #define PLATFORM_CLUSTER0_CORE_COUNT	U(4)
207a57188bSDeepika Bhavnani #define PLATFORM_CLUSTER1_CORE_COUNT	U(0)
2181136819SBai Ping #define PLATFORM_CORE_COUNT		(PLATFORM_CLUSTER0_CORE_COUNT)
2281136819SBai Ping 
2381136819SBai Ping #define IMX_PWR_LVL0			MPIDR_AFFLVL0
2481136819SBai Ping #define IMX_PWR_LVL1			MPIDR_AFFLVL1
2581136819SBai Ping #define IMX_PWR_LVL2			MPIDR_AFFLVL2
2681136819SBai Ping 
2781136819SBai Ping #define PWR_DOMAIN_AT_MAX_LVL		U(1)
2881136819SBai Ping #define PLAT_MAX_PWR_LVL		U(2)
2981136819SBai Ping #define PLAT_MAX_OFF_STATE		U(4)
3081136819SBai Ping #define PLAT_MAX_RET_STATE		U(1)
3181136819SBai Ping 
32e8837b0aSJacky Bai #define PLAT_WAIT_RET_STATE		PLAT_MAX_RET_STATE
3381136819SBai Ping #define PLAT_WAIT_OFF_STATE		U(2)
3481136819SBai Ping #define PLAT_STOP_OFF_STATE		U(3)
3581136819SBai Ping 
3681136819SBai Ping #define BL31_BASE			U(0x910000)
370445a4abSLucas Stach #define BL31_SIZE			SZ_64K
380445a4abSLucas Stach #define BL31_LIMIT			(BL31_BASE + BL31_SIZE)
3981136819SBai Ping 
40*1b65be59SJacky Bai #define OCRAM_S_BASE			U(0x180000)
41*1b65be59SJacky Bai #define OCRAM_S_SIZE			SZ_32K
42*1b65be59SJacky Bai #define OCRAM_S_LIMIT			(OCRAM_S_BASE + OCRAM_S_SIZE)
43*1b65be59SJacky Bai #define BL31_NOBITS_BASE		OCRAM_S_BASE
44*1b65be59SJacky Bai #define BL31_NOBITS_LIMIT		(BL31_NOBITS_BASE + SZ_32K)
45*1b65be59SJacky Bai 
4681136819SBai Ping /* non-secure uboot base */
479260a8c8SMarco Felsch #ifndef PLAT_NS_IMAGE_OFFSET
4881136819SBai Ping #define PLAT_NS_IMAGE_OFFSET		U(0x40200000)
499260a8c8SMarco Felsch #endif
50023750c6SSilvano di Ninno #define BL32_FDT_OVERLAY_ADDR		(PLAT_NS_IMAGE_OFFSET + 0x3000000)
5181136819SBai Ping 
5281136819SBai Ping /* GICv3 base address */
5381136819SBai Ping #define PLAT_GICD_BASE			U(0x38800000)
5481136819SBai Ping #define PLAT_GICR_BASE			U(0x38880000)
5581136819SBai Ping 
5681136819SBai Ping #define PLAT_VIRT_ADDR_SPACE_SIZE	(1ull << 32)
5781136819SBai Ping #define PLAT_PHY_ADDR_SPACE_SIZE	(1ull << 32)
5881136819SBai Ping 
59a18e3933SJi Luo #ifdef SPD_trusty
60a18e3933SJi Luo #define MAX_XLAT_TABLES			5
61a18e3933SJi Luo #define MAX_MMAP_REGIONS		15
62a18e3933SJi Luo #else
63*1b65be59SJacky Bai #define MAX_XLAT_TABLES			3
6481136819SBai Ping #define MAX_MMAP_REGIONS		14
65a18e3933SJi Luo #endif
6681136819SBai Ping 
6781136819SBai Ping #define HAB_RVT_BASE			U(0x00000880) /* HAB_RVT for i.MX8MQ */
6881136819SBai Ping 
6981136819SBai Ping #define IMX_BOOT_UART_CLK_IN_HZ		25000000 /* Select 25Mhz oscillator */
7081136819SBai Ping #define PLAT_CRASH_UART_BASE		IMX_BOOT_UART_BASE
7181136819SBai Ping #define PLAT_CRASH_UART_CLK_IN_HZ	25000000
7281136819SBai Ping #define IMX_CONSOLE_BAUDRATE		115200
7381136819SBai Ping 
7489345562SDario Binacchi #define IMX_UART1_BASE			U(0x30860000)
7589345562SDario Binacchi #define IMX_UART2_BASE			U(0x30890000)
7689345562SDario Binacchi #define IMX_UART3_BASE			U(0x30880000)
7789345562SDario Binacchi #define IMX_UART4_BASE			U(0x30a60000)
7889345562SDario Binacchi 
7981136819SBai Ping #define IMX_AIPS_BASE			U(0x30200000)
8081136819SBai Ping #define IMX_AIPS_SIZE			U(0xC00000)
8181136819SBai Ping #define IMX_AIPS1_BASE			U(0x30200000)
8281136819SBai Ping #define IMX_AIPS3_ARB_BASE		U(0x30800000)
8372196cbbSLeonard Crestez #define IMX_OCOTP_BASE			U(0x30350000)
8481136819SBai Ping #define IMX_ANAMIX_BASE			U(0x30360000)
8581136819SBai Ping #define IMX_CCM_BASE			U(0x30380000)
8681136819SBai Ping #define IMX_SRC_BASE			U(0x30390000)
8781136819SBai Ping #define IMX_GPC_BASE			U(0x303a0000)
8881136819SBai Ping #define IMX_RDC_BASE			U(0x303d0000)
8981136819SBai Ping #define IMX_CSU_BASE			U(0x303e0000)
9081136819SBai Ping #define IMX_WDOG_BASE			U(0x30280000)
9181136819SBai Ping #define IMX_SNVS_BASE			U(0x30370000)
9281136819SBai Ping #define IMX_NOC_BASE			U(0x32700000)
9381136819SBai Ping #define IMX_TZASC_BASE			U(0x32F80000)
942502709fSJacky Bai #define IMX_CAAM_BASE			U(0x30900000)
9581136819SBai Ping #define IMX_IOMUX_GPR_BASE		U(0x30340000)
9681136819SBai Ping #define IMX_DDRC_BASE			U(0x3d400000)
9781136819SBai Ping #define IMX_DDRPHY_BASE			U(0x3c000000)
9881136819SBai Ping #define IMX_DDR_IPS_BASE		U(0x3d000000)
99dd108c3cSJacky Bai #define IMX_DDR_IPS_SIZE		U(0x1800000)
100dd108c3cSJacky Bai #define IMX_DRAM_BASE			U(0x40000000)
101dd108c3cSJacky Bai #define IMX_DRAM_SIZE			U(0xc0000000)
1023a36f70bSJacky Bai #define IMX_NS_OCRAM_BASE		U(0x900000)
1033a36f70bSJacky Bai #define IMX_NS_OCRAM_SIZE		U(0x20000)
1043a36f70bSJacky Bai #define IMX_CAAM_RAM_BASE		U(0x100000)
1053a36f70bSJacky Bai #define IMX_CAAM_RAM_SIZE		U(0x10000)
10681136819SBai Ping #define IMX_ROM_BASE			U(0x00000000)
10772196cbbSLeonard Crestez #define IMX_ROM_SIZE			U(0x20000)
10881136819SBai Ping 
10981136819SBai Ping #define AIPSTZ1_BASE			U(0x301f0000)
11081136819SBai Ping #define AIPSTZ2_BASE			U(0x305f0000)
11181136819SBai Ping #define AIPSTZ3_BASE			U(0x309f0000)
11281136819SBai Ping #define AIPSTZ4_BASE			U(0x32df0000)
11381136819SBai Ping 
11481136819SBai Ping #define GPV_BASE			U(0x32000000)
11581136819SBai Ping #define GPV_SIZE			U(0x800000)
11681136819SBai Ping #define IMX_GIC_BASE			PLAT_GICD_BASE
11781136819SBai Ping #define IMX_GIC_SIZE			U(0x200000)
11881136819SBai Ping 
11981136819SBai Ping #define WDOG_WSR			U(0x2)
12081136819SBai Ping #define WDOG_WCR_WDZST			BIT(0)
12181136819SBai Ping #define WDOG_WCR_WDBG			BIT(1)
12281136819SBai Ping #define WDOG_WCR_WDE			BIT(2)
12381136819SBai Ping #define WDOG_WCR_WDT			BIT(3)
12481136819SBai Ping #define WDOG_WCR_SRS			BIT(4)
12581136819SBai Ping #define WDOG_WCR_WDA			BIT(5)
12681136819SBai Ping #define WDOG_WCR_SRE			BIT(6)
12781136819SBai Ping #define WDOG_WCR_WDW			BIT(7)
12881136819SBai Ping 
12981136819SBai Ping #define SRC_A53RCR0			U(0x4)
13081136819SBai Ping #define SRC_A53RCR1			U(0x8)
13181136819SBai Ping #define SRC_OTG1PHY_SCR			U(0x20)
13281136819SBai Ping #define SRC_OTG2PHY_SCR			U(0x24)
13381136819SBai Ping #define SRC_GPR1_OFFSET			U(0x74)
1349ce232feSIgor Opaniuk #define SRC_GPR10_OFFSET		U(0x98)
1359ce232feSIgor Opaniuk #define SRC_GPR10_PERSIST_SECONDARY_BOOT	BIT(30)
13681136819SBai Ping 
13781136819SBai Ping #define SNVS_LPCR			U(0x38)
13881136819SBai Ping #define SNVS_LPCR_SRTC_ENV		BIT(0)
13981136819SBai Ping #define SNVS_LPCR_DP_EN			BIT(5)
14081136819SBai Ping #define SNVS_LPCR_TOP			BIT(6)
14181136819SBai Ping 
142dd108c3cSJacky Bai #define SAVED_DRAM_TIMING_BASE		U(0x40000000)
143dd108c3cSJacky Bai 
144dd108c3cSJacky Bai #define HW_DRAM_PLL_CFG0		(IMX_ANAMIX_BASE + 0x60)
145dd108c3cSJacky Bai #define HW_DRAM_PLL_CFG1		(IMX_ANAMIX_BASE + 0x64)
146dd108c3cSJacky Bai #define HW_DRAM_PLL_CFG2		(IMX_ANAMIX_BASE + 0x68)
147dd108c3cSJacky Bai #define DRAM_PLL_CTRL			HW_DRAM_PLL_CFG0
14881136819SBai Ping 
14981136819SBai Ping #define IOMUXC_GPR10			U(0x28)
15081136819SBai Ping #define GPR_TZASC_EN			BIT(0)
15181136819SBai Ping #define GPR_TZASC_EN_LOCK		BIT(16)
15281136819SBai Ping 
15321189b8eSLucas Stach #define COUNTER_FREQUENCY		8333333 /* 25MHz / 3 */
15481136819SBai Ping 
15581136819SBai Ping #define IMX_WDOG_B_RESET
156