1*91f16700Schasinglulu# 2*91f16700Schasinglulu# Copyright (c) 2019-2021, Broadcom 3*91f16700Schasinglulu# 4*91f16700Schasinglulu# SPDX-License-Identifier: BSD-3-Clause 5*91f16700Schasinglulu# 6*91f16700Schasinglulu 7*91f16700Schasinglulu# Set the toc_flags to 1 for 100% speed operation 8*91f16700Schasinglulu# Set the toc_flags to 2 for 50% speed operation 9*91f16700Schasinglulu# Set the toc_flags to 3 for 25% speed operation 10*91f16700Schasinglulu# Set the toc_flags bit 3 to indicate ignore the fip in UEFI copy mode 11*91f16700SchasingluluPLAT_TOC_FLAGS := 0x0 12*91f16700Schasinglulu 13*91f16700Schasinglulu# Set the IHOST_PLL_FREQ to, 14*91f16700Schasinglulu# 1 for full speed 15*91f16700Schasinglulu# 2 for 50% speed 16*91f16700Schasinglulu# 3 for 25% speed 17*91f16700Schasinglulu# 0 for bypass 18*91f16700Schasinglulu$(eval $(call add_define_val,IHOST_PLL_FREQ,1)) 19*91f16700Schasinglulu 20*91f16700Schasinglulu# Enable workaround for ERRATA_A72_859971 21*91f16700SchasingluluERRATA_A72_859971 := 1 22*91f16700Schasinglulu 23*91f16700Schasinglulu# Cache Coherency Interconnect Driver needed 24*91f16700SchasingluluDRIVER_CC_ENABLE := 1 25*91f16700Schasinglulu$(eval $(call add_define,DRIVER_CC_ENABLE)) 26*91f16700Schasinglulu 27*91f16700Schasinglulu# Enable to erase eMMC 28*91f16700SchasingluluINCLUDE_EMMC_DRIVER_ERASE_CODE := 0 29*91f16700Schasinglulu 30*91f16700Schasingluluifeq (${INCLUDE_EMMC_DRIVER_ERASE_CODE},1) 31*91f16700Schasinglulu$(eval $(call add_define,INCLUDE_EMMC_DRIVER_ERASE_CODE)) 32*91f16700Schasingluluendif 33*91f16700Schasinglulu 34*91f16700Schasinglulu# BL31 is in DRAM 35*91f16700SchasingluluARM_BL31_IN_DRAM := 1 36*91f16700Schasinglulu 37*91f16700Schasingluluifneq (${USE_EMULATOR},yes) 38*91f16700SchasingluluSTINGRAY_EMULATION_SETUP := 0 39*91f16700Schasingluluifeq (${FASTBOOT_TYPE},) 40*91f16700Schasingluluoverride FASTBOOT_TYPE := 0 41*91f16700Schasingluluendif 42*91f16700SchasingluluUSE_PAXB := yes 43*91f16700SchasingluluUSE_PAXC := yes 44*91f16700SchasingluluUSE_CHIMP := yes 45*91f16700Schasingluluendif 46*91f16700Schasinglulu 47*91f16700SchasingluluUSE_CRMU_SRAM := yes 48*91f16700Schasinglulu 49*91f16700Schasinglulu# Disable FS4 clocks - they can be reenabled when needed by linux 50*91f16700SchasingluluFS4_DISABLE_CLOCK := yes 51*91f16700Schasinglulu 52*91f16700Schasinglulu# Enable error logging by default for Stingray 53*91f16700SchasingluluBCM_ELOG := yes 54*91f16700Schasinglulu 55*91f16700Schasinglulu# Enable FRU support by default for Stingray 56*91f16700Schasingluluifeq (${USE_FRU},) 57*91f16700SchasingluluUSE_FRU := no 58*91f16700Schasingluluendif 59*91f16700Schasinglulu 60*91f16700Schasinglulu# Use single cluster 61*91f16700Schasingluluifeq (${USE_SINGLE_CLUSTER},yes) 62*91f16700Schasinglulu$(info Using Single Cluster) 63*91f16700Schasinglulu$(eval $(call add_define,USE_SINGLE_CLUSTER)) 64*91f16700Schasingluluendif 65*91f16700Schasinglulu 66*91f16700Schasinglulu# Use DDR 67*91f16700Schasingluluifeq (${USE_DDR},yes) 68*91f16700Schasinglulu$(info Using DDR) 69*91f16700Schasinglulu$(eval $(call add_define,USE_DDR)) 70*91f16700Schasingluluendif 71*91f16700Schasinglulu 72*91f16700Schasingluluifeq (${BOARD_CFG},) 73*91f16700SchasingluluBOARD_CFG := bcm958742t 74*91f16700Schasingluluendif 75*91f16700Schasinglulu 76*91f16700Schasinglulu# Use USB 77*91f16700Schasingluluifeq (${USE_USB},yes) 78*91f16700Schasinglulu$(info Using USB) 79*91f16700Schasinglulu$(eval $(call add_define,USE_USB)) 80*91f16700Schasingluluendif 81*91f16700Schasinglulu 82*91f16700Schasinglulu# Use PAXB 83*91f16700Schasingluluifeq (${USE_PAXB},yes) 84*91f16700Schasinglulu$(info Using PAXB) 85*91f16700Schasinglulu$(eval $(call add_define,USE_PAXB)) 86*91f16700Schasingluluendif 87*91f16700Schasinglulu 88*91f16700Schasinglulu# Use FS4 89*91f16700Schasingluluifeq (${USE_FS4},yes) 90*91f16700Schasinglulu$(info Using FS4) 91*91f16700Schasinglulu$(eval $(call add_define,USE_FS4)) 92*91f16700Schasingluluendif 93*91f16700Schasinglulu 94*91f16700Schasinglulu# Use FS6 95*91f16700Schasingluluifeq (${USE_FS6},yes) 96*91f16700Schasinglulu$(info Using FS6) 97*91f16700Schasinglulu$(eval $(call add_define,USE_FS6)) 98*91f16700Schasingluluendif 99*91f16700Schasinglulu 100*91f16700Schasinglulu# Disable FS4 clock 101*91f16700Schasingluluifeq (${FS4_DISABLE_CLOCK},yes) 102*91f16700Schasinglulu$(info Using FS4_DISABLE_CLOCK) 103*91f16700Schasinglulu$(eval $(call add_define,FS4_DISABLE_CLOCK)) 104*91f16700Schasingluluendif 105*91f16700Schasinglulu 106*91f16700Schasingluluifneq (${NCSI_IO_DRIVE_STRENGTH_MA},) 107*91f16700Schasinglulu$(info Using NCSI_IO_DRIVE_STRENGTH_MA) 108*91f16700Schasinglulu$(eval $(call add_define,NCSI_IO_DRIVE_STRENGTH_MA)) 109*91f16700Schasingluluendif 110*91f16700Schasinglulu 111*91f16700Schasinglulu# Use NAND 112*91f16700Schasingluluifeq (${USE_NAND},$(filter yes, ${USE_NAND})) 113*91f16700Schasinglulu$(info Using NAND) 114*91f16700Schasinglulu$(eval $(call add_define,USE_NAND)) 115*91f16700Schasingluluendif 116*91f16700Schasinglulu 117*91f16700Schasinglulu# Enable Broadcom error logging support 118*91f16700Schasingluluifeq (${BCM_ELOG},yes) 119*91f16700Schasinglulu$(info Using BCM_ELOG) 120*91f16700Schasinglulu$(eval $(call add_define,BCM_ELOG)) 121*91f16700Schasingluluendif 122*91f16700Schasinglulu 123*91f16700Schasinglulu# BL31 build for standalone mode 124*91f16700Schasingluluifeq (${STANDALONE_BL31},yes) 125*91f16700SchasingluluRESET_TO_BL31 := 1 126*91f16700Schasinglulu$(info Using RESET_TO_BL31) 127*91f16700Schasingluluendif 128*91f16700Schasinglulu 129*91f16700Schasinglulu# BL31 force full frequency for all CPUs 130*91f16700Schasingluluifeq (${BL31_FORCE_CPU_FULL_FREQ},yes) 131*91f16700Schasinglulu$(info Using BL31_FORCE_CPU_FULL_FREQ) 132*91f16700Schasinglulu$(eval $(call add_define,BL31_FORCE_CPU_FULL_FREQ)) 133*91f16700Schasingluluendif 134*91f16700Schasinglulu 135*91f16700Schasinglulu# Enable non-secure accesses to CCN registers 136*91f16700Schasingluluifeq (${BL31_CCN_NONSECURE},yes) 137*91f16700Schasinglulu$(info Using BL31_CCN_NONSECURE) 138*91f16700Schasinglulu$(eval $(call add_define,BL31_CCN_NONSECURE)) 139*91f16700Schasingluluendif 140*91f16700Schasinglulu 141*91f16700Schasinglulu# Use ChiMP 142*91f16700Schasingluluifeq (${USE_CHIMP},yes) 143*91f16700Schasinglulu$(info Using ChiMP) 144*91f16700Schasinglulu$(eval $(call add_define,USE_CHIMP)) 145*91f16700Schasingluluendif 146*91f16700Schasinglulu 147*91f16700Schasinglulu# Use PAXC 148*91f16700Schasingluluifeq (${USE_PAXC},yes) 149*91f16700Schasinglulu$(info Using PAXC) 150*91f16700Schasinglulu$(eval $(call add_define,USE_PAXC)) 151*91f16700Schasingluluifeq (${CHIMPFW_USE_SIDELOAD},yes) 152*91f16700Schasinglulu$(info Using ChiMP FW sideload) 153*91f16700Schasinglulu$(eval $(call add_define,CHIMPFW_USE_SIDELOAD)) 154*91f16700Schasingluluendif 155*91f16700Schasinglulu$(eval $(call add_define,FASTBOOT_TYPE)) 156*91f16700Schasinglulu$(eval $(call add_define,CHIMP_FB1_ENTRY)) 157*91f16700Schasingluluendif 158*91f16700Schasinglulu 159*91f16700Schasingluluifeq (${DEFAULT_SWREG_CONFIG}, 1) 160*91f16700Schasinglulu$(eval $(call add_define,DEFAULT_SWREG_CONFIG)) 161*91f16700Schasingluluendif 162*91f16700Schasinglulu 163*91f16700Schasingluluifeq (${CHIMP_ALWAYS_NEEDS_QSPI},yes) 164*91f16700Schasinglulu$(eval $(call add_define,CHIMP_ALWAYS_NEEDS_QSPI)) 165*91f16700Schasingluluendif 166*91f16700Schasinglulu 167*91f16700Schasinglulu# For testing purposes, use memsys stubs. Remove once memsys is fully tested. 168*91f16700SchasingluluUSE_MEMSYS_STUBS := yes 169*91f16700Schasinglulu 170*91f16700Schasinglulu# Default, use BL1_RW area 171*91f16700Schasingluluifneq (${BL2_USE_BL1_RW},no) 172*91f16700Schasinglulu$(eval $(call add_define,USE_BL1_RW)) 173*91f16700Schasingluluendif 174*91f16700Schasinglulu 175*91f16700Schasinglulu# Default soft reset is L3 176*91f16700Schasinglulu$(eval $(call add_define,CONFIG_SOFT_RESET_L3)) 177*91f16700Schasinglulu 178*91f16700Schasinglulu# Enable Chip OTP driver 179*91f16700SchasingluluDRIVER_OCOTP_ENABLE := 1 180*91f16700Schasinglulu 181*91f16700Schasingluluifneq (${WARMBOOT_DDR_S3_SUPPORT},) 182*91f16700SchasingluluDRIVER_SPI_ENABLE := 1 183*91f16700Schasingluluendif 184*91f16700Schasinglulu 185*91f16700Schasingluluinclude plat/brcm/board/common/board_common.mk 186*91f16700Schasinglulu 187*91f16700SchasingluluSOC_DIR := brcm/board/stingray 188*91f16700Schasinglulu 189*91f16700SchasingluluPLAT_INCLUDES += -Iplat/${SOC_DIR}/include/ \ 190*91f16700Schasinglulu -Iinclude/plat/brcm/common/ \ 191*91f16700Schasinglulu -Iplat/brcm/common/ 192*91f16700Schasinglulu 193*91f16700SchasingluluPLAT_BL_COMMON_SOURCES += lib/cpus/aarch64/cortex_a72.S \ 194*91f16700Schasinglulu plat/${SOC_DIR}/aarch64/plat_helpers.S \ 195*91f16700Schasinglulu drivers/ti/uart/aarch64/16550_console.S \ 196*91f16700Schasinglulu plat/${SOC_DIR}/src/tz_sec.c \ 197*91f16700Schasinglulu drivers/arm/tzc/tzc400.c \ 198*91f16700Schasinglulu plat/${SOC_DIR}/driver/plat_emmc.c \ 199*91f16700Schasinglulu plat/${SOC_DIR}/src/topology.c \ 200*91f16700Schasinglulu drivers/brcm/mdio/mdio.c 201*91f16700Schasinglulu 202*91f16700Schasingluluifeq (${USE_CHIMP},yes) 203*91f16700SchasingluluPLAT_BL_COMMON_SOURCES += drivers/brcm/chimp.c 204*91f16700Schasingluluendif 205*91f16700Schasinglulu 206*91f16700Schasingluluifeq (${USE_USB},yes) 207*91f16700SchasingluluPLAT_BL_COMMON_SOURCES += plat/${SOC_DIR}/driver/usb.c \ 208*91f16700Schasinglulu plat/${SOC_DIR}/driver/usb_phy.c 209*91f16700Schasingluluendif 210*91f16700Schasinglulu 211*91f16700SchasingluluBL2_SOURCES += plat/${SOC_DIR}/driver/ihost_pll_config.c \ 212*91f16700Schasinglulu plat/${SOC_DIR}/src/bl2_setup.c \ 213*91f16700Schasinglulu plat/${SOC_DIR}/driver/swreg.c \ 214*91f16700Schasinglulu lib/cpus/aarch64/cpu_helpers.S 215*91f16700Schasinglulu 216*91f16700Schasingluluifeq (${USE_DDR},yes) 217*91f16700SchasingluluPLAT_INCLUDES += -Iplat/${SOC_DIR}/driver/ddr/soc/include 218*91f16700Schasingluluelse 219*91f16700SchasingluluPLAT_INCLUDES += -Iplat/${SOC_DIR}/driver/ext_sram_init 220*91f16700SchasingluluBL2_SOURCES += plat/${SOC_DIR}/driver/ext_sram_init/ext_sram_init.c 221*91f16700Schasingluluendif 222*91f16700Schasinglulu 223*91f16700Schasinglulu# Include GICv3 driver files 224*91f16700Schasingluluinclude drivers/arm/gic/v3/gicv3.mk 225*91f16700Schasinglulu 226*91f16700SchasingluluBRCM_GIC_SOURCES := ${GICV3_SOURCES} \ 227*91f16700Schasinglulu plat/common/plat_gicv3.c \ 228*91f16700Schasinglulu plat/brcm/common/brcm_gicv3.c 229*91f16700Schasinglulu 230*91f16700SchasingluluBL31_SOURCES += \ 231*91f16700Schasinglulu drivers/arm/ccn/ccn.c \ 232*91f16700Schasinglulu plat/brcm/board/common/timer_sync.c \ 233*91f16700Schasinglulu plat/brcm/common/brcm_ccn.c \ 234*91f16700Schasinglulu plat/common/plat_psci_common.c \ 235*91f16700Schasinglulu plat/${SOC_DIR}/driver/ihost_pll_config.c \ 236*91f16700Schasinglulu plat/${SOC_DIR}/src/bl31_setup.c \ 237*91f16700Schasinglulu plat/${SOC_DIR}/src/fsx.c \ 238*91f16700Schasinglulu plat/${SOC_DIR}/src/iommu.c \ 239*91f16700Schasinglulu plat/${SOC_DIR}/src/sdio.c \ 240*91f16700Schasinglulu ${BRCM_GIC_SOURCES} 241*91f16700Schasinglulu 242*91f16700Schasingluluifneq (${NCSI_IO_DRIVE_STRENGTH_MA},) 243*91f16700SchasingluluBL31_SOURCES += plat/${SOC_DIR}/src/ncsi.c 244*91f16700Schasingluluendif 245*91f16700Schasinglulu 246*91f16700Schasingluluifeq (${USE_PAXB},yes) 247*91f16700SchasingluluBL31_SOURCES += plat/${SOC_DIR}/src/paxb.c 248*91f16700SchasingluluBL31_SOURCES += plat/${SOC_DIR}/src/sr_paxb_phy.c 249*91f16700Schasingluluendif 250*91f16700Schasinglulu 251*91f16700Schasingluluifeq (${USE_PAXC},yes) 252*91f16700SchasingluluBL31_SOURCES += plat/${SOC_DIR}/src/paxc.c 253*91f16700Schasingluluendif 254*91f16700Schasinglulu 255*91f16700Schasingluluifdef SCP_BL2 256*91f16700SchasingluluPLAT_INCLUDES += -Iplat/brcm/common/ 257*91f16700Schasinglulu 258*91f16700SchasingluluBL2_SOURCES += plat/brcm/common/brcm_mhu.c \ 259*91f16700Schasinglulu plat/brcm/common/brcm_scpi.c \ 260*91f16700Schasinglulu plat/${SOC_DIR}/src/scp_utils.c \ 261*91f16700Schasinglulu plat/${SOC_DIR}/src/scp_cmd.c \ 262*91f16700Schasinglulu drivers/brcm/scp.c 263*91f16700Schasinglulu 264*91f16700SchasingluluBL31_SOURCES += plat/brcm/common/brcm_mhu.c \ 265*91f16700Schasinglulu plat/brcm/common/brcm_scpi.c \ 266*91f16700Schasinglulu plat/${SOC_DIR}/src/brcm_pm_ops.c 267*91f16700Schasingluluelse 268*91f16700SchasingluluBL31_SOURCES += plat/${SOC_DIR}/src/ihost_pm.c \ 269*91f16700Schasinglulu plat/${SOC_DIR}/src/pm.c 270*91f16700Schasingluluendif 271*91f16700Schasinglulu 272*91f16700Schasingluluifeq (${ELOG_SUPPORT},1) 273*91f16700Schasingluluifeq (${ELOG_STORE_MEDIA},DDR) 274*91f16700SchasingluluBL2_SOURCES += plat/brcm/board/common/bcm_elog_ddr.c 275*91f16700Schasingluluendif 276*91f16700Schasingluluendif 277*91f16700Schasinglulu 278*91f16700Schasingluluifeq (${BL31_BOOT_PRELOADED_SCP}, 1) 279*91f16700Schasingluluifdef SCP_BL2 280*91f16700SchasingluluSCP_CFG_DIR=$(dir ${SCP_BL2}) 281*91f16700SchasingluluPLAT_INCLUDES += -I${SCP_CFG_DIR} 282*91f16700Schasingluluendif 283*91f16700SchasingluluPLAT_INCLUDES += -Iplat/brcm/common/ 284*91f16700Schasinglulu 285*91f16700Schasinglulu# By default use OPTEE Assigned memory 286*91f16700SchasingluluPRELOADED_SCP_BASE ?= 0x8E000000 287*91f16700SchasingluluPRELOADED_SCP_SIZE ?= 0x10000 288*91f16700Schasinglulu$(eval $(call add_define,PRELOADED_SCP_BASE)) 289*91f16700Schasinglulu$(eval $(call add_define,PRELOADED_SCP_SIZE)) 290*91f16700Schasinglulu$(eval $(call add_define,BL31_BOOT_PRELOADED_SCP)) 291*91f16700SchasingluluBL31_SOURCES += plat/${SOC_DIR}/src/scp_utils.c \ 292*91f16700Schasinglulu plat/${SOC_DIR}/src/scp_cmd.c \ 293*91f16700Schasinglulu drivers/brcm/scp.c 294*91f16700Schasingluluendif 295*91f16700Schasinglulu 296*91f16700Schasinglulu# Do not execute the startup code on warm reset. 297*91f16700SchasingluluPROGRAMMABLE_RESET_ADDRESS := 1 298*91f16700Schasinglulu 299*91f16700Schasinglulu# Nitro FW, config and Crash log uses secure DDR memory 300*91f16700Schasinglulu# Inaddition to above, Nitro master and slave is also secure 301*91f16700Schasingluluifneq ($(NITRO_SECURE_ACCESS),) 302*91f16700Schasinglulu$(eval $(call add_define,NITRO_SECURE_ACCESS)) 303*91f16700Schasinglulu$(eval $(call add_define,DDR_NITRO_SECURE_REGION_START)) 304*91f16700Schasinglulu$(eval $(call add_define,DDR_NITRO_SECURE_REGION_END)) 305*91f16700Schasingluluendif 306