xref: /arm-trusted-firmware/plat/marvell/armada/common/marvell_common.mk (revision 91f16700b400a8c0651d24a598fc48ee2997a0d7)
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