1*91f16700Schasinglulu# Copyright (C) 2018 Marvell International Ltd. 2*91f16700Schasinglulu# 3*91f16700Schasinglulu# SPDX-License-Identifier: BSD-3-Clause 4*91f16700Schasinglulu# https://spdx.org/licenses 5*91f16700Schasinglulu 6*91f16700SchasingluluMARVELL_PLAT_BASE := plat/marvell/armada 7*91f16700SchasingluluMARVELL_PLAT_INCLUDE_BASE := include/plat/marvell/armada 8*91f16700Schasinglulu 9*91f16700SchasingluluSEPARATE_CODE_AND_RODATA := 1 10*91f16700Schasinglulu 11*91f16700Schasinglulu# flag to switch from PLL to ARO 12*91f16700SchasingluluARO_ENABLE := 0 13*91f16700Schasinglulu$(eval $(call add_define,ARO_ENABLE)) 14*91f16700Schasinglulu 15*91f16700Schasinglulu# Convert LLC to secure SRAM 16*91f16700SchasingluluLLC_SRAM := 0 17*91f16700Schasinglulu$(eval $(call add_define,LLC_SRAM)) 18*91f16700Schasinglulu 19*91f16700Schasinglulu# Enable/Disable LLC 20*91f16700SchasingluluLLC_ENABLE := 1 21*91f16700Schasinglulu$(eval $(call add_define,LLC_ENABLE)) 22*91f16700Schasinglulu 23*91f16700Schasingluluinclude lib/xlat_tables_v2/xlat_tables.mk 24*91f16700Schasinglulu 25*91f16700SchasingluluPLAT_INCLUDES += -I$(MARVELL_PLAT_INCLUDE_BASE)/common \ 26*91f16700Schasinglulu -I$(MARVELL_PLAT_INCLUDE_BASE)/common/aarch64 27*91f16700Schasinglulu 28*91f16700Schasinglulu 29*91f16700SchasingluluPLAT_BL_COMMON_SOURCES += ${XLAT_TABLES_LIB_SRCS} \ 30*91f16700Schasinglulu $(MARVELL_PLAT_BASE)/common/aarch64/marvell_common.c \ 31*91f16700Schasinglulu $(MARVELL_PLAT_BASE)/common/aarch64/marvell_helpers.S \ 32*91f16700Schasinglulu $(MARVELL_COMMON_BASE)/marvell_console.c 33*91f16700Schasinglulu 34*91f16700SchasingluluBL1_SOURCES += drivers/delay_timer/delay_timer.c \ 35*91f16700Schasinglulu drivers/io/io_fip.c \ 36*91f16700Schasinglulu drivers/io/io_memmap.c \ 37*91f16700Schasinglulu drivers/io/io_storage.c \ 38*91f16700Schasinglulu $(MARVELL_PLAT_BASE)/common/marvell_bl1_setup.c \ 39*91f16700Schasinglulu $(MARVELL_PLAT_BASE)/common/marvell_io_storage.c \ 40*91f16700Schasinglulu $(MARVELL_PLAT_BASE)/common/plat_delay_timer.c 41*91f16700Schasinglulu 42*91f16700Schasingluluifdef EL3_PAYLOAD_BASE 43*91f16700Schasinglulu# Need the arm_program_trusted_mailbox() function to release secondary CPUs from 44*91f16700Schasinglulu# their holding pen 45*91f16700Schasingluluendif 46*91f16700Schasinglulu 47*91f16700SchasingluluBL2_SOURCES += drivers/io/io_fip.c \ 48*91f16700Schasinglulu drivers/io/io_memmap.c \ 49*91f16700Schasinglulu drivers/io/io_storage.c \ 50*91f16700Schasinglulu common/desc_image_load.c \ 51*91f16700Schasinglulu $(MARVELL_PLAT_BASE)/common/marvell_bl2_setup.c \ 52*91f16700Schasinglulu $(MARVELL_PLAT_BASE)/common/marvell_io_storage.c \ 53*91f16700Schasinglulu $(MARVELL_PLAT_BASE)/common/aarch64/marvell_bl2_mem_params_desc.c \ 54*91f16700Schasinglulu $(MARVELL_PLAT_BASE)/common/marvell_image_load.c 55*91f16700Schasinglulu 56*91f16700Schasingluluifeq (${SPD},opteed) 57*91f16700SchasingluluPLAT_INCLUDES += -Iinclude/lib 58*91f16700SchasingluluBL2_SOURCES += lib/optee/optee_utils.c 59*91f16700Schasingluluendif 60*91f16700Schasinglulu 61*91f16700SchasingluluBL31_SOURCES += $(MARVELL_PLAT_BASE)/common/marvell_bl31_setup.c \ 62*91f16700Schasinglulu $(MARVELL_PLAT_BASE)/common/marvell_pm.c \ 63*91f16700Schasinglulu $(MARVELL_PLAT_BASE)/common/marvell_topology.c \ 64*91f16700Schasinglulu plat/common/plat_psci_common.c \ 65*91f16700Schasinglulu $(MARVELL_PLAT_BASE)/common/plat_delay_timer.c \ 66*91f16700Schasinglulu drivers/delay_timer/delay_timer.c 67*91f16700Schasinglulu 68*91f16700Schasinglulu# PSCI functionality 69*91f16700Schasinglulu$(eval $(call add_define,CONFIG_ARM64)) 70*91f16700Schasinglulu 71*91f16700Schasinglulu# Add the build options to pack Trusted OS Extra1 and Trusted OS Extra2 images 72*91f16700Schasinglulu# in the FIP if the platform requires. 73*91f16700Schasingluluifneq ($(BL32_EXTRA1),) 74*91f16700Schasinglulu$(eval $(call TOOL_ADD_IMG,bl32_extra1,--tos-fw-extra1)) 75*91f16700Schasingluluendif 76*91f16700Schasingluluifneq ($(BL32_EXTRA2),) 77*91f16700Schasinglulu$(eval $(call TOOL_ADD_IMG,bl32_extra2,--tos-fw-extra2)) 78*91f16700Schasingluluendif 79*91f16700Schasinglulu 80*91f16700Schasinglulu# MSS (SCP) build 81*91f16700Schasingluluifeq (${MSS_SUPPORT}, 1) 82*91f16700Schasingluluinclude $(MARVELL_PLAT_BASE)/common/mss/mss_common.mk 83*91f16700Schasingluluendif 84*91f16700Schasinglulu 85*91f16700Schasinglulu$(BUILD_PLAT)/$(BOOT_IMAGE): $(BUILD_PLAT)/bl1.bin $(BUILD_PLAT)/$(FIP_NAME) 86*91f16700Schasinglulu $(if $(shell find $(BUILD_PLAT)/bl1.bin -type f -size +128k),$(error "Image '$(BUILD_PLAT)/bl1.bin' is bigger than 128kB")) 87*91f16700Schasinglulu @cp $(BUILD_PLAT)/bl1.bin $(BUILD_PLAT)/$(BOOT_IMAGE) || { rm -f $(BUILD_PLAT)/$(BOOT_IMAGE); false; } 88*91f16700Schasinglulu @truncate -s %128K $(BUILD_PLAT)/$(BOOT_IMAGE) || { rm -f $(BUILD_PLAT)/$(BOOT_IMAGE); false; } 89*91f16700Schasinglulu @cat $(BUILD_PLAT)/$(FIP_NAME) >> $(BUILD_PLAT)/$(BOOT_IMAGE) || { rm -f $(BUILD_PLAT)/$(BOOT_IMAGE); false; } 90*91f16700Schasinglulu @truncate -s %4 $(BUILD_PLAT)/$(BOOT_IMAGE) || { rm -f $(BUILD_PLAT)/$(BOOT_IMAGE); false; } 91*91f16700Schasinglulu @$(ECHO_BLANK_LINE) 92*91f16700Schasinglulu @echo "Built $@ successfully" 93*91f16700Schasinglulu @$(ECHO_BLANK_LINE) 94*91f16700Schasinglulu 95*91f16700Schasinglulu.PHONY: mrvl_bootimage 96*91f16700Schasinglulumrvl_bootimage: $(BUILD_PLAT)/$(BOOT_IMAGE) 97*91f16700Schasinglulu 98*91f16700Schasinglulu.PHONY: mrvl_flash 99*91f16700Schasinglulumrvl_flash: $(BUILD_PLAT)/$(FLASH_IMAGE) 100