1b45b5bacSMarek Vasut# 2b45b5bacSMarek Vasut# Copyright (c) 2018-2025, Renesas Electronics Corporation. All rights reserved. 3b45b5bacSMarek Vasut# 4b45b5bacSMarek Vasut# SPDX-License-Identifier: BSD-3-Clause 5b45b5bacSMarek Vasut# 6b45b5bacSMarek Vasut 7b45b5bacSMarek VasutPROGRAMMABLE_RESET_ADDRESS := 0 8b45b5bacSMarek VasutCOLD_BOOT_SINGLE_CPU := 1 9b45b5bacSMarek VasutARM_CCI_PRODUCT_ID := 500 10b45b5bacSMarek VasutTRUSTED_BOARD_BOOT := 1 11b45b5bacSMarek VasutRESET_TO_BL31 := 1 12b45b5bacSMarek VasutGENERATE_COT := 1 13b45b5bacSMarek VasutENABLE_SVE_FOR_NS := 0 14b45b5bacSMarek VasutMULTI_CONSOLE_API := 1 15b45b5bacSMarek Vasut 16b45b5bacSMarek VasutCRASH_REPORTING := 1 17b45b5bacSMarek VasutHANDLE_EA_EL3_FIRST_NS := 1 18b45b5bacSMarek VasutENABLE_STACK_PROTECTOR := strong 19b45b5bacSMarek Vasut 20b45b5bacSMarek Vasutifndef PTP_NONSECURE_ACCESS 21b45b5bacSMarek Vasut PTP_NONSECURE_ACCESS:=0 22b45b5bacSMarek Vasutendif 23b45b5bacSMarek Vasut$(eval $(call add_define,PTP_NONSECURE_ACCESS)) 24b45b5bacSMarek Vasut 25b45b5bacSMarek Vasutifeq (${SPD},none) 26b45b5bacSMarek Vasut SPD_NONE:=1 27b45b5bacSMarek Vasut $(eval $(call add_define,SPD_NONE)) 28b45b5bacSMarek Vasutendif 29b45b5bacSMarek Vasut 30b45b5bacSMarek Vasut# LSI setting common define 31b45b5bacSMarek VasutRCAR_S4:=9 32b45b5bacSMarek VasutRCAR_V3U:=10 33b45b5bacSMarek VasutRCAR_V4H:=11 34b45b5bacSMarek VasutRCAR_V4M:=12 35b45b5bacSMarek VasutRCAR_AUTO:=99 36b45b5bacSMarek Vasut$(eval $(call add_define,RCAR_S4)) 37b45b5bacSMarek Vasut$(eval $(call add_define,RCAR_V3U)) 38b45b5bacSMarek Vasut$(eval $(call add_define,RCAR_V4H)) 39b45b5bacSMarek Vasut$(eval $(call add_define,RCAR_V4M)) 40b45b5bacSMarek Vasut$(eval $(call add_define,RCAR_AUTO)) 415be66449SBoyan KaratotevPLAT_EXTRA_LD_SCRIPT := 1 42b45b5bacSMarek Vasut 43b45b5bacSMarek Vasutifndef LSI 44b45b5bacSMarek Vasut $(error "Error: Unknown LSI. Please use LSI=<LSI name> to specify the LSI") 45b45b5bacSMarek Vasutelse 46b45b5bacSMarek Vasut ifeq (${LSI},AUTO) 47b45b5bacSMarek Vasut RCAR_LSI:=${RCAR_AUTO} 48b45b5bacSMarek Vasut else ifeq (${LSI},S4) 49b45b5bacSMarek Vasut RCAR_LSI:=${RCAR_S4} 50b45b5bacSMarek Vasut else ifeq (${LSI},V3U) 51b45b5bacSMarek Vasut RCAR_LSI:=${RCAR_V3U} 52b45b5bacSMarek Vasut else ifeq (${LSI},V4H) 53b45b5bacSMarek Vasut RCAR_LSI:=${RCAR_V4H} 54b45b5bacSMarek Vasut else ifeq (${LSI},V4M) 55b45b5bacSMarek Vasut RCAR_LSI:=${RCAR_V4M} 56b45b5bacSMarek Vasut else 57b45b5bacSMarek Vasut $(error "Error: ${LSI} is not supported.") 58b45b5bacSMarek Vasut endif 59b45b5bacSMarek Vasut $(eval $(call add_define,RCAR_LSI)) 60b45b5bacSMarek Vasutendif 61b45b5bacSMarek Vasut 62b45b5bacSMarek Vasutifeq (${RCAR_LSI},${RCAR_S4}) 63b45b5bacSMarek Vasut# Enable workarounds for selected Cortex-A55 errata. 64b45b5bacSMarek VasutERRATA_A55_1530923 := 1 65b45b5bacSMarek VasutBL31_SOURCES += lib/cpus/aarch64/cortex_a55.S 66b45b5bacSMarek Vasutelse 67b45b5bacSMarek Vasut# Enable workarounds for selected Cortex-A76 errata. 68b45b5bacSMarek VasutDYNAMIC_WORKAROUND_CVE_2018_3639 := 1 69b45b5bacSMarek VasutERRATA_A76_1073348 :=1 70b45b5bacSMarek VasutERRATA_A76_1130799 :=1 71b45b5bacSMarek VasutERRATA_A76_1220197 :=1 72b45b5bacSMarek VasutERRATA_A76_1257314 :=1 73b45b5bacSMarek VasutERRATA_A76_1262606 :=1 74b45b5bacSMarek VasutERRATA_A76_1262888 :=1 75b45b5bacSMarek VasutERRATA_A76_1275112 :=1 76b45b5bacSMarek VasutERRATA_A76_1286807 :=1 77b45b5bacSMarek VasutERRATA_A76_1946160 :=1 78b45b5bacSMarek VasutERRATA_A76_2743102 :=1 79b45b5bacSMarek Vasut 80b45b5bacSMarek VasutBL31_SOURCES += lib/cpus/aarch64/cortex_a76.S 81b45b5bacSMarek Vasutendif 82b45b5bacSMarek Vasut 83b45b5bacSMarek VasutUSE_COHERENT_MEM := 0 84b45b5bacSMarek VasutHW_ASSISTED_COHERENCY := 1 85b45b5bacSMarek Vasut 86b45b5bacSMarek VasutPLAT_INCLUDES := -Iplat/renesas/rcar_gen4/include \ 87b45b5bacSMarek Vasut -Iplat/renesas/rcar_gen4 \ 88*06f8eb57SMarek Vasut -Iplat/renesas/common/include \ 893c6170b6SMarek Vasut -Idrivers/renesas/common/scif \ 9092196d4fSMarek Vasut -Idrivers/renesas/common/timer \ 91b45b5bacSMarek Vasut -Idrivers/renesas/rcar_gen4/pwrc \ 92b45b5bacSMarek Vasut -Idrivers/renesas/rcar_gen4/ptp \ 93b45b5bacSMarek Vasut -Idrivers/renesas/rcar_gen4/mssr 94b45b5bacSMarek Vasut 95b45b5bacSMarek Vasutifneq (${ENABLE_STACK_PROTECTOR},0) 96223d989eSMarek VasutBL_COMMON_SOURCES += plat/renesas/common/rcar_stack_protector.c 97b45b5bacSMarek Vasutendif 98b45b5bacSMarek Vasut 99b45b5bacSMarek Vasut# GIC-600 configuration 100b45b5bacSMarek Vasut#GICV3_IMPL := GIC600 101b45b5bacSMarek VasutGICV3_SUPPORT_GIC600 := 1 102b45b5bacSMarek Vasut# Include GICv3 driver files 103b45b5bacSMarek VasutUSE_GIC_DRIVER := 3 104b45b5bacSMarek Vasut 105b45b5bacSMarek VasutBL31_SOURCES += ${RCAR_GIC_SOURCES} \ 106b45b5bacSMarek Vasut plat/common/plat_psci_common.c \ 107b45b5bacSMarek Vasut plat/renesas/rcar_gen4/plat_topology.c \ 108b45b5bacSMarek Vasut plat/renesas/rcar_gen4/aarch64/plat_helpers.S \ 109b45b5bacSMarek Vasut plat/renesas/rcar_gen4/aarch64/platform_common.c \ 110b45b5bacSMarek Vasut plat/renesas/rcar_gen4/bl31_plat_setup.c \ 111b45b5bacSMarek Vasut plat/renesas/rcar_gen4/plat_pm.c \ 112b45b5bacSMarek Vasut plat/renesas/rcar_gen4/rcar_common.c \ 113b45b5bacSMarek Vasut drivers/delay_timer/delay_timer.c \ 114b45b5bacSMarek Vasut drivers/delay_timer/generic_delay_timer.c \ 11557e22e07SMarek Vasut drivers/renesas/common/pwrc/call_sram.S \ 1163c6170b6SMarek Vasut drivers/renesas/common/scif/scif-common.c \ 1179979a20aSMarek Vasut drivers/renesas/common/scif/scif_helpers.S \ 11892196d4fSMarek Vasut drivers/renesas/common/timer/timer.c \ 119b45b5bacSMarek Vasut drivers/renesas/rcar_gen4/pwrc/pwrc.c \ 120b45b5bacSMarek Vasut drivers/renesas/rcar_gen4/scif/scif.c \ 121b45b5bacSMarek Vasut drivers/renesas/rcar_gen4/mssr/mssr.c \ 122b45b5bacSMarek Vasut drivers/renesas/rcar_gen4/ptp/ptp.c \ 123b45b5bacSMarek Vasut drivers/arm/cci/cci.c 124b45b5bacSMarek Vasut 125b45b5bacSMarek Vasutinclude lib/xlat_tables_v2/xlat_tables.mk 126b45b5bacSMarek VasutPLAT_BL_COMMON_SOURCES += ${XLAT_TABLES_LIB_SRCS} 127b45b5bacSMarek Vasut 128b45b5bacSMarek Vasut# build the layout images for the bootrom and the necessary srecords 129b45b5bacSMarek Vasutrcar: rcar_srecord 130b45b5bacSMarek Vasutdistclean realclean clean: clean_srecord 131b45b5bacSMarek Vasut 132b45b5bacSMarek Vasut# srecords 133b45b5bacSMarek VasutSREC_PATH = ${BUILD_PLAT} 134b45b5bacSMarek VasutBL31_ELF_SRC = ${SREC_PATH}/bl31/bl31.elf 135b45b5bacSMarek Vasut 136b45b5bacSMarek Vasutclean_srecord: 137b45b5bacSMarek Vasut @echo "clean bl31 srecs" 138b45b5bacSMarek Vasut rm -f ${SREC_PATH}/bl31.srec 139b45b5bacSMarek Vasut 140b45b5bacSMarek Vasut.PHONY: rcar_srecord 141b45b5bacSMarek Vasutrcar_srecord: $(BL31_ELF_SRC) 142b45b5bacSMarek Vasut @echo "generating srec: ${SREC_PATH}/bl31.srec" 143b45b5bacSMarek Vasut $(Q)$($(ARCH)-oc) -O srec --srec-forceS3 ${BL31_ELF_SRC} ${SREC_PATH}/bl31.srec 144b45b5bacSMarek Vasut 145