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 22mx6sl-flavorlist = \ 23 mx6slevk 24 25mx6sll-flavorlist = \ 26 mx6sllevk 27 28mx6sx-flavorlist = \ 29 mx6sxsabreauto \ 30 mx6sxsabresd \ 31 mx6sxudooneofull \ 32 33mx6d-flavorlist = \ 34 mx6dhmbedge \ 35 36mx6dl-flavorlist = \ 37 mx6dlsabreauto \ 38 mx6dlsabresd \ 39 mx6dlhmbedge \ 40 41mx6s-flavorlist = \ 42 mx6shmbedge \ 43 mx6solosabresd \ 44 mx6solosabreauto \ 45 46mx7d-flavorlist = \ 47 mx7dsabresd \ 48 mx7dpico_mbl \ 49 mx7dclsom \ 50 51mx7s-flavorlist = \ 52 mx7swarp7 \ 53 mx7swarp7_mbl \ 54 55mx7ulp-flavorlist = \ 56 mx7ulpevk 57 58imx8mq-flavorlist = \ 59 imx8mqevk 60 61imx8mm-flavorlist = \ 62 imx8mmevk 63 64imx8qm-flavorlist = \ 65 imx8qmmek \ 66 67imx8qx-flavorlist = \ 68 imx8qxpmek \ 69 70ifneq (,$(filter $(PLATFORM_FLAVOR),$(mx6ul-flavorlist))) 71$(call force,CFG_MX6,y) 72$(call force,CFG_MX6UL,y) 73$(call force,CFG_TEE_CORE_NB_CORE,1) 74include core/arch/arm/cpu/cortex-a7.mk 75else ifneq (,$(filter $(PLATFORM_FLAVOR),$(mx6ull-flavorlist))) 76$(call force,CFG_MX6,y) 77$(call force,CFG_MX6ULL,y) 78$(call force,CFG_TEE_CORE_NB_CORE,1) 79$(call force,CFG_IMX_CAAM,n) 80include core/arch/arm/cpu/cortex-a7.mk 81else ifneq (,$(filter $(PLATFORM_FLAVOR),$(mx6q-flavorlist))) 82$(call force,CFG_MX6,y) 83$(call force,CFG_MX6Q,y) 84$(call force,CFG_TEE_CORE_NB_CORE,4) 85else ifneq (,$(filter $(PLATFORM_FLAVOR),$(mx6qp-flavorlist))) 86$(call force,CFG_MX6,y) 87$(call force,CFG_MX6QP,y) 88$(call force,CFG_TEE_CORE_NB_CORE,4) 89else ifneq (,$(filter $(PLATFORM_FLAVOR),$(mx6d-flavorlist))) 90$(call force,CFG_MX6,y) 91$(call force,CFG_MX6D,y) 92$(call force,CFG_TEE_CORE_NB_CORE,2) 93else ifneq (,$(filter $(PLATFORM_FLAVOR),$(mx6dl-flavorlist))) 94$(call force,CFG_MX6,y) 95$(call force,CFG_MX6DL,y) 96$(call force,CFG_TEE_CORE_NB_CORE,2) 97else ifneq (,$(filter $(PLATFORM_FLAVOR),$(mx6s-flavorlist))) 98$(call force,CFG_MX6,y) 99$(call force,CFG_MX6S,y) 100$(call force,CFG_TEE_CORE_NB_CORE,1) 101else ifneq (,$(filter $(PLATFORM_FLAVOR),$(mx6sl-flavorlist))) 102$(call force,CFG_MX6,y) 103$(call force,CFG_MX6SL,y) 104$(call force,CFG_TEE_CORE_NB_CORE,1) 105$(call force,CFG_IMX_CAAM,n) 106else ifneq (,$(filter $(PLATFORM_FLAVOR),$(mx6sll-flavorlist))) 107$(call force,CFG_MX6,y) 108$(call force,CFG_MX6SLL,y) 109$(call force,CFG_TEE_CORE_NB_CORE,1) 110$(call force,CFG_IMX_CAAM,n) 111else ifneq (,$(filter $(PLATFORM_FLAVOR),$(mx6sx-flavorlist))) 112$(call force,CFG_MX6,y) 113$(call force,CFG_MX6SX,y) 114$(call force,CFG_TEE_CORE_NB_CORE,1) 115else ifneq (,$(filter $(PLATFORM_FLAVOR),$(mx7s-flavorlist))) 116$(call force,CFG_MX7,y) 117$(call force,CFG_TEE_CORE_NB_CORE,1) 118include core/arch/arm/cpu/cortex-a7.mk 119else ifneq (,$(filter $(PLATFORM_FLAVOR),$(mx7d-flavorlist))) 120$(call force,CFG_MX7,y) 121$(call force,CFG_TEE_CORE_NB_CORE,2) 122include core/arch/arm/cpu/cortex-a7.mk 123else ifneq (,$(filter $(PLATFORM_FLAVOR),$(mx7ulp-flavorlist))) 124$(call force,CFG_MX7ULP,y) 125$(call force,CFG_TEE_CORE_NB_CORE,1) 126$(call force,CFG_TZC380,n) 127$(call force,CFG_CSU,n) 128include core/arch/arm/cpu/cortex-a7.mk 129else ifneq (,$(filter $(PLATFORM_FLAVOR),$(imx8mq-flavorlist))) 130$(call force,CFG_IMX8MQ,y) 131$(call force,CFG_ARM64_core,y) 132CFG_IMX_UART ?= y 133CFG_DRAM_BASE ?= 0x40000000 134CFG_TEE_CORE_NB_CORE ?= 4 135else ifneq (,$(filter $(PLATFORM_FLAVOR),$(imx8mm-flavorlist))) 136$(call force,CFG_IMX8MM,y) 137$(call force,CFG_ARM64_core,y) 138CFG_IMX_UART ?= y 139CFG_DRAM_BASE ?= 0x40000000 140CFG_TEE_CORE_NB_CORE ?= 4 141else ifneq (,$(filter $(PLATFORM_FLAVOR),$(imx8qm-flavorlist))) 142$(call force,CFG_IMX8QM,y) 143$(call force,CFG_ARM64_core,y) 144$(call force,CFG_IMX_SNVS,n) 145CFG_IMX_LPUART ?= y 146CFG_DRAM_BASE ?= 0x40000000 147CFG_TEE_CORE_NB_CORE ?= 6 148else ifneq (,$(filter $(PLATFORM_FLAVOR),$(imx8qx-flavorlist))) 149$(call force,CFG_IMX8QX,y) 150$(call force,CFG_ARM64_core,y) 151CFG_IMX_LPUART ?= y 152CFG_DRAM_BASE ?= 0x40000000 153CFG_TEE_CORE_NB_CORE ?= 4 154else 155$(error Unsupported PLATFORM_FLAVOR "$(PLATFORM_FLAVOR)") 156endif 157 158ifneq (,$(filter $(PLATFORM_FLAVOR),mx7dsabresd)) 159CFG_DDR_SIZE ?= 0x40000000 160CFG_NS_ENTRY_ADDR ?= 0x80800000 161endif 162 163ifneq (,$(filter $(PLATFORM_FLAVOR),mx7dclsom)) 164CFG_DDR_SIZE ?= 0x40000000 165CFG_UART_BASE ?= UART1_BASE 166endif 167 168ifneq (,$(filter $(PLATFORM_FLAVOR),mx7dpico_mbl)) 169CFG_DDR_SIZE ?= 0x20000000 170CFG_NS_ENTRY_ADDR ?= 0x87800000 171CFG_DT_ADDR ?= 0x83100000 172CFG_UART_BASE ?= UART5_BASE 173CFG_BOOT_SECONDARY_REQUEST ?= n 174CFG_EXTERNAL_DTB_OVERLAY ?= y 175CFG_IMX_WDOG_EXT_RESET ?= y 176endif 177 178ifneq (,$(filter $(PLATFORM_FLAVOR),mx7swarp7)) 179CFG_DDR_SIZE ?= 0x20000000 180CFG_NS_ENTRY_ADDR ?= 0x80800000 181CFG_BOOT_SECONDARY_REQUEST ?= n 182endif 183 184ifneq (,$(filter $(PLATFORM_FLAVOR),mx7swarp7_mbl)) 185CFG_DDR_SIZE ?= 0x20000000 186CFG_NS_ENTRY_ADDR ?= 0x87800000 187CFG_DT_ADDR ?= 0x83100000 188CFG_BOOT_SECONDARY_REQUEST ?= n 189CFG_EXTERNAL_DTB_OVERLAY = y 190CFG_IMX_WDOG_EXT_RESET = y 191endif 192 193ifneq (,$(filter $(PLATFORM_FLAVOR),mx7ulpevk)) 194CFG_DDR_SIZE ?= 0x40000000 195CFG_NS_ENTRY_ADDR ?= 0x60800000 196CFG_UART_BASE ?= UART4_BASE 197endif 198 199ifneq (,$(filter $(PLATFORM_FLAVOR),mx6qpsabresd mx6qsabresd mx6dlsabresd \ 200 mx6dlsabrelite mx6dhmbedge mx6dlhmbedge mx6solosabresd)) 201CFG_DDR_SIZE ?= 0x40000000 202CFG_NS_ENTRY_ADDR ?= 0x12000000 203endif 204 205ifneq (,$(filter $(PLATFORM_FLAVOR),mx6qpsabreauto mx6qsabreauto \ 206 mx6dlsabreauto mx6solosabreauto)) 207CFG_DDR_SIZE ?= 0x80000000 208CFG_NS_ENTRY_ADDR ?= 0x12000000 209endif 210 211ifneq (,$(filter $(PLATFORM_FLAVOR),mx6qhmbedge)) 212CFG_DDR_SIZE ?= 0x80000000 213CFG_UART_BASE ?= UART1_BASE 214endif 215 216ifneq (,$(filter $(PLATFORM_FLAVOR),mx6shmbedge)) 217CFG_DDR_SIZE ?= 0x40000000 218CFG_NS_ENTRY_ADDR ?= 0x12000000 219endif 220 221ifneq (,$(filter $(PLATFORM_FLAVOR),mx6qsabrelite mx6dlsabrelite)) 222CFG_DDR_SIZE ?= 0x40000000 223CFG_NS_ENTRY_ADDR ?= 0x12000000 224CFG_UART_BASE ?= UART2_BASE 225endif 226 227ifneq (,$(filter $(PLATFORM_FLAVOR),mx6slevk)) 228CFG_NS_ENTRY_ADDR ?= 0x80800000 229CFG_DDR_SIZE ?= 0x40000000 230endif 231 232ifneq (,$(filter $(PLATFORM_FLAVOR),mx6sllevk)) 233CFG_NS_ENTRY_ADDR ?= 0x80800000 234CFG_DDR_SIZE ?= 0x80000000 235endif 236 237ifneq (,$(filter $(PLATFORM_FLAVOR),mx6sxsabreauto)) 238CFG_DDR_SIZE ?= 0x80000000 239CFG_NS_ENTRY_ADDR ?= 0x80800000 240endif 241 242ifneq (,$(filter $(PLATFORM_FLAVOR),mx6sxsabresd)) 243CFG_DDR_SIZE ?= 0x40000000 244CFG_NS_ENTRY_ADDR ?= 0x80800000 245endif 246 247ifeq ($(PLATFORM_FLAVOR), mx6sxudooneofull) 248CFG_DDR_SIZE ?= 0x40000000 249CFG_UART_BASE ?= UART1_BASE 250endif 251 252ifneq (,$(filter $(PLATFORM_FLAVOR),mx6ulevk mx6ullevk)) 253CFG_DDR_SIZE ?= 0x20000000 254CFG_NS_ENTRY_ADDR ?= 0x80800000 255endif 256 257ifneq (,$(filter $(PLATFORM_FLAVOR),mx6ulccimx6ulsbcpro)) 258CFG_DDR_SIZE ?= 0x10000000 259CFG_NS_ENTRY_ADDR ?= 0x80800000 260CFG_UART_BASE ?= UART5_BASE 261endif 262 263ifneq (,$(filter $(PLATFORM_FLAVOR),mx6ul9x9evk)) 264CFG_DDR_SIZE ?= 0x10000000 265CFG_NS_ENTRY_ADDR ?= 0x80800000 266endif 267 268ifneq (,$(filter $(PLATFORM_FLAVOR),imx8mqevk)) 269CFG_DDR_SIZE ?= 0xc0000000 270CFG_UART_BASE ?= UART1_BASE 271endif 272 273ifneq (,$(filter $(PLATFORM_FLAVOR),imx8mmevk)) 274CFG_DDR_SIZE ?= 0x80000000 275CFG_UART_BASE ?= UART2_BASE 276endif 277 278ifneq (,$(filter $(PLATFORM_FLAVOR),imx8qxpmek imx8qmmek)) 279CFG_DDR_SIZE ?= 0x80000000 280CFG_UART_BASE ?= UART0_BASE 281endif 282 283# i.MX6 Solo/SL/SoloX/DualLite/Dual/Quad specific config 284ifeq ($(filter y, $(CFG_MX6QP) $(CFG_MX6Q) $(CFG_MX6D) $(CFG_MX6DL) $(CFG_MX6S) \ 285 $(CFG_MX6SL) $(CFG_MX6SLL) $(CFG_MX6SX)), y) 286include core/arch/arm/cpu/cortex-a9.mk 287 288$(call force,CFG_PL310,y) 289 290CFG_PL310_LOCKED ?= y 291CFG_ENABLE_SCTLR_RR ?= y 292CFG_SCU ?= y 293endif 294 295ifeq ($(filter y, $(CFG_MX6QP) $(CFG_MX6Q) $(CFG_MX6D) $(CFG_MX6DL) $(CFG_MX6S)), y) 296CFG_DRAM_BASE ?= 0x10000000 297endif 298 299ifneq (,$(filter y, $(CFG_MX6UL) $(CFG_MX6ULL) $(CFG_MX6SL) $(CFG_MX6SLL) \ 300 $(CFG_MX6SX))) 301CFG_DRAM_BASE ?= 0x80000000 302endif 303 304ifeq ($(filter y, $(CFG_MX7)), y) 305CFG_INIT_CNTVOFF ?= y 306CFG_DRAM_BASE ?= 0x80000000 307endif 308 309ifeq ($(filter y, $(CFG_MX7ULP)), y) 310CFG_INIT_CNTVOFF ?= y 311CFG_DRAM_BASE ?= 0x80000000 312$(call force,CFG_IMX_LPUART,y) 313$(call force,CFG_BOOT_SECONDARY_REQUEST,n) 314endif 315 316ifneq (,$(filter y, $(CFG_MX6) $(CFG_MX7) $(CFG_MX7ULP))) 317$(call force,CFG_GENERIC_BOOT,y) 318$(call force,CFG_GIC,y) 319$(call force,CFG_PM_STUBS,y) 320$(call force,CFG_WITH_SOFTWARE_PRNG,y) 321 322CFG_BOOT_SYNC_CPU ?= n 323CFG_BOOT_SECONDARY_REQUEST ?= y 324CFG_DT ?= y 325CFG_PAGEABLE_ADDR ?= 0 326CFG_PSCI_ARM32 ?= y 327CFG_SECURE_TIME_SOURCE_REE ?= y 328CFG_UART_BASE ?= UART1_BASE 329CFG_IMX_CAAM ?= y 330endif 331 332ifneq (,$(filter y, $(CFG_MX6) $(CFG_MX7))) 333$(call force,CFG_IMX_UART,y) 334CFG_CSU ?= y 335endif 336 337ifeq ($(filter y, $(CFG_PSCI_ARM32)), y) 338CFG_HWSUPP_MEM_PERM_WXN = n 339CFG_IMX_WDOG ?= y 340endif 341 342ifeq ($(CFG_ARM64_core),y) 343# arm-v8 platforms 344include core/arch/arm/cpu/cortex-armv8-0.mk 345$(call force,CFG_ARM_GICV3,y) 346$(call force,CFG_GENERIC_BOOT,y) 347$(call force,CFG_GIC,y) 348$(call force,CFG_WITH_LPAE,y) 349$(call force,CFG_WITH_ARM_TRUSTED_FW,y) 350$(call force,CFG_SECURE_TIME_SOURCE_CNTPCT,y) 351 352CFG_CRYPTO_WITH_CE ?= y 353CFG_PM_STUBS ?= y 354 355supported-ta-targets = ta_arm64 356endif 357 358CFG_TZDRAM_START ?= ($(CFG_DRAM_BASE) - 0x02000000 + $(CFG_DDR_SIZE)) 359CFG_TZDRAM_SIZE ?= 0x01e00000 360CFG_SHMEM_START ?= ($(CFG_TZDRAM_START) + $(CFG_TZDRAM_SIZE)) 361CFG_SHMEM_SIZE ?= 0x00200000 362 363CFG_CRYPTO_SIZE_OPTIMIZATION ?= n 364CFG_WITH_STACK_CANARIES ?= y 365CFG_MMAP_REGIONS ?= 24 366