xref: /rk3399_ARM-atf/plat/amd/versal2/platform.mk (revision b67e984664a8644d6cfd1812cabaa02cf24f09c9)
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