xref: /rk3399_ARM-atf/plat/brcm/board/common/board_common.mk (revision f29d1e0c72e6665ba4c8ab11bad83f59669ea0d9)
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