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