1*91f16700Schasinglulu# 2*91f16700Schasinglulu# Copyright (c) 2017-2023, ARM Limited and Contributors. All rights reserved. 3*91f16700Schasinglulu# 4*91f16700Schasinglulu# SPDX-License-Identifier: BSD-3-Clause 5*91f16700Schasinglulu# 6*91f16700Schasinglulu 7*91f16700Schasingluluoverride RESET_TO_BL2 := 1 8*91f16700Schasingluluoverride COLD_BOOT_SINGLE_CPU := 1 9*91f16700Schasingluluoverride PROGRAMMABLE_RESET_ADDRESS := 1 10*91f16700Schasingluluoverride USE_COHERENT_MEM := 1 11*91f16700Schasingluluoverride ENABLE_SVE_FOR_NS := 0 12*91f16700Schasinglulu 13*91f16700Schasinglulu# Disabling ENABLE_PIE saves memory footprint a lot, but you need to adjust 14*91f16700Schasinglulu# UNIPHIER_MEM_BASE so that all TF images are loaded at their link addresses. 15*91f16700Schasingluluoverride ENABLE_PIE := 1 16*91f16700Schasinglulu 17*91f16700SchasingluluALLOW_RO_XLAT_TABLES := 1 18*91f16700Schasinglulu 19*91f16700Schasingluluifeq ($(ALLOW_RO_XLAT_TABLES),1) 20*91f16700SchasingluluBL31_CPPFLAGS += -DPLAT_RO_XLAT_TABLES 21*91f16700SchasingluluBL32_CPPFLAGS += -DPLAT_RO_XLAT_TABLES 22*91f16700Schasingluluendif 23*91f16700Schasinglulu 24*91f16700Schasinglulu# The dynamic xlat table is only used in BL2 25*91f16700SchasingluluBL2_CPPFLAGS += -DPLAT_XLAT_TABLES_DYNAMIC 26*91f16700Schasinglulu 27*91f16700Schasinglulu# Cortex-A53 revision r0p4-51rel0 28*91f16700Schasinglulu# needed for LD20, unneeded for LD11, PXs3 (no ACE) 29*91f16700SchasingluluERRATA_A53_855873 := 1 30*91f16700Schasinglulu 31*91f16700SchasingluluFIP_ALIGN := 512 32*91f16700Schasinglulu 33*91f16700Schasingluluifeq ($(NEED_BL32),yes) 34*91f16700Schasinglulu$(eval $(call add_define,UNIPHIER_LOAD_BL32)) 35*91f16700Schasingluluendif 36*91f16700Schasinglulu 37*91f16700Schasinglulu# Libraries 38*91f16700Schasingluluinclude lib/xlat_tables_v2/xlat_tables.mk 39*91f16700Schasinglulu 40*91f16700SchasingluluPLAT_PATH := plat/socionext/uniphier 41*91f16700SchasingluluPLAT_INCLUDES := -I$(PLAT_PATH)/include 42*91f16700Schasinglulu 43*91f16700Schasinglulu# common sources for BL2, BL31 (and BL32 if SPD=tspd) 44*91f16700SchasingluluPLAT_BL_COMMON_SOURCES += plat/common/aarch64/crash_console_helpers.S \ 45*91f16700Schasinglulu $(PLAT_PATH)/uniphier_console.S \ 46*91f16700Schasinglulu $(PLAT_PATH)/uniphier_console_setup.c \ 47*91f16700Schasinglulu $(PLAT_PATH)/uniphier_helpers.S \ 48*91f16700Schasinglulu $(PLAT_PATH)/uniphier_soc_info.c \ 49*91f16700Schasinglulu $(PLAT_PATH)/uniphier_xlat_setup.c \ 50*91f16700Schasinglulu ${XLAT_TABLES_LIB_SRCS} 51*91f16700Schasinglulu 52*91f16700SchasingluluBL2_SOURCES += common/desc_image_load.c \ 53*91f16700Schasinglulu drivers/io/io_block.c \ 54*91f16700Schasinglulu drivers/io/io_fip.c \ 55*91f16700Schasinglulu drivers/io/io_memmap.c \ 56*91f16700Schasinglulu drivers/io/io_storage.c \ 57*91f16700Schasinglulu lib/cpus/aarch64/cortex_a53.S \ 58*91f16700Schasinglulu lib/cpus/aarch64/cortex_a72.S \ 59*91f16700Schasinglulu $(PLAT_PATH)/uniphier_bl2_setup.c \ 60*91f16700Schasinglulu $(PLAT_PATH)/uniphier_boot_device.c \ 61*91f16700Schasinglulu $(PLAT_PATH)/uniphier_emmc.c \ 62*91f16700Schasinglulu $(PLAT_PATH)/uniphier_image_desc.c \ 63*91f16700Schasinglulu $(PLAT_PATH)/uniphier_io_storage.c \ 64*91f16700Schasinglulu $(PLAT_PATH)/uniphier_nand.c \ 65*91f16700Schasinglulu $(PLAT_PATH)/uniphier_scp.c \ 66*91f16700Schasinglulu $(PLAT_PATH)/uniphier_usb.c 67*91f16700Schasinglulu 68*91f16700Schasinglulu# Include GICv3 driver files 69*91f16700Schasingluluinclude drivers/arm/gic/v3/gicv3.mk 70*91f16700Schasinglulu 71*91f16700SchasingluluBL31_SOURCES += drivers/arm/cci/cci.c \ 72*91f16700Schasinglulu ${GICV3_SOURCES} \ 73*91f16700Schasinglulu lib/cpus/aarch64/cortex_a53.S \ 74*91f16700Schasinglulu lib/cpus/aarch64/cortex_a72.S \ 75*91f16700Schasinglulu plat/common/plat_gicv3.c \ 76*91f16700Schasinglulu plat/common/plat_psci_common.c \ 77*91f16700Schasinglulu $(PLAT_PATH)/uniphier_bl31_setup.c \ 78*91f16700Schasinglulu $(PLAT_PATH)/uniphier_boot_device.c \ 79*91f16700Schasinglulu $(PLAT_PATH)/uniphier_cci.c \ 80*91f16700Schasinglulu $(PLAT_PATH)/uniphier_gicv3.c \ 81*91f16700Schasinglulu $(PLAT_PATH)/uniphier_psci.c \ 82*91f16700Schasinglulu $(PLAT_PATH)/uniphier_scp.c \ 83*91f16700Schasinglulu $(PLAT_PATH)/uniphier_smp.S \ 84*91f16700Schasinglulu $(PLAT_PATH)/uniphier_syscnt.c \ 85*91f16700Schasinglulu $(PLAT_PATH)/uniphier_topology.c 86*91f16700Schasinglulu 87*91f16700Schasingluluifeq (${TRUSTED_BOARD_BOOT},1) 88*91f16700Schasinglulu 89*91f16700Schasingluluinclude drivers/auth/mbedtls/mbedtls_crypto.mk 90*91f16700Schasingluluinclude drivers/auth/mbedtls/mbedtls_x509.mk 91*91f16700Schasinglulu 92*91f16700SchasingluluBL2_SOURCES += drivers/auth/auth_mod.c \ 93*91f16700Schasinglulu drivers/auth/crypto_mod.c \ 94*91f16700Schasinglulu drivers/auth/img_parser_mod.c \ 95*91f16700Schasinglulu drivers/auth/tbbr/tbbr_cot_common.c \ 96*91f16700Schasinglulu drivers/auth/tbbr/tbbr_cot_bl2.c \ 97*91f16700Schasinglulu plat/common/tbbr/plat_tbbr.c \ 98*91f16700Schasinglulu $(PLAT_PATH)/uniphier_rotpk.S \ 99*91f16700Schasinglulu $(PLAT_PATH)/uniphier_tbbr.c 100*91f16700Schasinglulu 101*91f16700SchasingluluROT_KEY = $(BUILD_PLAT)/rot_key.pem 102*91f16700SchasingluluROTPK_HASH = $(BUILD_PLAT)/rotpk_sha256.bin 103*91f16700Schasinglulu 104*91f16700Schasinglulu$(eval $(call add_define_val,ROTPK_HASH,'"$(ROTPK_HASH)"')) 105*91f16700Schasinglulu$(BUILD_PLAT)/bl2/uniphier_rotpk.o: $(ROTPK_HASH) 106*91f16700Schasinglulu 107*91f16700Schasinglulucertificates: $(ROT_KEY) 108*91f16700Schasinglulu$(ROT_KEY): | $(BUILD_PLAT) 109*91f16700Schasinglulu @echo " OPENSSL $@" 110*91f16700Schasinglulu $(Q)${OPENSSL_BIN_PATH}/openssl genrsa 2048 > $@ 2>/dev/null 111*91f16700Schasinglulu 112*91f16700Schasinglulu$(ROTPK_HASH): $(ROT_KEY) 113*91f16700Schasinglulu @echo " OPENSSL $@" 114*91f16700Schasinglulu $(Q)${OPENSSL_BIN_PATH}/openssl rsa -in $< -pubout -outform DER 2>/dev/null |\ 115*91f16700Schasinglulu ${OPENSSL_BIN_PATH}/openssl dgst -sha256 -binary > $@ 2>/dev/null 116*91f16700Schasinglulu 117*91f16700Schasingluluendif 118*91f16700Schasinglulu 119*91f16700Schasingluluifeq (${FIP_GZIP},1) 120*91f16700Schasinglulu 121*91f16700Schasingluluinclude lib/zlib/zlib.mk 122*91f16700Schasinglulu 123*91f16700SchasingluluBL2_SOURCES += common/image_decompress.c \ 124*91f16700Schasinglulu $(ZLIB_SOURCES) 125*91f16700Schasinglulu 126*91f16700Schasinglulu$(eval $(call add_define,UNIPHIER_DECOMPRESS_GZIP)) 127*91f16700Schasinglulu 128*91f16700Schasinglulu# compress all images loaded by BL2 129*91f16700SchasingluluSCP_BL2_PRE_TOOL_FILTER := GZIP 130*91f16700SchasingluluBL31_PRE_TOOL_FILTER := GZIP 131*91f16700SchasingluluBL32_PRE_TOOL_FILTER := GZIP 132*91f16700SchasingluluBL33_PRE_TOOL_FILTER := GZIP 133*91f16700Schasinglulu 134*91f16700Schasingluluendif 135*91f16700Schasinglulu 136*91f16700Schasinglulu.PHONY: bl2_gzip 137*91f16700Schasinglulubl2_gzip: $(BUILD_PLAT)/bl2.bin.gz 138*91f16700Schasinglulu%.gz: % 139*91f16700Schasinglulu @echo " GZIP $@" 140*91f16700Schasinglulu $(Q)gzip -n -f -9 $< --stdout > $@ 141