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