1*f180a3b7SHieu Nguyen# 2*f180a3b7SHieu Nguyen# Copyright (c) 2025, Renesas Electronics Corporation. All rights reserved. 3*f180a3b7SHieu Nguyen# 4*f180a3b7SHieu Nguyen# SPDX-License-Identifier: BSD-3-Clause 5*f180a3b7SHieu Nguyen# 6*f180a3b7SHieu Nguyen 7*f180a3b7SHieu Nguyen# Cortex A720 is ARMv9.2A and will enable all features we want 8*f180a3b7SHieu NguyenARM_ARCH_MAJOR := 9 9*f180a3b7SHieu NguyenARM_ARCH_MINOR := 2 10*f180a3b7SHieu Nguyen 11*f180a3b7SHieu NguyenPROGRAMMABLE_RESET_ADDRESS := 0 12*f180a3b7SHieu NguyenCOLD_BOOT_SINGLE_CPU := 1 13*f180a3b7SHieu NguyenARM_CCI_PRODUCT_ID := 500 14*f180a3b7SHieu NguyenTRUSTED_BOARD_BOOT := 1 15*f180a3b7SHieu NguyenRESET_TO_BL31 := 1 16*f180a3b7SHieu NguyenGENERATE_COT := 1 17*f180a3b7SHieu NguyenENABLE_SVE_FOR_NS := 1 18*f180a3b7SHieu NguyenENABLE_SVE_FOR_SWD := 0 19*f180a3b7SHieu NguyenMULTI_CONSOLE_API := 1 20*f180a3b7SHieu NguyenINIT_UNUSED_NS_EL2 := 1 21*f180a3b7SHieu Nguyen 22*f180a3b7SHieu NguyenENABLE_FEAT_AMU := 1 23*f180a3b7SHieu NguyenENABLE_AMU_AUXILIARY_COUNTERS := 1 24*f180a3b7SHieu Nguyen 25*f180a3b7SHieu NguyenENABLE_PAUTH := 1 26*f180a3b7SHieu NguyenCTX_INCLUDE_PAUTH_REGS := 1 27*f180a3b7SHieu Nguyen 28*f180a3b7SHieu NguyenCRASH_REPORTING := 1 29*f180a3b7SHieu NguyenHANDLE_EA_EL3_FIRST_NS := 1 30*f180a3b7SHieu NguyenENABLE_STACK_PROTECTOR := strong 31*f180a3b7SHieu Nguyen 32*f180a3b7SHieu NguyenCTX_INCLUDE_AARCH32_REGS := 0 33*f180a3b7SHieu Nguyen 34*f180a3b7SHieu Nguyen# Process SET_SCMI_PARAM flag 35*f180a3b7SHieu Nguyen# 0:Disable(default), 1:Enable 36*f180a3b7SHieu Nguyenifndef SET_SCMI_PARAM 37*f180a3b7SHieu Nguyen SET_SCMI_PARAM := 0 38*f180a3b7SHieu Nguyen $(eval $(call add_define,SET_SCMI_PARAM)) 39*f180a3b7SHieu Nguyenelse 40*f180a3b7SHieu Nguyen ifeq (${SET_SCMI_PARAM}, 0) 41*f180a3b7SHieu Nguyen $(eval $(call add_define,SET_SCMI_PARAM)) 42*f180a3b7SHieu Nguyen else ifeq (${SET_SCMI_PARAM},1) 43*f180a3b7SHieu Nguyen $(eval $(call add_define,SET_SCMI_PARAM)) 44*f180a3b7SHieu Nguyen else 45*f180a3b7SHieu Nguyen $(error "Error:SET_SCMI_PARAM=${SET_SCMI_PARAM} is not supported.") 46*f180a3b7SHieu Nguyen endif 47*f180a3b7SHieu Nguyenendif 48*f180a3b7SHieu Nguyen 49*f180a3b7SHieu Nguyenifeq (${SPD},none) 50*f180a3b7SHieu Nguyen SPD_NONE:=1 51*f180a3b7SHieu Nguyen $(eval $(call add_define,SPD_NONE)) 52*f180a3b7SHieu Nguyenendif 53*f180a3b7SHieu Nguyen 54*f180a3b7SHieu Nguyen# LSI setting common define 55*f180a3b7SHieu NguyenRCAR_X5H:=10 56*f180a3b7SHieu NguyenRCAR_AUTO:=99 57*f180a3b7SHieu Nguyen$(eval $(call add_define,RCAR_X5H)) 58*f180a3b7SHieu Nguyen$(eval $(call add_define,RCAR_AUTO)) 59*f180a3b7SHieu Nguyen$(eval $(call add_define,PLAT_EXTRA_LD_SCRIPT)) 60*f180a3b7SHieu Nguyen 61*f180a3b7SHieu Nguyenifndef LSI 62*f180a3b7SHieu Nguyen $(error "Error: Unknown LSI. Please use LSI=<LSI name> to specify the LSI") 63*f180a3b7SHieu Nguyenelse 64*f180a3b7SHieu Nguyen ifeq (${LSI},AUTO) 65*f180a3b7SHieu Nguyen RCAR_LSI:=${RCAR_AUTO} 66*f180a3b7SHieu Nguyen else ifeq (${LSI},X5H) 67*f180a3b7SHieu Nguyen RCAR_LSI:=${RCAR_X5H} 68*f180a3b7SHieu Nguyen else 69*f180a3b7SHieu Nguyen $(error "Error: ${LSI} is not supported.") 70*f180a3b7SHieu Nguyen endif 71*f180a3b7SHieu Nguyen $(eval $(call add_define,RCAR_LSI)) 72*f180a3b7SHieu Nguyenendif 73*f180a3b7SHieu Nguyen 74*f180a3b7SHieu Nguyen# Disable workarounds unnecessary for Cortex-A720AE 75*f180a3b7SHieu NguyenWORKAROUND_CVE_2017_5715 := 0 76*f180a3b7SHieu NguyenWORKAROUND_CVE_2022_23960 := 0 77*f180a3b7SHieu NguyenERRATA_A720_AE_3699562 := 1 78*f180a3b7SHieu Nguyen 79*f180a3b7SHieu NguyenUSE_COHERENT_MEM := 0 80*f180a3b7SHieu NguyenHW_ASSISTED_COHERENCY := 1 81*f180a3b7SHieu Nguyen 82*f180a3b7SHieu NguyenPLAT_INCLUDES := -Iplat/renesas/rcar_gen5/include \ 83*f180a3b7SHieu Nguyen -Iplat/renesas/rcar_gen5 \ 84*f180a3b7SHieu Nguyen -Iplat/renesas/common/include \ 85*f180a3b7SHieu Nguyen -Idrivers/renesas/common/scif \ 86*f180a3b7SHieu Nguyen -Idrivers/renesas/common/timer \ 87*f180a3b7SHieu Nguyen -Idrivers/renesas/rcar_gen5/pwrc \ 88*f180a3b7SHieu Nguyen -Idrivers/arm/css/scmi \ 89*f180a3b7SHieu Nguyen -Iinclude/drivers 90*f180a3b7SHieu Nguyen 91*f180a3b7SHieu Nguyenifneq (${ENABLE_STACK_PROTECTOR},0) 92*f180a3b7SHieu NguyenBL_COMMON_SOURCES += plat/renesas/common/rcar_stack_protector.c 93*f180a3b7SHieu Nguyenendif 94*f180a3b7SHieu Nguyen 95*f180a3b7SHieu Nguyen# R-Car Gen5 platform uses Arm GIC-Fainlight-AE, 96*f180a3b7SHieu Nguyen# which is successor of GIC-700 based on GICv4.1 97*f180a3b7SHieu NguyenGIC_ENABLE_V4_EXTN := 1 98*f180a3b7SHieu NguyenGIC_EXT_INTID := 1 99*f180a3b7SHieu Nguyen 100*f180a3b7SHieu Nguyen# GIC-600 configuration 101*f180a3b7SHieu NguyenGICV3_SUPPORT_GIC600 := 1 102*f180a3b7SHieu Nguyen# Include GICv3 driver files 103*f180a3b7SHieu NguyenUSE_GIC_DRIVER := 3 104*f180a3b7SHieu Nguyen 105*f180a3b7SHieu NguyenBL31_SOURCES += ${RCAR_GIC_SOURCES} \ 106*f180a3b7SHieu Nguyen lib/cpus/aarch64/cortex_a720_ae.S \ 107*f180a3b7SHieu Nguyen plat/common/plat_psci_common.c \ 108*f180a3b7SHieu Nguyen plat/renesas/rcar_gen5/plat_topology.c \ 109*f180a3b7SHieu Nguyen plat/renesas/rcar_gen5/aarch64/plat_helpers.S \ 110*f180a3b7SHieu Nguyen plat/renesas/rcar_gen5/aarch64/platform_common.c \ 111*f180a3b7SHieu Nguyen plat/renesas/rcar_gen5/bl31_plat_setup.c \ 112*f180a3b7SHieu Nguyen plat/renesas/rcar_gen5/plat_pm.c \ 113*f180a3b7SHieu Nguyen plat/renesas/rcar_gen5/plat_pm_scmi.c \ 114*f180a3b7SHieu Nguyen plat/renesas/rcar_gen5/rcar_common.c \ 115*f180a3b7SHieu Nguyen drivers/delay_timer/delay_timer.c \ 116*f180a3b7SHieu Nguyen drivers/delay_timer/generic_delay_timer.c \ 117*f180a3b7SHieu Nguyen drivers/renesas/common/scif/scif-common.c \ 118*f180a3b7SHieu Nguyen drivers/renesas/common/scif/scif_helpers.S \ 119*f180a3b7SHieu Nguyen drivers/renesas/common/timer/timer.c \ 120*f180a3b7SHieu Nguyen drivers/renesas/rcar_gen5/pwrc/pwrc.c \ 121*f180a3b7SHieu Nguyen drivers/renesas/rcar_gen5/scif/scif.c \ 122*f180a3b7SHieu Nguyen drivers/arm/cci/cci.c \ 123*f180a3b7SHieu Nguyen drivers/arm/css/scmi/scmi_common.c \ 124*f180a3b7SHieu Nguyen drivers/arm/css/scmi/scmi_pwr_dmn_proto.c \ 125*f180a3b7SHieu Nguyen drivers/arm/css/scmi/scmi_sys_pwr_proto.c 126*f180a3b7SHieu Nguyen 127*f180a3b7SHieu Nguyeninclude lib/xlat_tables_v2/xlat_tables.mk 128*f180a3b7SHieu NguyenPLAT_BL_COMMON_SOURCES += ${XLAT_TABLES_LIB_SRCS} 129*f180a3b7SHieu Nguyen 130*f180a3b7SHieu Nguyen# Pointer Authentication sources 131*f180a3b7SHieu Nguyenifeq (${ENABLE_PAUTH}, 1) 132*f180a3b7SHieu NguyenPLAT_BL_COMMON_SOURCES += plat/arm/common/aarch64/arm_pauth.c 133*f180a3b7SHieu Nguyenendif 134*f180a3b7SHieu Nguyen 135*f180a3b7SHieu Nguyen# build the layout images for the bootrom and the necessary srecords 136*f180a3b7SHieu Nguyenrcar: rcar_srecord 137*f180a3b7SHieu Nguyendistclean realclean clean: clean_srecord 138*f180a3b7SHieu Nguyen 139*f180a3b7SHieu Nguyen# srecords 140*f180a3b7SHieu NguyenSREC_PATH = ${BUILD_PLAT} 141*f180a3b7SHieu NguyenBL31_ELF_SRC = ${SREC_PATH}/bl31/bl31.elf 142*f180a3b7SHieu Nguyen 143*f180a3b7SHieu Nguyenclean_srecord: 144*f180a3b7SHieu Nguyen @echo "clean bl31 srecs" 145*f180a3b7SHieu Nguyen rm -f ${SREC_PATH}/bl31.srec 146*f180a3b7SHieu Nguyen 147*f180a3b7SHieu Nguyen.PHONY: rcar_srecord 148*f180a3b7SHieu Nguyenrcar_srecord: $(BL31_ELF_SRC) 149*f180a3b7SHieu Nguyen @echo "generating srec: ${SREC_PATH}/bl31.srec" 150*f180a3b7SHieu Nguyen $(Q)$($(ARCH)-oc) -O srec --srec-forceS3 ${BL31_ELF_SRC} ${SREC_PATH}/bl31.srec 151*f180a3b7SHieu Nguyen 152