1*91f16700Schasinglulu# 2*91f16700Schasinglulu# Copyright (c) 2018-2023, Arm Limited and Contributors. All rights reserved. 3*91f16700Schasinglulu# 4*91f16700Schasinglulu# SPDX-License-Identifier: BSD-3-Clause 5*91f16700Schasinglulu# 6*91f16700Schasinglulu 7*91f16700Schasinglulu# Architecture 8*91f16700Schasinglulu$(eval $(call add_define,ARMV7_SUPPORTS_LARGE_PAGE_ADDRESSING)) 9*91f16700Schasinglulu 10*91f16700SchasingluluTF_CFLAGS += -mfpu=neon 11*91f16700SchasingluluASFLAGS += -mfpu=neon 12*91f16700Schasinglulu 13*91f16700Schasinglulu# Platform 14*91f16700SchasingluluPLAT_INCLUDES := -Idrivers/imx/uart \ 15*91f16700Schasinglulu -Iplat/imx/common/include \ 16*91f16700Schasinglulu -Iplat/imx/imx7/include \ 17*91f16700Schasinglulu -Idrivers/imx/timer \ 18*91f16700Schasinglulu -Idrivers/imx/usdhc \ 19*91f16700Schasinglulu -Iinclude/common/tbbr 20*91f16700Schasinglulu 21*91f16700Schasinglulu# Translation tables library 22*91f16700Schasingluluinclude lib/xlat_tables_v2/xlat_tables.mk 23*91f16700Schasinglulu 24*91f16700SchasingluluBL2_SOURCES += common/desc_image_load.c \ 25*91f16700Schasinglulu drivers/delay_timer/delay_timer.c \ 26*91f16700Schasinglulu drivers/mmc/mmc.c \ 27*91f16700Schasinglulu drivers/io/io_block.c \ 28*91f16700Schasinglulu drivers/io/io_fip.c \ 29*91f16700Schasinglulu drivers/io/io_memmap.c \ 30*91f16700Schasinglulu drivers/io/io_storage.c \ 31*91f16700Schasinglulu drivers/imx/timer/imx_gpt.c \ 32*91f16700Schasinglulu drivers/imx/uart/imx_uart.c \ 33*91f16700Schasinglulu drivers/imx/uart/imx_crash_uart.S \ 34*91f16700Schasinglulu lib/aarch32/arm32_aeabi_divmod.c \ 35*91f16700Schasinglulu lib/aarch32/arm32_aeabi_divmod_a32.S \ 36*91f16700Schasinglulu lib/cpus/aarch32/cortex_a7.S \ 37*91f16700Schasinglulu lib/optee/optee_utils.c \ 38*91f16700Schasinglulu plat/imx/common/imx_aips.c \ 39*91f16700Schasinglulu plat/imx/common/imx_caam.c \ 40*91f16700Schasinglulu plat/imx/common/imx_clock.c \ 41*91f16700Schasinglulu plat/imx/common/imx_csu.c \ 42*91f16700Schasinglulu plat/imx/common/imx_io_mux.c \ 43*91f16700Schasinglulu plat/imx/common/imx_snvs.c \ 44*91f16700Schasinglulu plat/imx/common/imx_wdog.c \ 45*91f16700Schasinglulu plat/imx/common/imx7_clock.c \ 46*91f16700Schasinglulu plat/imx/imx7/common/imx7_bl2_mem_params_desc.c \ 47*91f16700Schasinglulu plat/imx/imx7/common/imx7_bl2_el3_common.c \ 48*91f16700Schasinglulu plat/imx/imx7/common/imx7_helpers.S \ 49*91f16700Schasinglulu plat/imx/imx7/common/imx7_image_load.c \ 50*91f16700Schasinglulu plat/imx/common/imx_io_storage.c \ 51*91f16700Schasinglulu plat/imx/common/aarch32/imx_uart_console.S \ 52*91f16700Schasinglulu ${XLAT_TABLES_LIB_SRCS} 53*91f16700Schasinglulu 54*91f16700Schasingluluifneq (${TRUSTED_BOARD_BOOT},0) 55*91f16700Schasinglulu 56*91f16700Schasingluluinclude drivers/auth/mbedtls/mbedtls_crypto.mk 57*91f16700Schasingluluinclude drivers/auth/mbedtls/mbedtls_x509.mk 58*91f16700Schasinglulu 59*91f16700SchasingluluAUTH_SOURCES := drivers/auth/auth_mod.c \ 60*91f16700Schasinglulu drivers/auth/crypto_mod.c \ 61*91f16700Schasinglulu drivers/auth/img_parser_mod.c \ 62*91f16700Schasinglulu drivers/auth/tbbr/tbbr_cot_common.c 63*91f16700Schasinglulu 64*91f16700SchasingluluBL2_SOURCES += ${AUTH_SOURCES} \ 65*91f16700Schasinglulu plat/common/tbbr/plat_tbbr.c \ 66*91f16700Schasinglulu plat/imx/imx7/common/imx7_trusted_boot.c \ 67*91f16700Schasinglulu plat/imx/imx7/common/imx7_rotpk.S \ 68*91f16700Schasinglulu drivers/auth/tbbr/tbbr_cot_bl2.c 69*91f16700Schasinglulu 70*91f16700SchasingluluROT_KEY = $(BUILD_PLAT)/rot_key.pem 71*91f16700SchasingluluROTPK_HASH = $(BUILD_PLAT)/rotpk_sha256.bin 72*91f16700Schasinglulu 73*91f16700Schasinglulu$(eval $(call add_define_val,ROTPK_HASH,'"$(ROTPK_HASH)"')) 74*91f16700Schasinglulu$(eval $(call MAKE_LIB_DIRS)) 75*91f16700Schasinglulu 76*91f16700Schasinglulu$(BUILD_PLAT)/bl2/imx7_rotpk.o: $(ROTPK_HASH) 77*91f16700Schasinglulu 78*91f16700Schasinglulucertificates: $(ROT_KEY) 79*91f16700Schasinglulu 80*91f16700Schasinglulu$(ROT_KEY): | $(BUILD_PLAT) 81*91f16700Schasinglulu @echo " OPENSSL $@" 82*91f16700Schasinglulu @if [ ! -f $(ROT_KEY) ]; then \ 83*91f16700Schasinglulu ${OPENSSL_BIN_PATH}/openssl genrsa 2048 > $@ 2>/dev/null; \ 84*91f16700Schasinglulu fi 85*91f16700Schasinglulu 86*91f16700Schasinglulu$(ROTPK_HASH): $(ROT_KEY) 87*91f16700Schasinglulu @echo " OPENSSL $@" 88*91f16700Schasinglulu $(Q)${OPENSSL_BIN_PATH}/openssl rsa -in $< -pubout -outform DER 2>/dev/null |\ 89*91f16700Schasinglulu ${OPENSSL_BIN_PATH}/openssl dgst -sha256 -binary > $@ 2>/dev/null 90*91f16700Schasingluluendif 91*91f16700Schasinglulu 92*91f16700Schasinglulu# Add the build options to pack BLx images and kernel device tree 93*91f16700Schasinglulu# in the FIP if the platform requires. 94*91f16700Schasingluluifneq ($(BL2),) 95*91f16700Schasinglulu$(eval $(call TOOL_ADD_PAYLOAD,${BUILD_PLAT}/tb_fw.crt,--tb-fw-cert)) 96*91f16700Schasingluluendif 97*91f16700Schasingluluifneq ($(BL32_EXTRA1),) 98*91f16700Schasinglulu$(eval $(call TOOL_ADD_IMG,BL32_EXTRA1,--tos-fw-extra1)) 99*91f16700Schasingluluendif 100*91f16700Schasingluluifneq ($(BL32_EXTRA2),) 101*91f16700Schasinglulu$(eval $(call TOOL_ADD_IMG,BL32_EXTRA2,--tos-fw-extra2)) 102*91f16700Schasingluluendif 103*91f16700Schasingluluifneq ($(HW_CONFIG),) 104*91f16700Schasinglulu$(eval $(call TOOL_ADD_IMG,HW_CONFIG,--hw-config)) 105*91f16700Schasingluluendif 106*91f16700Schasinglulu 107*91f16700Schasinglulu# Verify build config 108*91f16700Schasinglulu# ------------------- 109*91f16700Schasinglulu 110*91f16700Schasingluluifeq (${ARCH},aarch64) 111*91f16700Schasinglulu $(error Error: AArch64 not supported on i.mx7) 112*91f16700Schasingluluendif 113*91f16700Schasinglulu 114*91f16700Schasingluluifeq (${AARCH32_SP}, none) 115*91f16700Schasinglulu $(error Variable AARCH32_SP has to be set for AArch32) 116*91f16700Schasingluluendif 117