1a2847172SGrzegorz Jaszczyk# Copyright (C) 2018 Marvell International Ltd. 2a2847172SGrzegorz Jaszczyk# 3a2847172SGrzegorz Jaszczyk# SPDX-License-Identifier: BSD-3-Clause 4a2847172SGrzegorz Jaszczyk# https://spdx.org/licenses 5a2847172SGrzegorz Jaszczyk 6a2847172SGrzegorz JaszczykMARVELL_PLAT_BASE := plat/marvell/armada 7a2847172SGrzegorz JaszczykMARVELL_PLAT_INCLUDE_BASE := include/plat/marvell/armada 8a2847172SGrzegorz Jaszczyk 9a2847172SGrzegorz JaszczykSEPARATE_CODE_AND_RODATA := 1 10a2847172SGrzegorz Jaszczyk 11a2847172SGrzegorz Jaszczyk# flag to switch from PLL to ARO 12a2847172SGrzegorz JaszczykARO_ENABLE := 0 13a2847172SGrzegorz Jaszczyk$(eval $(call add_define,ARO_ENABLE)) 145a40d70fSKonstantin Porotchkin 155a40d70fSKonstantin Porotchkin# Convert LLC to secure SRAM 165a40d70fSKonstantin PorotchkinLLC_SRAM := 0 175a40d70fSKonstantin Porotchkin$(eval $(call add_define,LLC_SRAM)) 185a40d70fSKonstantin Porotchkin 19a2847172SGrzegorz Jaszczyk# Enable/Disable LLC 20a2847172SGrzegorz JaszczykLLC_ENABLE := 1 21a2847172SGrzegorz Jaszczyk$(eval $(call add_define,LLC_ENABLE)) 22a2847172SGrzegorz Jaszczyk 23a2847172SGrzegorz Jaszczykinclude lib/xlat_tables_v2/xlat_tables.mk 24a2847172SGrzegorz Jaszczyk 25a2847172SGrzegorz JaszczykPLAT_INCLUDES += -I$(MARVELL_PLAT_INCLUDE_BASE)/common \ 26a2847172SGrzegorz Jaszczyk -I$(MARVELL_PLAT_INCLUDE_BASE)/common/aarch64 27a2847172SGrzegorz Jaszczyk 28a2847172SGrzegorz Jaszczyk 29a2847172SGrzegorz JaszczykPLAT_BL_COMMON_SOURCES += ${XLAT_TABLES_LIB_SRCS} \ 30a2847172SGrzegorz Jaszczyk $(MARVELL_PLAT_BASE)/common/aarch64/marvell_common.c \ 31a2847172SGrzegorz Jaszczyk $(MARVELL_PLAT_BASE)/common/aarch64/marvell_helpers.S \ 32a2847172SGrzegorz Jaszczyk $(MARVELL_COMMON_BASE)/marvell_console.c 33a2847172SGrzegorz Jaszczyk 34a2847172SGrzegorz JaszczykBL1_SOURCES += drivers/delay_timer/delay_timer.c \ 35a2847172SGrzegorz Jaszczyk drivers/io/io_fip.c \ 36a2847172SGrzegorz Jaszczyk drivers/io/io_memmap.c \ 37a2847172SGrzegorz Jaszczyk drivers/io/io_storage.c \ 38a2847172SGrzegorz Jaszczyk $(MARVELL_PLAT_BASE)/common/marvell_bl1_setup.c \ 39a2847172SGrzegorz Jaszczyk $(MARVELL_PLAT_BASE)/common/marvell_io_storage.c \ 40a2847172SGrzegorz Jaszczyk $(MARVELL_PLAT_BASE)/common/plat_delay_timer.c 41a2847172SGrzegorz Jaszczyk 42a2847172SGrzegorz Jaszczykifdef EL3_PAYLOAD_BASE 43a2847172SGrzegorz Jaszczyk# Need the arm_program_trusted_mailbox() function to release secondary CPUs from 44a2847172SGrzegorz Jaszczyk# their holding pen 45a2847172SGrzegorz Jaszczykendif 46a2847172SGrzegorz Jaszczyk 47a2847172SGrzegorz JaszczykBL2_SOURCES += drivers/io/io_fip.c \ 48a2847172SGrzegorz Jaszczyk drivers/io/io_memmap.c \ 49a2847172SGrzegorz Jaszczyk drivers/io/io_storage.c \ 50a2847172SGrzegorz Jaszczyk common/desc_image_load.c \ 51a2847172SGrzegorz Jaszczyk $(MARVELL_PLAT_BASE)/common/marvell_bl2_setup.c \ 52a2847172SGrzegorz Jaszczyk $(MARVELL_PLAT_BASE)/common/marvell_io_storage.c \ 53a2847172SGrzegorz Jaszczyk $(MARVELL_PLAT_BASE)/common/aarch64/marvell_bl2_mem_params_desc.c \ 54a2847172SGrzegorz Jaszczyk $(MARVELL_PLAT_BASE)/common/marvell_image_load.c 55a2847172SGrzegorz Jaszczyk 5641e8c6fcSMarcin Wojtasifeq (${SPD},opteed) 5741e8c6fcSMarcin WojtasPLAT_INCLUDES += -Iinclude/lib 5841e8c6fcSMarcin WojtasBL2_SOURCES += lib/optee/optee_utils.c 5941e8c6fcSMarcin Wojtasendif 60a2847172SGrzegorz Jaszczyk 61a2847172SGrzegorz JaszczykBL31_SOURCES += $(MARVELL_PLAT_BASE)/common/marvell_bl31_setup.c \ 62a2847172SGrzegorz Jaszczyk $(MARVELL_PLAT_BASE)/common/marvell_pm.c \ 63a2847172SGrzegorz Jaszczyk $(MARVELL_PLAT_BASE)/common/marvell_topology.c \ 64a2847172SGrzegorz Jaszczyk plat/common/plat_psci_common.c \ 65a2847172SGrzegorz Jaszczyk $(MARVELL_PLAT_BASE)/common/plat_delay_timer.c \ 66a2847172SGrzegorz Jaszczyk drivers/delay_timer/delay_timer.c 67a2847172SGrzegorz Jaszczyk 68a2847172SGrzegorz Jaszczyk# PSCI functionality 69a2847172SGrzegorz Jaszczyk$(eval $(call add_define,CONFIG_ARM64)) 70a2847172SGrzegorz Jaszczyk 7141e8c6fcSMarcin Wojtas# Add the build options to pack Trusted OS Extra1 and Trusted OS Extra2 images 7241e8c6fcSMarcin Wojtas# in the FIP if the platform requires. 7341e8c6fcSMarcin Wojtasifneq ($(BL32_EXTRA1),) 7441e8c6fcSMarcin Wojtas$(eval $(call TOOL_ADD_IMG,bl32_extra1,--tos-fw-extra1)) 7541e8c6fcSMarcin Wojtasendif 7641e8c6fcSMarcin Wojtasifneq ($(BL32_EXTRA2),) 7741e8c6fcSMarcin Wojtas$(eval $(call TOOL_ADD_IMG,bl32_extra2,--tos-fw-extra2)) 7841e8c6fcSMarcin Wojtasendif 7941e8c6fcSMarcin Wojtas 80a2847172SGrzegorz Jaszczyk# MSS (SCP) build 81a2847172SGrzegorz Jaszczykifeq (${MSS_SUPPORT}, 1) 82a2847172SGrzegorz Jaszczykinclude $(MARVELL_PLAT_BASE)/common/mss/mss_common.mk 83a2847172SGrzegorz Jaszczykendif 8491bc2da7SPali Rohár 8591bc2da7SPali Rohár$(BUILD_PLAT)/$(BOOT_IMAGE): $(BUILD_PLAT)/bl1.bin $(BUILD_PLAT)/$(FIP_NAME) 8623b1be79SPali Rohár $(if $(shell find $(BUILD_PLAT)/bl1.bin -type f -size +128k),$(error "Image '$(BUILD_PLAT)/bl1.bin' is bigger than 128kB")) 877c4e1eeaSChris Kay $(q)cp $(BUILD_PLAT)/bl1.bin $(BUILD_PLAT)/$(BOOT_IMAGE) || { rm -f $(BUILD_PLAT)/$(BOOT_IMAGE); false; } 887c4e1eeaSChris Kay $(q)truncate -s %128K $(BUILD_PLAT)/$(BOOT_IMAGE) || { rm -f $(BUILD_PLAT)/$(BOOT_IMAGE); false; } 897c4e1eeaSChris Kay $(q)cat $(BUILD_PLAT)/$(FIP_NAME) >> $(BUILD_PLAT)/$(BOOT_IMAGE) || { rm -f $(BUILD_PLAT)/$(BOOT_IMAGE); false; } 907c4e1eeaSChris Kay $(q)truncate -s %4 $(BUILD_PLAT)/$(BOOT_IMAGE) || { rm -f $(BUILD_PLAT)/$(BOOT_IMAGE); false; } 917c4e1eeaSChris Kay $(s)echo 927c4e1eeaSChris Kay $(s)echo "Built $@ successfully" 937c4e1eeaSChris Kay $(s)echo 9491bc2da7SPali Rohár 95e4bbd39cSPali Rohár.PHONY: mrvl_bootimage 9691bc2da7SPali Rohármrvl_bootimage: $(BUILD_PLAT)/$(BOOT_IMAGE) 97c0f60e78SPali Rohár 98c0f60e78SPali Rohár.PHONY: mrvl_flash 99*774fb379SBoyan Karatotevmrvl_flash: $(BUILD_PLAT)/$(FLASH_IMAGE) | $(BUILD_PLAT) 100