1717448d6SSheetal Tigadoli# 2717448d6SSheetal Tigadoli# Copyright (c) 2015 - 2020, Broadcom 3717448d6SSheetal Tigadoli# 4717448d6SSheetal Tigadoli# SPDX-License-Identifier: BSD-3-Clause 5717448d6SSheetal Tigadoli# 6717448d6SSheetal Tigadoli 7717448d6SSheetal TigadoliPLAT_BL_COMMON_SOURCES += plat/brcm/board/common/board_common.c 8717448d6SSheetal Tigadoli 9717448d6SSheetal Tigadoli# If no board config makefile, do not include it 10717448d6SSheetal Tigadoliifneq (${BOARD_CFG},) 11717448d6SSheetal TigadoliBOARD_CFG_MAKE := $(shell find plat/brcm/board/${PLAT} -name '${BOARD_CFG}.mk') 12717448d6SSheetal Tigadoli$(eval $(call add_define,BOARD_CFG)) 13717448d6SSheetal Tigadoliifneq (${BOARD_CFG_MAKE},) 14717448d6SSheetal Tigadoli$(info Including ${BOARD_CFG_MAKE}) 15717448d6SSheetal Tigadoliinclude ${BOARD_CFG_MAKE} 16717448d6SSheetal Tigadolielse 17717448d6SSheetal Tigadoli$(error Error: File ${BOARD_CFG}.mk not found in plat/brcm/board/${PLAT}) 18717448d6SSheetal Tigadoliendif 19717448d6SSheetal Tigadoliendif 20717448d6SSheetal Tigadoli 21717448d6SSheetal Tigadoli# To compile with highest log level (VERBOSE) set value to 50 22717448d6SSheetal TigadoliLOG_LEVEL := 40 23717448d6SSheetal Tigadoli 24717448d6SSheetal Tigadoli# Use custom generic timer clock 25717448d6SSheetal Tigadoliifneq (${GENTIMER_ACTUAL_CLOCK},) 26717448d6SSheetal Tigadoli$(info Using GENTIMER_ACTUAL_CLOCK=$(GENTIMER_ACTUAL_CLOCK)) 27717448d6SSheetal TigadoliSYSCNT_FREQ := $(GENTIMER_ACTUAL_CLOCK) 28717448d6SSheetal Tigadoli$(eval $(call add_define,SYSCNT_FREQ)) 29717448d6SSheetal Tigadoliendif 30717448d6SSheetal Tigadoli 31*f29d1e0cSSheetal Tigadoli# By default, Trusted Watchdog is always enabled unless SPIN_ON_BL1_EXIT is set 32*f29d1e0cSSheetal Tigadoliifeq (${BRCM_DISABLE_TRUSTED_WDOG},) 33*f29d1e0cSSheetal TigadoliBRCM_DISABLE_TRUSTED_WDOG := 0 34*f29d1e0cSSheetal Tigadoliendif 35*f29d1e0cSSheetal Tigadoliifeq (${SPIN_ON_BL1_EXIT}, 1) 36*f29d1e0cSSheetal TigadoliBRCM_DISABLE_TRUSTED_WDOG := 1 37*f29d1e0cSSheetal Tigadoliendif 38*f29d1e0cSSheetal Tigadoli 39*f29d1e0cSSheetal Tigadoli$(eval $(call assert_boolean,BRCM_DISABLE_TRUSTED_WDOG)) 40*f29d1e0cSSheetal Tigadoli$(eval $(call add_define,BRCM_DISABLE_TRUSTED_WDOG)) 41*f29d1e0cSSheetal Tigadoli 429a40c0fbSSheetal Tigadoli# Process ARM_BL31_IN_DRAM flag 439a40c0fbSSheetal Tigadoliifeq (${ARM_BL31_IN_DRAM},) 449a40c0fbSSheetal TigadoliARM_BL31_IN_DRAM := 0 459a40c0fbSSheetal Tigadoliendif 469a40c0fbSSheetal Tigadoli$(eval $(call assert_boolean,ARM_BL31_IN_DRAM)) 479a40c0fbSSheetal Tigadoli$(eval $(call add_define,ARM_BL31_IN_DRAM)) 489a40c0fbSSheetal Tigadoli 49717448d6SSheetal Tigadoliifeq (${STANDALONE_BL2},yes) 50*f29d1e0cSSheetal TigadoliBL2_LOG_LEVEL := 40 51717448d6SSheetal Tigadoli$(eval $(call add_define,MMU_DISABLED)) 52717448d6SSheetal Tigadoliendif 53717448d6SSheetal Tigadoli 54717448d6SSheetal Tigadoli# BL2 XIP from QSPI 55717448d6SSheetal TigadoliRUN_BL2_FROM_QSPI := 0 56717448d6SSheetal Tigadoliifeq (${RUN_BL2_FROM_QSPI},1) 57717448d6SSheetal Tigadoli$(eval $(call add_define,RUN_BL2_FROM_QSPI)) 58717448d6SSheetal Tigadoliendif 59717448d6SSheetal Tigadoli 60*f29d1e0cSSheetal Tigadoli# BL2 XIP from NAND 61*f29d1e0cSSheetal TigadoliRUN_BL2_FROM_NAND := 0 62*f29d1e0cSSheetal Tigadoliifeq (${RUN_BL2_FROM_NAND},1) 63*f29d1e0cSSheetal Tigadoli$(eval $(call add_define,RUN_BL2_FROM_NAND)) 64*f29d1e0cSSheetal Tigadoliendif 65*f29d1e0cSSheetal Tigadoli 66*f29d1e0cSSheetal Tigadoliifneq (${ELOG_AP_UART_LOG_BASE},) 67*f29d1e0cSSheetal Tigadoli$(eval $(call add_define,ELOG_AP_UART_LOG_BASE)) 68*f29d1e0cSSheetal Tigadoliendif 69*f29d1e0cSSheetal Tigadoli 70*f29d1e0cSSheetal Tigadoliifeq (${ELOG_SUPPORT},1) 71*f29d1e0cSSheetal Tigadoliifeq (${ELOG_STORE_MEDIA},DDR) 72*f29d1e0cSSheetal Tigadoli$(eval $(call add_define,ELOG_STORE_MEDIA_DDR)) 73*f29d1e0cSSheetal Tigadoliifneq (${ELOG_STORE_OFFSET},) 74*f29d1e0cSSheetal Tigadoli$(eval $(call add_define,ELOG_STORE_OFFSET)) 75*f29d1e0cSSheetal Tigadoliendif 76*f29d1e0cSSheetal Tigadoliendif 77*f29d1e0cSSheetal Tigadoliendif 78*f29d1e0cSSheetal Tigadoli 79*f29d1e0cSSheetal Tigadoliifneq (${BL2_LOG_LEVEL},) 80*f29d1e0cSSheetal Tigadoli$(eval $(call add_define,BL2_LOG_LEVEL)) 81*f29d1e0cSSheetal Tigadoliendif 82*f29d1e0cSSheetal Tigadoli 83717448d6SSheetal Tigadoli# Use CRMU SRAM from iHOST 84717448d6SSheetal Tigadoliifneq (${USE_CRMU_SRAM},) 85717448d6SSheetal Tigadoli$(eval $(call add_define,USE_CRMU_SRAM)) 86717448d6SSheetal Tigadoliendif 87717448d6SSheetal Tigadoli 88717448d6SSheetal Tigadoli# On BRCM platforms, separate the code and read-only data sections to allow 89717448d6SSheetal Tigadoli# mapping the former as executable and the latter as execute-never. 90717448d6SSheetal TigadoliSEPARATE_CODE_AND_RODATA := 1 91717448d6SSheetal Tigadoli 92717448d6SSheetal Tigadoli# Use generic OID definition (tbbr_oid.h) 93717448d6SSheetal TigadoliUSE_TBBR_DEFS := 1 94717448d6SSheetal Tigadoli 959a40c0fbSSheetal TigadoliPLAT_INCLUDES += -Iplat/brcm/board/common \ 969a40c0fbSSheetal Tigadoli -Iinclude/drivers/brcm 97717448d6SSheetal Tigadoli 98717448d6SSheetal TigadoliPLAT_BL_COMMON_SOURCES += plat/brcm/common/brcm_common.c \ 99717448d6SSheetal Tigadoli plat/brcm/board/common/cmn_sec.c \ 100717448d6SSheetal Tigadoli plat/brcm/board/common/bcm_console.c \ 101*f29d1e0cSSheetal Tigadoli plat/brcm/board/common/brcm_mbedtls.c \ 102717448d6SSheetal Tigadoli plat/brcm/board/common/plat_setup.c \ 103717448d6SSheetal Tigadoli plat/brcm/board/common/platform_common.c \ 104717448d6SSheetal Tigadoli drivers/arm/sp804/sp804_delay_timer.c \ 105*f29d1e0cSSheetal Tigadoli drivers/brcm/sotp.c \ 106717448d6SSheetal Tigadoli drivers/delay_timer/delay_timer.c \ 107717448d6SSheetal Tigadoli drivers/io/io_fip.c \ 108717448d6SSheetal Tigadoli drivers/io/io_memmap.c \ 109717448d6SSheetal Tigadoli drivers/io/io_storage.c \ 110717448d6SSheetal Tigadoli plat/brcm/common/brcm_io_storage.c \ 111717448d6SSheetal Tigadoli plat/brcm/board/common/err.c \ 112*f29d1e0cSSheetal Tigadoli plat/brcm/board/common/sbl_util.c \ 113717448d6SSheetal Tigadoli drivers/arm/sp805/sp805.c 114717448d6SSheetal Tigadoli 115717448d6SSheetal TigadoliBL2_SOURCES += plat/brcm/common/brcm_bl2_mem_params_desc.c \ 116717448d6SSheetal Tigadoli plat/brcm/common/brcm_image_load.c \ 117717448d6SSheetal Tigadoli common/desc_image_load.c 118717448d6SSheetal Tigadoli 119717448d6SSheetal TigadoliBL2_SOURCES += plat/brcm/common/brcm_bl2_setup.c 120717448d6SSheetal Tigadoli 1219a40c0fbSSheetal TigadoliBL31_SOURCES += plat/brcm/common/brcm_bl31_setup.c 1229a40c0fbSSheetal Tigadoli 123*f29d1e0cSSheetal Tigadoliifeq (${BCM_ELOG},yes) 124*f29d1e0cSSheetal TigadoliELOG_SOURCES += plat/brcm/board/common/bcm_elog.c 125*f29d1e0cSSheetal TigadoliBL2_SOURCES += ${ELOG_SOURCES} 126*f29d1e0cSSheetal Tigadoliendif 127*f29d1e0cSSheetal Tigadoli 128*f29d1e0cSSheetal Tigadoliifeq (${DRIVER_OCOTP_ENABLE},1) 129*f29d1e0cSSheetal Tigadoli$(eval $(call add_define,DRIVER_OCOTP_ENABLE)) 130*f29d1e0cSSheetal TigadoliBL2_SOURCES += drivers/brcm/ocotp.c 131*f29d1e0cSSheetal Tigadoliendif 132*f29d1e0cSSheetal Tigadoli 133*f29d1e0cSSheetal Tigadoli# Enable FRU table support 134*f29d1e0cSSheetal Tigadoliifeq (${USE_FRU},yes) 135*f29d1e0cSSheetal Tigadoli$(eval $(call add_define,USE_FRU)) 136*f29d1e0cSSheetal TigadoliBL2_SOURCES += drivers/brcm/fru.c 137*f29d1e0cSSheetal Tigadoliendif 138*f29d1e0cSSheetal Tigadoli 139*f29d1e0cSSheetal Tigadoli# Enable GPIO support 140*f29d1e0cSSheetal Tigadoliifeq (${USE_GPIO},yes) 141*f29d1e0cSSheetal Tigadoli$(eval $(call add_define,USE_GPIO)) 142*f29d1e0cSSheetal TigadoliBL2_SOURCES += drivers/gpio/gpio.c 143*f29d1e0cSSheetal TigadoliBL2_SOURCES += drivers/brcm/iproc_gpio.c 144*f29d1e0cSSheetal Tigadoliifeq (${GPIO_SUPPORT_FLOAT_DETECTION},yes) 145*f29d1e0cSSheetal Tigadoli$(eval $(call add_define,GPIO_SUPPORT_FLOAT_DETECTION)) 146*f29d1e0cSSheetal Tigadoliendif 147*f29d1e0cSSheetal Tigadoliendif 148*f29d1e0cSSheetal Tigadoli 149*f29d1e0cSSheetal Tigadoli# Include mbedtls if it can be located 150*f29d1e0cSSheetal TigadoliMBEDTLS_DIR := mbedtls 151*f29d1e0cSSheetal TigadoliMBEDTLS_CHECK := $(shell find ${MBEDTLS_DIR}/include -name '${MBEDTLS_DIR}') 152*f29d1e0cSSheetal Tigadoli 153*f29d1e0cSSheetal Tigadoliifneq (${MBEDTLS_CHECK},) 154*f29d1e0cSSheetal Tigadoli$(info Found mbedTLS at ${MBEDTLS_DIR}) 155*f29d1e0cSSheetal TigadoliPLAT_INCLUDES += -I${MBEDTLS_DIR}/include/mbedtls 156*f29d1e0cSSheetal Tigadoli# Specify mbedTLS configuration file 157*f29d1e0cSSheetal TigadoliMBEDTLS_CONFIG_FILE := "<brcm_mbedtls_config.h>" 158*f29d1e0cSSheetal Tigadoli 159*f29d1e0cSSheetal Tigadoli# By default, use RSA keys 160*f29d1e0cSSheetal TigadoliKEY_ALG := rsa_1_5 161*f29d1e0cSSheetal Tigadoli 162*f29d1e0cSSheetal Tigadoli# Include common TBB sources 163*f29d1e0cSSheetal TigadoliAUTH_SOURCES += drivers/auth/auth_mod.c \ 164*f29d1e0cSSheetal Tigadoli drivers/auth/crypto_mod.c \ 165*f29d1e0cSSheetal Tigadoli drivers/auth/img_parser_mod.c \ 166*f29d1e0cSSheetal Tigadoli drivers/auth/tbbr/tbbr_cot.c 167*f29d1e0cSSheetal Tigadoli 168*f29d1e0cSSheetal TigadoliBL2_SOURCES += ${AUTH_SOURCES} 169*f29d1e0cSSheetal Tigadoli 170*f29d1e0cSSheetal Tigadoli# Use ATF framework for MBEDTLS 171*f29d1e0cSSheetal TigadoliTRUSTED_BOARD_BOOT := 1 172*f29d1e0cSSheetal TigadoliCRYPTO_LIB_MK := drivers/auth/mbedtls/mbedtls_crypto.mk 173*f29d1e0cSSheetal TigadoliIMG_PARSER_LIB_MK := drivers/auth/mbedtls/mbedtls_x509.mk 174*f29d1e0cSSheetal Tigadoli$(info Including ${CRYPTO_LIB_MK}) 175*f29d1e0cSSheetal Tigadoliinclude ${CRYPTO_LIB_MK} 176*f29d1e0cSSheetal Tigadoli$(info Including ${IMG_PARSER_LIB_MK}) 177*f29d1e0cSSheetal Tigadoliinclude ${IMG_PARSER_LIB_MK} 178*f29d1e0cSSheetal Tigadoli 179*f29d1e0cSSheetal Tigadoli# Use ATF secure boot functions 180*f29d1e0cSSheetal Tigadoli# Use Hardcoded hash for devel 181*f29d1e0cSSheetal Tigadoli 182*f29d1e0cSSheetal TigadoliARM_ROTPK_LOCATION=arm_rsa 183*f29d1e0cSSheetal Tigadoliifeq (${ARM_ROTPK_LOCATION}, arm_rsa) 184*f29d1e0cSSheetal TigadoliARM_ROTPK_LOCATION_ID=ARM_ROTPK_DEVEL_RSA_ID 185*f29d1e0cSSheetal TigadoliROT_KEY=plat/arm/board/common/rotpk/arm_rotprivk_rsa.pem 186*f29d1e0cSSheetal Tigadolielse ifeq (${ARM_ROTPK_LOCATION}, brcm_rsa) 187*f29d1e0cSSheetal TigadoliARM_ROTPK_LOCATION_ID=BRCM_ROTPK_SOTP_RSA_ID 188*f29d1e0cSSheetal Tigadoliifeq (${ROT_KEY},) 189*f29d1e0cSSheetal TigadoliROT_KEY=plat/brcm/board/common/rotpk/rsa_dauth2048_key.pem 190*f29d1e0cSSheetal Tigadoliendif 191*f29d1e0cSSheetal TigadoliKEY_FIND := $(shell m="${ROT_KEY}"; [ -f "$$m" ] && echo "$$m") 192*f29d1e0cSSheetal Tigadoliifeq (${KEY_FIND},) 193*f29d1e0cSSheetal Tigadoli$(error Error: No ${ROT_KEY} located) 194*f29d1e0cSSheetal Tigadolielse 195*f29d1e0cSSheetal Tigadoli$(info Using ROT_KEY: ${ROT_KEY}) 196*f29d1e0cSSheetal Tigadoliendif 197*f29d1e0cSSheetal Tigadolielse 198*f29d1e0cSSheetal Tigadoli$(error "Unsupported ARM_ROTPK_LOCATION value") 199*f29d1e0cSSheetal Tigadoliendif 200*f29d1e0cSSheetal Tigadoli 201*f29d1e0cSSheetal Tigadoli$(eval $(call add_define,ARM_ROTPK_LOCATION_ID)) 202*f29d1e0cSSheetal TigadoliPLAT_BL_COMMON_SOURCES+=plat/brcm/board/common/board_arm_trusted_boot.c 203*f29d1e0cSSheetal Tigadoliendif 204*f29d1e0cSSheetal Tigadoli 2059a40c0fbSSheetal Tigadoli#M0 runtime firmware 2069a40c0fbSSheetal Tigadoliifdef SCP_BL2 2079a40c0fbSSheetal Tigadoli$(eval $(call add_define,NEED_SCP_BL2)) 2089a40c0fbSSheetal TigadoliSCP_CFG_DIR=$(dir ${SCP_BL2}) 2099a40c0fbSSheetal TigadoliPLAT_INCLUDES += -I${SCP_CFG_DIR} 2109a40c0fbSSheetal Tigadoliendif 2119a40c0fbSSheetal Tigadoli 2129a40c0fbSSheetal Tigadoliifneq (${NEED_BL33},yes) 2139a40c0fbSSheetal Tigadoli# If there is no BL33, BL31 will jump to this address. 2149a40c0fbSSheetal Tigadoliifeq (${USE_DDR},yes) 2159a40c0fbSSheetal TigadoliPRELOADED_BL33_BASE := 0x80000000 2169a40c0fbSSheetal Tigadolielse 2179a40c0fbSSheetal TigadoliPRELOADED_BL33_BASE := 0x74000000 2189a40c0fbSSheetal Tigadoliendif 2199a40c0fbSSheetal Tigadoliendif 2209a40c0fbSSheetal Tigadoli 221717448d6SSheetal Tigadoli# Use translation tables library v1 by default 222717448d6SSheetal TigadoliARM_XLAT_TABLES_LIB_V1 := 1 223717448d6SSheetal Tigadoliifeq (${ARM_XLAT_TABLES_LIB_V1}, 1) 224717448d6SSheetal Tigadoli$(eval $(call assert_boolean,ARM_XLAT_TABLES_LIB_V1)) 225717448d6SSheetal Tigadoli$(eval $(call add_define,ARM_XLAT_TABLES_LIB_V1)) 226717448d6SSheetal TigadoliPLAT_BL_COMMON_SOURCES += lib/xlat_tables/aarch64/xlat_tables.c \ 227717448d6SSheetal Tigadoli lib/xlat_tables/xlat_tables_common.c 228717448d6SSheetal Tigadoliendif 229