xref: /rk3399_ARM-atf/plat/st/common/common.mk (revision 142ee34ea375479282d842e1905a61436e792cd8)
1a430382fSYann Gautier#
2f7c5ec1eSlaurenw-arm# Copyright (c) 2023-2024, STMicroelectronics - All Rights Reserved
3c3273703SChris Kay# Copyright (c) 2025, Arm Limited and Contributors. All rights reserved.
4a430382fSYann Gautier#
5a430382fSYann Gautier# SPDX-License-Identifier: BSD-3-Clause
6a430382fSYann Gautier#
7a430382fSYann Gautier
8a430382fSYann GautierRESET_TO_BL2			:=	1
9a430382fSYann Gautier
10a430382fSYann GautierSTM32MP_RECONFIGURE_CONSOLE	?=	0
11a430382fSYann GautierSTM32MP_UART_BAUDRATE		?=	115200
12a430382fSYann Gautier
13a430382fSYann GautierTRUSTED_BOARD_BOOT		?=	0
14a430382fSYann GautierSTM32MP_USE_EXTERNAL_HEAP	?=	0
15a430382fSYann Gautier
16a430382fSYann Gautier# Use secure library from the ROM code for authentication
17a430382fSYann GautierSTM32MP_CRYPTO_ROM_LIB		?=	0
18a430382fSYann Gautier
19a430382fSYann Gautier# Please don't increment this value without good understanding of
20a430382fSYann Gautier# the monotonic counter
21a430382fSYann GautierSTM32_TF_VERSION		?=	0
22a430382fSYann Gautier
23a430382fSYann Gautier# Enable dynamic memory mapping
24a430382fSYann GautierPLAT_XLAT_TABLES_DYNAMIC	:=	1
25a430382fSYann Gautier
26a430382fSYann Gautier# STM32 image header binary type for BL2
27a430382fSYann GautierSTM32_HEADER_BL2_BINARY_TYPE	:=	0x10
28a430382fSYann Gautier
29a430382fSYann GautierTF_CFLAGS			+=	-Wsign-compare
30a430382fSYann GautierTF_CFLAGS			+=	-Wformat-signedness
31a430382fSYann Gautier
3266b4c5c5SYann Gautier# Number of TF-A copies in the device
3366b4c5c5SYann GautierSTM32_TF_A_COPIES		:=	2
3466b4c5c5SYann Gautier
3566b4c5c5SYann Gautier# PLAT_PARTITION_MAX_ENTRIES must take care of STM32_TF-A_COPIES and other partitions
3666b4c5c5SYann GautierPLAT_PARTITION_MAX_ENTRIES	:=	$(shell echo $$(($(STM32_TF_A_COPIES) + $(STM32_EXTRA_PARTS))))
3766b4c5c5SYann Gautier
3866b4c5c5SYann Gautierifeq (${PSA_FWU_SUPPORT},1)
3966b4c5c5SYann Gautier# Number of banks of updatable firmware
4066b4c5c5SYann GautierNR_OF_FW_BANKS			:=	2
4166b4c5c5SYann GautierNR_OF_IMAGES_IN_FW_BANK		:=	1
4266b4c5c5SYann Gautier
4366b4c5c5SYann GautierFWU_MAX_PART = $(shell echo $$(($(STM32_TF_A_COPIES) + 2 + $(NR_OF_FW_BANKS))))
4466b4c5c5SYann Gautierifeq ($(shell test $(FWU_MAX_PART) -gt $(PLAT_PARTITION_MAX_ENTRIES); echo $$?),0)
4566b4c5c5SYann Gautier$(error "Required partition number is $(FWU_MAX_PART) where PLAT_PARTITION_MAX_ENTRIES is only \
4666b4c5c5SYann Gautier$(PLAT_PARTITION_MAX_ENTRIES)")
4766b4c5c5SYann Gautierendif
4866b4c5c5SYann Gautierendif
4966b4c5c5SYann Gautier
50a430382fSYann Gautier# Boot devices
51a430382fSYann GautierSTM32MP_EMMC			?=	0
52a430382fSYann GautierSTM32MP_SDMMC			?=	0
53a430382fSYann GautierSTM32MP_RAW_NAND		?=	0
54a430382fSYann GautierSTM32MP_SPI_NAND		?=	0
55a430382fSYann GautierSTM32MP_SPI_NOR			?=	0
56a430382fSYann Gautier
57a430382fSYann Gautier# Put both BL2 and FIP in eMMC boot partition
58a430382fSYann GautierSTM32MP_EMMC_BOOT		?=	0
59a430382fSYann Gautier
60a430382fSYann Gautier# Serial boot devices
61a430382fSYann GautierSTM32MP_UART_PROGRAMMER		?=	0
62a430382fSYann GautierSTM32MP_USB_PROGRAMMER		?=	0
63a430382fSYann Gautier
64ffb77421SChris Kay$(eval DTC_V = $(shell $($(ARCH)-dtc) -v | awk '{print $$NF}'))
65a430382fSYann Gautier$(eval DTC_VERSION = $(shell printf "%d" $(shell echo ${DTC_V} | cut -d- -f1 | sed "s/\./0/g" | grep -o "[0-9]*")))
66a430382fSYann GautierDTC_CPPFLAGS			+=	${INCLUDES}
67a430382fSYann GautierDTC_FLAGS			+=	-Wno-unit_address_vs_reg
68a430382fSYann Gautierifeq ($(shell test $(DTC_VERSION) -ge 10601; echo $$?),0)
69a430382fSYann GautierDTC_FLAGS			+=	-Wno-interrupt_provider
70a430382fSYann Gautierendif
71a430382fSYann Gautier
72a430382fSYann Gautier# Macros and rules to build TF binary
73a430382fSYann GautierSTM32_TF_ELF_LDFLAGS		:=	--hash-style=gnu --as-needed
74a430382fSYann GautierSTM32_TF_LINKERFILE		:=	${BUILD_PLAT}/${PLAT}.ld
75a430382fSYann Gautier
76a430382fSYann GautierASFLAGS				+=	-DBL2_BIN_PATH=\"${BUILD_PLAT}/bl2.bin\"
77a430382fSYann Gautier
78a430382fSYann Gautier# Variables for use with stm32image
79a430382fSYann GautierSTM32IMAGEPATH			?=	tools/stm32image
80c3273703SChris KaySTM32IMAGE			?=	${STM32IMAGEPATH}/stm32image$(.exe)
81a430382fSYann GautierSTM32IMAGE_SRC			:=	${STM32IMAGEPATH}/stm32image.c
82a430382fSYann GautierSTM32_DEPS			+=	${STM32IMAGE}
83a430382fSYann Gautier
84a430382fSYann GautierFIP_DEPS			+=	dtbs
85a430382fSYann GautierSTM32MP_HW_CONFIG		:=	${BL33_CFG}
86a430382fSYann Gautier
87a430382fSYann Gautier# Add the HW_CONFIG to FIP and specify the same to certtool
88a430382fSYann Gautier$(eval $(call TOOL_ADD_PAYLOAD,${STM32MP_HW_CONFIG},--hw-config))
89a430382fSYann Gautier
90a430382fSYann Gautier# Add the build options to pack Trusted OS Extra1 and Trusted OS Extra2 images
91a430382fSYann Gautier# in the FIP if the platform requires.
92a430382fSYann Gautierifneq ($(BL32_EXTRA1),)
93a430382fSYann Gautier$(eval $(call TOOL_ADD_IMG,BL32_EXTRA1,--tos-fw-extra1,,$(ENCRYPT_BL32)))
94a430382fSYann Gautierendif
95a430382fSYann Gautierifneq ($(BL32_EXTRA2),)
96a430382fSYann Gautier$(eval $(call TOOL_ADD_IMG,BL32_EXTRA2,--tos-fw-extra2,,$(ENCRYPT_BL32)))
97a430382fSYann Gautierendif
98a430382fSYann Gautier
99a430382fSYann Gautier# Enable flags for C files
100a430382fSYann Gautier$(eval $(call assert_booleans,\
101a430382fSYann Gautier	$(sort \
102a430382fSYann Gautier		PLAT_XLAT_TABLES_DYNAMIC \
103a430382fSYann Gautier		STM32MP_EMMC \
104a430382fSYann Gautier		STM32MP_EMMC_BOOT \
105a430382fSYann Gautier		STM32MP_RAW_NAND \
106a430382fSYann Gautier		STM32MP_RECONFIGURE_CONSOLE \
107a430382fSYann Gautier		STM32MP_SDMMC \
108a430382fSYann Gautier		STM32MP_SPI_NAND \
109a430382fSYann Gautier		STM32MP_SPI_NOR \
110a430382fSYann Gautier		STM32MP_UART_PROGRAMMER \
111a430382fSYann Gautier		STM32MP_USB_PROGRAMMER \
112a430382fSYann Gautier)))
113a430382fSYann Gautier
114a430382fSYann Gautier$(eval $(call assert_numerics,\
115a430382fSYann Gautier	$(sort \
116a430382fSYann Gautier		STM32_TF_VERSION \
117a430382fSYann Gautier		STM32MP_UART_BAUDRATE \
118a430382fSYann Gautier)))
119a430382fSYann Gautier
120a430382fSYann Gautier$(eval $(call add_defines,\
121a430382fSYann Gautier	$(sort \
122a430382fSYann Gautier		PLAT_XLAT_TABLES_DYNAMIC \
123a430382fSYann Gautier		STM32_TF_VERSION \
124a430382fSYann Gautier		STM32MP_EMMC \
125a430382fSYann Gautier		STM32MP_EMMC_BOOT \
126a430382fSYann Gautier		STM32MP_RAW_NAND \
127a430382fSYann Gautier		STM32MP_RECONFIGURE_CONSOLE \
128a430382fSYann Gautier		STM32MP_SDMMC \
129a430382fSYann Gautier		STM32MP_SPI_NAND \
130a430382fSYann Gautier		STM32MP_SPI_NOR \
131a430382fSYann Gautier		STM32MP_UART_BAUDRATE \
132a430382fSYann Gautier		STM32MP_UART_PROGRAMMER \
133a430382fSYann Gautier		STM32MP_USB_PROGRAMMER \
134a430382fSYann Gautier)))
135a430382fSYann Gautier
136a430382fSYann Gautier# Include paths and source files
137a430382fSYann GautierPLAT_INCLUDES			+=	-Iplat/st/common/include/
138a430382fSYann Gautier
139a430382fSYann Gautierinclude lib/fconf/fconf.mk
140a430382fSYann Gautierinclude lib/libfdt/libfdt.mk
141a430382fSYann Gautierinclude lib/zlib/zlib.mk
14266b4c5c5SYann Gautierifeq (${PSA_FWU_SUPPORT},1)
14366b4c5c5SYann Gautierinclude drivers/fwu/fwu.mk
14466b4c5c5SYann Gautierendif
145a430382fSYann Gautier
146a430382fSYann GautierPLAT_BL_COMMON_SOURCES		+=	common/uuid.c					\
147a430382fSYann Gautier					plat/st/common/stm32mp_common.c
148a430382fSYann Gautier
149a430382fSYann Gautier
150a430382fSYann Gautierinclude lib/xlat_tables_v2/xlat_tables.mk
151a430382fSYann GautierPLAT_BL_COMMON_SOURCES		+=	${XLAT_TABLES_LIB_SRCS}
152a430382fSYann Gautier
153a430382fSYann GautierPLAT_BL_COMMON_SOURCES		+=	drivers/clk/clk.c				\
154a430382fSYann Gautier					drivers/delay_timer/delay_timer.c		\
155a430382fSYann Gautier					drivers/delay_timer/generic_delay_timer.c	\
156a430382fSYann Gautier					drivers/st/clk/stm32mp_clkfunc.c		\
157a430382fSYann Gautier					drivers/st/ddr/stm32mp_ddr.c			\
158a430382fSYann Gautier					drivers/st/gpio/stm32_gpio.c			\
159a430382fSYann Gautier					drivers/st/regulator/regulator_core.c		\
160a430382fSYann Gautier					drivers/st/regulator/regulator_fixed.c		\
161a430382fSYann Gautier					plat/st/common/stm32mp_dt.c
162a430382fSYann Gautier
163a430382fSYann GautierBL2_SOURCES			+=	${FCONF_SOURCES} ${FCONF_DYN_SOURCES}
164a430382fSYann GautierBL2_SOURCES			+=	$(ZLIB_SOURCES)
165a430382fSYann Gautier
166a430382fSYann GautierBL2_SOURCES			+=	drivers/io/io_fip.c				\
167a430382fSYann Gautier					plat/st/common/bl2_io_storage.c			\
168954048f4SYann Gautier					plat/st/common/plat_image_load.c		\
169a430382fSYann Gautier					plat/st/common/stm32mp_fconf_io.c
170a430382fSYann Gautier
171a430382fSYann GautierBL2_SOURCES			+=	drivers/io/io_block.c				\
172a430382fSYann Gautier					drivers/io/io_mtd.c				\
173a430382fSYann Gautier					drivers/io/io_storage.c
174a430382fSYann Gautier
175a430382fSYann Gautierifneq (${DECRYPTION_SUPPORT},none)
176a430382fSYann GautierBL2_SOURCES			+=	drivers/io/io_encrypted.c
177a430382fSYann Gautierendif
178a430382fSYann Gautier
179a430382fSYann Gautierifeq (${TRUSTED_BOARD_BOOT},1)
180*142ee34eSLauren WehrmeisterAUTH_MK := drivers/auth/auth.mk
181*142ee34eSLauren Wehrmeister$(info Including ${AUTH_MK})
182*142ee34eSLauren Wehrmeisterinclude ${AUTH_MK}
183a430382fSYann Gautier
184a430382fSYann Gautierifeq (${GENERATE_COT},1)
185a430382fSYann GautierTFW_NVCTR_VAL			:=	0
186a430382fSYann GautierNTFW_NVCTR_VAL			:=	0
187a430382fSYann GautierKEY_ALG				:=	ecdsa
188a430382fSYann GautierHASH_ALG			:=	sha256
189a430382fSYann Gautier
190a430382fSYann Gautierifeq (${SAVE_KEYS},1)
191a430382fSYann GautierTRUSTED_WORLD_KEY		?=	${BUILD_PLAT}/trusted.pem
192a430382fSYann GautierNON_TRUSTED_WORLD_KEY		?=	${BUILD_PLAT}/non-trusted.pem
193a430382fSYann GautierBL32_KEY			?=	${BUILD_PLAT}/trusted_os.pem
194a430382fSYann GautierBL33_KEY			?=	${BUILD_PLAT}/non-trusted_os.pem
195a430382fSYann Gautierendif
196a430382fSYann Gautier
197a430382fSYann Gautierendif
198a430382fSYann GautierTF_MBEDTLS_KEY_ALG		:=	ecdsa
1996f3ca8adSlaurenw-armKEY_SIZE			:=	256
200a430382fSYann Gautier
201a430382fSYann Gautierifneq (${MBEDTLS_DIR},)
202a430382fSYann GautierMBEDTLS_MAJOR=$(shell grep -hP "define MBEDTLS_VERSION_MAJOR" \
203a430382fSYann Gautier${MBEDTLS_DIR}/include/mbedtls/*.h | grep -oe '\([0-9.]*\)')
204a430382fSYann Gautier
205a430382fSYann Gautierifeq (${MBEDTLS_MAJOR}, 3)
2069e1e82fcSYann GautierMBEDTLS_CONFIG_FILE		?=	"<stm32mp_mbedtls_config-3.h>"
207f7c5ec1eSlaurenw-armelse
208f7c5ec1eSlaurenw-arm$(error Error: TF-A only supports MbedTLS versions > 3.x)
209a430382fSYann Gautierendif
210a430382fSYann Gautierendif
211a430382fSYann Gautier
212a430382fSYann Gautierinclude drivers/auth/mbedtls/mbedtls_x509.mk
213a430382fSYann Gautier
214a430382fSYann GautierCOT_DESC_IN_DTB			:=	1
215a430382fSYann GautierAUTH_SOURCES			+=	lib/fconf/fconf_cot_getter.c			\
216a430382fSYann Gautier					lib/fconf/fconf_tbbr_getter.c			\
217a430382fSYann Gautier					plat/st/common/stm32mp_crypto_lib.c
218a430382fSYann Gautier
219a430382fSYann GautierBL2_SOURCES			+=	$(AUTH_SOURCES)					\
220a430382fSYann Gautier					plat/st/common/stm32mp_trusted_boot.c
221a430382fSYann Gautierendif
222a430382fSYann Gautier
223a430382fSYann Gautierifneq ($(filter 1,${STM32MP_EMMC} ${STM32MP_SDMMC}),)
224a430382fSYann GautierBL2_SOURCES			+=	drivers/mmc/mmc.c				\
225a430382fSYann Gautier					drivers/partition/gpt.c				\
226a430382fSYann Gautier					drivers/partition/partition.c
227a430382fSYann Gautierendif
228a430382fSYann Gautier
229a430382fSYann Gautierifneq ($(filter 1,${STM32MP_SPI_NAND} ${STM32MP_SPI_NOR}),)
230a430382fSYann GautierBL2_SOURCES			+=	drivers/mtd/spi-mem/spi_mem.c
231a430382fSYann Gautierendif
232a430382fSYann Gautier
233a430382fSYann Gautierifeq (${STM32MP_RAW_NAND},1)
234a430382fSYann Gautier$(eval $(call add_define_val,NAND_ONFI_DETECT,1))
235a430382fSYann GautierBL2_SOURCES			+=	drivers/mtd/nand/raw_nand.c
236a430382fSYann Gautierendif
237a430382fSYann Gautier
238a430382fSYann Gautierifeq (${STM32MP_SPI_NAND},1)
239a430382fSYann GautierBL2_SOURCES			+=	drivers/mtd/nand/spi_nand.c
240a430382fSYann Gautierendif
241a430382fSYann Gautier
242a430382fSYann Gautierifeq (${STM32MP_SPI_NOR},1)
243a430382fSYann Gautierifneq (${STM32MP_FORCE_MTD_START_OFFSET},)
244a430382fSYann Gautier$(eval $(call add_define_val,STM32MP_NOR_FIP_OFFSET,${STM32MP_FORCE_MTD_START_OFFSET}))
245a430382fSYann Gautierendif
246a430382fSYann GautierBL2_SOURCES			+=	drivers/mtd/nor/spi_nor.c
247a430382fSYann Gautierendif
248a430382fSYann Gautier
249a430382fSYann Gautierifneq ($(filter 1,${STM32MP_RAW_NAND} ${STM32MP_SPI_NAND}),)
250a430382fSYann Gautierifneq (${STM32MP_FORCE_MTD_START_OFFSET},)
251a430382fSYann Gautier$(eval $(call add_define_val,STM32MP_NAND_FIP_OFFSET,${STM32MP_FORCE_MTD_START_OFFSET}))
252a430382fSYann Gautierendif
253a430382fSYann GautierBL2_SOURCES			+=	drivers/mtd/nand/core.c
254a430382fSYann Gautierendif
255a430382fSYann Gautier
256a430382fSYann Gautierifneq ($(filter 1,${STM32MP_UART_PROGRAMMER} ${STM32MP_USB_PROGRAMMER}),)
257a430382fSYann GautierBL2_SOURCES			+=	drivers/io/io_memmap.c
258a430382fSYann Gautierendif
259a430382fSYann Gautier
260a430382fSYann Gautierifeq (${STM32MP_UART_PROGRAMMER},1)
261a430382fSYann GautierBL2_SOURCES			+=	plat/st/common/stm32cubeprogrammer_uart.c
262a430382fSYann Gautierendif
263a430382fSYann Gautier
264a430382fSYann Gautierifeq (${STM32MP_USB_PROGRAMMER},1)
265a430382fSYann GautierBL2_SOURCES			+=	drivers/usb/usb_device.c			\
266a430382fSYann Gautier					plat/st/common/stm32cubeprogrammer_usb.c	\
267a430382fSYann Gautier					plat/st/common/usb_dfu.c
268a430382fSYann Gautierendif
269a430382fSYann Gautier
270a430382fSYann GautierBL2_SOURCES			+=	drivers/st/ddr/stm32mp_ddr_test.c		\
271a430382fSYann Gautier					drivers/st/ddr/stm32mp_ram.c
272a430382fSYann Gautier
273a430382fSYann GautierBL2_SOURCES			+=	common/desc_image_load.c
274a430382fSYann Gautier
275a430382fSYann GautierBL2_SOURCES			+=	lib/optee/optee_utils.c
276