xref: /rk3399_ARM-atf/plat/marvell/armada/common/marvell_common.mk (revision bded41d9e49065f831b8f968cc646f5b860a23f8)
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