xref: /rk3399_ARM-atf/plat/imx/imx7/warp7/platform.mk (revision a41d81cdb10e4a59279f781b5a2b71f8be7cf432)
1172e55beSBryan O'Donoghue#
2172e55beSBryan O'Donoghue# Copyright (c) 2018, ARM Limited and Contributors. All rights reserved.
3172e55beSBryan O'Donoghue#
4172e55beSBryan O'Donoghue# SPDX-License-Identifier: BSD-3-Clause
5172e55beSBryan O'Donoghue#
6172e55beSBryan O'Donoghue
7172e55beSBryan O'Donoghue# Architecture
8172e55beSBryan O'Donoghue$(eval $(call add_define,ARMV7_SUPPORTS_LARGE_PAGE_ADDRESSING))
9172e55beSBryan O'Donoghue
10172e55beSBryan O'Donoghue# Tune compiler for Cortex-A7
11172e55beSBryan O'Donoghueifeq ($(notdir $(CC)),armclang)
12172e55beSBryan O'Donoghue    TF_CFLAGS	+=	-mfpu=neon
13172e55beSBryan O'Donoghue    ASFLAGS	+=	-mfpu=neon
14172e55beSBryan O'Donoghueelse ifneq ($(findstring clang,$(notdir $(CC))),)
15172e55beSBryan O'Donoghue    TF_CFLAGS	+=	-mfpu=neon
16172e55beSBryan O'Donoghue    ASFLAGS	+=	-mfpu=neon
17172e55beSBryan O'Donoghueelse
18172e55beSBryan O'Donoghue    TF_CFLAGS	+=	-mfpu=neon
19172e55beSBryan O'Donoghue    ASFLAGS	+=	-mfpu=neon
20172e55beSBryan O'Donoghueendif
21172e55beSBryan O'Donoghue
22172e55beSBryan O'Donoghue# Platform
23172e55beSBryan O'DonoghuePLAT_INCLUDES		:=	-Idrivers/imx/uart			\
24172e55beSBryan O'Donoghue				-Iinclude/common/tbbr			\
25172e55beSBryan O'Donoghue				-Iplat/imx/common/include/		\
26172e55beSBryan O'Donoghue				-Iplat/imx/imx7/warp7/include		\
27172e55beSBryan O'Donoghue				-Idrivers/imx/timer			\
28172e55beSBryan O'Donoghue				-Idrivers/imx/usdhc			\
29172e55beSBryan O'Donoghue				-Iplat/imx/imx7/include
30172e55beSBryan O'Donoghue
31172e55beSBryan O'Donoghue# Translation tables library
32172e55beSBryan O'Donoghueinclude lib/xlat_tables_v2/xlat_tables.mk
33172e55beSBryan O'Donoghue
34172e55beSBryan O'DonoghueBL2_SOURCES		+=	common/desc_image_load.c			\
35172e55beSBryan O'Donoghue				drivers/console/aarch32/console.S		\
36172e55beSBryan O'Donoghue				drivers/delay_timer/delay_timer.c		\
37172e55beSBryan O'Donoghue				drivers/mmc/mmc.c				\
38172e55beSBryan O'Donoghue				drivers/io/io_block.c				\
39172e55beSBryan O'Donoghue				drivers/io/io_fip.c				\
40172e55beSBryan O'Donoghue				drivers/io/io_memmap.c				\
41172e55beSBryan O'Donoghue				drivers/io/io_storage.c				\
42172e55beSBryan O'Donoghue				drivers/imx/timer/imx_gpt.c			\
43172e55beSBryan O'Donoghue				drivers/imx/uart/imx_uart.c			\
44172e55beSBryan O'Donoghue				drivers/imx/uart/imx_crash_uart.S		\
45172e55beSBryan O'Donoghue				drivers/imx/usdhc/imx_usdhc.c			\
46172e55beSBryan O'Donoghue				lib/aarch32/arm32_aeabi_divmod.c		\
47172e55beSBryan O'Donoghue				lib/aarch32/arm32_aeabi_divmod_a32.S		\
48172e55beSBryan O'Donoghue				lib/cpus/aarch32/cortex_a7.S			\
49172e55beSBryan O'Donoghue				lib/optee/optee_utils.c				\
50172e55beSBryan O'Donoghue				plat/imx/common/imx_aips.c			\
51172e55beSBryan O'Donoghue				plat/imx/common/imx_caam.c			\
52172e55beSBryan O'Donoghue				plat/imx/common/imx_clock.c			\
53172e55beSBryan O'Donoghue				plat/imx/common/imx_csu.c			\
54172e55beSBryan O'Donoghue				plat/imx/common/imx_io_mux.c			\
55172e55beSBryan O'Donoghue				plat/imx/common/imx_snvs.c			\
56172e55beSBryan O'Donoghue				plat/imx/common/imx_wdog.c			\
57172e55beSBryan O'Donoghue				plat/imx/common/imx7_clock.c		\
58172e55beSBryan O'Donoghue				plat/imx/imx7/warp7/aarch32/warp7_helpers.S	\
59172e55beSBryan O'Donoghue				plat/imx/imx7/warp7/warp7_bl2_el3_setup.c	\
60172e55beSBryan O'Donoghue				plat/imx/imx7/warp7/warp7_bl2_mem_params_desc.c \
61172e55beSBryan O'Donoghue				plat/imx/imx7/warp7/warp7_io_storage.c		\
62172e55beSBryan O'Donoghue				plat/imx/imx7/warp7/warp7_image_load.c		\
63172e55beSBryan O'Donoghue				${XLAT_TABLES_LIB_SRCS}
64172e55beSBryan O'Donoghue
65*a41d81cdSBryan O'Donoghueifneq (${TRUSTED_BOARD_BOOT},0)
66*a41d81cdSBryan O'Donoghue
67*a41d81cdSBryan O'Donoghueinclude drivers/auth/mbedtls/mbedtls_crypto.mk
68*a41d81cdSBryan O'Donoghueinclude drivers/auth/mbedtls/mbedtls_x509.mk
69*a41d81cdSBryan O'Donoghue
70*a41d81cdSBryan O'DonoghueAUTH_SOURCES	:=	drivers/auth/auth_mod.c			\
71*a41d81cdSBryan O'Donoghue			drivers/auth/crypto_mod.c		\
72*a41d81cdSBryan O'Donoghue			drivers/auth/img_parser_mod.c		\
73*a41d81cdSBryan O'Donoghue			drivers/auth/tbbr/tbbr_cot.c
74*a41d81cdSBryan O'Donoghue
75*a41d81cdSBryan O'DonoghueBL2_SOURCES		+=	${AUTH_SOURCES}					\
76*a41d81cdSBryan O'Donoghue				plat/common/tbbr/plat_tbbr.c			\
77*a41d81cdSBryan O'Donoghue				plat/imx/imx7/warp7/warp7_trusted_boot.c	\
78*a41d81cdSBryan O'Donoghue				plat/imx/imx7/warp7/warp7_rotpk.S
79*a41d81cdSBryan O'Donoghue
80*a41d81cdSBryan O'DonoghueROT_KEY             = $(BUILD_PLAT)/rot_key.pem
81*a41d81cdSBryan O'DonoghueROTPK_HASH          = $(BUILD_PLAT)/rotpk_sha256.bin
82*a41d81cdSBryan O'Donoghue
83*a41d81cdSBryan O'Donoghue$(eval $(call add_define_val,ROTPK_HASH,'"$(ROTPK_HASH)"'))
84*a41d81cdSBryan O'Donoghue$(eval $(call MAKE_LIB_DIRS))
85*a41d81cdSBryan O'Donoghue
86*a41d81cdSBryan O'Donoghue$(BUILD_PLAT)/bl2/warp7_rotpk.o: $(ROTPK_HASH)
87*a41d81cdSBryan O'Donoghue
88*a41d81cdSBryan O'Donoghuecertificates: $(ROT_KEY)
89*a41d81cdSBryan O'Donoghue
90*a41d81cdSBryan O'Donoghue$(ROT_KEY): | $(BUILD_PLAT)
91*a41d81cdSBryan O'Donoghue	@echo "  OPENSSL $@"
92*a41d81cdSBryan O'Donoghue	@if [ ! -f $(ROT_KEY) ]; then \
93*a41d81cdSBryan O'Donoghue		openssl genrsa 2048 > $@ 2>/dev/null; \
94*a41d81cdSBryan O'Donoghue	fi
95*a41d81cdSBryan O'Donoghue
96*a41d81cdSBryan O'Donoghue$(ROTPK_HASH): $(ROT_KEY)
97*a41d81cdSBryan O'Donoghue	@echo "  OPENSSL $@"
98*a41d81cdSBryan O'Donoghue	$(Q)openssl rsa -in $< -pubout -outform DER 2>/dev/null |\
99*a41d81cdSBryan O'Donoghue	openssl dgst -sha256 -binary > $@ 2>/dev/null
100*a41d81cdSBryan O'Donoghueendif
101*a41d81cdSBryan O'Donoghue
102172e55beSBryan O'Donoghue# Build config flags
103172e55beSBryan O'Donoghue# ------------------
104172e55beSBryan O'Donoghue
105172e55beSBryan O'DonoghueWORKAROUND_CVE_2017_5715	:= 0
106172e55beSBryan O'Donoghue
107172e55beSBryan O'Donoghue# Enable reset to BL31 by default
108172e55beSBryan O'DonoghueRESET_TO_BL31			:= 0
109172e55beSBryan O'Donoghue
110172e55beSBryan O'Donoghue# Non-TF Boot ROM
111172e55beSBryan O'DonoghueBL2_AT_EL3			:= 1
112172e55beSBryan O'Donoghue
113172e55beSBryan O'Donoghue# Indicate single-core
114172e55beSBryan O'DonoghueCOLD_BOOT_SINGLE_CPU		:= 1
115172e55beSBryan O'Donoghue
116172e55beSBryan O'Donoghue# Have different sections for code and rodata
117172e55beSBryan O'DonoghueSEPARATE_CODE_AND_RODATA	:= 1
118172e55beSBryan O'Donoghue
119172e55beSBryan O'Donoghue# Use Coherent memory
120172e55beSBryan O'DonoghueUSE_COHERENT_MEM		:= 1
121172e55beSBryan O'Donoghue
122172e55beSBryan O'Donoghue# PLAT_WARP7_UART
123172e55beSBryan O'DonoghuePLAT_WARP7_UART			:=1
124172e55beSBryan O'Donoghue$(eval $(call add_define,PLAT_WARP7_UART))
125172e55beSBryan O'Donoghue
126*a41d81cdSBryan O'Donoghue# Add the build options to pack BLx images and kernel device tree
127*a41d81cdSBryan O'Donoghue# in the FIP if the platform requires.
128*a41d81cdSBryan O'Donoghueifneq ($(BL2),)
129*a41d81cdSBryan O'Donoghue$(eval $(call TOOL_ADD_PAYLOAD,${BUILD_PLAT}/tb_fw.crt,--tb-fw-cert))
130*a41d81cdSBryan O'Donoghueendif
131*a41d81cdSBryan O'Donoghueifneq ($(BL32_EXTRA1),)
132*a41d81cdSBryan O'Donoghue$(eval $(call TOOL_ADD_IMG,BL32_EXTRA1,--tos-fw-extra1))
133*a41d81cdSBryan O'Donoghueendif
134*a41d81cdSBryan O'Donoghueifneq ($(BL32_EXTRA2),)
135*a41d81cdSBryan O'Donoghue$(eval $(call TOOL_ADD_IMG,BL32_EXTRA2,--tos-fw-extra2))
136*a41d81cdSBryan O'Donoghueendif
137*a41d81cdSBryan O'Donoghueifneq ($(HW_CONFIG),)
138*a41d81cdSBryan O'Donoghue$(eval $(call TOOL_ADD_IMG,HW_CONFIG,--hw-config))
139*a41d81cdSBryan O'Donoghueendif
140*a41d81cdSBryan O'Donoghue
141172e55beSBryan O'Donoghue# Verify build config
142172e55beSBryan O'Donoghue# -------------------
143172e55beSBryan O'Donoghue
144172e55beSBryan O'Donoghueifeq (${ARCH},aarch64)
145172e55beSBryan O'Donoghue  $(error Error: AArch64 not supported on i.mx7)
146172e55beSBryan O'Donoghueendif
147