mirror of
https://github.com/ARM-software/arm-trusted-firmware.git
synced 2025-04-17 10:04:26 +00:00

Compile-time controls have been added for the following: * SCMI power domain use for DPU and GPU. * SMMU-700: planned rework required to use IOMMU correctly for DPU and GPU. These will allow easier experimentation in the future without ad-hoc changes needed in the dts file for any sort of analysis that requires testing different paths. For TC3 however, the DPU is in an always on power domain so SCMI power domains are not supported. Co-developed-by: Tintu Thomas <tintu.thomas@arm.com> Signed-off-by: Kshitij Sisodia <kshitij.sisodia@arm.com> Change-Id: If6179a3e4784c1b69f0338a8d52b552452c0eac1
228 lines
6.5 KiB
Makefile
228 lines
6.5 KiB
Makefile
# Copyright (c) 2021-2024, Arm Limited. All rights reserved.
|
|
#
|
|
# SPDX-License-Identifier: BSD-3-Clause
|
|
#
|
|
|
|
include common/fdt_wrappers.mk
|
|
|
|
TARGET_FLAVOUR := fvp
|
|
# DPU with SCMI may not necessarily work, so allow its independence
|
|
TC_DPU_USE_SCMI_CLK := 1
|
|
# SCMI power domain control enable
|
|
TC_SCMI_PD_CTRL_EN := 1
|
|
# IOMMU: Enable the use of system or individual MMUs
|
|
TC_IOMMU_EN := 1
|
|
|
|
ifneq ($(shell expr $(TARGET_PLATFORM) \<= 1), 0)
|
|
$(warning Platform ${PLAT}$(TARGET_PLATFORM) is deprecated. \
|
|
Some of the features might not work as expected)
|
|
endif
|
|
|
|
ifeq ($(shell expr $(TARGET_PLATFORM) \<= 3), 0)
|
|
$(error TARGET_PLATFORM must be less than or equal to 3)
|
|
endif
|
|
|
|
ifeq ($(filter ${TARGET_FLAVOUR}, fvp fpga),)
|
|
$(error TARGET_FLAVOUR must be fvp or fpga)
|
|
endif
|
|
|
|
$(eval $(call add_defines, \
|
|
TARGET_PLATFORM \
|
|
TARGET_FLAVOUR_$(call uppercase,${TARGET_FLAVOUR}) \
|
|
TC_DPU_USE_SCMI_CLK \
|
|
TC_SCMI_PD_CTRL_EN \
|
|
TC_IOMMU_EN \
|
|
))
|
|
|
|
CSS_LOAD_SCP_IMAGES := 1
|
|
|
|
CSS_USE_SCMI_SDS_DRIVER := 1
|
|
|
|
ENABLE_FEAT_RAS := 1
|
|
|
|
SDEI_SUPPORT := 0
|
|
|
|
EL3_EXCEPTION_HANDLING := 0
|
|
|
|
HANDLE_EA_EL3_FIRST_NS := 0
|
|
|
|
# System coherency is managed in hardware
|
|
HW_ASSISTED_COHERENCY := 1
|
|
|
|
# When building for systems with hardware-assisted coherency, there's no need to
|
|
# use USE_COHERENT_MEM. Require that USE_COHERENT_MEM must be set to 0 too.
|
|
USE_COHERENT_MEM := 0
|
|
|
|
GIC_ENABLE_V4_EXTN := 1
|
|
|
|
# GIC-600 configuration
|
|
GICV3_SUPPORT_GIC600 := 1
|
|
|
|
# Enable SVE
|
|
ENABLE_SVE_FOR_NS := 2
|
|
ENABLE_SVE_FOR_SWD := 1
|
|
|
|
# enable trace buffer control registers access to NS by default
|
|
ENABLE_TRBE_FOR_NS := 1
|
|
|
|
# enable trace system registers access to NS by default
|
|
ENABLE_SYS_REG_TRACE_FOR_NS := 1
|
|
|
|
# enable trace filter control registers access to NS by default
|
|
ENABLE_TRF_FOR_NS := 1
|
|
|
|
# Include GICv3 driver files
|
|
include drivers/arm/gic/v3/gicv3.mk
|
|
|
|
ENT_GIC_SOURCES := ${GICV3_SOURCES} \
|
|
plat/common/plat_gicv3.c \
|
|
plat/arm/common/arm_gicv3.c
|
|
|
|
override NEED_BL2U := no
|
|
|
|
override ARM_PLAT_MT := 1
|
|
|
|
TC_BASE = plat/arm/board/tc
|
|
|
|
PLAT_INCLUDES += -I${TC_BASE}/include/ \
|
|
-I${TC_BASE}/fdts/
|
|
|
|
# CPU libraries for TARGET_PLATFORM=1
|
|
ifeq (${TARGET_PLATFORM}, 1)
|
|
TC_CPU_SOURCES += lib/cpus/aarch64/cortex_a510.S \
|
|
lib/cpus/aarch64/cortex_a715.S \
|
|
lib/cpus/aarch64/cortex_x3.S
|
|
endif
|
|
|
|
# CPU libraries for TARGET_PLATFORM=2
|
|
ifeq (${TARGET_PLATFORM}, 2)
|
|
TC_CPU_SOURCES += lib/cpus/aarch64/cortex_a520.S \
|
|
lib/cpus/aarch64/cortex_a720.S \
|
|
lib/cpus/aarch64/cortex_x4.S
|
|
endif
|
|
|
|
# CPU libraries for TARGET_PLATFORM=3
|
|
ifeq (${TARGET_PLATFORM}, 3)
|
|
TC_CPU_SOURCES += lib/cpus/aarch64/cortex_a520.S \
|
|
lib/cpus/aarch64/cortex_chaberton.S \
|
|
lib/cpus/aarch64/cortex_blackhawk.S
|
|
endif
|
|
|
|
INTERCONNECT_SOURCES := ${TC_BASE}/tc_interconnect.c
|
|
|
|
PLAT_BL_COMMON_SOURCES += ${TC_BASE}/tc_plat.c \
|
|
${TC_BASE}/include/tc_helpers.S
|
|
|
|
BL1_SOURCES += ${INTERCONNECT_SOURCES} \
|
|
${TC_CPU_SOURCES} \
|
|
${TC_BASE}/tc_trusted_boot.c \
|
|
${TC_BASE}/tc_err.c \
|
|
drivers/arm/sbsa/sbsa.c
|
|
|
|
BL2_SOURCES += ${TC_BASE}/tc_security.c \
|
|
${TC_BASE}/tc_err.c \
|
|
${TC_BASE}/tc_trusted_boot.c \
|
|
${TC_BASE}/tc_bl2_setup.c \
|
|
lib/utils/mem_region.c \
|
|
drivers/arm/tzc/tzc400.c \
|
|
plat/arm/common/arm_tzc400.c \
|
|
plat/arm/common/arm_nor_psci_mem_protect.c
|
|
|
|
BL31_SOURCES += ${INTERCONNECT_SOURCES} \
|
|
${TC_CPU_SOURCES} \
|
|
${ENT_GIC_SOURCES} \
|
|
${TC_BASE}/tc_bl31_setup.c \
|
|
${TC_BASE}/tc_topology.c \
|
|
lib/fconf/fconf.c \
|
|
lib/fconf/fconf_dyn_cfg_getter.c \
|
|
drivers/cfi/v2m/v2m_flash.c \
|
|
lib/utils/mem_region.c \
|
|
plat/arm/common/arm_nor_psci_mem_protect.c \
|
|
drivers/arm/sbsa/sbsa.c
|
|
|
|
BL31_SOURCES += ${FDT_WRAPPERS_SOURCES}
|
|
|
|
# Add the FDT_SOURCES and options for Dynamic Config
|
|
FDT_SOURCES += ${TC_BASE}/fdts/${PLAT}_fw_config.dts \
|
|
${TC_BASE}/fdts/${PLAT}_tb_fw_config.dts
|
|
FW_CONFIG := ${BUILD_PLAT}/fdts/${PLAT}_fw_config.dtb
|
|
TB_FW_CONFIG := ${BUILD_PLAT}/fdts/${PLAT}_tb_fw_config.dtb
|
|
|
|
# Add the FW_CONFIG to FIP and specify the same to certtool
|
|
$(eval $(call TOOL_ADD_PAYLOAD,${FW_CONFIG},--fw-config,${FW_CONFIG}))
|
|
# Add the TB_FW_CONFIG to FIP and specify the same to certtool
|
|
$(eval $(call TOOL_ADD_PAYLOAD,${TB_FW_CONFIG},--tb-fw-config,${TB_FW_CONFIG}))
|
|
|
|
ifeq (${SPD},spmd)
|
|
ifeq ($(ARM_SPMC_MANIFEST_DTS),)
|
|
ARM_SPMC_MANIFEST_DTS := ${TC_BASE}/fdts/${PLAT}_spmc_test_manifest.dts
|
|
endif
|
|
|
|
FDT_SOURCES += ${ARM_SPMC_MANIFEST_DTS}
|
|
TC_TOS_FW_CONFIG := ${BUILD_PLAT}/fdts/$(notdir $(basename ${ARM_SPMC_MANIFEST_DTS})).dtb
|
|
|
|
# Add the TOS_FW_CONFIG to FIP and specify the same to certtool
|
|
$(eval $(call TOOL_ADD_PAYLOAD,${TC_TOS_FW_CONFIG},--tos-fw-config,${TC_TOS_FW_CONFIG}))
|
|
endif
|
|
|
|
#Device tree
|
|
TC_HW_CONFIG_DTS := fdts/tc.dts
|
|
TC_HW_CONFIG := ${BUILD_PLAT}/fdts/${PLAT}.dtb
|
|
FDT_SOURCES += ${TC_HW_CONFIG_DTS}
|
|
$(eval TC_HW_CONFIG := ${BUILD_PLAT}/$(patsubst %.dts,%.dtb,$(TC_HW_CONFIG_DTS)))
|
|
|
|
# Add the HW_CONFIG to FIP and specify the same to certtool
|
|
$(eval $(call TOOL_ADD_PAYLOAD,${TC_HW_CONFIG},--hw-config,${TC_HW_CONFIG}))
|
|
|
|
override CTX_INCLUDE_AARCH32_REGS := 0
|
|
|
|
override CTX_INCLUDE_PAUTH_REGS := 1
|
|
|
|
override ENABLE_SPE_FOR_NS := 0
|
|
|
|
override ENABLE_FEAT_AMU := 1
|
|
ENABLE_AMU_AUXILIARY_COUNTERS := 1
|
|
ENABLE_AMU_FCONF := 1
|
|
|
|
ENABLE_MPMM := 1
|
|
ENABLE_MPMM_FCONF := 1
|
|
|
|
# Include Measured Boot makefile before any Crypto library makefile.
|
|
# Crypto library makefile may need default definitions of Measured Boot build
|
|
# flags present in Measured Boot makefile.
|
|
ifeq (${MEASURED_BOOT},1)
|
|
MEASURED_BOOT_MK := drivers/measured_boot/rss/rss_measured_boot.mk
|
|
$(info Including ${MEASURED_BOOT_MK})
|
|
include ${MEASURED_BOOT_MK}
|
|
$(info Including rss_comms.mk)
|
|
include drivers/arm/rss/rss_comms.mk
|
|
|
|
BL1_SOURCES += ${MEASURED_BOOT_SOURCES} \
|
|
plat/arm/board/tc/tc_common_measured_boot.c \
|
|
plat/arm/board/tc/tc_bl1_measured_boot.c \
|
|
lib/psa/measured_boot.c \
|
|
${RSS_COMMS_SOURCES}
|
|
|
|
BL2_SOURCES += ${MEASURED_BOOT_SOURCES} \
|
|
plat/arm/board/tc/tc_common_measured_boot.c \
|
|
plat/arm/board/tc/tc_bl2_measured_boot.c \
|
|
lib/psa/measured_boot.c \
|
|
${RSS_COMMS_SOURCES}
|
|
|
|
PLAT_INCLUDES += -Iinclude/lib/psa
|
|
|
|
endif
|
|
|
|
ifneq (${PLATFORM_TEST},)
|
|
# Add this include as first, before arm_common.mk. This is necessary
|
|
# because arm_common.mk builds Mbed TLS, and platform_test.mk can
|
|
# change the list of Mbed TLS files that are to be compiled
|
|
# (LIBMBEDTLS_SRCS).
|
|
include plat/arm/board/tc/platform_test.mk
|
|
endif
|
|
|
|
|
|
include plat/arm/common/arm_common.mk
|
|
include plat/arm/css/common/css_common.mk
|
|
include plat/arm/soc/common/soc_css.mk
|
|
include plat/arm/board/common/board_common.mk
|