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