| # |
| # Copyright (c) 2019-2020, Broadcom |
| # |
| # SPDX-License-Identifier: BSD-3-Clause |
| # |
| |
| # Set the toc_flags to 1 for 100% speed operation |
| # Set the toc_flags to 2 for 50% speed operation |
| # Set the toc_flags to 3 for 25% speed operation |
| # Set the toc_flags bit 3 to indicate ignore the fip in UEFI copy mode |
| PLAT_TOC_FLAGS := 0x0 |
| |
| # Set the IHOST_PLL_FREQ to, |
| # 1 for full speed |
| # 2 for 50% speed |
| # 3 for 25% speed |
| # 0 for bypass |
| $(eval $(call add_define_val,IHOST_PLL_FREQ,1)) |
| |
| # Enable workaround for ERRATA_A72_859971 |
| ERRATA_A72_859971 := 1 |
| |
| # Cache Coherency Interconnect Driver needed |
| DRIVER_CC_ENABLE := 1 |
| $(eval $(call add_define,DRIVER_CC_ENABLE)) |
| |
| # Enable to erase eMMC |
| INCLUDE_EMMC_DRIVER_ERASE_CODE := 0 |
| |
| ifeq (${INCLUDE_EMMC_DRIVER_ERASE_CODE},1) |
| $(eval $(call add_define,INCLUDE_EMMC_DRIVER_ERASE_CODE)) |
| endif |
| |
| # BL31 is in DRAM |
| ARM_BL31_IN_DRAM := 1 |
| |
| ifneq (${USE_EMULATOR},yes) |
| STINGRAY_EMULATION_SETUP := 0 |
| ifeq (${FASTBOOT_TYPE},) |
| override FASTBOOT_TYPE := 0 |
| endif |
| USE_PAXB := yes |
| USE_PAXC := yes |
| USE_CHIMP := yes |
| endif |
| |
| USE_CRMU_SRAM := yes |
| |
| # Disable FS4 clocks - they can be reenabled when needed by linux |
| FS4_DISABLE_CLOCK := yes |
| |
| # Enable error logging by default for Stingray |
| BCM_ELOG := yes |
| |
| # Enable FRU support by default for Stingray |
| ifeq (${USE_FRU},) |
| USE_FRU := no |
| endif |
| |
| # Use single cluster |
| ifeq (${USE_SINGLE_CLUSTER},yes) |
| $(info Using Single Cluster) |
| $(eval $(call add_define,USE_SINGLE_CLUSTER)) |
| endif |
| |
| # Use DDR |
| ifeq (${USE_DDR},yes) |
| $(info Using DDR) |
| $(eval $(call add_define,USE_DDR)) |
| endif |
| |
| ifeq (${BOARD_CFG},) |
| BOARD_CFG := bcm958742k |
| endif |
| |
| # Use PAXB |
| ifeq (${USE_PAXB},yes) |
| $(info Using PAXB) |
| $(eval $(call add_define,USE_PAXB)) |
| endif |
| |
| # Use FS4 |
| ifeq (${USE_FS4},yes) |
| $(info Using FS4) |
| $(eval $(call add_define,USE_FS4)) |
| endif |
| |
| # Use FS6 |
| ifeq (${USE_FS6},yes) |
| $(info Using FS6) |
| $(eval $(call add_define,USE_FS6)) |
| endif |
| |
| # Disable FS4 clock |
| ifeq (${FS4_DISABLE_CLOCK},yes) |
| $(info Using FS4_DISABLE_CLOCK) |
| $(eval $(call add_define,FS4_DISABLE_CLOCK)) |
| endif |
| |
| ifneq (${NCSI_IO_DRIVE_STRENGTH_MA},) |
| $(info Using NCSI_IO_DRIVE_STRENGTH_MA) |
| $(eval $(call add_define,NCSI_IO_DRIVE_STRENGTH_MA)) |
| endif |
| |
| # Use NAND |
| ifeq (${USE_NAND},$(filter yes, ${USE_NAND})) |
| $(info Using NAND) |
| $(eval $(call add_define,USE_NAND)) |
| endif |
| |
| # Enable Broadcom error logging support |
| ifeq (${BCM_ELOG},yes) |
| $(info Using BCM_ELOG) |
| $(eval $(call add_define,BCM_ELOG)) |
| endif |
| |
| # BL31 build for standalone mode |
| ifeq (${STANDALONE_BL31},yes) |
| RESET_TO_BL31 := 1 |
| $(info Using RESET_TO_BL31) |
| endif |
| |
| # BL31 force full frequency for all CPUs |
| ifeq (${BL31_FORCE_CPU_FULL_FREQ},yes) |
| $(info Using BL31_FORCE_CPU_FULL_FREQ) |
| $(eval $(call add_define,BL31_FORCE_CPU_FULL_FREQ)) |
| endif |
| |
| # Enable non-secure accesses to CCN registers |
| ifeq (${BL31_CCN_NONSECURE},yes) |
| $(info Using BL31_CCN_NONSECURE) |
| $(eval $(call add_define,BL31_CCN_NONSECURE)) |
| endif |
| |
| # Use ChiMP |
| ifeq (${USE_CHIMP},yes) |
| $(info Using ChiMP) |
| $(eval $(call add_define,USE_CHIMP)) |
| endif |
| |
| # Use PAXC |
| ifeq (${USE_PAXC},yes) |
| $(info Using PAXC) |
| $(eval $(call add_define,USE_PAXC)) |
| ifeq (${CHIMPFW_USE_SIDELOAD},yes) |
| $(info Using ChiMP FW sideload) |
| $(eval $(call add_define,CHIMPFW_USE_SIDELOAD)) |
| endif |
| $(eval $(call add_define,FASTBOOT_TYPE)) |
| $(eval $(call add_define,CHIMP_FB1_ENTRY)) |
| endif |
| |
| ifeq (${DEFAULT_SWREG_CONFIG}, 1) |
| $(eval $(call add_define,DEFAULT_SWREG_CONFIG)) |
| endif |
| |
| ifeq (${CHIMP_ALWAYS_NEEDS_QSPI},yes) |
| $(eval $(call add_define,CHIMP_ALWAYS_NEEDS_QSPI)) |
| endif |
| |
| # For testing purposes, use memsys stubs. Remove once memsys is fully tested. |
| USE_MEMSYS_STUBS := yes |
| |
| # Default, use BL1_RW area |
| ifneq (${BL2_USE_BL1_RW},no) |
| $(eval $(call add_define,USE_BL1_RW)) |
| endif |
| |
| # Default soft reset is L3 |
| $(eval $(call add_define,CONFIG_SOFT_RESET_L3)) |
| |
| # Enable Chip OTP driver |
| DRIVER_OCOTP_ENABLE := 1 |
| |
| ifneq (${WARMBOOT_DDR_S3_SUPPORT},) |
| DRIVER_SPI_ENABLE := 1 |
| endif |
| |
| include plat/brcm/board/common/board_common.mk |
| |
| SOC_DIR := brcm/board/stingray |
| |
| PLAT_INCLUDES += -Iplat/${SOC_DIR}/include/ \ |
| -Iinclude/plat/brcm/common/ \ |
| -Iplat/brcm/common/ |
| |
| PLAT_BL_COMMON_SOURCES += lib/cpus/aarch64/cortex_a72.S \ |
| plat/${SOC_DIR}/aarch64/plat_helpers.S \ |
| drivers/ti/uart/aarch64/16550_console.S \ |
| plat/${SOC_DIR}/src/tz_sec.c \ |
| drivers/arm/tzc/tzc400.c \ |
| plat/${SOC_DIR}/driver/plat_emmc.c \ |
| plat/${SOC_DIR}/src/topology.c |
| |
| ifeq (${USE_CHIMP},yes) |
| PLAT_BL_COMMON_SOURCES += drivers/brcm/chimp.c |
| endif |
| |
| BL2_SOURCES += plat/${SOC_DIR}/driver/ihost_pll_config.c \ |
| plat/${SOC_DIR}/src/bl2_setup.c \ |
| plat/${SOC_DIR}/driver/swreg.c |
| |
| |
| ifeq (${USE_DDR},yes) |
| PLAT_INCLUDES += -Iplat/${SOC_DIR}/driver/ddr/soc/include |
| else |
| PLAT_INCLUDES += -Iplat/${SOC_DIR}/driver/ext_sram_init |
| BL2_SOURCES += plat/${SOC_DIR}/driver/ext_sram_init/ext_sram_init.c |
| endif |
| |
| # Include GICv3 driver files |
| include drivers/arm/gic/v3/gicv3.mk |
| |
| BRCM_GIC_SOURCES := ${GICV3_SOURCES} \ |
| plat/common/plat_gicv3.c \ |
| plat/brcm/common/brcm_gicv3.c |
| |
| BL31_SOURCES += \ |
| drivers/arm/ccn/ccn.c \ |
| plat/brcm/board/common/timer_sync.c \ |
| plat/brcm/common/brcm_ccn.c \ |
| plat/common/plat_psci_common.c \ |
| plat/${SOC_DIR}/driver/ihost_pll_config.c \ |
| plat/${SOC_DIR}/src/bl31_setup.c \ |
| plat/${SOC_DIR}/src/fsx.c \ |
| plat/${SOC_DIR}/src/iommu.c \ |
| plat/${SOC_DIR}/src/sdio.c \ |
| ${BRCM_GIC_SOURCES} |
| |
| ifneq (${NCSI_IO_DRIVE_STRENGTH_MA},) |
| BL31_SOURCES += plat/${SOC_DIR}/src/ncsi.c |
| endif |
| |
| ifeq (${USE_PAXB},yes) |
| BL31_SOURCES += plat/${SOC_DIR}/src/paxb.c |
| BL31_SOURCES += plat/${SOC_DIR}/src/sr_paxb_phy.c |
| endif |
| |
| ifeq (${USE_PAXC},yes) |
| BL31_SOURCES += plat/${SOC_DIR}/src/paxc.c |
| endif |
| |
| ifdef SCP_BL2 |
| PLAT_INCLUDES += -Iplat/brcm/common/ |
| |
| BL2_SOURCES += plat/brcm/common/brcm_mhu.c \ |
| plat/brcm/common/brcm_scpi.c \ |
| plat/${SOC_DIR}/src/scp_utils.c \ |
| plat/${SOC_DIR}/src/scp_cmd.c \ |
| drivers/brcm/scp.c |
| |
| BL31_SOURCES += plat/brcm/common/brcm_mhu.c \ |
| plat/brcm/common/brcm_scpi.c \ |
| plat/${SOC_DIR}/src/brcm_pm_ops.c |
| else |
| BL31_SOURCES += plat/${SOC_DIR}/src/ihost_pm.c \ |
| plat/${SOC_DIR}/src/pm.c |
| endif |
| |
| ifeq (${ELOG_SUPPORT},1) |
| ifeq (${ELOG_STORE_MEDIA},DDR) |
| BL2_SOURCES += plat/brcm/board/common/bcm_elog_ddr.c |
| endif |
| endif |
| |
| ifeq (${BL31_BOOT_PRELOADED_SCP}, 1) |
| ifdef SCP_BL2 |
| SCP_CFG_DIR=$(dir ${SCP_BL2}) |
| PLAT_INCLUDES += -I${SCP_CFG_DIR} |
| endif |
| PLAT_INCLUDES += -Iplat/brcm/common/ |
| |
| # By default use OPTEE Assigned memory |
| PRELOADED_SCP_BASE ?= 0x8E000000 |
| PRELOADED_SCP_SIZE ?= 0x10000 |
| $(eval $(call add_define,PRELOADED_SCP_BASE)) |
| $(eval $(call add_define,PRELOADED_SCP_SIZE)) |
| $(eval $(call add_define,BL31_BOOT_PRELOADED_SCP)) |
| BL31_SOURCES += plat/${SOC_DIR}/src/scp_utils.c \ |
| plat/${SOC_DIR}/src/scp_cmd.c \ |
| drivers/brcm/scp.c |
| endif |
| |
| # Do not execute the startup code on warm reset. |
| PROGRAMMABLE_RESET_ADDRESS := 1 |
| |
| # Nitro FW, config and Crash log uses secure DDR memory |
| # Inaddition to above, Nitro master and slave is also secure |
| ifneq ($(NITRO_SECURE_ACCESS),) |
| $(eval $(call add_define,NITRO_SECURE_ACCESS)) |
| $(eval $(call add_define,DDR_NITRO_SECURE_REGION_START)) |
| $(eval $(call add_define,DDR_NITRO_SECURE_REGION_END)) |
| endif |