xref: /rk3399_ARM-atf/plat/arm/board/common/board_common.mk (revision d51981e15dd8383d727bd15e718f657f2cd2aaf5)
1#
2# Copyright (c) 2015-2024, Arm Limited and Contributors. All rights reserved.
3#
4# SPDX-License-Identifier: BSD-3-Clause
5#
6
7PLAT_BL_COMMON_SOURCES	+=	drivers/arm/pl011/${ARCH}/pl011_console.S	\
8				plat/arm/board/common/${ARCH}/board_arm_helpers.S
9
10BL1_SOURCES		+=	drivers/cfi/v2m/v2m_flash.c
11
12BL2_SOURCES		+=	drivers/cfi/v2m/v2m_flash.c
13
14ifneq (${TRUSTED_BOARD_BOOT},0)
15ARM_ROTPK_S = plat/arm/board/common/rotpk/arm_dev_rotpk.S
16ARM_ROTPK = $(BUILD_PLAT)/arm_rotpk.bin
17ARM_ROTPK_IS_HASH := 1
18$(eval $(call add_define_val,ARM_ROTPK,'"$(ARM_ROTPK)"'))
19
20# ROTPK hash location
21ifeq (${ARM_ROTPK_LOCATION}, regs)
22	ARM_ROTPK_LOCATION_ID = ARM_ROTPK_REGS_ID
23else
24# The ROTPK is a development key
25ifeq (${ARM_ROTPK_LOCATION}, devel_rsa)
26	CRYPTO_ALG=rsa
27	ARM_ROTPK_LOCATION_ID = ARM_ROTPK_DEVEL_RSA_ID
28	ROT_KEY ?= plat/arm/board/common/rotpk/arm_rotprivk_rsa.pem
29$(warning Development keys support for FVP is deprecated. Use `regs` \
30option instead)
31else ifeq (${ARM_ROTPK_LOCATION}, devel_ecdsa)
32	CRYPTO_ALG=ec
33	ARM_ROTPK_LOCATION_ID = ARM_ROTPK_DEVEL_ECDSA_ID
34	ROT_KEY ?= plat/arm/board/common/rotpk/arm_rotprivk_ecdsa.pem
35$(warning Development keys support for FVP is deprecated. Use `regs` \
36option instead)
37else ifeq (${ARM_ROTPK_LOCATION}, devel_full_dev_rsa_key)
38	CRYPTO_ALG=rsa
39	ARM_ROTPK_LOCATION_ID = ARM_ROTPK_DEVEL_FULL_DEV_RSA_KEY_ID
40	ROT_KEY ?= plat/arm/board/common/rotpk/arm_rotprivk_rsa.pem
41	ARM_ROTPK_IS_HASH = 0
42$(warning Development keys support for FVP is deprecated. Use `regs` \
43option instead)
44else ifeq (${ARM_ROTPK_LOCATION}, devel_full_dev_ecdsa_key)
45	CRYPTO_ALG=ec
46	ARM_ROTPK_LOCATION_ID = ARM_ROTPK_DEVEL_FULL_DEV_ECDSA_KEY_ID
47	ROT_KEY ?= plat/arm/board/common/rotpk/arm_rotprivk_ecdsa.pem
48	ARM_ROTPK_IS_HASH = 0
49$(warning Development keys support for FVP is deprecated. Use `regs` \
50option instead)
51else
52$(error "Unsupported ARM_ROTPK_LOCATION value")
53endif
54$(BUILD_PLAT)/bl1/arm_dev_rotpk.o : $(ARM_ROTPK)
55$(BUILD_PLAT)/bl2/arm_dev_rotpk.o : $(ARM_ROTPK)
56endif
57
58$(eval $(call add_define,ARM_ROTPK_LOCATION_ID))
59$(eval $(call add_define,ARM_ROTPK_IS_HASH))
60
61ifeq (${ENABLE_RME}, 1)
62COT	:=	cca
63endif
64
65# Force generation of the ROT public key if ROT_KEY is specified
66ifdef ROT_KEY
67	PK_PREREQUISITES = $(ROT_KEY) FORCE
68endif
69
70$(ARM_ROTPK) : $(PK_PREREQUISITES)
71ifndef ROT_KEY
72	$(error Cannot generate public key: no ROT_KEY defined)
73endif
74ifeq ($(ARM_ROTPK_IS_HASH), 1)
75	${OPENSSL_BIN_PATH}/openssl ${CRYPTO_ALG} -in $< -pubout -outform DER | \
76	${OPENSSL_BIN_PATH}/openssl dgst -${HASH_ALG} -binary -out $@
77else
78	${OPENSSL_BIN_PATH}/openssl ${CRYPTO_ALG} -in $< -pubout -outform DER -out $@
79endif
80
81# Certificate NV-Counters. Use values corresponding to tied off values in
82# ARM development platforms
83TFW_NVCTR_VAL	?=	31
84NTFW_NVCTR_VAL	?=	223
85# The CCA Non-Volatile Counter only exists on some Arm development platforms.
86# On others, we mock it by aliasing it to the Trusted Firmware Non-Volatile counter,
87# hence we set both counters to the same default value.
88CCAFW_NVCTR_VAL	?=	31
89
90BL1_SOURCES		+=	plat/arm/board/common/board_arm_trusted_boot.c \
91				${ARM_ROTPK_S}
92BL2_SOURCES		+=	plat/arm/board/common/board_arm_trusted_boot.c \
93				${ARM_ROTPK_S}
94
95# Allows platform code to provide implementation variants depending on the
96# selected chain of trust.
97$(eval $(call add_define,ARM_COT_${COT}))
98
99ifeq (${COT},dualroot)
100# Platform Root of Trust key files.
101ARM_PROT_KEY		:=	plat/arm/board/common/protpk/arm_protprivk_rsa.pem
102ARM_PROTPK_HASH		:=	plat/arm/board/common/protpk/arm_protpk_rsa_sha256.bin
103
104# Provide the private key to cert_create tool. It needs it to sign the images.
105PROT_KEY		:=	${ARM_PROT_KEY}
106
107$(eval $(call add_define_val,ARM_PROTPK_HASH,'"$(ARM_PROTPK_HASH)"'))
108
109BL1_SOURCES		+=	plat/arm/board/common/protpk/arm_dev_protpk.S
110BL2_SOURCES		+=	plat/arm/board/common/protpk/arm_dev_protpk.S
111
112$(BUILD_PLAT)/bl1/arm_dev_protpk.o: $(ARM_PROTPK_HASH)
113$(BUILD_PLAT)/bl2/arm_dev_protpk.o: $(ARM_PROTPK_HASH)
114endif
115
116ifeq (${COT},cca)
117# Platform and Secure World Root of Trust key files.
118ARM_PROT_KEY		:=	plat/arm/board/common/protpk/arm_protprivk_rsa.pem
119ARM_PROTPK_HASH		:=	plat/arm/board/common/protpk/arm_protpk_rsa_sha256.bin
120ARM_SWD_ROT_KEY		:=	plat/arm/board/common/swd_rotpk/arm_swd_rotprivk_rsa.pem
121ARM_SWD_ROTPK_HASH	:=	plat/arm/board/common/swd_rotpk/arm_swd_rotpk_rsa_sha256.bin
122
123# Provide the private keys to cert_create tool. It needs them to sign the images.
124PROT_KEY		:=	${ARM_PROT_KEY}
125SWD_ROT_KEY		:=	${ARM_SWD_ROT_KEY}
126
127$(eval $(call add_define_val,ARM_PROTPK_HASH,'"$(ARM_PROTPK_HASH)"'))
128$(eval $(call add_define_val,ARM_SWD_ROTPK_HASH,'"$(ARM_SWD_ROTPK_HASH)"'))
129
130BL1_SOURCES		+=	plat/arm/board/common/protpk/arm_dev_protpk.S \
131				plat/arm/board/common/swd_rotpk/arm_dev_swd_rotpk.S
132BL2_SOURCES		+=	plat/arm/board/common/protpk/arm_dev_protpk.S \
133				plat/arm/board/common/swd_rotpk/arm_dev_swd_rotpk.S
134
135$(BUILD_PLAT)/bl1/arm_dev_protpk.o: $(ARM_PROTPK_HASH)
136$(BUILD_PLAT)/bl1/arm_dev_swd_rotpk.o: $(ARM_SWD_ROTPK_HASH)
137$(BUILD_PLAT)/bl2/arm_dev_protpk.o: $(ARM_PROTPK_HASH)
138$(BUILD_PLAT)/bl2/arm_dev_swd_rotpk.o: $(ARM_SWD_ROTPK_HASH)
139endif
140
141endif
142