xref: /rk3399_ARM-atf/plat/brcm/board/common/board_common.mk (revision c10563ba421b0a7ea085b3137b0dd1c7f1de89e6)
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
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
39f29d1e0cSSheetal Tigadoli# By default, Trusted Watchdog is always enabled unless SPIN_ON_BL1_EXIT is set
40f29d1e0cSSheetal Tigadoliifeq (${BRCM_DISABLE_TRUSTED_WDOG},)
41f29d1e0cSSheetal TigadoliBRCM_DISABLE_TRUSTED_WDOG	:=	0
42f29d1e0cSSheetal Tigadoliendif
43f29d1e0cSSheetal Tigadoliifeq (${SPIN_ON_BL1_EXIT}, 1)
44f29d1e0cSSheetal TigadoliBRCM_DISABLE_TRUSTED_WDOG	:=	1
45f29d1e0cSSheetal Tigadoliendif
46f29d1e0cSSheetal Tigadoli
47f29d1e0cSSheetal Tigadoli$(eval $(call assert_boolean,BRCM_DISABLE_TRUSTED_WDOG))
48f29d1e0cSSheetal Tigadoli$(eval $(call add_define,BRCM_DISABLE_TRUSTED_WDOG))
49f29d1e0cSSheetal Tigadoli
509a40c0fbSSheetal Tigadoli# Process ARM_BL31_IN_DRAM flag
519a40c0fbSSheetal Tigadoliifeq (${ARM_BL31_IN_DRAM},)
529a40c0fbSSheetal TigadoliARM_BL31_IN_DRAM		:=	0
539a40c0fbSSheetal Tigadoliendif
549a40c0fbSSheetal Tigadoli$(eval $(call assert_boolean,ARM_BL31_IN_DRAM))
559a40c0fbSSheetal Tigadoli$(eval $(call add_define,ARM_BL31_IN_DRAM))
569a40c0fbSSheetal Tigadoli
57717448d6SSheetal Tigadoliifeq (${STANDALONE_BL2},yes)
58f29d1e0cSSheetal TigadoliBL2_LOG_LEVEL := 40
59717448d6SSheetal Tigadoli$(eval $(call add_define,MMU_DISABLED))
60717448d6SSheetal Tigadoliendif
61717448d6SSheetal Tigadoli
62717448d6SSheetal Tigadoli# BL2 XIP from QSPI
63717448d6SSheetal TigadoliRUN_BL2_FROM_QSPI := 0
64717448d6SSheetal Tigadoliifeq (${RUN_BL2_FROM_QSPI},1)
65717448d6SSheetal Tigadoli$(eval $(call add_define,RUN_BL2_FROM_QSPI))
66717448d6SSheetal Tigadoliendif
67717448d6SSheetal Tigadoli
68f29d1e0cSSheetal Tigadoli# BL2 XIP from NAND
69f29d1e0cSSheetal TigadoliRUN_BL2_FROM_NAND := 0
70f29d1e0cSSheetal Tigadoliifeq (${RUN_BL2_FROM_NAND},1)
71f29d1e0cSSheetal Tigadoli$(eval $(call add_define,RUN_BL2_FROM_NAND))
72f29d1e0cSSheetal Tigadoliendif
73f29d1e0cSSheetal Tigadoli
74f29d1e0cSSheetal Tigadoliifneq (${ELOG_AP_UART_LOG_BASE},)
75f29d1e0cSSheetal Tigadoli$(eval $(call add_define,ELOG_AP_UART_LOG_BASE))
76f29d1e0cSSheetal Tigadoliendif
77f29d1e0cSSheetal Tigadoli
78f29d1e0cSSheetal Tigadoliifeq (${ELOG_SUPPORT},1)
79f29d1e0cSSheetal Tigadoliifeq (${ELOG_STORE_MEDIA},DDR)
80f29d1e0cSSheetal Tigadoli$(eval $(call add_define,ELOG_STORE_MEDIA_DDR))
81f29d1e0cSSheetal Tigadoliifneq (${ELOG_STORE_OFFSET},)
82f29d1e0cSSheetal Tigadoli$(eval $(call add_define,ELOG_STORE_OFFSET))
83f29d1e0cSSheetal Tigadoliendif
84f29d1e0cSSheetal Tigadoliendif
85f29d1e0cSSheetal Tigadoliendif
86f29d1e0cSSheetal Tigadoli
87f29d1e0cSSheetal Tigadoliifneq (${BL2_LOG_LEVEL},)
88f29d1e0cSSheetal Tigadoli$(eval $(call add_define,BL2_LOG_LEVEL))
89f29d1e0cSSheetal Tigadoliendif
90f29d1e0cSSheetal Tigadoli
913942d3a8SSheetal Tigadoliifneq (${BL31_LOG_LEVEL},)
923942d3a8SSheetal Tigadoli$(eval $(call add_define,BL31_LOG_LEVEL))
933942d3a8SSheetal Tigadoliendif
943942d3a8SSheetal Tigadoli
95717448d6SSheetal Tigadoli# Use CRMU SRAM from iHOST
96717448d6SSheetal Tigadoliifneq (${USE_CRMU_SRAM},)
97717448d6SSheetal Tigadoli$(eval $(call add_define,USE_CRMU_SRAM))
98717448d6SSheetal Tigadoliendif
99717448d6SSheetal Tigadoli
100bffde63dSSheetal Tigadoli# Use PIO mode if DDR is not used
101bffde63dSSheetal Tigadoliifeq (${USE_DDR},yes)
102bffde63dSSheetal TigadoliEMMC_USE_DMA	:=	1
103bffde63dSSheetal Tigadolielse
104bffde63dSSheetal TigadoliEMMC_USE_DMA	:=	0
105bffde63dSSheetal Tigadoliendif
106bffde63dSSheetal Tigadoli$(eval $(call add_define,EMMC_USE_DMA))
107bffde63dSSheetal Tigadoli
108717448d6SSheetal Tigadoli# On BRCM platforms, separate the code and read-only data sections to allow
109717448d6SSheetal Tigadoli# mapping the former as executable and the latter as execute-never.
110717448d6SSheetal TigadoliSEPARATE_CODE_AND_RODATA	:=	1
111717448d6SSheetal Tigadoli
112717448d6SSheetal Tigadoli# Use generic OID definition (tbbr_oid.h)
113717448d6SSheetal TigadoliUSE_TBBR_DEFS			:=	1
114717448d6SSheetal Tigadoli
1159a40c0fbSSheetal TigadoliPLAT_INCLUDES		+=	-Iplat/brcm/board/common \
116bffde63dSSheetal Tigadoli				-Iinclude/drivers/brcm \
117bffde63dSSheetal Tigadoli				-Iinclude/drivers/brcm/emmc
118717448d6SSheetal Tigadoli
119717448d6SSheetal TigadoliPLAT_BL_COMMON_SOURCES	+=	plat/brcm/common/brcm_common.c \
120717448d6SSheetal Tigadoli				plat/brcm/board/common/cmn_sec.c \
121717448d6SSheetal Tigadoli				plat/brcm/board/common/bcm_console.c \
122f29d1e0cSSheetal Tigadoli				plat/brcm/board/common/brcm_mbedtls.c \
123717448d6SSheetal Tigadoli				plat/brcm/board/common/plat_setup.c \
124717448d6SSheetal Tigadoli				plat/brcm/board/common/platform_common.c \
125717448d6SSheetal Tigadoli				drivers/arm/sp804/sp804_delay_timer.c \
126f29d1e0cSSheetal Tigadoli				drivers/brcm/sotp.c \
127717448d6SSheetal Tigadoli				drivers/delay_timer/delay_timer.c \
128717448d6SSheetal Tigadoli				drivers/io/io_fip.c \
129717448d6SSheetal Tigadoli				drivers/io/io_memmap.c \
130717448d6SSheetal Tigadoli				drivers/io/io_storage.c \
131717448d6SSheetal Tigadoli				plat/brcm/common/brcm_io_storage.c \
132717448d6SSheetal Tigadoli				plat/brcm/board/common/err.c \
133f29d1e0cSSheetal Tigadoli				plat/brcm/board/common/sbl_util.c \
134717448d6SSheetal Tigadoli				drivers/arm/sp805/sp805.c
135717448d6SSheetal Tigadoli
136*c10563baSBharat Gooty# Add RNG driver
137*c10563baSBharat GootyDRIVER_RNG_ENABLE := 1
138*c10563baSBharat Gootyifeq (${DRIVER_RNG_ENABLE},1)
139*c10563baSBharat GootyPLAT_BL_COMMON_SOURCES	+=	drivers/brcm/rng.c
140*c10563baSBharat Gootyendif
141*c10563baSBharat Gooty
142bffde63dSSheetal Tigadoli# Add eMMC driver
143bffde63dSSheetal Tigadoliifeq (${DRIVER_EMMC_ENABLE},1)
144bffde63dSSheetal Tigadoli$(eval $(call add_define,DRIVER_EMMC_ENABLE))
145bffde63dSSheetal Tigadoli
146bffde63dSSheetal TigadoliEMMC_SOURCES		+=	drivers/brcm/emmc/emmc_chal_sd.c \
147bffde63dSSheetal Tigadoli				drivers/brcm/emmc/emmc_csl_sdcard.c \
148bffde63dSSheetal Tigadoli				drivers/brcm/emmc/emmc_csl_sdcmd.c \
149bffde63dSSheetal Tigadoli				drivers/brcm/emmc/emmc_pboot_hal_memory_drv.c
150bffde63dSSheetal Tigadoli
151bffde63dSSheetal TigadoliPLAT_BL_COMMON_SOURCES += ${EMMC_SOURCES}
152bffde63dSSheetal Tigadoli
153bffde63dSSheetal Tigadoliifeq (${DRIVER_EMMC_ENABLE_DATA_WIDTH_8BIT},)
154bffde63dSSheetal Tigadoli$(eval $(call add_define,DRIVER_EMMC_ENABLE_DATA_WIDTH_8BIT))
155bffde63dSSheetal Tigadoliendif
156bffde63dSSheetal Tigadoliendif
157bffde63dSSheetal Tigadoli
158717448d6SSheetal TigadoliBL2_SOURCES		+=	plat/brcm/common/brcm_bl2_mem_params_desc.c \
159717448d6SSheetal Tigadoli				plat/brcm/common/brcm_image_load.c \
160717448d6SSheetal Tigadoli				common/desc_image_load.c
161717448d6SSheetal Tigadoli
162717448d6SSheetal TigadoliBL2_SOURCES		+= 	plat/brcm/common/brcm_bl2_setup.c
163717448d6SSheetal Tigadoli
1649a40c0fbSSheetal TigadoliBL31_SOURCES		+=	plat/brcm/common/brcm_bl31_setup.c
1659a40c0fbSSheetal Tigadoli
166f29d1e0cSSheetal Tigadoliifeq (${BCM_ELOG},yes)
167f29d1e0cSSheetal TigadoliELOG_SOURCES		+= 	plat/brcm/board/common/bcm_elog.c
168f29d1e0cSSheetal TigadoliBL2_SOURCES		+= 	${ELOG_SOURCES}
1693942d3a8SSheetal TigadoliBL31_SOURCES		+= 	${ELOG_SOURCES}
170f29d1e0cSSheetal Tigadoliendif
171f29d1e0cSSheetal Tigadoli
172e3ee7b7dSSheetal Tigadoli# Add spi driver
173e3ee7b7dSSheetal Tigadoliifeq (${DRIVER_SPI_ENABLE},1)
174e3ee7b7dSSheetal TigadoliPLAT_BL_COMMON_SOURCES	+=	drivers/brcm/spi/iproc_spi.c \
175e3ee7b7dSSheetal Tigadoli				drivers/brcm/spi/iproc_qspi.c
176e3ee7b7dSSheetal Tigadoliendif
177e3ee7b7dSSheetal Tigadoli
17849dec7f7SSheetal Tigadoli# Add spi nor/flash driver
17949dec7f7SSheetal Tigadoliifeq (${DRIVER_SPI_NOR_ENABLE},1)
18049dec7f7SSheetal TigadoliPLAT_BL_COMMON_SOURCES	+=	drivers/brcm/spi_sf.c \
18149dec7f7SSheetal Tigadoli				drivers/brcm/spi_flash.c
18249dec7f7SSheetal Tigadoliendif
18349dec7f7SSheetal Tigadoli
184f29d1e0cSSheetal Tigadoliifeq (${DRIVER_OCOTP_ENABLE},1)
185f29d1e0cSSheetal Tigadoli$(eval $(call add_define,DRIVER_OCOTP_ENABLE))
186f29d1e0cSSheetal TigadoliBL2_SOURCES		+= drivers/brcm/ocotp.c
187f29d1e0cSSheetal Tigadoliendif
188f29d1e0cSSheetal Tigadoli
189f29d1e0cSSheetal Tigadoli# Enable FRU table support
190f29d1e0cSSheetal Tigadoliifeq (${USE_FRU},yes)
191f29d1e0cSSheetal Tigadoli$(eval $(call add_define,USE_FRU))
192f29d1e0cSSheetal TigadoliBL2_SOURCES		+= drivers/brcm/fru.c
193f29d1e0cSSheetal Tigadoliendif
194f29d1e0cSSheetal Tigadoli
195f29d1e0cSSheetal Tigadoli# Enable GPIO support
196f29d1e0cSSheetal Tigadoliifeq (${USE_GPIO},yes)
197f29d1e0cSSheetal Tigadoli$(eval $(call add_define,USE_GPIO))
198f29d1e0cSSheetal TigadoliBL2_SOURCES             += drivers/gpio/gpio.c
199f29d1e0cSSheetal TigadoliBL2_SOURCES             += drivers/brcm/iproc_gpio.c
200f29d1e0cSSheetal Tigadoliifeq (${GPIO_SUPPORT_FLOAT_DETECTION},yes)
201f29d1e0cSSheetal Tigadoli$(eval $(call add_define,GPIO_SUPPORT_FLOAT_DETECTION))
202f29d1e0cSSheetal Tigadoliendif
203f29d1e0cSSheetal Tigadoliendif
204f29d1e0cSSheetal Tigadoli
205f29d1e0cSSheetal Tigadoli# Include mbedtls if it can be located
206f29d1e0cSSheetal TigadoliMBEDTLS_DIR := mbedtls
207f29d1e0cSSheetal TigadoliMBEDTLS_CHECK := $(shell find ${MBEDTLS_DIR}/include -name '${MBEDTLS_DIR}')
208f29d1e0cSSheetal Tigadoli
209f29d1e0cSSheetal Tigadoliifneq (${MBEDTLS_CHECK},)
210f29d1e0cSSheetal Tigadoli$(info Found mbedTLS at ${MBEDTLS_DIR})
211f29d1e0cSSheetal TigadoliPLAT_INCLUDES += -I${MBEDTLS_DIR}/include/mbedtls
212f29d1e0cSSheetal Tigadoli# Specify mbedTLS configuration file
213f29d1e0cSSheetal TigadoliMBEDTLS_CONFIG_FILE	:=	"<brcm_mbedtls_config.h>"
214f29d1e0cSSheetal Tigadoli
215f29d1e0cSSheetal Tigadoli# By default, use RSA keys
216f29d1e0cSSheetal TigadoliKEY_ALG := rsa_1_5
217f29d1e0cSSheetal Tigadoli
218f29d1e0cSSheetal Tigadoli# Include common TBB sources
219f29d1e0cSSheetal TigadoliAUTH_SOURCES	+= 	drivers/auth/auth_mod.c \
220f29d1e0cSSheetal Tigadoli			drivers/auth/crypto_mod.c \
221f29d1e0cSSheetal Tigadoli			drivers/auth/img_parser_mod.c \
222ad43c49eSManish V Badarkhe			drivers/auth/tbbr/tbbr_cot_common.c \
223ad43c49eSManish V Badarkhe			drivers/auth/tbbr/tbbr_cot_bl2.c
224f29d1e0cSSheetal Tigadoli
225f29d1e0cSSheetal TigadoliBL2_SOURCES	+=	${AUTH_SOURCES}
226f29d1e0cSSheetal Tigadoli
227f29d1e0cSSheetal Tigadoli# Use ATF framework for MBEDTLS
228f29d1e0cSSheetal TigadoliTRUSTED_BOARD_BOOT := 1
229f29d1e0cSSheetal TigadoliCRYPTO_LIB_MK := drivers/auth/mbedtls/mbedtls_crypto.mk
230f29d1e0cSSheetal TigadoliIMG_PARSER_LIB_MK := drivers/auth/mbedtls/mbedtls_x509.mk
231f29d1e0cSSheetal Tigadoli$(info Including ${CRYPTO_LIB_MK})
232f29d1e0cSSheetal Tigadoliinclude ${CRYPTO_LIB_MK}
233f29d1e0cSSheetal Tigadoli$(info Including ${IMG_PARSER_LIB_MK})
234f29d1e0cSSheetal Tigadoliinclude ${IMG_PARSER_LIB_MK}
235f29d1e0cSSheetal Tigadoli
236f29d1e0cSSheetal Tigadoli# Use ATF secure boot functions
237f29d1e0cSSheetal Tigadoli# Use Hardcoded hash for devel
238f29d1e0cSSheetal Tigadoli
239f29d1e0cSSheetal TigadoliARM_ROTPK_LOCATION=arm_rsa
240f29d1e0cSSheetal Tigadoliifeq (${ARM_ROTPK_LOCATION}, arm_rsa)
241f29d1e0cSSheetal TigadoliARM_ROTPK_LOCATION_ID=ARM_ROTPK_DEVEL_RSA_ID
242f29d1e0cSSheetal TigadoliROT_KEY=plat/arm/board/common/rotpk/arm_rotprivk_rsa.pem
243f29d1e0cSSheetal Tigadolielse ifeq (${ARM_ROTPK_LOCATION}, brcm_rsa)
244f29d1e0cSSheetal TigadoliARM_ROTPK_LOCATION_ID=BRCM_ROTPK_SOTP_RSA_ID
245f29d1e0cSSheetal Tigadoliifeq (${ROT_KEY},)
246f29d1e0cSSheetal TigadoliROT_KEY=plat/brcm/board/common/rotpk/rsa_dauth2048_key.pem
247f29d1e0cSSheetal Tigadoliendif
248f29d1e0cSSheetal TigadoliKEY_FIND := $(shell m="${ROT_KEY}"; [ -f "$$m" ] && echo "$$m")
249f29d1e0cSSheetal Tigadoliifeq (${KEY_FIND},)
250f29d1e0cSSheetal Tigadoli$(error Error: No ${ROT_KEY} located)
251f29d1e0cSSheetal Tigadolielse
252f29d1e0cSSheetal Tigadoli$(info Using ROT_KEY: ${ROT_KEY})
253f29d1e0cSSheetal Tigadoliendif
254f29d1e0cSSheetal Tigadolielse
255f29d1e0cSSheetal Tigadoli$(error "Unsupported ARM_ROTPK_LOCATION value")
256f29d1e0cSSheetal Tigadoliendif
257f29d1e0cSSheetal Tigadoli
258f29d1e0cSSheetal Tigadoli$(eval $(call add_define,ARM_ROTPK_LOCATION_ID))
259f29d1e0cSSheetal TigadoliPLAT_BL_COMMON_SOURCES+=plat/brcm/board/common/board_arm_trusted_boot.c
260f29d1e0cSSheetal Tigadoliendif
261f29d1e0cSSheetal Tigadoli
2629a40c0fbSSheetal Tigadoli#M0 runtime firmware
2639a40c0fbSSheetal Tigadoliifdef SCP_BL2
2649a40c0fbSSheetal Tigadoli$(eval $(call add_define,NEED_SCP_BL2))
2659a40c0fbSSheetal TigadoliSCP_CFG_DIR=$(dir ${SCP_BL2})
2669a40c0fbSSheetal TigadoliPLAT_INCLUDES += -I${SCP_CFG_DIR}
2679a40c0fbSSheetal Tigadoliendif
2689a40c0fbSSheetal Tigadoli
2699a40c0fbSSheetal Tigadoliifneq (${NEED_BL33},yes)
2709a40c0fbSSheetal Tigadoli# If there is no BL33, BL31 will jump to this address.
2719a40c0fbSSheetal Tigadoliifeq (${USE_DDR},yes)
2729a40c0fbSSheetal TigadoliPRELOADED_BL33_BASE := 0x80000000
2739a40c0fbSSheetal Tigadolielse
2749a40c0fbSSheetal TigadoliPRELOADED_BL33_BASE := 0x74000000
2759a40c0fbSSheetal Tigadoliendif
2769a40c0fbSSheetal Tigadoliendif
2779a40c0fbSSheetal Tigadoli
278717448d6SSheetal Tigadoli# Use translation tables library v1 by default
279717448d6SSheetal TigadoliARM_XLAT_TABLES_LIB_V1		:=	1
280717448d6SSheetal Tigadoliifeq (${ARM_XLAT_TABLES_LIB_V1}, 1)
281717448d6SSheetal Tigadoli$(eval $(call assert_boolean,ARM_XLAT_TABLES_LIB_V1))
282717448d6SSheetal Tigadoli$(eval $(call add_define,ARM_XLAT_TABLES_LIB_V1))
283717448d6SSheetal TigadoliPLAT_BL_COMMON_SOURCES	+=	lib/xlat_tables/aarch64/xlat_tables.c \
284717448d6SSheetal Tigadoli				lib/xlat_tables/xlat_tables_common.c
285717448d6SSheetal Tigadoliendif
286