xref: /rk3399_ARM-atf/plat/st/common/common.mk (revision 9e1e82fce091f0ed926aaa6e13d0eef4a81bbdef)
1a430382fSYann Gautier#
2a430382fSYann Gautier# Copyright (c) 2023, STMicroelectronics - All Rights Reserved
3a430382fSYann Gautier#
4a430382fSYann Gautier# SPDX-License-Identifier: BSD-3-Clause
5a430382fSYann Gautier#
6a430382fSYann Gautier
7a430382fSYann GautierRESET_TO_BL2			:=	1
8a430382fSYann Gautier
9a430382fSYann GautierSTM32MP_EARLY_CONSOLE		?=	0
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
32a430382fSYann Gautier# Boot devices
33a430382fSYann GautierSTM32MP_EMMC			?=	0
34a430382fSYann GautierSTM32MP_SDMMC			?=	0
35a430382fSYann GautierSTM32MP_RAW_NAND		?=	0
36a430382fSYann GautierSTM32MP_SPI_NAND		?=	0
37a430382fSYann GautierSTM32MP_SPI_NOR			?=	0
38a430382fSYann Gautier
39a430382fSYann Gautier# Put both BL2 and FIP in eMMC boot partition
40a430382fSYann GautierSTM32MP_EMMC_BOOT		?=	0
41a430382fSYann Gautier
42a430382fSYann Gautier# Serial boot devices
43a430382fSYann GautierSTM32MP_UART_PROGRAMMER		?=	0
44a430382fSYann GautierSTM32MP_USB_PROGRAMMER		?=	0
45a430382fSYann Gautier
46a430382fSYann Gautier$(eval DTC_V = $(shell $(DTC) -v | awk '{print $$NF}'))
47a430382fSYann Gautier$(eval DTC_VERSION = $(shell printf "%d" $(shell echo ${DTC_V} | cut -d- -f1 | sed "s/\./0/g" | grep -o "[0-9]*")))
48a430382fSYann GautierDTC_CPPFLAGS			+=	${INCLUDES}
49a430382fSYann GautierDTC_FLAGS			+=	-Wno-unit_address_vs_reg
50a430382fSYann Gautierifeq ($(shell test $(DTC_VERSION) -ge 10601; echo $$?),0)
51a430382fSYann GautierDTC_FLAGS			+=	-Wno-interrupt_provider
52a430382fSYann Gautierendif
53a430382fSYann Gautier
54a430382fSYann Gautier# Macros and rules to build TF binary
55a430382fSYann GautierSTM32_TF_ELF_LDFLAGS		:=	--hash-style=gnu --as-needed
56a430382fSYann GautierSTM32_TF_LINKERFILE		:=	${BUILD_PLAT}/${PLAT}.ld
57a430382fSYann Gautier
58a430382fSYann GautierASFLAGS				+=	-DBL2_BIN_PATH=\"${BUILD_PLAT}/bl2.bin\"
59a430382fSYann Gautier
60a430382fSYann Gautier# Variables for use with stm32image
61a430382fSYann GautierSTM32IMAGEPATH			?=	tools/stm32image
62a430382fSYann GautierSTM32IMAGE			?=	${STM32IMAGEPATH}/stm32image${BIN_EXT}
63a430382fSYann GautierSTM32IMAGE_SRC			:=	${STM32IMAGEPATH}/stm32image.c
64a430382fSYann GautierSTM32_DEPS			+=	${STM32IMAGE}
65a430382fSYann Gautier
66a430382fSYann GautierFIP_DEPS			+=	dtbs
67a430382fSYann GautierSTM32MP_HW_CONFIG		:=	${BL33_CFG}
68a430382fSYann Gautier
69a430382fSYann Gautier# Add the HW_CONFIG to FIP and specify the same to certtool
70a430382fSYann Gautier$(eval $(call TOOL_ADD_PAYLOAD,${STM32MP_HW_CONFIG},--hw-config))
71a430382fSYann Gautier
72a430382fSYann Gautier# Add the build options to pack Trusted OS Extra1 and Trusted OS Extra2 images
73a430382fSYann Gautier# in the FIP if the platform requires.
74a430382fSYann Gautierifneq ($(BL32_EXTRA1),)
75a430382fSYann Gautier$(eval $(call TOOL_ADD_IMG,BL32_EXTRA1,--tos-fw-extra1,,$(ENCRYPT_BL32)))
76a430382fSYann Gautierendif
77a430382fSYann Gautierifneq ($(BL32_EXTRA2),)
78a430382fSYann Gautier$(eval $(call TOOL_ADD_IMG,BL32_EXTRA2,--tos-fw-extra2,,$(ENCRYPT_BL32)))
79a430382fSYann Gautierendif
80a430382fSYann Gautier
81a430382fSYann Gautier# Enable flags for C files
82a430382fSYann Gautier$(eval $(call assert_booleans,\
83a430382fSYann Gautier	$(sort \
84a430382fSYann Gautier		PLAT_XLAT_TABLES_DYNAMIC \
85a430382fSYann Gautier		STM32MP_EARLY_CONSOLE \
86a430382fSYann Gautier		STM32MP_EMMC \
87a430382fSYann Gautier		STM32MP_EMMC_BOOT \
88a430382fSYann Gautier		STM32MP_RAW_NAND \
89a430382fSYann Gautier		STM32MP_RECONFIGURE_CONSOLE \
90a430382fSYann Gautier		STM32MP_SDMMC \
91a430382fSYann Gautier		STM32MP_SPI_NAND \
92a430382fSYann Gautier		STM32MP_SPI_NOR \
93a430382fSYann Gautier		STM32MP_UART_PROGRAMMER \
94a430382fSYann Gautier		STM32MP_USB_PROGRAMMER \
95a430382fSYann Gautier)))
96a430382fSYann Gautier
97a430382fSYann Gautier$(eval $(call assert_numerics,\
98a430382fSYann Gautier	$(sort \
99a430382fSYann Gautier		STM32_TF_VERSION \
100a430382fSYann Gautier		STM32MP_UART_BAUDRATE \
101a430382fSYann Gautier)))
102a430382fSYann Gautier
103a430382fSYann Gautier$(eval $(call add_defines,\
104a430382fSYann Gautier	$(sort \
105a430382fSYann Gautier		PLAT_XLAT_TABLES_DYNAMIC \
106a430382fSYann Gautier		STM32_TF_VERSION \
107a430382fSYann Gautier		STM32MP_EARLY_CONSOLE \
108a430382fSYann Gautier		STM32MP_EMMC \
109a430382fSYann Gautier		STM32MP_EMMC_BOOT \
110a430382fSYann Gautier		STM32MP_RAW_NAND \
111a430382fSYann Gautier		STM32MP_RECONFIGURE_CONSOLE \
112a430382fSYann Gautier		STM32MP_SDMMC \
113a430382fSYann Gautier		STM32MP_SPI_NAND \
114a430382fSYann Gautier		STM32MP_SPI_NOR \
115a430382fSYann Gautier		STM32MP_UART_BAUDRATE \
116a430382fSYann Gautier		STM32MP_UART_PROGRAMMER \
117a430382fSYann Gautier		STM32MP_USB_PROGRAMMER \
118a430382fSYann Gautier)))
119a430382fSYann Gautier
120a430382fSYann Gautier# Include paths and source files
121a430382fSYann GautierPLAT_INCLUDES			+=	-Iplat/st/common/include/
122a430382fSYann Gautier
123a430382fSYann Gautierinclude lib/fconf/fconf.mk
124a430382fSYann Gautierinclude lib/libfdt/libfdt.mk
125a430382fSYann Gautierinclude lib/zlib/zlib.mk
126a430382fSYann Gautier
127a430382fSYann GautierPLAT_BL_COMMON_SOURCES		+=	common/uuid.c					\
128a430382fSYann Gautier					plat/st/common/stm32mp_common.c
129a430382fSYann Gautier
130a430382fSYann Gautier
131a430382fSYann Gautierinclude lib/xlat_tables_v2/xlat_tables.mk
132a430382fSYann GautierPLAT_BL_COMMON_SOURCES		+=	${XLAT_TABLES_LIB_SRCS}
133a430382fSYann Gautier
134a430382fSYann GautierPLAT_BL_COMMON_SOURCES		+=	drivers/clk/clk.c				\
135a430382fSYann Gautier					drivers/delay_timer/delay_timer.c		\
136a430382fSYann Gautier					drivers/delay_timer/generic_delay_timer.c	\
137a430382fSYann Gautier					drivers/st/clk/stm32mp_clkfunc.c		\
138a430382fSYann Gautier					drivers/st/ddr/stm32mp_ddr.c			\
139a430382fSYann Gautier					drivers/st/gpio/stm32_gpio.c			\
140a430382fSYann Gautier					drivers/st/regulator/regulator_core.c		\
141a430382fSYann Gautier					drivers/st/regulator/regulator_fixed.c		\
142a430382fSYann Gautier					plat/st/common/stm32mp_dt.c
143a430382fSYann Gautier
144a430382fSYann GautierBL2_SOURCES			+=	${FCONF_SOURCES} ${FCONF_DYN_SOURCES}
145a430382fSYann GautierBL2_SOURCES			+=	$(ZLIB_SOURCES)
146a430382fSYann Gautier
147a430382fSYann GautierBL2_SOURCES			+=	drivers/io/io_fip.c				\
148a430382fSYann Gautier					plat/st/common/bl2_io_storage.c			\
149a430382fSYann Gautier					plat/st/common/stm32mp_fconf_io.c
150a430382fSYann Gautier
151a430382fSYann GautierBL2_SOURCES			+=	drivers/io/io_block.c				\
152a430382fSYann Gautier					drivers/io/io_mtd.c				\
153a430382fSYann Gautier					drivers/io/io_storage.c
154a430382fSYann Gautier
155a430382fSYann Gautierifneq (${DECRYPTION_SUPPORT},none)
156a430382fSYann GautierBL2_SOURCES			+=	drivers/io/io_encrypted.c
157a430382fSYann Gautierendif
158a430382fSYann Gautier
159a430382fSYann Gautierifeq (${TRUSTED_BOARD_BOOT},1)
160a430382fSYann GautierAUTH_SOURCES			:=	drivers/auth/auth_mod.c				\
161a430382fSYann Gautier					drivers/auth/crypto_mod.c			\
162a430382fSYann Gautier					drivers/auth/img_parser_mod.c
163a430382fSYann Gautier
164a430382fSYann Gautierifeq (${GENERATE_COT},1)
165a430382fSYann GautierTFW_NVCTR_VAL			:=	0
166a430382fSYann GautierNTFW_NVCTR_VAL			:=	0
167a430382fSYann GautierKEY_SIZE			:=
168a430382fSYann GautierKEY_ALG				:=	ecdsa
169a430382fSYann GautierHASH_ALG			:=	sha256
170a430382fSYann Gautier
171a430382fSYann Gautierifeq (${SAVE_KEYS},1)
172a430382fSYann GautierTRUSTED_WORLD_KEY		?=	${BUILD_PLAT}/trusted.pem
173a430382fSYann GautierNON_TRUSTED_WORLD_KEY		?=	${BUILD_PLAT}/non-trusted.pem
174a430382fSYann GautierBL32_KEY			?=	${BUILD_PLAT}/trusted_os.pem
175a430382fSYann GautierBL33_KEY			?=	${BUILD_PLAT}/non-trusted_os.pem
176a430382fSYann Gautierendif
177a430382fSYann Gautier
178a430382fSYann Gautierendif
179a430382fSYann GautierTF_MBEDTLS_KEY_ALG		:=	ecdsa
180a430382fSYann Gautier
181a430382fSYann Gautierifneq (${MBEDTLS_DIR},)
182a430382fSYann GautierMBEDTLS_MAJOR=$(shell grep -hP "define MBEDTLS_VERSION_MAJOR" \
183a430382fSYann Gautier${MBEDTLS_DIR}/include/mbedtls/*.h | grep -oe '\([0-9.]*\)')
184a430382fSYann Gautier
185a430382fSYann Gautierifeq (${MBEDTLS_MAJOR}, 2)
186*9e1e82fcSYann GautierMBEDTLS_CONFIG_FILE		?=	"<stm32mp_mbedtls_config-2.h>"
187a430382fSYann Gautierendif
188a430382fSYann Gautier
189a430382fSYann Gautierifeq (${MBEDTLS_MAJOR}, 3)
190*9e1e82fcSYann GautierMBEDTLS_CONFIG_FILE		?=	"<stm32mp_mbedtls_config-3.h>"
191a430382fSYann Gautierendif
192a430382fSYann Gautierendif
193a430382fSYann Gautier
194a430382fSYann Gautierinclude drivers/auth/mbedtls/mbedtls_x509.mk
195a430382fSYann Gautier
196a430382fSYann GautierCOT_DESC_IN_DTB			:=	1
197a430382fSYann GautierAUTH_SOURCES			+=	lib/fconf/fconf_cot_getter.c			\
198a430382fSYann Gautier					lib/fconf/fconf_tbbr_getter.c			\
199a430382fSYann Gautier					plat/st/common/stm32mp_crypto_lib.c
200a430382fSYann Gautier
201a430382fSYann GautierBL2_SOURCES			+=	$(AUTH_SOURCES)					\
202a430382fSYann Gautier					plat/st/common/stm32mp_trusted_boot.c
203a430382fSYann Gautierendif
204a430382fSYann Gautier
205a430382fSYann Gautierifneq ($(filter 1,${STM32MP_EMMC} ${STM32MP_SDMMC}),)
206a430382fSYann GautierBL2_SOURCES			+=	drivers/mmc/mmc.c				\
207a430382fSYann Gautier					drivers/partition/gpt.c				\
208a430382fSYann Gautier					drivers/partition/partition.c
209a430382fSYann Gautierendif
210a430382fSYann Gautier
211a430382fSYann Gautierifneq ($(filter 1,${STM32MP_SPI_NAND} ${STM32MP_SPI_NOR}),)
212a430382fSYann GautierBL2_SOURCES			+=	drivers/mtd/spi-mem/spi_mem.c
213a430382fSYann Gautierendif
214a430382fSYann Gautier
215a430382fSYann Gautierifeq (${STM32MP_RAW_NAND},1)
216a430382fSYann Gautier$(eval $(call add_define_val,NAND_ONFI_DETECT,1))
217a430382fSYann GautierBL2_SOURCES			+=	drivers/mtd/nand/raw_nand.c
218a430382fSYann Gautierendif
219a430382fSYann Gautier
220a430382fSYann Gautierifeq (${STM32MP_SPI_NAND},1)
221a430382fSYann GautierBL2_SOURCES			+=	drivers/mtd/nand/spi_nand.c
222a430382fSYann Gautierendif
223a430382fSYann Gautier
224a430382fSYann Gautierifeq (${STM32MP_SPI_NOR},1)
225a430382fSYann Gautierifneq (${STM32MP_FORCE_MTD_START_OFFSET},)
226a430382fSYann Gautier$(eval $(call add_define_val,STM32MP_NOR_FIP_OFFSET,${STM32MP_FORCE_MTD_START_OFFSET}))
227a430382fSYann Gautierendif
228a430382fSYann GautierBL2_SOURCES			+=	drivers/mtd/nor/spi_nor.c
229a430382fSYann Gautierendif
230a430382fSYann Gautier
231a430382fSYann Gautierifneq ($(filter 1,${STM32MP_RAW_NAND} ${STM32MP_SPI_NAND}),)
232a430382fSYann Gautierifneq (${STM32MP_FORCE_MTD_START_OFFSET},)
233a430382fSYann Gautier$(eval $(call add_define_val,STM32MP_NAND_FIP_OFFSET,${STM32MP_FORCE_MTD_START_OFFSET}))
234a430382fSYann Gautierendif
235a430382fSYann GautierBL2_SOURCES			+=	drivers/mtd/nand/core.c
236a430382fSYann Gautierendif
237a430382fSYann Gautier
238a430382fSYann Gautierifneq ($(filter 1,${STM32MP_UART_PROGRAMMER} ${STM32MP_USB_PROGRAMMER}),)
239a430382fSYann GautierBL2_SOURCES			+=	drivers/io/io_memmap.c
240a430382fSYann Gautierendif
241a430382fSYann Gautier
242a430382fSYann Gautierifeq (${STM32MP_UART_PROGRAMMER},1)
243a430382fSYann GautierBL2_SOURCES			+=	plat/st/common/stm32cubeprogrammer_uart.c
244a430382fSYann Gautierendif
245a430382fSYann Gautier
246a430382fSYann Gautierifeq (${STM32MP_USB_PROGRAMMER},1)
247a430382fSYann GautierBL2_SOURCES			+=	drivers/usb/usb_device.c			\
248a430382fSYann Gautier					plat/st/common/stm32cubeprogrammer_usb.c	\
249a430382fSYann Gautier					plat/st/common/usb_dfu.c
250a430382fSYann Gautierendif
251a430382fSYann Gautier
252a430382fSYann GautierBL2_SOURCES			+=	drivers/st/ddr/stm32mp_ddr_test.c		\
253a430382fSYann Gautier					drivers/st/ddr/stm32mp_ram.c
254a430382fSYann Gautier
255a430382fSYann GautierBL2_SOURCES			+=	common/desc_image_load.c
256a430382fSYann Gautier
257a430382fSYann GautierBL2_SOURCES			+=	lib/optee/optee_utils.c
258