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