1# Copyright (c) 2018-2022, Arm Limited and Contributors. All rights reserved. 2# Copyright (c) 2021-2022, Xilinx, Inc. All rights reserved. 3# Copyright (c) 2022-2025, Advanced Micro Devices, Inc. All rights reserved. 4# 5# SPDX-License-Identifier: BSD-3-Clause 6 7PLAT_PATH := plat/amd/versal2 8 9override NEED_BL1 := no 10override NEED_BL2 := no 11 12# A78 Erratum for SoC 13ERRATA_A78_AE_1941500 := 1 14ERRATA_A78_AE_1951502 := 1 15ERRATA_A78_AE_2376748 := 1 16ERRATA_A78_AE_2395408 := 1 17ERRATA_ABI_SUPPORT := 1 18 19# Platform Supports Armv8.2 extensions 20ARM_ARCH_MAJOR := 8 21ARM_ARCH_MINOR := 2 22 23override PROGRAMMABLE_RESET_ADDRESS := 1 24PSCI_EXTENDED_STATE_ID := 1 25SEPARATE_CODE_AND_RODATA := 1 26override RESET_TO_BL31 := 1 27PL011_GENERIC_UART := 1 28IPI_CRC_CHECK := 0 29GIC_ENABLE_V4_EXTN := 0 30GICV3_SUPPORT_GIC600 := 1 31TFA_NO_PM := 0 32CPU_PWRDWN_SGI ?= 6 33$(eval $(call add_define_val,CPU_PWR_DOWN_REQ_INTR,ARM_IRQ_SEC_SGI_${CPU_PWRDWN_SGI})) 34 35override CTX_INCLUDE_AARCH32_REGS := 0 36 37# Platform to support Dynamic XLAT Table by default 38override PLAT_XLAT_TABLES_DYNAMIC := 1 39$(eval $(call add_define,PLAT_XLAT_TABLES_DYNAMIC)) 40 41ifdef TFA_NO_PM 42 $(eval $(call add_define,TFA_NO_PM)) 43endif 44 45ifdef MEM_BASE 46 $(eval $(call add_define,MEM_BASE)) 47 48 ifndef MEM_SIZE 49 $(error "MEM_BASE defined without MEM_SIZE") 50 endif 51 $(eval $(call add_define,MEM_SIZE)) 52 53 ifdef MEM_PROGBITS_SIZE 54 $(eval $(call add_define,MEM_PROGBITS_SIZE)) 55 endif 56endif 57 58ifdef BL32_MEM_BASE 59 $(eval $(call add_define,BL32_MEM_BASE)) 60 61 ifndef BL32_MEM_SIZE 62 $(error "BL32_MEM_BASE defined without BL32_MEM_SIZE") 63 endif 64 $(eval $(call add_define,BL32_MEM_SIZE)) 65endif 66 67ifdef IPI_CRC_CHECK 68 $(eval $(call add_define,IPI_CRC_CHECK)) 69endif 70 71USE_COHERENT_MEM := 0 72HW_ASSISTED_COHERENCY := 1 73 74CONSOLE ?= pl011 75ifeq (${CONSOLE}, $(filter ${CONSOLE},pl011 pl011_0 pl011_1 dcc dtb none)) 76 else 77 $(error "Please define CONSOLE") 78 endif 79 80$(eval $(call add_define_val,CONSOLE,CONSOLE_ID_${CONSOLE})) 81 82# Runtime console in default console in DEBUG build 83ifeq ($(DEBUG), 1) 84CONSOLE_RUNTIME ?= $(CONSOLE) 85endif 86 87# Runtime console 88ifdef CONSOLE_RUNTIME 89ifeq (${CONSOLE_RUNTIME}, $(filter ${CONSOLE_RUNTIME},pl011 pl011_0 pl011_1 dcc dtb)) 90$(eval $(call add_define_val,CONSOLE_RUNTIME,RT_CONSOLE_ID_${CONSOLE_RUNTIME})) 91else 92 $(error "Please define CONSOLE_RUNTIME") 93endif 94endif 95 96ifeq (${TRANSFER_LIST},0) 97XILINX_OF_BOARD_DTB_ADDR ?= 0x1000000 98$(eval $(call add_define,XILINX_OF_BOARD_DTB_ADDR)) 99endif 100 101ifeq (${SPD},spmd) 102SPMC_MANIFEST_DTB_ADDR ?= 0x9800000 103$(eval $(call add_define,SPMC_MANIFEST_DTB_ADDR)) 104endif 105 106PLAT_INCLUDES := -Iinclude/plat/arm/common/ \ 107 -Iplat/xilinx/common/include/ \ 108 -Iplat/amd/common/include/ \ 109 -Iplat/xilinx/common/ipi_mailbox_service/ \ 110 -I${PLAT_PATH}/include/ \ 111 -Iplat/xilinx/versal/pm_service/ 112 113# Include GICv3 driver files 114include drivers/arm/gic/v3/gicv3.mk 115include lib/xlat_tables_v2/xlat_tables.mk 116include lib/libfdt/libfdt.mk 117 118PLAT_BL_COMMON_SOURCES := \ 119 drivers/arm/dcc/dcc_console.c \ 120 drivers/delay_timer/delay_timer.c \ 121 drivers/delay_timer/generic_delay_timer.c \ 122 ${GICV3_SOURCES} \ 123 drivers/arm/pl011/aarch64/pl011_console.S \ 124 plat/xilinx/common/plat_clkfunc.c \ 125 plat/common/aarch64/crash_console_helpers.S \ 126 plat/arm/common/arm_common.c \ 127 plat/common/plat_gicv3.c \ 128 ${PLAT_PATH}/aarch64/helpers.S \ 129 ${PLAT_PATH}/aarch64/common.c \ 130 ${PLAT_PATH}/plat_topology.c \ 131 ${XLAT_TABLES_LIB_SRCS} 132 133BL31_SOURCES += drivers/arm/cci/cci.c \ 134 lib/cpus/aarch64/cortex_a78_ae.S \ 135 lib/cpus/aarch64/cortex_a78.S \ 136 plat/common/plat_psci_common.c 137 138ifeq ($(TFA_NO_PM), 0) 139BL31_SOURCES += plat/xilinx/common/pm_service/pm_api_sys.c \ 140 plat/xilinx/common/pm_service/pm_ipi.c \ 141 ${PLAT_PATH}/plat_psci_pm.c \ 142 ${PLAT_PATH}/pm_service/pm_svc_main.c \ 143 ${PLAT_PATH}/pm_service/pm_client.c 144else 145BL31_SOURCES += ${PLAT_PATH}/plat_psci.c \ 146 drivers/scmi-msg/base.c \ 147 drivers/scmi-msg/entry.c \ 148 drivers/scmi-msg/smt.c \ 149 drivers/scmi-msg/clock.c \ 150 drivers/scmi-msg/power_domain.c \ 151 drivers/scmi-msg/reset_domain.c \ 152 ${PLAT_PATH}/scmi.c 153endif 154 155BL31_SOURCES += common/fdt_wrappers.c \ 156 plat/xilinx/common/plat_console.c \ 157 plat/xilinx/common/plat_startup.c \ 158 plat/xilinx/common/ipi.c \ 159 plat/xilinx/common/ipi_mailbox_service/ipi_mailbox_svc.c \ 160 ${PLAT_PATH}/soc_ipi.c \ 161 plat/xilinx/common/versal.c \ 162 ${PLAT_PATH}/bl31_setup.c \ 163 common/fdt_fixup.c \ 164 common/fdt_wrappers.c \ 165 ${LIBFDT_SRCS} \ 166 ${PLAT_PATH}/sip_svc_setup.c \ 167 ${PLAT_PATH}/gicv3.c 168 169ifeq (${SPD},spmd) 170BL31_SOURCES += plat/common/plat_spmd_manifest.c \ 171 common/uuid.c \ 172 ${LIBFDT_SRCS} \ 173 ${FDT_WRAPPERS_SOURCES} 174 175ARM_SPMC_MANIFEST_DTS := ${PLAT_PATH}/spmc_sel1_optee_manifest.dts 176 177FDT_SOURCES += ${ARM_SPMC_MANIFEST_DTS} 178 179VERSAL2_TOS_FW_CONFIG := ${BUILD_PLAT}/fdts/$(notdir $(basename ${ARM_SPMC_MANIFEST_DTS})).dtb 180 181$(eval $(call TOOL_ADD_PAYLOAD,${VERSAL2_TOS_FW_CONFIG},--tos-fw-config,${VERSAL2_TOS_FW_CONFIG})) 182endif 183 184ifeq ($(DEBUG),1) 185BL31_SOURCES += ${PLAT_PATH}/plat_ocm_coherency.c 186endif 187 188ifeq (${ERRATA_ABI_SUPPORT}, 1) 189# enable the cpu macros for errata abi interface 190CORTEX_A78_AE_H_INC := 1 191$(eval $(call add_define, CORTEX_A78_AE_H_INC)) 192endif 193 194# Enable Handoff protocol using transfer lists 195TRANSFER_LIST ?= 0 196 197ifeq (${TRANSFER_LIST},1) 198include lib/transfer_list/transfer_list.mk 199BL31_SOURCES += plat/amd/common/plat_fdt.c 200BL31_SOURCES += plat/amd/common/plat_xfer_list.c 201else 202BL31_SOURCES += plat/xilinx/common/plat_fdt.c 203endif 204 205XLNX_DT_CFG ?= 1 206ifeq (${TRANSFER_LIST},0) 207ifndef XILINX_OF_BOARD_DTB_ADDR 208XLNX_DT_CFG := 0 209endif 210endif 211$(eval $(call add_define,XLNX_DT_CFG)) 212 213ifdef CUSTOM_PKG_PATH 214include $(CUSTOM_PKG_PATH)/custom_pkg.mk 215else 216BL31_SOURCES += plat/xilinx/common/custom_sip_svc.c 217endif 218