1717448d6SSheetal Tigadoli# 2*48c6a6b6SBharat Gooty# Copyright (c) 2015 - 2021, 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 31bffde63dSSheetal Tigadoliifeq (${DRIVER_EMMC_ENABLE},) 32bffde63dSSheetal TigadoliDRIVER_EMMC_ENABLE :=1 33bffde63dSSheetal Tigadoliendif 34bffde63dSSheetal Tigadoli 35e3ee7b7dSSheetal Tigadoliifeq (${DRIVER_SPI_ENABLE},) 36e3ee7b7dSSheetal TigadoliDRIVER_SPI_ENABLE := 0 37e3ee7b7dSSheetal Tigadoliendif 38e3ee7b7dSSheetal Tigadoli 39*48c6a6b6SBharat Gootyifeq (${DRIVER_I2C_ENABLE},) 40*48c6a6b6SBharat GootyDRIVER_I2C_ENABLE := 0 41*48c6a6b6SBharat Gootyendif 42*48c6a6b6SBharat Gooty 43f29d1e0cSSheetal Tigadoli# By default, Trusted Watchdog is always enabled unless SPIN_ON_BL1_EXIT is set 44f29d1e0cSSheetal Tigadoliifeq (${BRCM_DISABLE_TRUSTED_WDOG},) 45f29d1e0cSSheetal TigadoliBRCM_DISABLE_TRUSTED_WDOG := 0 46f29d1e0cSSheetal Tigadoliendif 47f29d1e0cSSheetal Tigadoliifeq (${SPIN_ON_BL1_EXIT}, 1) 48f29d1e0cSSheetal TigadoliBRCM_DISABLE_TRUSTED_WDOG := 1 49f29d1e0cSSheetal Tigadoliendif 50f29d1e0cSSheetal Tigadoli 51f29d1e0cSSheetal Tigadoli$(eval $(call assert_boolean,BRCM_DISABLE_TRUSTED_WDOG)) 52f29d1e0cSSheetal Tigadoli$(eval $(call add_define,BRCM_DISABLE_TRUSTED_WDOG)) 53f29d1e0cSSheetal Tigadoli 549a40c0fbSSheetal Tigadoli# Process ARM_BL31_IN_DRAM flag 559a40c0fbSSheetal Tigadoliifeq (${ARM_BL31_IN_DRAM},) 569a40c0fbSSheetal TigadoliARM_BL31_IN_DRAM := 0 579a40c0fbSSheetal Tigadoliendif 589a40c0fbSSheetal Tigadoli$(eval $(call assert_boolean,ARM_BL31_IN_DRAM)) 599a40c0fbSSheetal Tigadoli$(eval $(call add_define,ARM_BL31_IN_DRAM)) 609a40c0fbSSheetal Tigadoli 61717448d6SSheetal Tigadoliifeq (${STANDALONE_BL2},yes) 62f29d1e0cSSheetal TigadoliBL2_LOG_LEVEL := 40 63717448d6SSheetal Tigadoli$(eval $(call add_define,MMU_DISABLED)) 64717448d6SSheetal Tigadoliendif 65717448d6SSheetal Tigadoli 66717448d6SSheetal Tigadoli# BL2 XIP from QSPI 67717448d6SSheetal TigadoliRUN_BL2_FROM_QSPI := 0 68717448d6SSheetal Tigadoliifeq (${RUN_BL2_FROM_QSPI},1) 69717448d6SSheetal Tigadoli$(eval $(call add_define,RUN_BL2_FROM_QSPI)) 70717448d6SSheetal Tigadoliendif 71717448d6SSheetal Tigadoli 72f29d1e0cSSheetal Tigadoli# BL2 XIP from NAND 73f29d1e0cSSheetal TigadoliRUN_BL2_FROM_NAND := 0 74f29d1e0cSSheetal Tigadoliifeq (${RUN_BL2_FROM_NAND},1) 75f29d1e0cSSheetal Tigadoli$(eval $(call add_define,RUN_BL2_FROM_NAND)) 76f29d1e0cSSheetal Tigadoliendif 77f29d1e0cSSheetal Tigadoli 78f29d1e0cSSheetal Tigadoliifneq (${ELOG_AP_UART_LOG_BASE},) 79f29d1e0cSSheetal Tigadoli$(eval $(call add_define,ELOG_AP_UART_LOG_BASE)) 80f29d1e0cSSheetal Tigadoliendif 81f29d1e0cSSheetal Tigadoli 82f29d1e0cSSheetal Tigadoliifeq (${ELOG_SUPPORT},1) 83f29d1e0cSSheetal Tigadoliifeq (${ELOG_STORE_MEDIA},DDR) 84f29d1e0cSSheetal Tigadoli$(eval $(call add_define,ELOG_STORE_MEDIA_DDR)) 85f29d1e0cSSheetal Tigadoliifneq (${ELOG_STORE_OFFSET},) 86f29d1e0cSSheetal Tigadoli$(eval $(call add_define,ELOG_STORE_OFFSET)) 87f29d1e0cSSheetal Tigadoliendif 88f29d1e0cSSheetal Tigadoliendif 89f29d1e0cSSheetal Tigadoliendif 90f29d1e0cSSheetal Tigadoli 91f29d1e0cSSheetal Tigadoliifneq (${BL2_LOG_LEVEL},) 92f29d1e0cSSheetal Tigadoli$(eval $(call add_define,BL2_LOG_LEVEL)) 93f29d1e0cSSheetal Tigadoliendif 94f29d1e0cSSheetal Tigadoli 953942d3a8SSheetal Tigadoliifneq (${BL31_LOG_LEVEL},) 963942d3a8SSheetal Tigadoli$(eval $(call add_define,BL31_LOG_LEVEL)) 973942d3a8SSheetal Tigadoliendif 983942d3a8SSheetal Tigadoli 99717448d6SSheetal Tigadoli# Use CRMU SRAM from iHOST 100717448d6SSheetal Tigadoliifneq (${USE_CRMU_SRAM},) 101717448d6SSheetal Tigadoli$(eval $(call add_define,USE_CRMU_SRAM)) 102717448d6SSheetal Tigadoliendif 103717448d6SSheetal Tigadoli 104bffde63dSSheetal Tigadoli# Use PIO mode if DDR is not used 105bffde63dSSheetal Tigadoliifeq (${USE_DDR},yes) 106bffde63dSSheetal TigadoliEMMC_USE_DMA := 1 107bffde63dSSheetal Tigadolielse 108bffde63dSSheetal TigadoliEMMC_USE_DMA := 0 109bffde63dSSheetal Tigadoliendif 110bffde63dSSheetal Tigadoli$(eval $(call add_define,EMMC_USE_DMA)) 111bffde63dSSheetal Tigadoli 112717448d6SSheetal Tigadoli# On BRCM platforms, separate the code and read-only data sections to allow 113717448d6SSheetal Tigadoli# mapping the former as executable and the latter as execute-never. 114717448d6SSheetal TigadoliSEPARATE_CODE_AND_RODATA := 1 115717448d6SSheetal Tigadoli 116717448d6SSheetal Tigadoli# Use generic OID definition (tbbr_oid.h) 117717448d6SSheetal TigadoliUSE_TBBR_DEFS := 1 118717448d6SSheetal Tigadoli 1199a40c0fbSSheetal TigadoliPLAT_INCLUDES += -Iplat/brcm/board/common \ 120bffde63dSSheetal Tigadoli -Iinclude/drivers/brcm \ 121bffde63dSSheetal Tigadoli -Iinclude/drivers/brcm/emmc 122717448d6SSheetal Tigadoli 123717448d6SSheetal TigadoliPLAT_BL_COMMON_SOURCES += plat/brcm/common/brcm_common.c \ 124717448d6SSheetal Tigadoli plat/brcm/board/common/cmn_sec.c \ 125717448d6SSheetal Tigadoli plat/brcm/board/common/bcm_console.c \ 126f29d1e0cSSheetal Tigadoli plat/brcm/board/common/brcm_mbedtls.c \ 127717448d6SSheetal Tigadoli plat/brcm/board/common/plat_setup.c \ 128717448d6SSheetal Tigadoli plat/brcm/board/common/platform_common.c \ 129717448d6SSheetal Tigadoli drivers/arm/sp804/sp804_delay_timer.c \ 130f29d1e0cSSheetal Tigadoli drivers/brcm/sotp.c \ 131717448d6SSheetal Tigadoli drivers/delay_timer/delay_timer.c \ 132717448d6SSheetal Tigadoli drivers/io/io_fip.c \ 133717448d6SSheetal Tigadoli drivers/io/io_memmap.c \ 134717448d6SSheetal Tigadoli drivers/io/io_storage.c \ 135717448d6SSheetal Tigadoli plat/brcm/common/brcm_io_storage.c \ 136717448d6SSheetal Tigadoli plat/brcm/board/common/err.c \ 137f29d1e0cSSheetal Tigadoli plat/brcm/board/common/sbl_util.c \ 138717448d6SSheetal Tigadoli drivers/arm/sp805/sp805.c 139717448d6SSheetal Tigadoli 140c10563baSBharat Gooty# Add RNG driver 141c10563baSBharat GootyDRIVER_RNG_ENABLE := 1 142c10563baSBharat Gootyifeq (${DRIVER_RNG_ENABLE},1) 143c10563baSBharat GootyPLAT_BL_COMMON_SOURCES += drivers/brcm/rng.c 144c10563baSBharat Gootyendif 145c10563baSBharat Gooty 146bffde63dSSheetal Tigadoli# Add eMMC driver 147bffde63dSSheetal Tigadoliifeq (${DRIVER_EMMC_ENABLE},1) 148bffde63dSSheetal Tigadoli$(eval $(call add_define,DRIVER_EMMC_ENABLE)) 149bffde63dSSheetal Tigadoli 150bffde63dSSheetal TigadoliEMMC_SOURCES += drivers/brcm/emmc/emmc_chal_sd.c \ 151bffde63dSSheetal Tigadoli drivers/brcm/emmc/emmc_csl_sdcard.c \ 152bffde63dSSheetal Tigadoli drivers/brcm/emmc/emmc_csl_sdcmd.c \ 153bffde63dSSheetal Tigadoli drivers/brcm/emmc/emmc_pboot_hal_memory_drv.c 154bffde63dSSheetal Tigadoli 155bffde63dSSheetal TigadoliPLAT_BL_COMMON_SOURCES += ${EMMC_SOURCES} 156bffde63dSSheetal Tigadoli 157bffde63dSSheetal Tigadoliifeq (${DRIVER_EMMC_ENABLE_DATA_WIDTH_8BIT},) 158bffde63dSSheetal Tigadoli$(eval $(call add_define,DRIVER_EMMC_ENABLE_DATA_WIDTH_8BIT)) 159bffde63dSSheetal Tigadoliendif 160bffde63dSSheetal Tigadoliendif 161bffde63dSSheetal Tigadoli 162717448d6SSheetal TigadoliBL2_SOURCES += plat/brcm/common/brcm_bl2_mem_params_desc.c \ 163717448d6SSheetal Tigadoli plat/brcm/common/brcm_image_load.c \ 164717448d6SSheetal Tigadoli common/desc_image_load.c 165717448d6SSheetal Tigadoli 166717448d6SSheetal TigadoliBL2_SOURCES += plat/brcm/common/brcm_bl2_setup.c 167717448d6SSheetal Tigadoli 1689a40c0fbSSheetal TigadoliBL31_SOURCES += plat/brcm/common/brcm_bl31_setup.c 1699a40c0fbSSheetal Tigadoli 170f29d1e0cSSheetal Tigadoliifeq (${BCM_ELOG},yes) 171f29d1e0cSSheetal TigadoliELOG_SOURCES += plat/brcm/board/common/bcm_elog.c 172f29d1e0cSSheetal TigadoliBL2_SOURCES += ${ELOG_SOURCES} 1733942d3a8SSheetal TigadoliBL31_SOURCES += ${ELOG_SOURCES} 174f29d1e0cSSheetal Tigadoliendif 175f29d1e0cSSheetal Tigadoli 176e3ee7b7dSSheetal Tigadoli# Add spi driver 177e3ee7b7dSSheetal Tigadoliifeq (${DRIVER_SPI_ENABLE},1) 178e3ee7b7dSSheetal TigadoliPLAT_BL_COMMON_SOURCES += drivers/brcm/spi/iproc_spi.c \ 179e3ee7b7dSSheetal Tigadoli drivers/brcm/spi/iproc_qspi.c 180e3ee7b7dSSheetal Tigadoliendif 181e3ee7b7dSSheetal Tigadoli 18249dec7f7SSheetal Tigadoli# Add spi nor/flash driver 18349dec7f7SSheetal Tigadoliifeq (${DRIVER_SPI_NOR_ENABLE},1) 18449dec7f7SSheetal TigadoliPLAT_BL_COMMON_SOURCES += drivers/brcm/spi_sf.c \ 18549dec7f7SSheetal Tigadoli drivers/brcm/spi_flash.c 18649dec7f7SSheetal Tigadoliendif 18749dec7f7SSheetal Tigadoli 188*48c6a6b6SBharat Gootyifeq (${DRIVER_I2C_ENABLE},1) 189*48c6a6b6SBharat Gooty$(eval $(call add_define,DRIVER_I2C_ENABLE)) 190*48c6a6b6SBharat GootyBL2_SOURCES += drivers/brcm/i2c/i2c.c 191*48c6a6b6SBharat GootyPLAT_INCLUDES += -Iinclude/drivers/brcm/i2c 192*48c6a6b6SBharat Gootyendif 193*48c6a6b6SBharat Gooty 194f29d1e0cSSheetal Tigadoliifeq (${DRIVER_OCOTP_ENABLE},1) 195f29d1e0cSSheetal Tigadoli$(eval $(call add_define,DRIVER_OCOTP_ENABLE)) 196f29d1e0cSSheetal TigadoliBL2_SOURCES += drivers/brcm/ocotp.c 197f29d1e0cSSheetal Tigadoliendif 198f29d1e0cSSheetal Tigadoli 199f29d1e0cSSheetal Tigadoli# Enable FRU table support 200f29d1e0cSSheetal Tigadoliifeq (${USE_FRU},yes) 201f29d1e0cSSheetal Tigadoli$(eval $(call add_define,USE_FRU)) 202f29d1e0cSSheetal TigadoliBL2_SOURCES += drivers/brcm/fru.c 203f29d1e0cSSheetal Tigadoliendif 204f29d1e0cSSheetal Tigadoli 205f29d1e0cSSheetal Tigadoli# Enable GPIO support 206f29d1e0cSSheetal Tigadoliifeq (${USE_GPIO},yes) 207f29d1e0cSSheetal Tigadoli$(eval $(call add_define,USE_GPIO)) 208f29d1e0cSSheetal TigadoliBL2_SOURCES += drivers/gpio/gpio.c 209f29d1e0cSSheetal TigadoliBL2_SOURCES += drivers/brcm/iproc_gpio.c 210f29d1e0cSSheetal Tigadoliifeq (${GPIO_SUPPORT_FLOAT_DETECTION},yes) 211f29d1e0cSSheetal Tigadoli$(eval $(call add_define,GPIO_SUPPORT_FLOAT_DETECTION)) 212f29d1e0cSSheetal Tigadoliendif 213f29d1e0cSSheetal Tigadoliendif 214f29d1e0cSSheetal Tigadoli 215f29d1e0cSSheetal Tigadoli# Include mbedtls if it can be located 216f29d1e0cSSheetal TigadoliMBEDTLS_DIR := mbedtls 217f29d1e0cSSheetal TigadoliMBEDTLS_CHECK := $(shell find ${MBEDTLS_DIR}/include -name '${MBEDTLS_DIR}') 218f29d1e0cSSheetal Tigadoli 219f29d1e0cSSheetal Tigadoliifneq (${MBEDTLS_CHECK},) 220f29d1e0cSSheetal Tigadoli$(info Found mbedTLS at ${MBEDTLS_DIR}) 221f29d1e0cSSheetal TigadoliPLAT_INCLUDES += -I${MBEDTLS_DIR}/include/mbedtls 222f29d1e0cSSheetal Tigadoli# Specify mbedTLS configuration file 223f29d1e0cSSheetal TigadoliMBEDTLS_CONFIG_FILE := "<brcm_mbedtls_config.h>" 224f29d1e0cSSheetal Tigadoli 225f29d1e0cSSheetal Tigadoli# By default, use RSA keys 226f29d1e0cSSheetal TigadoliKEY_ALG := rsa_1_5 227f29d1e0cSSheetal Tigadoli 228f29d1e0cSSheetal Tigadoli# Include common TBB sources 229f29d1e0cSSheetal TigadoliAUTH_SOURCES += drivers/auth/auth_mod.c \ 230f29d1e0cSSheetal Tigadoli drivers/auth/crypto_mod.c \ 231f29d1e0cSSheetal Tigadoli drivers/auth/img_parser_mod.c \ 232ad43c49eSManish V Badarkhe drivers/auth/tbbr/tbbr_cot_common.c \ 233ad43c49eSManish V Badarkhe drivers/auth/tbbr/tbbr_cot_bl2.c 234f29d1e0cSSheetal Tigadoli 235f29d1e0cSSheetal TigadoliBL2_SOURCES += ${AUTH_SOURCES} 236f29d1e0cSSheetal Tigadoli 237f29d1e0cSSheetal Tigadoli# Use ATF framework for MBEDTLS 238f29d1e0cSSheetal TigadoliTRUSTED_BOARD_BOOT := 1 239f29d1e0cSSheetal TigadoliCRYPTO_LIB_MK := drivers/auth/mbedtls/mbedtls_crypto.mk 240f29d1e0cSSheetal TigadoliIMG_PARSER_LIB_MK := drivers/auth/mbedtls/mbedtls_x509.mk 241f29d1e0cSSheetal Tigadoli$(info Including ${CRYPTO_LIB_MK}) 242f29d1e0cSSheetal Tigadoliinclude ${CRYPTO_LIB_MK} 243f29d1e0cSSheetal Tigadoli$(info Including ${IMG_PARSER_LIB_MK}) 244f29d1e0cSSheetal Tigadoliinclude ${IMG_PARSER_LIB_MK} 245f29d1e0cSSheetal Tigadoli 246f29d1e0cSSheetal Tigadoli# Use ATF secure boot functions 247f29d1e0cSSheetal Tigadoli# Use Hardcoded hash for devel 248f29d1e0cSSheetal Tigadoli 249f29d1e0cSSheetal TigadoliARM_ROTPK_LOCATION=arm_rsa 250f29d1e0cSSheetal Tigadoliifeq (${ARM_ROTPK_LOCATION}, arm_rsa) 251f29d1e0cSSheetal TigadoliARM_ROTPK_LOCATION_ID=ARM_ROTPK_DEVEL_RSA_ID 252f29d1e0cSSheetal TigadoliROT_KEY=plat/arm/board/common/rotpk/arm_rotprivk_rsa.pem 253f29d1e0cSSheetal Tigadolielse ifeq (${ARM_ROTPK_LOCATION}, brcm_rsa) 254f29d1e0cSSheetal TigadoliARM_ROTPK_LOCATION_ID=BRCM_ROTPK_SOTP_RSA_ID 255f29d1e0cSSheetal Tigadoliifeq (${ROT_KEY},) 256f29d1e0cSSheetal TigadoliROT_KEY=plat/brcm/board/common/rotpk/rsa_dauth2048_key.pem 257f29d1e0cSSheetal Tigadoliendif 258f29d1e0cSSheetal TigadoliKEY_FIND := $(shell m="${ROT_KEY}"; [ -f "$$m" ] && echo "$$m") 259f29d1e0cSSheetal Tigadoliifeq (${KEY_FIND},) 260f29d1e0cSSheetal Tigadoli$(error Error: No ${ROT_KEY} located) 261f29d1e0cSSheetal Tigadolielse 262f29d1e0cSSheetal Tigadoli$(info Using ROT_KEY: ${ROT_KEY}) 263f29d1e0cSSheetal Tigadoliendif 264f29d1e0cSSheetal Tigadolielse 265f29d1e0cSSheetal Tigadoli$(error "Unsupported ARM_ROTPK_LOCATION value") 266f29d1e0cSSheetal Tigadoliendif 267f29d1e0cSSheetal Tigadoli 268f29d1e0cSSheetal Tigadoli$(eval $(call add_define,ARM_ROTPK_LOCATION_ID)) 269f29d1e0cSSheetal TigadoliPLAT_BL_COMMON_SOURCES+=plat/brcm/board/common/board_arm_trusted_boot.c 270f29d1e0cSSheetal Tigadoliendif 271f29d1e0cSSheetal Tigadoli 2729a40c0fbSSheetal Tigadoli#M0 runtime firmware 2739a40c0fbSSheetal Tigadoliifdef SCP_BL2 2749a40c0fbSSheetal Tigadoli$(eval $(call add_define,NEED_SCP_BL2)) 2759a40c0fbSSheetal TigadoliSCP_CFG_DIR=$(dir ${SCP_BL2}) 2769a40c0fbSSheetal TigadoliPLAT_INCLUDES += -I${SCP_CFG_DIR} 2779a40c0fbSSheetal Tigadoliendif 2789a40c0fbSSheetal Tigadoli 2799a40c0fbSSheetal Tigadoliifneq (${NEED_BL33},yes) 2809a40c0fbSSheetal Tigadoli# If there is no BL33, BL31 will jump to this address. 2819a40c0fbSSheetal Tigadoliifeq (${USE_DDR},yes) 2829a40c0fbSSheetal TigadoliPRELOADED_BL33_BASE := 0x80000000 2839a40c0fbSSheetal Tigadolielse 2849a40c0fbSSheetal TigadoliPRELOADED_BL33_BASE := 0x74000000 2859a40c0fbSSheetal Tigadoliendif 2869a40c0fbSSheetal Tigadoliendif 2879a40c0fbSSheetal Tigadoli 288717448d6SSheetal Tigadoli# Use translation tables library v1 by default 289717448d6SSheetal TigadoliARM_XLAT_TABLES_LIB_V1 := 1 290717448d6SSheetal Tigadoliifeq (${ARM_XLAT_TABLES_LIB_V1}, 1) 291717448d6SSheetal Tigadoli$(eval $(call assert_boolean,ARM_XLAT_TABLES_LIB_V1)) 292717448d6SSheetal Tigadoli$(eval $(call add_define,ARM_XLAT_TABLES_LIB_V1)) 293717448d6SSheetal TigadoliPLAT_BL_COMMON_SOURCES += lib/xlat_tables/aarch64/xlat_tables.c \ 294717448d6SSheetal Tigadoli lib/xlat_tables/xlat_tables_common.c 295717448d6SSheetal Tigadoliendif 296