xref: /rk3399_ARM-atf/plat/st/stm32mp1/platform.mk (revision 8dd2a64a12b3ee47507aab4fb0294d366a5a5159)
14353bb20SYann Gautier#
2*8dd2a64aSYann Gautier# Copyright (c) 2015-2024, Arm Limited and Contributors. All rights reserved.
34353bb20SYann Gautier#
44353bb20SYann Gautier# SPDX-License-Identifier: BSD-3-Clause
54353bb20SYann Gautier#
64353bb20SYann Gautier
7a430382fSYann Gautierinclude plat/st/common/common.mk
8a430382fSYann Gautier
94353bb20SYann GautierARM_CORTEX_A7		:=	yes
104353bb20SYann GautierARM_WITH_NEON		:=	yes
114353bb20SYann GautierUSE_COHERENT_MEM	:=	0
124353bb20SYann Gautier
1399a5d8d0SYann Gautier# Default Device tree
1499a5d8d0SYann GautierDTB_FILE_NAME		?=	stm32mp157c-ev1.dtb
1599a5d8d0SYann Gautier
1699a5d8d0SYann GautierSTM32MP13		?=	0
1799a5d8d0SYann GautierSTM32MP15		?=	0
1899a5d8d0SYann Gautier
19bdec516eSSebastien Pasdeloupifeq ($(STM32MP13),1)
2099a5d8d0SYann Gautierifeq ($(STM32MP15),1)
2199a5d8d0SYann Gautier$(error Cannot enable both flags STM32MP13 and STM32MP15)
2299a5d8d0SYann Gautierendif
23bdec516eSSebastien PasdeloupSTM32MP13		:=	1
24bdec516eSSebastien PasdeloupSTM32MP15		:=	0
2599a5d8d0SYann Gautierelse ifeq ($(STM32MP15),1)
2699a5d8d0SYann GautierSTM32MP13		:=	0
2799a5d8d0SYann GautierSTM32MP15		:=	1
2899a5d8d0SYann Gautierelse ifneq ($(findstring stm32mp13,$(DTB_FILE_NAME)),)
2999a5d8d0SYann GautierSTM32MP13		:=	1
3099a5d8d0SYann GautierSTM32MP15		:=	0
3199a5d8d0SYann Gautierelse ifneq ($(findstring stm32mp15,$(DTB_FILE_NAME)),)
3299a5d8d0SYann GautierSTM32MP13		:=	0
3399a5d8d0SYann GautierSTM32MP15		:=	1
3499a5d8d0SYann Gautierendif
35bdec516eSSebastien Pasdeloup
3699a5d8d0SYann Gautierifeq ($(STM32MP13),1)
37beb625f9SLionel Debieve# Will use SRAM2 as mbedtls heap
38beb625f9SLionel DebieveSTM32MP_USE_EXTERNAL_HEAP :=	1
39beb625f9SLionel Debieve
40bdec516eSSebastien Pasdeloup# DDR controller with single AXI port and 16-bit interface
41bdec516eSSebastien PasdeloupSTM32MP_DDR_DUAL_AXI_PORT:=	0
42bdec516eSSebastien PasdeloupSTM32MP_DDR_32BIT_INTERFACE:=	0
43bdec516eSSebastien Pasdeloup
44beb625f9SLionel Debieveifeq (${TRUSTED_BOARD_BOOT},1)
45beb625f9SLionel Debieve# PKA algo to include
46beb625f9SLionel DebievePKA_USE_NIST_P256	:=	1
47beb625f9SLionel DebievePKA_USE_BRAINPOOL_P256T1:=	1
48beb625f9SLionel Debieveendif
49beb625f9SLionel Debieve
50bdec516eSSebastien Pasdeloup# STM32 image header version v2.0
51bdec516eSSebastien PasdeloupSTM32_HEADER_VERSION_MAJOR:=	2
52bdec516eSSebastien PasdeloupSTM32_HEADER_VERSION_MINOR:=	0
5399a5d8d0SYann Gautierendif
54bdec516eSSebastien Pasdeloup
5599a5d8d0SYann Gautierifeq ($(STM32MP15),1)
5688f4fb8fSYann Gautier# DDR controller with dual AXI port and 32-bit interface
5788f4fb8fSYann GautierSTM32MP_DDR_DUAL_AXI_PORT:=	1
5888f4fb8fSYann GautierSTM32MP_DDR_32BIT_INTERFACE:=	1
5988f4fb8fSYann Gautier
602d8886acSNicolas Le Bayon# STM32 image header version v1.0
612d8886acSNicolas Le BayonSTM32_HEADER_VERSION_MAJOR:=	1
622d8886acSNicolas Le BayonSTM32_HEADER_VERSION_MINOR:=	0
63ad3e46a3SLionel DebieveSTM32MP_CRYPTO_ROM_LIB :=	1
64cd791164SLionel Debieve
65cd791164SLionel Debieve# Decryption support
66cd791164SLionel Debieveifneq ($(DECRYPTION_SUPPORT),none)
67cd791164SLionel Debieve$(error "DECRYPTION_SUPPORT not supported on STM32MP15")
68cd791164SLionel Debieveendif
69bdec516eSSebastien Pasdeloupendif
702d8886acSNicolas Le Bayon
71e0e2d64fSYann GautierPKA_USE_NIST_P256	?=	0
72e0e2d64fSYann GautierPKA_USE_BRAINPOOL_P256T1 ?=	0
73e0e2d64fSYann Gautier
74e4ee1ab9SEtienne Carriereifeq ($(AARCH32_SP),sp_min)
75e4ee1ab9SEtienne Carriere# Disable Neon support: sp_min runtime may conflict with non-secure world
76e4ee1ab9SEtienne CarriereTF_CFLAGS		+=	-mfloat-abi=soft
77e4ee1ab9SEtienne Carriereendif
78e4ee1ab9SEtienne Carriere
794353bb20SYann Gautier# Not needed for Cortex-A7
804353bb20SYann GautierWORKAROUND_CVE_2017_5715:=	0
819b2510b6SBipin RaviWORKAROUND_CVE_2022_23960:=	0
824353bb20SYann Gautier
838fc6fb5cSYann Gautier# Number of TF-A copies in the device
848fc6fb5cSYann GautierSTM32_TF_A_COPIES		:=	2
858fc6fb5cSYann Gautier
868fc6fb5cSYann Gautier# PLAT_PARTITION_MAX_ENTRIES must take care of STM32_TF-A_COPIES and other partitions
878fc6fb5cSYann Gautier# such as metadata (2) to find all the FIP partitions (default is 2).
888fc6fb5cSYann GautierPLAT_PARTITION_MAX_ENTRIES	:=	$(shell echo $$(($(STM32_TF_A_COPIES) + 4)))
898fc6fb5cSYann Gautier
90ad216c10SSughosh Ganuifeq (${PSA_FWU_SUPPORT},1)
91ad216c10SSughosh Ganu# Number of banks of updatable firmware
92ad216c10SSughosh GanuNR_OF_FW_BANKS			:=	2
93ad216c10SSughosh GanuNR_OF_IMAGES_IN_FW_BANK		:=	1
94ad216c10SSughosh Ganu
958fc6fb5cSYann GautierFWU_MAX_PART = $(shell echo $$(($(STM32_TF_A_COPIES) + 2 + $(NR_OF_FW_BANKS))))
968fc6fb5cSYann Gautierifeq ($(shell test $(FWU_MAX_PART) -gt $(PLAT_PARTITION_MAX_ENTRIES); echo $$?),0)
978fc6fb5cSYann Gautier$(error "Required partition number is $(FWU_MAX_PART) where PLAT_PARTITION_MAX_ENTRIES is only \
988fc6fb5cSYann Gautier$(PLAT_PARTITION_MAX_ENTRIES)")
998fc6fb5cSYann Gautierendif
1001989a19cSYann Gautierendif
101aec7de41SYann Gautier
10268039f2dSNicolas Toromanoffifeq ($(STM32MP13),1)
10368039f2dSNicolas ToromanoffSTM32_HASH_VER		:=	4
10427423744SNicolas Le BayonSTM32_RNG_VER		:=	4
10568039f2dSNicolas Toromanoffelse # Assuming STM32MP15
10668039f2dSNicolas ToromanoffSTM32_HASH_VER		:=	2
10727423744SNicolas Le BayonSTM32_RNG_VER		:=	2
10868039f2dSNicolas Toromanoffendif
10968039f2dSNicolas Toromanoff
1104b2f23e5SPatrick Delaunay# Download load address for serial boot devices
1114b2f23e5SPatrick DelaunayDWL_BUFFER_BASE 	?=	0xC7000000
1124b2f23e5SPatrick Delaunay
1132eaffd51SYann Gautier# Device tree
114d38eaf99SYann Gautierifeq ($(STM32MP13),1)
115d38eaf99SYann GautierBL2_DTSI		:=	stm32mp13-bl2.dtsi
116d38eaf99SYann GautierFDT_SOURCES		:=	$(addprefix ${BUILD_PLAT}/fdts/, $(patsubst %.dtb,%-bl2.dts,$(DTB_FILE_NAME)))
117d38eaf99SYann Gautierelse
1181d204ee4SYann GautierBL2_DTSI		:=	stm32mp15-bl2.dtsi
1191d204ee4SYann GautierFDT_SOURCES		:=	$(addprefix ${BUILD_PLAT}/fdts/, $(patsubst %.dtb,%-bl2.dts,$(DTB_FILE_NAME)))
1201d204ee4SYann Gautierifeq ($(AARCH32_SP),sp_min)
1211d204ee4SYann GautierBL32_DTSI		:=	stm32mp15-bl32.dtsi
1221d204ee4SYann GautierFDT_SOURCES		+=	$(addprefix ${BUILD_PLAT}/fdts/, $(patsubst %.dtb,%-bl32.dts,$(DTB_FILE_NAME)))
1231d204ee4SYann Gautierendif
1241d204ee4SYann Gautierendif
125ca88c761SYann Gautier
1262eaffd51SYann Gautier# Macros and rules to build TF binary
1272eaffd51SYann GautierSTM32_TF_STM32		:=	$(addprefix ${BUILD_PLAT}/tf-a-, $(patsubst %.dtb,%.stm32,$(DTB_FILE_NAME)))
128a430382fSYann GautierSTM32_LD_FILE		:=	plat/st/stm32mp1/stm32mp1.ld.S
129a430382fSYann GautierSTM32_BINARY_MAPPING	:=	plat/st/stm32mp1/stm32mp1.S
1302eaffd51SYann Gautier
1312eaffd51SYann Gautierifeq ($(AARCH32_SP),sp_min)
1322eaffd51SYann Gautier# BL32 is built only if using SP_MIN
1332eaffd51SYann GautierBL32_DEP		:= bl32
1342eaffd51SYann GautierASFLAGS			+= -DBL32_BIN_PATH=\"${BUILD_PLAT}/bl32.bin\"
1352eaffd51SYann Gautierendif
1362eaffd51SYann Gautier
13729332bcdSYann GautierSTM32MP_FW_CONFIG_NAME	:=	$(patsubst %.dtb,%-fw-config.dtb,$(DTB_FILE_NAME))
13829332bcdSYann GautierSTM32MP_FW_CONFIG	:=	${BUILD_PLAT}/fdts/$(STM32MP_FW_CONFIG_NAME)
13929332bcdSYann Gautierifneq (${AARCH32_SP},none)
14029332bcdSYann GautierFDT_SOURCES		+=	$(addprefix fdts/, $(patsubst %.dtb,%.dts,$(STM32MP_FW_CONFIG_NAME)))
14129332bcdSYann Gautierendif
14229332bcdSYann Gautier# Add the FW_CONFIG to FIP and specify the same to certtool
14329332bcdSYann Gautier$(eval $(call TOOL_ADD_PAYLOAD,${STM32MP_FW_CONFIG},--fw-config))
144beb625f9SLionel Debieveifeq ($(GENERATE_COT),1)
145beb625f9SLionel DebieveSTM32MP_CFG_CERT	:=	$(BUILD_PLAT)/stm32mp_cfg_cert.crt
146beb625f9SLionel Debieve# Add the STM32MP_CFG_CERT to FIP and specify the same to certtool
147beb625f9SLionel Debieve$(eval $(call TOOL_ADD_PAYLOAD,${STM32MP_CFG_CERT},--stm32mp-cfg-cert))
148beb625f9SLionel Debieveendif
1491d204ee4SYann Gautierifeq ($(AARCH32_SP),sp_min)
1501d204ee4SYann GautierSTM32MP_TOS_FW_CONFIG	:= $(addprefix ${BUILD_PLAT}/fdts/, $(patsubst %.dtb,%-bl32.dtb,$(DTB_FILE_NAME)))
1511d204ee4SYann Gautier$(eval $(call TOOL_ADD_PAYLOAD,${STM32MP_TOS_FW_CONFIG},--tos-fw-config))
1521d204ee4SYann Gautierendif
1531d204ee4SYann Gautier
1542eaffd51SYann Gautier# Enable flags for C files
155327131c4SLeonardo Sandoval$(eval $(call assert_booleans,\
156327131c4SLeonardo Sandoval	$(sort \
157beb625f9SLionel Debieve		PKA_USE_BRAINPOOL_P256T1 \
158beb625f9SLionel Debieve		PKA_USE_NIST_P256 \
159ad3e46a3SLionel Debieve		STM32MP_CRYPTO_ROM_LIB \
16088f4fb8fSYann Gautier		STM32MP_DDR_32BIT_INTERFACE \
16188f4fb8fSYann Gautier		STM32MP_DDR_DUAL_AXI_PORT \
162beb625f9SLionel Debieve		STM32MP_USE_EXTERNAL_HEAP \
163bdec516eSSebastien Pasdeloup		STM32MP13 \
164bdec516eSSebastien Pasdeloup		STM32MP15 \
1652eaffd51SYann Gautier)))
1662eaffd51SYann Gautier
1672eaffd51SYann Gautier$(eval $(call assert_numerics,\
1682eaffd51SYann Gautier	$(sort \
1692eaffd51SYann Gautier		PLAT_PARTITION_MAX_ENTRIES \
17068039f2dSNicolas Toromanoff		STM32_HASH_VER \
171beb625f9SLionel Debieve		STM32_HEADER_VERSION_MAJOR \
17227423744SNicolas Le Bayon		STM32_RNG_VER \
173ce21ee89SYann Gautier		STM32_TF_A_COPIES \
174327131c4SLeonardo Sandoval)))
175327131c4SLeonardo Sandoval
176327131c4SLeonardo Sandoval$(eval $(call add_defines,\
177327131c4SLeonardo Sandoval	$(sort \
1784b2f23e5SPatrick Delaunay		DWL_BUFFER_BASE \
179beb625f9SLionel Debieve		PKA_USE_BRAINPOOL_P256T1 \
180beb625f9SLionel Debieve		PKA_USE_NIST_P256 \
181ce21ee89SYann Gautier		PLAT_PARTITION_MAX_ENTRIES \
182beb625f9SLionel Debieve		PLAT_TBBR_IMG_DEF \
18368039f2dSNicolas Toromanoff		STM32_HASH_VER \
184beb625f9SLionel Debieve		STM32_HEADER_VERSION_MAJOR \
18527423744SNicolas Le Bayon		STM32_RNG_VER \
1862eaffd51SYann Gautier		STM32_TF_A_COPIES \
187ad3e46a3SLionel Debieve		STM32MP_CRYPTO_ROM_LIB \
18888f4fb8fSYann Gautier		STM32MP_DDR_32BIT_INTERFACE \
18988f4fb8fSYann Gautier		STM32MP_DDR_DUAL_AXI_PORT \
190beb625f9SLionel Debieve		STM32MP_USE_EXTERNAL_HEAP \
191bdec516eSSebastien Pasdeloup		STM32MP13 \
192bdec516eSSebastien Pasdeloup		STM32MP15 \
193327131c4SLeonardo Sandoval)))
19446554b64SNicolas Le Bayon
1952eaffd51SYann Gautier# Include paths and source files
196c9d75b3cSYann GautierPLAT_INCLUDES		+=	-Iplat/st/stm32mp1/include/
1974353bb20SYann Gautier
198a430382fSYann GautierPLAT_BL_COMMON_SOURCES	+=	plat/st/stm32mp1/stm32mp1_private.c
1994353bb20SYann Gautier
200985ee0b7SJulius WernerPLAT_BL_COMMON_SOURCES	+=	drivers/st/uart/aarch32/stm32_console.S
2014353bb20SYann Gautier
2024353bb20SYann Gautierifneq (${ENABLE_STACK_PROTECTOR},0)
2034353bb20SYann GautierPLAT_BL_COMMON_SOURCES	+=	plat/st/stm32mp1/stm32mp1_stack_protector.c
2044353bb20SYann Gautierendif
2054353bb20SYann Gautier
2064353bb20SYann GautierPLAT_BL_COMMON_SOURCES	+=	lib/cpus/aarch32/cortex_a7.S
2074353bb20SYann Gautier
208d304158eSYann GautierPLAT_BL_COMMON_SOURCES	+=	drivers/arm/tzc/tzc400.c				\
209072d7532SNicolas Le Bayon				drivers/st/bsec/bsec2.c					\
21010a511ceSYann Gautier				drivers/st/ddr/stm32mp1_ddr_helpers.c			\
211435832abSYann Gautier				drivers/st/i2c/stm32_i2c.c				\
21273680c23SYann Gautier				drivers/st/iwdg/stm32_iwdg.c				\
21323684d0eSYann Gautier				drivers/st/pmic/stm32mp_pmic.c				\
21423684d0eSYann Gautier				drivers/st/pmic/stpmic1.c				\
2157839a050SYann Gautier				drivers/st/reset/stm32mp1_reset.c			\
21673680c23SYann Gautier				plat/st/stm32mp1/stm32mp1_dbgmcu.c			\
21710a511ceSYann Gautier				plat/st/stm32mp1/stm32mp1_helper.S			\
218f33b2433SYann Gautier				plat/st/stm32mp1/stm32mp1_syscfg.c
2194353bb20SYann Gautier
2209be88e75SGabriel Fernandezifeq ($(STM32MP13),1)
2219be88e75SGabriel FernandezPLAT_BL_COMMON_SOURCES	+=	drivers/st/clk/clk-stm32-core.c				\
22227423744SNicolas Le Bayon				drivers/st/clk/clk-stm32mp13.c				\
22327423744SNicolas Le Bayon				drivers/st/crypto/stm32_rng.c
2249be88e75SGabriel Fernandezelse
2259be88e75SGabriel FernandezPLAT_BL_COMMON_SOURCES	+=	drivers/st/clk/stm32mp1_clk.c
2269be88e75SGabriel Fernandezendif
2279be88e75SGabriel Fernandez
228a430382fSYann GautierBL2_SOURCES		+=	plat/st/stm32mp1/plat_bl2_mem_params_desc.c		\
2294584e01dSLionel Debieve				plat/st/stm32mp1/stm32mp1_fconf_firewall.c
2301d204ee4SYann Gautier
2317da7f1f0SRohit Nerifeq (${PSA_FWU_SUPPORT},1)
232ad216c10SSughosh Ganuinclude drivers/fwu/fwu.mk
2337da7f1f0SRohit Nerendif
2347da7f1f0SRohit Ner
235a430382fSYann GautierBL2_SOURCES		+=	drivers/st/crypto/stm32_hash.c				\
2364353bb20SYann Gautier				plat/st/stm32mp1/bl2_plat_setup.c
2374353bb20SYann Gautier
238beb625f9SLionel Debieveifeq (${TRUSTED_BOARD_BOOT},1)
239beb625f9SLionel Debieveifeq ($(STM32MP13),1)
240a430382fSYann GautierBL2_SOURCES		+=	drivers/st/crypto/stm32_pka.c
241a430382fSYann GautierBL2_SOURCES		+=	drivers/st/crypto/stm32_saes.c
242beb625f9SLionel Debieveendif
243beb625f9SLionel Debieveendif
244beb625f9SLionel Debieve
24546554b64SNicolas Le Bayonifneq ($(filter 1,${STM32MP_EMMC} ${STM32MP_SDMMC}),)
246a430382fSYann GautierBL2_SOURCES		+=	drivers/st/mmc/stm32_sdmmc2.c
24746554b64SNicolas Le Bayonendif
248aec7de41SYann Gautier
24912e21dfdSLionel Debieveifeq (${STM32MP_RAW_NAND},1)
250a430382fSYann GautierBL2_SOURCES		+=	drivers/st/fmc/stm32_fmc2_nand.c
251b1b218fbSLionel Debieveendif
252b1b218fbSLionel Debieve
253b1b218fbSLionel Debieveifneq ($(filter 1,${STM32MP_SPI_NAND} ${STM32MP_SPI_NOR}),)
254a430382fSYann GautierBL2_SOURCES		+=	drivers/st/spi/stm32_qspi.c
255b1b218fbSLionel Debieveendif
256b1b218fbSLionel Debieve
257b1b218fbSLionel Debieveifneq ($(filter 1,${STM32MP_RAW_NAND} ${STM32MP_SPI_NAND} ${STM32MP_SPI_NOR}),)
258b1b218fbSLionel DebieveBL2_SOURCES		+=	plat/st/stm32mp1/stm32mp1_boot_device.c
25912e21dfdSLionel Debieveendif
26012e21dfdSLionel Debieve
2619083fa11SPatrick Delaunayifeq (${STM32MP_UART_PROGRAMMER},1)
262a430382fSYann GautierBL2_SOURCES		+=	drivers/st/uart/stm32_uart.c
2639083fa11SPatrick Delaunayendif
2649083fa11SPatrick Delaunay
265fa92fef0SPatrick Delaunayifeq (${STM32MP_USB_PROGRAMMER},1)
266fa92fef0SPatrick Delaunay#The DFU stack uses only one end point, reduce the USB stack footprint
267fa92fef0SPatrick Delaunay$(eval $(call add_define_val,CONFIG_USBD_EP_NB,1U))
2689083fa11SPatrick DelaunayBL2_SOURCES		+=	drivers/st/usb/stm32mp1_usb.c				\
269fa92fef0SPatrick Delaunay				plat/st/stm32mp1/stm32mp1_usb_dfu.c
270fa92fef0SPatrick Delaunayendif
271fa92fef0SPatrick Delaunay
272a430382fSYann GautierBL2_SOURCES		+=	drivers/st/ddr/stm32mp1_ddr.c				\
27310a511ceSYann Gautier				drivers/st/ddr/stm32mp1_ram.c
27410a511ceSYann Gautier
2751d204ee4SYann Gautierifeq ($(AARCH32_SP),sp_min)
2761d204ee4SYann Gautier# Create DTB file for BL32
2771d204ee4SYann Gautier${BUILD_PLAT}/fdts/%-bl32.dts: fdts/%.dts fdts/${BL32_DTSI} | ${BUILD_PLAT} fdt_dirs
2781d204ee4SYann Gautier	@echo '#include "$(patsubst fdts/%,%,$<)"' > $@
2791d204ee4SYann Gautier	@echo '#include "${BL32_DTSI}"' >> $@
2801d204ee4SYann Gautier
2811d204ee4SYann Gautier${BUILD_PLAT}/fdts/%-bl32.dtb: ${BUILD_PLAT}/fdts/%-bl32.dts
2821d204ee4SYann Gautierendif
2831d204ee4SYann Gautier
284a430382fSYann Gautierinclude plat/st/common/common_rules.mk
285