xref: /rk3399_ARM-atf/plat/allwinner/common/allwinner-common.mk (revision 47fd2315e69afbb7ae5411a0c5959ae916b9cbf2)
1a80490c5SAndre Przywara#
2b23ab8ebSAndre Przywara# Copyright (c) 2017-2021, ARM Limited and Contributors. All rights reserved.
3a80490c5SAndre Przywara#
4a80490c5SAndre Przywara# SPDX-License-Identifier: BSD-3-Clause
5a80490c5SAndre Przywara#
6a80490c5SAndre Przywara
7a80490c5SAndre Przywarainclude lib/xlat_tables_v2/xlat_tables.mk
89bc28a5eSAndre Przywarainclude lib/libfdt/libfdt.mk
99bc28a5eSAndre Przywarainclude drivers/arm/gic/v2/gicv2.mk
10a80490c5SAndre Przywara
11a80490c5SAndre PrzywaraAW_PLAT			:=	plat/allwinner
12a80490c5SAndre Przywara
13252c1d1dSSamuel HollandPLAT_INCLUDES		:=	-Iinclude/plat/arm/common/aarch64	\
14a80490c5SAndre Przywara				-I${AW_PLAT}/common/include		\
15a80490c5SAndre Przywara				-I${AW_PLAT}/${PLAT}/include
16a80490c5SAndre Przywara
17985ee0b7SJulius WernerPLAT_BL_COMMON_SOURCES	:=	drivers/ti/uart/${ARCH}/16550_console.S	\
18a80490c5SAndre Przywara				${XLAT_TABLES_LIB_SRCS}			\
19a80490c5SAndre Przywara				${AW_PLAT}/common/plat_helpers.S	\
20a80490c5SAndre Przywara				${AW_PLAT}/common/sunxi_common.c
21a80490c5SAndre Przywara
22fb23b104SSamuel HollandBL31_SOURCES		+=	drivers/allwinner/axp/common.c		\
239bc28a5eSAndre Przywara				${GICV2_SOURCES}			\
24a80490c5SAndre Przywara				drivers/delay_timer/delay_timer.c	\
25a80490c5SAndre Przywara				drivers/delay_timer/generic_delay_timer.c \
26a80490c5SAndre Przywara				lib/cpus/${ARCH}/cortex_a53.S		\
27a80490c5SAndre Przywara				plat/common/plat_gicv2.c		\
28a80490c5SAndre Przywara				plat/common/plat_psci_common.c		\
29a80490c5SAndre Przywara				${AW_PLAT}/common/sunxi_bl31_setup.c	\
30e2b18771SSamuel Holland				${AW_PLAT}/${PLAT}/sunxi_idle_states.c	\
31a80490c5SAndre Przywara				${AW_PLAT}/common/sunxi_pm.c		\
32a80490c5SAndre Przywara				${AW_PLAT}/${PLAT}/sunxi_power.c	\
33a80490c5SAndre Przywara				${AW_PLAT}/common/sunxi_security.c	\
34a80490c5SAndre Przywara				${AW_PLAT}/common/sunxi_topology.c
35a80490c5SAndre Przywara
36b23ab8ebSAndre Przywara# By default, attempt to use SCPI to the ARISC management processor. If SCPI
37b23ab8ebSAndre Przywara# is not enabled or SCP firmware is not loaded, fall back to a simpler native
38b23ab8ebSAndre Przywara# implementation that does not support CPU or system suspend.
39b23ab8ebSAndre Przywara#
40b23ab8ebSAndre Przywara# If SCP firmware will always be present (or absent), the unused implementation
41b23ab8ebSAndre Przywara# can be compiled out.
42b23ab8ebSAndre PrzywaraSUNXI_PSCI_USE_NATIVE	?=	1
43b23ab8ebSAndre PrzywaraSUNXI_PSCI_USE_SCPI	?=	1
44b23ab8ebSAndre Przywara
45b23ab8ebSAndre Przywara$(eval $(call assert_boolean,SUNXI_PSCI_USE_NATIVE))
46b23ab8ebSAndre Przywara$(eval $(call assert_boolean,SUNXI_PSCI_USE_SCPI))
47b23ab8ebSAndre Przywara$(eval $(call add_define,SUNXI_PSCI_USE_NATIVE))
48b23ab8ebSAndre Przywara$(eval $(call add_define,SUNXI_PSCI_USE_SCPI))
49b23ab8ebSAndre Przywara
50b23ab8ebSAndre Przywaraifeq (${SUNXI_PSCI_USE_NATIVE}${SUNXI_PSCI_USE_SCPI},00)
51b23ab8ebSAndre Przywara$(error "At least one of SCPI or native PSCI ops must be enabled")
52b23ab8ebSAndre Przywaraendif
53b23ab8ebSAndre Przywara
54b23ab8ebSAndre Przywaraifeq (${SUNXI_PSCI_USE_NATIVE},1)
55b23ab8ebSAndre PrzywaraBL31_SOURCES		+=	${AW_PLAT}/common/sunxi_cpu_ops.c	\
56b23ab8ebSAndre Przywara				${AW_PLAT}/common/sunxi_native_pm.c
57b23ab8ebSAndre Przywaraendif
58b23ab8ebSAndre Przywara
59b23ab8ebSAndre Przywaraifeq (${SUNXI_PSCI_USE_SCPI},1)
60b23ab8ebSAndre PrzywaraBL31_SOURCES		+=	drivers/allwinner/sunxi_msgbox.c	\
61b23ab8ebSAndre Przywara				drivers/arm/css/scpi/css_scpi.c		\
62b23ab8ebSAndre Przywara				${AW_PLAT}/common/sunxi_scpi_pm.c
63b23ab8ebSAndre Przywaraendif
64b23ab8ebSAndre Przywara
6567412e4dSAndre PrzywaraSUNXI_SETUP_REGULATORS	?=	1
6667412e4dSAndre Przywara$(eval $(call assert_boolean,SUNXI_SETUP_REGULATORS))
6767412e4dSAndre Przywara$(eval $(call add_define,SUNXI_SETUP_REGULATORS))
6867412e4dSAndre Przywara
696fa8e72eSAndre PrzywaraSUNXI_BL31_IN_DRAM	?=	0
706fa8e72eSAndre Przywara$(eval $(call assert_boolean,SUNXI_BL31_IN_DRAM))
716fa8e72eSAndre Przywara
726fa8e72eSAndre Przywaraifeq (${SUNXI_BL31_IN_DRAM},1)
736fa8e72eSAndre PrzywaraSUNXI_AMEND_DTB		:=	1
746fa8e72eSAndre Przywara$(eval $(call add_define,SUNXI_BL31_IN_DRAM))
756fa8e72eSAndre Przywaraendif
766fa8e72eSAndre Przywara
776fa8e72eSAndre PrzywaraSUNXI_AMEND_DTB		?=	0
786fa8e72eSAndre Przywara$(eval $(call assert_boolean,SUNXI_AMEND_DTB))
796fa8e72eSAndre Przywara$(eval $(call add_define,SUNXI_AMEND_DTB))
806fa8e72eSAndre Przywara
816fa8e72eSAndre Przywaraifeq (${SUNXI_AMEND_DTB},1)
826fa8e72eSAndre PrzywaraBL31_SOURCES		+=	common/fdt_fixup.c			\
836fa8e72eSAndre Przywara				${AW_PLAT}/common/sunxi_prepare_dtb.c
846fa8e72eSAndre Przywaraendif
856fa8e72eSAndre Przywara
86a80490c5SAndre Przywara# The bootloader is guaranteed to only run on CPU 0 by the boot ROM.
87a80490c5SAndre PrzywaraCOLD_BOOT_SINGLE_CPU		:=	1
88a80490c5SAndre Przywara
89*d86ddcefSAndre Przywara# Disable SPE, SVE and MPAM, since they are not supported on Allwinner CPUs.
9090118bb5SAndre PrzywaraENABLE_SPE_FOR_NS		:=	0
918f31853bSSamuel HollandENABLE_SVE_FOR_NS		:=	0
92*d86ddcefSAndre PrzywaraENABLE_FEAT_MPAM		:=	0
93*d86ddcefSAndre Przywara
94*d86ddcefSAndre PrzywaraWORKAROUND_CVE_2017_5715	:=	0
95*d86ddcefSAndre PrzywaraWORKAROUND_CVE_2018_3639	:=	0
96*d86ddcefSAndre PrzywaraWORKAROUND_CVE_2022_23960	:=	0
97*d86ddcefSAndre PrzywaraWORKAROUND_CVE_2024_7881	:=	0
98*d86ddcefSAndre PrzywaraWORKAROUND_CVE_2024_5660	:=	0
998f31853bSSamuel Holland
100a80490c5SAndre Przywara# Enable workarounds for Cortex-A53 errata. Allwinner uses at least r0p4.
101a80490c5SAndre PrzywaraERRATA_A53_835769		:=	1
102a80490c5SAndre PrzywaraERRATA_A53_843419		:=	1
103a80490c5SAndre PrzywaraERRATA_A53_855873		:=	1
10474665119SSamuel HollandERRATA_A53_1530924		:=	1
105a80490c5SAndre Przywara
1063d36d8e6SSamuel Holland# The traditional U-Boot load address is 160MB into DRAM.
1073d36d8e6SSamuel HollandPRELOADED_BL33_BASE		?=	0x4a000000
1083d36d8e6SSamuel Holland
109a80490c5SAndre Przywara# The reset vector can be changed for each CPU.
110a80490c5SAndre PrzywaraPROGRAMMABLE_RESET_ADDRESS	:=	1
111a80490c5SAndre Przywara
112a80490c5SAndre Przywara# Allow mapping read-only data as execute-never.
113a80490c5SAndre PrzywaraSEPARATE_CODE_AND_RODATA	:=	1
114a80490c5SAndre Przywara
115a80490c5SAndre Przywara# BL31 gets loaded alongside BL33 (U-Boot) by U-Boot's SPL
116a80490c5SAndre PrzywaraRESET_TO_BL31			:=	1
11743060513SAndre Przywara
1188f31853bSSamuel Holland# This platform is single-cluster and does not require coherency setup.
1198f31853bSSamuel HollandWARMBOOT_ENABLE_DCACHE_EARLY	:=	1
120