xref: /arm-trusted-firmware/plat/st/common/common.mk (revision 91f16700b400a8c0651d24a598fc48ee2997a0d7)
1*91f16700Schasinglulu#
2*91f16700Schasinglulu# Copyright (c) 2023, STMicroelectronics - All Rights Reserved
3*91f16700Schasinglulu#
4*91f16700Schasinglulu# SPDX-License-Identifier: BSD-3-Clause
5*91f16700Schasinglulu#
6*91f16700Schasinglulu
7*91f16700SchasingluluRESET_TO_BL2			:=	1
8*91f16700Schasinglulu
9*91f16700SchasingluluSTM32MP_EARLY_CONSOLE		?=	0
10*91f16700SchasingluluSTM32MP_RECONFIGURE_CONSOLE	?=	0
11*91f16700SchasingluluSTM32MP_UART_BAUDRATE		?=	115200
12*91f16700Schasinglulu
13*91f16700SchasingluluTRUSTED_BOARD_BOOT		?=	0
14*91f16700SchasingluluSTM32MP_USE_EXTERNAL_HEAP	?=	0
15*91f16700Schasinglulu
16*91f16700Schasinglulu# Use secure library from the ROM code for authentication
17*91f16700SchasingluluSTM32MP_CRYPTO_ROM_LIB		?=	0
18*91f16700Schasinglulu
19*91f16700Schasinglulu# Please don't increment this value without good understanding of
20*91f16700Schasinglulu# the monotonic counter
21*91f16700SchasingluluSTM32_TF_VERSION		?=	0
22*91f16700Schasinglulu
23*91f16700Schasinglulu# Enable dynamic memory mapping
24*91f16700SchasingluluPLAT_XLAT_TABLES_DYNAMIC	:=	1
25*91f16700Schasinglulu
26*91f16700Schasinglulu# STM32 image header binary type for BL2
27*91f16700SchasingluluSTM32_HEADER_BL2_BINARY_TYPE	:=	0x10
28*91f16700Schasinglulu
29*91f16700SchasingluluTF_CFLAGS			+=	-Wsign-compare
30*91f16700SchasingluluTF_CFLAGS			+=	-Wformat-signedness
31*91f16700Schasinglulu
32*91f16700Schasinglulu# Boot devices
33*91f16700SchasingluluSTM32MP_EMMC			?=	0
34*91f16700SchasingluluSTM32MP_SDMMC			?=	0
35*91f16700SchasingluluSTM32MP_RAW_NAND		?=	0
36*91f16700SchasingluluSTM32MP_SPI_NAND		?=	0
37*91f16700SchasingluluSTM32MP_SPI_NOR			?=	0
38*91f16700Schasinglulu
39*91f16700Schasinglulu# Put both BL2 and FIP in eMMC boot partition
40*91f16700SchasingluluSTM32MP_EMMC_BOOT		?=	0
41*91f16700Schasinglulu
42*91f16700Schasinglulu# Serial boot devices
43*91f16700SchasingluluSTM32MP_UART_PROGRAMMER		?=	0
44*91f16700SchasingluluSTM32MP_USB_PROGRAMMER		?=	0
45*91f16700Schasinglulu
46*91f16700Schasinglulu$(eval DTC_V = $(shell $(DTC) -v | awk '{print $$NF}'))
47*91f16700Schasinglulu$(eval DTC_VERSION = $(shell printf "%d" $(shell echo ${DTC_V} | cut -d- -f1 | sed "s/\./0/g" | grep -o "[0-9]*")))
48*91f16700SchasingluluDTC_CPPFLAGS			+=	${INCLUDES}
49*91f16700SchasingluluDTC_FLAGS			+=	-Wno-unit_address_vs_reg
50*91f16700Schasingluluifeq ($(shell test $(DTC_VERSION) -ge 10601; echo $$?),0)
51*91f16700SchasingluluDTC_FLAGS			+=	-Wno-interrupt_provider
52*91f16700Schasingluluendif
53*91f16700Schasinglulu
54*91f16700Schasinglulu# Macros and rules to build TF binary
55*91f16700SchasingluluSTM32_TF_ELF_LDFLAGS		:=	--hash-style=gnu --as-needed
56*91f16700SchasingluluSTM32_TF_LINKERFILE		:=	${BUILD_PLAT}/${PLAT}.ld
57*91f16700Schasinglulu
58*91f16700SchasingluluASFLAGS				+=	-DBL2_BIN_PATH=\"${BUILD_PLAT}/bl2.bin\"
59*91f16700Schasinglulu
60*91f16700Schasinglulu# Variables for use with stm32image
61*91f16700SchasingluluSTM32IMAGEPATH			?=	tools/stm32image
62*91f16700SchasingluluSTM32IMAGE			?=	${STM32IMAGEPATH}/stm32image${BIN_EXT}
63*91f16700SchasingluluSTM32IMAGE_SRC			:=	${STM32IMAGEPATH}/stm32image.c
64*91f16700SchasingluluSTM32_DEPS			+=	${STM32IMAGE}
65*91f16700Schasinglulu
66*91f16700SchasingluluFIP_DEPS			+=	dtbs
67*91f16700SchasingluluSTM32MP_HW_CONFIG		:=	${BL33_CFG}
68*91f16700Schasinglulu
69*91f16700Schasinglulu# Add the HW_CONFIG to FIP and specify the same to certtool
70*91f16700Schasinglulu$(eval $(call TOOL_ADD_PAYLOAD,${STM32MP_HW_CONFIG},--hw-config))
71*91f16700Schasinglulu
72*91f16700Schasinglulu# Add the build options to pack Trusted OS Extra1 and Trusted OS Extra2 images
73*91f16700Schasinglulu# in the FIP if the platform requires.
74*91f16700Schasingluluifneq ($(BL32_EXTRA1),)
75*91f16700Schasinglulu$(eval $(call TOOL_ADD_IMG,BL32_EXTRA1,--tos-fw-extra1,,$(ENCRYPT_BL32)))
76*91f16700Schasingluluendif
77*91f16700Schasingluluifneq ($(BL32_EXTRA2),)
78*91f16700Schasinglulu$(eval $(call TOOL_ADD_IMG,BL32_EXTRA2,--tos-fw-extra2,,$(ENCRYPT_BL32)))
79*91f16700Schasingluluendif
80*91f16700Schasinglulu
81*91f16700Schasinglulu# Enable flags for C files
82*91f16700Schasinglulu$(eval $(call assert_booleans,\
83*91f16700Schasinglulu	$(sort \
84*91f16700Schasinglulu		PLAT_XLAT_TABLES_DYNAMIC \
85*91f16700Schasinglulu		STM32MP_EARLY_CONSOLE \
86*91f16700Schasinglulu		STM32MP_EMMC \
87*91f16700Schasinglulu		STM32MP_EMMC_BOOT \
88*91f16700Schasinglulu		STM32MP_RAW_NAND \
89*91f16700Schasinglulu		STM32MP_RECONFIGURE_CONSOLE \
90*91f16700Schasinglulu		STM32MP_SDMMC \
91*91f16700Schasinglulu		STM32MP_SPI_NAND \
92*91f16700Schasinglulu		STM32MP_SPI_NOR \
93*91f16700Schasinglulu		STM32MP_UART_PROGRAMMER \
94*91f16700Schasinglulu		STM32MP_USB_PROGRAMMER \
95*91f16700Schasinglulu)))
96*91f16700Schasinglulu
97*91f16700Schasinglulu$(eval $(call assert_numerics,\
98*91f16700Schasinglulu	$(sort \
99*91f16700Schasinglulu		STM32_TF_VERSION \
100*91f16700Schasinglulu		STM32MP_UART_BAUDRATE \
101*91f16700Schasinglulu)))
102*91f16700Schasinglulu
103*91f16700Schasinglulu$(eval $(call add_defines,\
104*91f16700Schasinglulu	$(sort \
105*91f16700Schasinglulu		PLAT_XLAT_TABLES_DYNAMIC \
106*91f16700Schasinglulu		STM32_TF_VERSION \
107*91f16700Schasinglulu		STM32MP_EARLY_CONSOLE \
108*91f16700Schasinglulu		STM32MP_EMMC \
109*91f16700Schasinglulu		STM32MP_EMMC_BOOT \
110*91f16700Schasinglulu		STM32MP_RAW_NAND \
111*91f16700Schasinglulu		STM32MP_RECONFIGURE_CONSOLE \
112*91f16700Schasinglulu		STM32MP_SDMMC \
113*91f16700Schasinglulu		STM32MP_SPI_NAND \
114*91f16700Schasinglulu		STM32MP_SPI_NOR \
115*91f16700Schasinglulu		STM32MP_UART_BAUDRATE \
116*91f16700Schasinglulu		STM32MP_UART_PROGRAMMER \
117*91f16700Schasinglulu		STM32MP_USB_PROGRAMMER \
118*91f16700Schasinglulu)))
119*91f16700Schasinglulu
120*91f16700Schasinglulu# Include paths and source files
121*91f16700SchasingluluPLAT_INCLUDES			+=	-Iplat/st/common/include/
122*91f16700Schasinglulu
123*91f16700Schasingluluinclude lib/fconf/fconf.mk
124*91f16700Schasingluluinclude lib/libfdt/libfdt.mk
125*91f16700Schasingluluinclude lib/zlib/zlib.mk
126*91f16700Schasinglulu
127*91f16700SchasingluluPLAT_BL_COMMON_SOURCES		+=	common/uuid.c					\
128*91f16700Schasinglulu					plat/st/common/stm32mp_common.c
129*91f16700Schasinglulu
130*91f16700Schasinglulu
131*91f16700Schasingluluinclude lib/xlat_tables_v2/xlat_tables.mk
132*91f16700SchasingluluPLAT_BL_COMMON_SOURCES		+=	${XLAT_TABLES_LIB_SRCS}
133*91f16700Schasinglulu
134*91f16700SchasingluluPLAT_BL_COMMON_SOURCES		+=	drivers/clk/clk.c				\
135*91f16700Schasinglulu					drivers/delay_timer/delay_timer.c		\
136*91f16700Schasinglulu					drivers/delay_timer/generic_delay_timer.c	\
137*91f16700Schasinglulu					drivers/st/clk/stm32mp_clkfunc.c		\
138*91f16700Schasinglulu					drivers/st/ddr/stm32mp_ddr.c			\
139*91f16700Schasinglulu					drivers/st/gpio/stm32_gpio.c			\
140*91f16700Schasinglulu					drivers/st/regulator/regulator_core.c		\
141*91f16700Schasinglulu					drivers/st/regulator/regulator_fixed.c		\
142*91f16700Schasinglulu					plat/st/common/stm32mp_dt.c
143*91f16700Schasinglulu
144*91f16700SchasingluluBL2_SOURCES			+=	${FCONF_SOURCES} ${FCONF_DYN_SOURCES}
145*91f16700SchasingluluBL2_SOURCES			+=	$(ZLIB_SOURCES)
146*91f16700Schasinglulu
147*91f16700SchasingluluBL2_SOURCES			+=	drivers/io/io_fip.c				\
148*91f16700Schasinglulu					plat/st/common/bl2_io_storage.c			\
149*91f16700Schasinglulu					plat/st/common/plat_image_load.c		\
150*91f16700Schasinglulu					plat/st/common/stm32mp_fconf_io.c
151*91f16700Schasinglulu
152*91f16700SchasingluluBL2_SOURCES			+=	drivers/io/io_block.c				\
153*91f16700Schasinglulu					drivers/io/io_mtd.c				\
154*91f16700Schasinglulu					drivers/io/io_storage.c
155*91f16700Schasinglulu
156*91f16700Schasingluluifneq (${DECRYPTION_SUPPORT},none)
157*91f16700SchasingluluBL2_SOURCES			+=	drivers/io/io_encrypted.c
158*91f16700Schasingluluendif
159*91f16700Schasinglulu
160*91f16700Schasingluluifeq (${TRUSTED_BOARD_BOOT},1)
161*91f16700SchasingluluAUTH_SOURCES			:=	drivers/auth/auth_mod.c				\
162*91f16700Schasinglulu					drivers/auth/crypto_mod.c			\
163*91f16700Schasinglulu					drivers/auth/img_parser_mod.c
164*91f16700Schasinglulu
165*91f16700Schasingluluifeq (${GENERATE_COT},1)
166*91f16700SchasingluluTFW_NVCTR_VAL			:=	0
167*91f16700SchasingluluNTFW_NVCTR_VAL			:=	0
168*91f16700SchasingluluKEY_ALG				:=	ecdsa
169*91f16700SchasingluluHASH_ALG			:=	sha256
170*91f16700Schasinglulu
171*91f16700Schasingluluifeq (${SAVE_KEYS},1)
172*91f16700SchasingluluTRUSTED_WORLD_KEY		?=	${BUILD_PLAT}/trusted.pem
173*91f16700SchasingluluNON_TRUSTED_WORLD_KEY		?=	${BUILD_PLAT}/non-trusted.pem
174*91f16700SchasingluluBL32_KEY			?=	${BUILD_PLAT}/trusted_os.pem
175*91f16700SchasingluluBL33_KEY			?=	${BUILD_PLAT}/non-trusted_os.pem
176*91f16700Schasingluluendif
177*91f16700Schasinglulu
178*91f16700Schasingluluendif
179*91f16700SchasingluluTF_MBEDTLS_KEY_ALG		:=	ecdsa
180*91f16700SchasingluluKEY_SIZE			:=	256
181*91f16700Schasinglulu
182*91f16700Schasingluluifneq (${MBEDTLS_DIR},)
183*91f16700SchasingluluMBEDTLS_MAJOR=$(shell grep -hP "define MBEDTLS_VERSION_MAJOR" \
184*91f16700Schasinglulu${MBEDTLS_DIR}/include/mbedtls/*.h | grep -oe '\([0-9.]*\)')
185*91f16700Schasinglulu
186*91f16700Schasingluluifeq (${MBEDTLS_MAJOR}, 2)
187*91f16700SchasingluluMBEDTLS_CONFIG_FILE		?=	"<stm32mp_mbedtls_config-2.h>"
188*91f16700Schasingluluendif
189*91f16700Schasinglulu
190*91f16700Schasingluluifeq (${MBEDTLS_MAJOR}, 3)
191*91f16700SchasingluluMBEDTLS_CONFIG_FILE		?=	"<stm32mp_mbedtls_config-3.h>"
192*91f16700Schasingluluendif
193*91f16700Schasingluluendif
194*91f16700Schasinglulu
195*91f16700Schasingluluinclude drivers/auth/mbedtls/mbedtls_x509.mk
196*91f16700Schasinglulu
197*91f16700SchasingluluCOT_DESC_IN_DTB			:=	1
198*91f16700SchasingluluAUTH_SOURCES			+=	lib/fconf/fconf_cot_getter.c			\
199*91f16700Schasinglulu					lib/fconf/fconf_tbbr_getter.c			\
200*91f16700Schasinglulu					plat/st/common/stm32mp_crypto_lib.c
201*91f16700Schasinglulu
202*91f16700SchasingluluBL2_SOURCES			+=	$(AUTH_SOURCES)					\
203*91f16700Schasinglulu					plat/st/common/stm32mp_trusted_boot.c
204*91f16700Schasingluluendif
205*91f16700Schasinglulu
206*91f16700Schasingluluifneq ($(filter 1,${STM32MP_EMMC} ${STM32MP_SDMMC}),)
207*91f16700SchasingluluBL2_SOURCES			+=	drivers/mmc/mmc.c				\
208*91f16700Schasinglulu					drivers/partition/gpt.c				\
209*91f16700Schasinglulu					drivers/partition/partition.c
210*91f16700Schasingluluendif
211*91f16700Schasinglulu
212*91f16700Schasingluluifneq ($(filter 1,${STM32MP_SPI_NAND} ${STM32MP_SPI_NOR}),)
213*91f16700SchasingluluBL2_SOURCES			+=	drivers/mtd/spi-mem/spi_mem.c
214*91f16700Schasingluluendif
215*91f16700Schasinglulu
216*91f16700Schasingluluifeq (${STM32MP_RAW_NAND},1)
217*91f16700Schasinglulu$(eval $(call add_define_val,NAND_ONFI_DETECT,1))
218*91f16700SchasingluluBL2_SOURCES			+=	drivers/mtd/nand/raw_nand.c
219*91f16700Schasingluluendif
220*91f16700Schasinglulu
221*91f16700Schasingluluifeq (${STM32MP_SPI_NAND},1)
222*91f16700SchasingluluBL2_SOURCES			+=	drivers/mtd/nand/spi_nand.c
223*91f16700Schasingluluendif
224*91f16700Schasinglulu
225*91f16700Schasingluluifeq (${STM32MP_SPI_NOR},1)
226*91f16700Schasingluluifneq (${STM32MP_FORCE_MTD_START_OFFSET},)
227*91f16700Schasinglulu$(eval $(call add_define_val,STM32MP_NOR_FIP_OFFSET,${STM32MP_FORCE_MTD_START_OFFSET}))
228*91f16700Schasingluluendif
229*91f16700SchasingluluBL2_SOURCES			+=	drivers/mtd/nor/spi_nor.c
230*91f16700Schasingluluendif
231*91f16700Schasinglulu
232*91f16700Schasingluluifneq ($(filter 1,${STM32MP_RAW_NAND} ${STM32MP_SPI_NAND}),)
233*91f16700Schasingluluifneq (${STM32MP_FORCE_MTD_START_OFFSET},)
234*91f16700Schasinglulu$(eval $(call add_define_val,STM32MP_NAND_FIP_OFFSET,${STM32MP_FORCE_MTD_START_OFFSET}))
235*91f16700Schasingluluendif
236*91f16700SchasingluluBL2_SOURCES			+=	drivers/mtd/nand/core.c
237*91f16700Schasingluluendif
238*91f16700Schasinglulu
239*91f16700Schasingluluifneq ($(filter 1,${STM32MP_UART_PROGRAMMER} ${STM32MP_USB_PROGRAMMER}),)
240*91f16700SchasingluluBL2_SOURCES			+=	drivers/io/io_memmap.c
241*91f16700Schasingluluendif
242*91f16700Schasinglulu
243*91f16700Schasingluluifeq (${STM32MP_UART_PROGRAMMER},1)
244*91f16700SchasingluluBL2_SOURCES			+=	plat/st/common/stm32cubeprogrammer_uart.c
245*91f16700Schasingluluendif
246*91f16700Schasinglulu
247*91f16700Schasingluluifeq (${STM32MP_USB_PROGRAMMER},1)
248*91f16700SchasingluluBL2_SOURCES			+=	drivers/usb/usb_device.c			\
249*91f16700Schasinglulu					plat/st/common/stm32cubeprogrammer_usb.c	\
250*91f16700Schasinglulu					plat/st/common/usb_dfu.c
251*91f16700Schasingluluendif
252*91f16700Schasinglulu
253*91f16700SchasingluluBL2_SOURCES			+=	drivers/st/ddr/stm32mp_ddr_test.c		\
254*91f16700Schasinglulu					drivers/st/ddr/stm32mp_ram.c
255*91f16700Schasinglulu
256*91f16700SchasingluluBL2_SOURCES			+=	common/desc_image_load.c
257*91f16700Schasinglulu
258*91f16700SchasingluluBL2_SOURCES			+=	lib/optee/optee_utils.c
259