1PLATFORM_FLAVOR ?= mx6ulevk 2 3# Get SoC associated with the PLATFORM_FLAVOR 4mx6ul-flavorlist = \ 5 mx6ulevk \ 6 mx6ul9x9evk \ 7 mx6ulccimx6ulsbcpro \ 8 9mx6ull-flavorlist = \ 10 mx6ullevk \ 11 12mx6q-flavorlist = \ 13 mx6qsabrelite \ 14 mx6qsabreauto \ 15 mx6qsabresd \ 16 mx6qhmbedge \ 17 18mx6qp-flavorlist = \ 19 mx6qpsabreauto \ 20 mx6qpsabresd \ 21 22mx6sx-flavorlist = \ 23 mx6sxsabreauto \ 24 mx6sxsabresd \ 25 mx6sxudooneofull \ 26 27mx6d-flavorlist = \ 28 mx6dhmbedge \ 29 30mx6dl-flavorlist = \ 31 mx6dlsabreauto \ 32 mx6dlsabresd \ 33 mx6dlhmbedge \ 34 35mx6s-flavorlist = \ 36 mx6shmbedge \ 37 mx6solosabresd \ 38 mx6solosabreauto \ 39 40mx7d-flavorlist = \ 41 mx7dsabresd \ 42 mx7dpico_mbl \ 43 mx7dclsom \ 44 45mx7s-flavorlist = \ 46 mx7swarp7 \ 47 mx7swarp7_mbl \ 48 49imx8mq-flavorlist = \ 50 imx8mqevk 51 52imx8mm-flavorlist = \ 53 imx8mmevk 54 55ifneq (,$(filter $(PLATFORM_FLAVOR),$(mx6ul-flavorlist))) 56$(call force,CFG_MX6,y) 57$(call force,CFG_MX6UL,y) 58$(call force,CFG_TEE_CORE_NB_CORE,1) 59include core/arch/arm/cpu/cortex-a7.mk 60else ifneq (,$(filter $(PLATFORM_FLAVOR),$(mx6ull-flavorlist))) 61$(call force,CFG_MX6,y) 62$(call force,CFG_MX6ULL,y) 63$(call force,CFG_TEE_CORE_NB_CORE,1) 64$(call force,CFG_IMX_CAAM,n) 65include core/arch/arm/cpu/cortex-a7.mk 66else ifneq (,$(filter $(PLATFORM_FLAVOR),$(mx6q-flavorlist))) 67$(call force,CFG_MX6,y) 68$(call force,CFG_MX6Q,y) 69$(call force,CFG_TEE_CORE_NB_CORE,4) 70else ifneq (,$(filter $(PLATFORM_FLAVOR),$(mx6qp-flavorlist))) 71$(call force,CFG_MX6,y) 72$(call force,CFG_MX6QP,y) 73$(call force,CFG_TEE_CORE_NB_CORE,4) 74else ifneq (,$(filter $(PLATFORM_FLAVOR),$(mx6d-flavorlist))) 75$(call force,CFG_MX6,y) 76$(call force,CFG_MX6D,y) 77$(call force,CFG_TEE_CORE_NB_CORE,2) 78else ifneq (,$(filter $(PLATFORM_FLAVOR),$(mx6dl-flavorlist))) 79$(call force,CFG_MX6,y) 80$(call force,CFG_MX6DL,y) 81$(call force,CFG_TEE_CORE_NB_CORE,2) 82else ifneq (,$(filter $(PLATFORM_FLAVOR),$(mx6s-flavorlist))) 83$(call force,CFG_MX6,y) 84$(call force,CFG_MX6S,y) 85$(call force,CFG_TEE_CORE_NB_CORE,1) 86else ifneq (,$(filter $(PLATFORM_FLAVOR),$(mx6sx-flavorlist))) 87$(call force,CFG_MX6,y) 88$(call force,CFG_MX6SX,y) 89$(call force,CFG_TEE_CORE_NB_CORE,1) 90else ifneq (,$(filter $(PLATFORM_FLAVOR),$(mx7s-flavorlist))) 91$(call force,CFG_MX7,y) 92$(call force,CFG_TEE_CORE_NB_CORE,1) 93include core/arch/arm/cpu/cortex-a7.mk 94else ifneq (,$(filter $(PLATFORM_FLAVOR),$(mx7d-flavorlist))) 95$(call force,CFG_MX7,y) 96$(call force,CFG_TEE_CORE_NB_CORE,2) 97include core/arch/arm/cpu/cortex-a7.mk 98else ifneq (,$(filter $(PLATFORM_FLAVOR),$(imx8mq-flavorlist))) 99$(call force,CFG_IMX8MQ,y) 100$(call force,CFG_ARM64_core,y) 101CFG_IMX_UART ?= y 102CFG_DRAM_BASE ?= 0x40000000 103CFG_TEE_CORE_NB_CORE ?= 4 104else ifneq (,$(filter $(PLATFORM_FLAVOR),$(imx8mm-flavorlist))) 105$(call force,CFG_IMX8MM,y) 106$(call force,CFG_ARM64_core,y) 107CFG_IMX_UART ?= y 108CFG_DRAM_BASE ?= 0x40000000 109CFG_TEE_CORE_NB_CORE ?= 4 110else 111$(error Unsupported PLATFORM_FLAVOR "$(PLATFORM_FLAVOR)") 112endif 113 114ifneq (,$(filter $(PLATFORM_FLAVOR),mx7dsabresd)) 115CFG_DDR_SIZE ?= 0x40000000 116CFG_NS_ENTRY_ADDR ?= 0x80800000 117endif 118 119ifneq (,$(filter $(PLATFORM_FLAVOR),mx7dclsom)) 120CFG_DDR_SIZE ?= 0x40000000 121CFG_UART_BASE ?= UART1_BASE 122endif 123 124ifneq (,$(filter $(PLATFORM_FLAVOR),mx7dpico_mbl)) 125CFG_DDR_SIZE ?= 0x20000000 126CFG_NS_ENTRY_ADDR ?= 0x87800000 127CFG_DT_ADDR ?= 0x83100000 128CFG_UART_BASE ?= UART5_BASE 129CFG_BOOT_SECONDARY_REQUEST ?= n 130CFG_EXTERNAL_DTB_OVERLAY ?= y 131CFG_IMX_WDOG_EXT_RESET ?= y 132endif 133 134ifneq (,$(filter $(PLATFORM_FLAVOR),mx7swarp7)) 135CFG_DDR_SIZE ?= 0x20000000 136CFG_NS_ENTRY_ADDR ?= 0x80800000 137CFG_BOOT_SECONDARY_REQUEST ?= n 138endif 139 140ifneq (,$(filter $(PLATFORM_FLAVOR),mx7swarp7_mbl)) 141CFG_DDR_SIZE ?= 0x20000000 142CFG_NS_ENTRY_ADDR ?= 0x87800000 143CFG_DT_ADDR ?= 0x83100000 144CFG_BOOT_SECONDARY_REQUEST ?= n 145CFG_EXTERNAL_DTB_OVERLAY = y 146CFG_IMX_WDOG_EXT_RESET = y 147endif 148 149ifneq (,$(filter $(PLATFORM_FLAVOR),mx6qpsabresd mx6qsabresd mx6dlsabresd \ 150 mx6dlsabrelite mx6dhmbedge mx6dlhmbedge mx6solosabresd)) 151CFG_DDR_SIZE ?= 0x40000000 152CFG_NS_ENTRY_ADDR ?= 0x12000000 153endif 154 155ifneq (,$(filter $(PLATFORM_FLAVOR),mx6qpsabreauto mx6qsabreauto \ 156 mx6dlsabreauto mx6solosabreauto)) 157CFG_DDR_SIZE ?= 0x80000000 158CFG_NS_ENTRY_ADDR ?= 0x12000000 159endif 160 161ifneq (,$(filter $(PLATFORM_FLAVOR),mx6qhmbedge)) 162CFG_DDR_SIZE ?= 0x80000000 163CFG_UART_BASE ?= UART1_BASE 164endif 165 166ifneq (,$(filter $(PLATFORM_FLAVOR),mx6shmbedge)) 167CFG_DDR_SIZE ?= 0x40000000 168CFG_NS_ENTRY_ADDR ?= 0x12000000 169endif 170 171ifneq (,$(filter $(PLATFORM_FLAVOR),mx6qsabrelite mx6dlsabrelite)) 172CFG_DDR_SIZE ?= 0x40000000 173CFG_NS_ENTRY_ADDR ?= 0x12000000 174CFG_UART_BASE ?= UART2_BASE 175endif 176 177ifneq (,$(filter $(PLATFORM_FLAVOR),mx6sxsabreauto)) 178CFG_DDR_SIZE ?= 0x80000000 179CFG_NS_ENTRY_ADDR ?= 0x80800000 180endif 181 182ifneq (,$(filter $(PLATFORM_FLAVOR),mx6sxsabresd)) 183CFG_DDR_SIZE ?= 0x40000000 184CFG_NS_ENTRY_ADDR ?= 0x80800000 185endif 186 187ifeq ($(PLATFORM_FLAVOR), mx6sxudooneofull) 188CFG_DDR_SIZE ?= 0x40000000 189CFG_UART_BASE ?= UART1_BASE 190endif 191 192ifneq (,$(filter $(PLATFORM_FLAVOR),mx6ulevk mx6ullevk)) 193CFG_DDR_SIZE ?= 0x20000000 194CFG_NS_ENTRY_ADDR ?= 0x80800000 195endif 196 197ifneq (,$(filter $(PLATFORM_FLAVOR),mx6ulccimx6ulsbcpro)) 198CFG_DDR_SIZE ?= 0x10000000 199CFG_NS_ENTRY_ADDR ?= 0x80800000 200CFG_UART_BASE ?= UART5_BASE 201endif 202 203ifneq (,$(filter $(PLATFORM_FLAVOR),mx6ul9x9evk)) 204CFG_DDR_SIZE ?= 0x10000000 205CFG_NS_ENTRY_ADDR ?= 0x80800000 206endif 207 208ifneq (,$(filter $(PLATFORM_FLAVOR),imx8mqevk)) 209CFG_DDR_SIZE ?= 0xc0000000 210CFG_UART_BASE ?= UART1_BASE 211endif 212 213ifneq (,$(filter $(PLATFORM_FLAVOR),imx8mmevk)) 214CFG_DDR_SIZE ?= 0x80000000 215CFG_UART_BASE ?= UART2_BASE 216endif 217 218# i.MX6 Solo/SoloX/DualLite/Dual/Quad specific config 219ifeq ($(filter y, $(CFG_MX6QP) $(CFG_MX6Q) $(CFG_MX6D) $(CFG_MX6DL) $(CFG_MX6S) \ 220 $(CFG_MX6SX)), y) 221include core/arch/arm/cpu/cortex-a9.mk 222 223$(call force,CFG_PL310,y) 224 225CFG_PL310_LOCKED ?= y 226CFG_ENABLE_SCTLR_RR ?= y 227CFG_SCU ?= y 228endif 229 230ifeq ($(filter y, $(CFG_MX6QP) $(CFG_MX6Q) $(CFG_MX6D) $(CFG_MX6DL) $(CFG_MX6S)), y) 231CFG_DRAM_BASE ?= 0x10000000 232endif 233 234ifneq (,$(filter y, $(CFG_MX6UL) $(CFG_MX6ULL) $(CFG_MX6SX))) 235CFG_DRAM_BASE ?= 0x80000000 236endif 237 238ifeq ($(filter y, $(CFG_MX7)), y) 239CFG_INIT_CNTVOFF ?= y 240CFG_DRAM_BASE ?= 0x80000000 241endif 242 243ifneq (,$(filter y, $(CFG_MX6) $(CFG_MX7))) 244$(call force,CFG_GENERIC_BOOT,y) 245$(call force,CFG_GIC,y) 246$(call force,CFG_IMX_UART,y) 247$(call force,CFG_PM_STUBS,y) 248$(call force,CFG_WITH_SOFTWARE_PRNG,y) 249 250CFG_BOOT_SYNC_CPU ?= n 251CFG_BOOT_SECONDARY_REQUEST ?= y 252CFG_DT ?= y 253CFG_PAGEABLE_ADDR ?= 0 254CFG_PSCI_ARM32 ?= y 255CFG_SECURE_TIME_SOURCE_REE ?= y 256CFG_CSU ?= y 257CFG_UART_BASE ?= UART1_BASE 258CFG_IMX_CAAM ?= y 259endif 260 261ifeq ($(filter y, $(CFG_PSCI_ARM32)), y) 262CFG_HWSUPP_MEM_PERM_WXN = n 263CFG_IMX_WDOG ?= y 264endif 265 266ifeq ($(CFG_ARM64_core),y) 267# arm-v8 platforms 268include core/arch/arm/cpu/cortex-armv8-0.mk 269$(call force,CFG_ARM_GICV3,y) 270$(call force,CFG_GENERIC_BOOT,y) 271$(call force,CFG_GIC,y) 272$(call force,CFG_WITH_LPAE,y) 273$(call force,CFG_WITH_ARM_TRUSTED_FW,y) 274$(call force,CFG_SECURE_TIME_SOURCE_CNTPCT,y) 275 276CFG_CRYPTO_WITH_CE ?= y 277CFG_PM_STUBS ?= y 278 279supported-ta-targets = ta_arm64 280endif 281 282CFG_TZDRAM_START ?= ($(CFG_DRAM_BASE) - 0x02000000 + $(CFG_DDR_SIZE)) 283CFG_TZDRAM_SIZE ?= 0x01e00000 284CFG_SHMEM_START ?= ($(CFG_TZDRAM_START) + $(CFG_TZDRAM_SIZE)) 285CFG_SHMEM_SIZE ?= 0x00200000 286 287CFG_CRYPTO_SIZE_OPTIMIZATION ?= n 288CFG_WITH_STACK_CANARIES ?= y 289CFG_MMAP_REGIONS ?= 24 290