xref: /rk3399_ARM-atf/plat/st/common/common.mk (revision 000fe221b859ee82a4e2f8bf2c96f0086a772c89)
1a430382fSYann Gautier#
244bf9523SYann Gautier# Copyright (c) 2023-2025, 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
3044bf9523SYann Gautierifeq ($(findstring clang,$(notdir $(CC))),)
3144bf9523SYann Gautier# Only for GCC
32a430382fSYann GautierTF_CFLAGS			+=	-Wformat-signedness
3344bf9523SYann Gautierendif
34a430382fSYann Gautier
3566b4c5c5SYann Gautier# Number of TF-A copies in the device
3666b4c5c5SYann GautierSTM32_TF_A_COPIES		:=	2
3766b4c5c5SYann Gautier
3866b4c5c5SYann Gautier# PLAT_PARTITION_MAX_ENTRIES must take care of STM32_TF-A_COPIES and other partitions
3966b4c5c5SYann GautierPLAT_PARTITION_MAX_ENTRIES	:=	$(shell echo $$(($(STM32_TF_A_COPIES) + $(STM32_EXTRA_PARTS))))
4066b4c5c5SYann Gautier
4166b4c5c5SYann Gautierifeq (${PSA_FWU_SUPPORT},1)
4266b4c5c5SYann Gautier# Number of banks of updatable firmware
4366b4c5c5SYann GautierNR_OF_FW_BANKS			:=	2
4466b4c5c5SYann GautierNR_OF_IMAGES_IN_FW_BANK		:=	1
4566b4c5c5SYann Gautier
4666b4c5c5SYann GautierFWU_MAX_PART = $(shell echo $$(($(STM32_TF_A_COPIES) + 2 + $(NR_OF_FW_BANKS))))
4766b4c5c5SYann Gautierifeq ($(shell test $(FWU_MAX_PART) -gt $(PLAT_PARTITION_MAX_ENTRIES); echo $$?),0)
4866b4c5c5SYann Gautier$(error "Required partition number is $(FWU_MAX_PART) where PLAT_PARTITION_MAX_ENTRIES is only \
4966b4c5c5SYann Gautier$(PLAT_PARTITION_MAX_ENTRIES)")
5066b4c5c5SYann Gautierendif
5166b4c5c5SYann Gautierendif
5266b4c5c5SYann Gautier
53a430382fSYann Gautier# Boot devices
54a430382fSYann GautierSTM32MP_EMMC			?=	0
55a430382fSYann GautierSTM32MP_SDMMC			?=	0
56a430382fSYann GautierSTM32MP_RAW_NAND		?=	0
57a430382fSYann GautierSTM32MP_SPI_NAND		?=	0
58a430382fSYann GautierSTM32MP_SPI_NOR			?=	0
59a430382fSYann Gautier
60a430382fSYann Gautier# Put both BL2 and FIP in eMMC boot partition
61a430382fSYann GautierSTM32MP_EMMC_BOOT		?=	0
62a430382fSYann Gautier
63a430382fSYann Gautier# Serial boot devices
64a430382fSYann GautierSTM32MP_UART_PROGRAMMER		?=	0
65a430382fSYann GautierSTM32MP_USB_PROGRAMMER		?=	0
66a430382fSYann Gautier
67ffb77421SChris Kay$(eval DTC_V = $(shell $($(ARCH)-dtc) -v | awk '{print $$NF}'))
68a430382fSYann Gautier$(eval DTC_VERSION = $(shell printf "%d" $(shell echo ${DTC_V} | cut -d- -f1 | sed "s/\./0/g" | grep -o "[0-9]*")))
69a430382fSYann GautierDTC_CPPFLAGS			+=	${INCLUDES}
70a430382fSYann GautierDTC_FLAGS			+=	-Wno-unit_address_vs_reg
71a430382fSYann Gautierifeq ($(shell test $(DTC_VERSION) -ge 10601; echo $$?),0)
72a430382fSYann GautierDTC_FLAGS			+=	-Wno-interrupt_provider
73a430382fSYann Gautierendif
74a430382fSYann Gautier
75a430382fSYann Gautier# Macros and rules to build TF binary
76a430382fSYann GautierSTM32_TF_ELF_LDFLAGS		:=	--hash-style=gnu --as-needed
77a430382fSYann GautierSTM32_TF_LINKERFILE		:=	${BUILD_PLAT}/${PLAT}.ld
78a430382fSYann Gautier
79a430382fSYann GautierASFLAGS				+=	-DBL2_BIN_PATH=\"${BUILD_PLAT}/bl2.bin\"
80a430382fSYann Gautier
81a430382fSYann Gautier# Variables for use with stm32image
82a430382fSYann GautierSTM32IMAGEPATH			?=	tools/stm32image
830b4722cfSYann GautierSTM32IMAGE			?=	${BUILD_PLAT}/${STM32IMAGEPATH}/stm32image$(.exe)
84a430382fSYann GautierSTM32IMAGE_SRC			:=	${STM32IMAGEPATH}/stm32image.c
85a430382fSYann GautierSTM32_DEPS			+=	${STM32IMAGE}
86a430382fSYann Gautier
87a430382fSYann GautierFIP_DEPS			+=	dtbs
88a430382fSYann GautierSTM32MP_HW_CONFIG		:=	${BL33_CFG}
89a430382fSYann Gautier
90a430382fSYann Gautier# Add the HW_CONFIG to FIP and specify the same to certtool
91a430382fSYann Gautier$(eval $(call TOOL_ADD_PAYLOAD,${STM32MP_HW_CONFIG},--hw-config))
92a430382fSYann Gautier
93a430382fSYann Gautier# Add the build options to pack Trusted OS Extra1 and Trusted OS Extra2 images
94a430382fSYann Gautier# in the FIP if the platform requires.
95a430382fSYann Gautierifneq ($(BL32_EXTRA1),)
96a430382fSYann Gautier$(eval $(call TOOL_ADD_IMG,BL32_EXTRA1,--tos-fw-extra1,,$(ENCRYPT_BL32)))
97a430382fSYann Gautierendif
98a430382fSYann Gautierifneq ($(BL32_EXTRA2),)
99a430382fSYann Gautier$(eval $(call TOOL_ADD_IMG,BL32_EXTRA2,--tos-fw-extra2,,$(ENCRYPT_BL32)))
100a430382fSYann Gautierendif
101a430382fSYann Gautier
102a430382fSYann Gautier# Enable flags for C files
103a430382fSYann Gautier$(eval $(call assert_booleans,\
104a430382fSYann Gautier	$(sort \
105a430382fSYann Gautier		PLAT_XLAT_TABLES_DYNAMIC \
106a430382fSYann Gautier		STM32MP_EMMC \
107a430382fSYann Gautier		STM32MP_EMMC_BOOT \
108a430382fSYann Gautier		STM32MP_RAW_NAND \
109a430382fSYann Gautier		STM32MP_RECONFIGURE_CONSOLE \
110a430382fSYann Gautier		STM32MP_SDMMC \
111a430382fSYann Gautier		STM32MP_SPI_NAND \
112a430382fSYann Gautier		STM32MP_SPI_NOR \
113a430382fSYann Gautier		STM32MP_UART_PROGRAMMER \
114a430382fSYann Gautier		STM32MP_USB_PROGRAMMER \
115a430382fSYann Gautier)))
116a430382fSYann Gautier
117a430382fSYann Gautier$(eval $(call assert_numerics,\
118a430382fSYann Gautier	$(sort \
119a430382fSYann Gautier		STM32_TF_VERSION \
120a430382fSYann Gautier		STM32MP_UART_BAUDRATE \
121a430382fSYann Gautier)))
122a430382fSYann Gautier
123a430382fSYann Gautier$(eval $(call add_defines,\
124a430382fSYann Gautier	$(sort \
125a430382fSYann Gautier		PLAT_XLAT_TABLES_DYNAMIC \
126a430382fSYann Gautier		STM32_TF_VERSION \
127a430382fSYann Gautier		STM32MP_EMMC \
128a430382fSYann Gautier		STM32MP_EMMC_BOOT \
129a430382fSYann Gautier		STM32MP_RAW_NAND \
130a430382fSYann Gautier		STM32MP_RECONFIGURE_CONSOLE \
131a430382fSYann Gautier		STM32MP_SDMMC \
132a430382fSYann Gautier		STM32MP_SPI_NAND \
133a430382fSYann Gautier		STM32MP_SPI_NOR \
134a430382fSYann Gautier		STM32MP_UART_BAUDRATE \
135a430382fSYann Gautier		STM32MP_UART_PROGRAMMER \
136a430382fSYann Gautier		STM32MP_USB_PROGRAMMER \
137a430382fSYann Gautier)))
138a430382fSYann Gautier
139a430382fSYann Gautier# Include paths and source files
140a430382fSYann GautierPLAT_INCLUDES			+=	-Iplat/st/common/include/
141a430382fSYann Gautier
142a430382fSYann Gautierinclude lib/fconf/fconf.mk
143a430382fSYann Gautierinclude lib/libfdt/libfdt.mk
144a430382fSYann Gautierinclude lib/zlib/zlib.mk
14566b4c5c5SYann Gautierifeq (${PSA_FWU_SUPPORT},1)
14666b4c5c5SYann Gautierinclude drivers/fwu/fwu.mk
14766b4c5c5SYann Gautierendif
148a430382fSYann Gautier
149a430382fSYann GautierPLAT_BL_COMMON_SOURCES		+=	common/uuid.c					\
150a430382fSYann Gautier					plat/st/common/stm32mp_common.c
151a430382fSYann Gautier
152a430382fSYann Gautier
153a430382fSYann Gautierinclude lib/xlat_tables_v2/xlat_tables.mk
154a430382fSYann GautierPLAT_BL_COMMON_SOURCES		+=	${XLAT_TABLES_LIB_SRCS}
155a430382fSYann Gautier
156a430382fSYann GautierPLAT_BL_COMMON_SOURCES		+=	drivers/clk/clk.c				\
157a430382fSYann Gautier					drivers/delay_timer/delay_timer.c		\
158a430382fSYann Gautier					drivers/delay_timer/generic_delay_timer.c	\
159a430382fSYann Gautier					drivers/st/clk/stm32mp_clkfunc.c		\
160a430382fSYann Gautier					drivers/st/ddr/stm32mp_ddr.c			\
161a430382fSYann Gautier					drivers/st/gpio/stm32_gpio.c			\
162a430382fSYann Gautier					drivers/st/regulator/regulator_core.c		\
163a430382fSYann Gautier					drivers/st/regulator/regulator_fixed.c		\
164a430382fSYann Gautier					plat/st/common/stm32mp_dt.c
165a430382fSYann Gautier
166a430382fSYann GautierBL2_SOURCES			+=	${FCONF_SOURCES} ${FCONF_DYN_SOURCES}
167a430382fSYann GautierBL2_SOURCES			+=	$(ZLIB_SOURCES)
168a430382fSYann Gautier
169a430382fSYann GautierBL2_SOURCES			+=	drivers/io/io_fip.c				\
170a430382fSYann Gautier					plat/st/common/bl2_io_storage.c			\
171954048f4SYann Gautier					plat/st/common/plat_image_load.c		\
172a430382fSYann Gautier					plat/st/common/stm32mp_fconf_io.c
173a430382fSYann Gautier
174a430382fSYann GautierBL2_SOURCES			+=	drivers/io/io_block.c				\
175a430382fSYann Gautier					drivers/io/io_mtd.c				\
176a430382fSYann Gautier					drivers/io/io_storage.c
177a430382fSYann Gautier
178a430382fSYann Gautierifneq (${DECRYPTION_SUPPORT},none)
179a430382fSYann GautierBL2_SOURCES			+=	drivers/io/io_encrypted.c
180a430382fSYann Gautierendif
181a430382fSYann Gautier
182a430382fSYann Gautierifeq (${TRUSTED_BOARD_BOOT},1)
183142ee34eSLauren WehrmeisterAUTH_MK := drivers/auth/auth.mk
184142ee34eSLauren Wehrmeister$(info Including ${AUTH_MK})
185142ee34eSLauren Wehrmeisterinclude ${AUTH_MK}
186a430382fSYann Gautier
187a430382fSYann Gautierifeq (${GENERATE_COT},1)
188a430382fSYann GautierTFW_NVCTR_VAL			:=	0
189a430382fSYann GautierNTFW_NVCTR_VAL			:=	0
190a430382fSYann GautierKEY_ALG				:=	ecdsa
191a430382fSYann GautierHASH_ALG			:=	sha256
192a430382fSYann Gautier
193a430382fSYann Gautierifeq (${SAVE_KEYS},1)
194a430382fSYann GautierTRUSTED_WORLD_KEY		?=	${BUILD_PLAT}/trusted.pem
195a430382fSYann GautierNON_TRUSTED_WORLD_KEY		?=	${BUILD_PLAT}/non-trusted.pem
196a430382fSYann GautierBL32_KEY			?=	${BUILD_PLAT}/trusted_os.pem
197a430382fSYann GautierBL33_KEY			?=	${BUILD_PLAT}/non-trusted_os.pem
198a430382fSYann Gautierendif
199a430382fSYann Gautier
200a430382fSYann Gautierendif
201a430382fSYann GautierTF_MBEDTLS_KEY_ALG		:=	ecdsa
2026f3ca8adSlaurenw-armKEY_SIZE			:=	256
203a430382fSYann Gautier
204*1dd3b656SYann GautierPLAT_INCLUDES			+=	-Iinclude/drivers/auth/mbedtls
205a430382fSYann Gautier
206*1dd3b656SYann GautierMBEDTLS_CONFIG_FILE		?=	"<stm32mp_mbedtls_config.h>"
207a430382fSYann Gautier
208a430382fSYann Gautierinclude drivers/auth/mbedtls/mbedtls_x509.mk
209a430382fSYann Gautier
210a430382fSYann GautierCOT_DESC_IN_DTB			:=	1
211a430382fSYann GautierAUTH_SOURCES			+=	lib/fconf/fconf_cot_getter.c			\
212a430382fSYann Gautier					lib/fconf/fconf_tbbr_getter.c			\
213a430382fSYann Gautier					plat/st/common/stm32mp_crypto_lib.c
214a430382fSYann Gautier
215a430382fSYann GautierBL2_SOURCES			+=	$(AUTH_SOURCES)					\
216a430382fSYann Gautier					plat/st/common/stm32mp_trusted_boot.c
217a430382fSYann Gautierendif
218a430382fSYann Gautier
219a430382fSYann Gautierifneq ($(filter 1,${STM32MP_EMMC} ${STM32MP_SDMMC}),)
220a430382fSYann GautierBL2_SOURCES			+=	drivers/mmc/mmc.c				\
221a430382fSYann Gautier					drivers/partition/gpt.c				\
222a430382fSYann Gautier					drivers/partition/partition.c
223a430382fSYann Gautierendif
224a430382fSYann Gautier
225a430382fSYann Gautierifneq ($(filter 1,${STM32MP_SPI_NAND} ${STM32MP_SPI_NOR}),)
226a430382fSYann GautierBL2_SOURCES			+=	drivers/mtd/spi-mem/spi_mem.c
227a430382fSYann Gautierendif
228a430382fSYann Gautier
229a430382fSYann Gautierifeq (${STM32MP_RAW_NAND},1)
230a430382fSYann Gautier$(eval $(call add_define_val,NAND_ONFI_DETECT,1))
231a430382fSYann GautierBL2_SOURCES			+=	drivers/mtd/nand/raw_nand.c
232a430382fSYann Gautierendif
233a430382fSYann Gautier
234a430382fSYann Gautierifeq (${STM32MP_SPI_NAND},1)
235a430382fSYann GautierBL2_SOURCES			+=	drivers/mtd/nand/spi_nand.c
236a430382fSYann Gautierendif
237a430382fSYann Gautier
238a430382fSYann Gautierifeq (${STM32MP_SPI_NOR},1)
239a430382fSYann Gautierifneq (${STM32MP_FORCE_MTD_START_OFFSET},)
240a430382fSYann Gautier$(eval $(call add_define_val,STM32MP_NOR_FIP_OFFSET,${STM32MP_FORCE_MTD_START_OFFSET}))
241a430382fSYann Gautierendif
242a430382fSYann GautierBL2_SOURCES			+=	drivers/mtd/nor/spi_nor.c
243a430382fSYann Gautierendif
244a430382fSYann Gautier
245a430382fSYann Gautierifneq ($(filter 1,${STM32MP_RAW_NAND} ${STM32MP_SPI_NAND}),)
246a430382fSYann Gautierifneq (${STM32MP_FORCE_MTD_START_OFFSET},)
247a430382fSYann Gautier$(eval $(call add_define_val,STM32MP_NAND_FIP_OFFSET,${STM32MP_FORCE_MTD_START_OFFSET}))
248a430382fSYann Gautierendif
249a430382fSYann GautierBL2_SOURCES			+=	drivers/mtd/nand/core.c
250a430382fSYann Gautierendif
251a430382fSYann Gautier
252a430382fSYann Gautierifneq ($(filter 1,${STM32MP_UART_PROGRAMMER} ${STM32MP_USB_PROGRAMMER}),)
253a430382fSYann GautierBL2_SOURCES			+=	drivers/io/io_memmap.c
254a430382fSYann Gautierendif
255a430382fSYann Gautier
256a430382fSYann Gautierifeq (${STM32MP_UART_PROGRAMMER},1)
257a430382fSYann GautierBL2_SOURCES			+=	plat/st/common/stm32cubeprogrammer_uart.c
258a430382fSYann Gautierendif
259a430382fSYann Gautier
260a430382fSYann Gautierifeq (${STM32MP_USB_PROGRAMMER},1)
261a430382fSYann GautierBL2_SOURCES			+=	drivers/usb/usb_device.c			\
262a430382fSYann Gautier					plat/st/common/stm32cubeprogrammer_usb.c	\
263a430382fSYann Gautier					plat/st/common/usb_dfu.c
264a430382fSYann Gautierendif
265a430382fSYann Gautier
266a430382fSYann GautierBL2_SOURCES			+=	drivers/st/ddr/stm32mp_ddr_test.c		\
267a430382fSYann Gautier					drivers/st/ddr/stm32mp_ram.c
268a430382fSYann Gautier
269a430382fSYann GautierBL2_SOURCES			+=	common/desc_image_load.c
270a430382fSYann Gautier
271a430382fSYann GautierBL2_SOURCES			+=	lib/optee/optee_utils.c
272