xref: /arm-trusted-firmware/plat/brcm/board/stingray/platform.mk (revision 91f16700b400a8c0651d24a598fc48ee2997a0d7)
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