#
# Copyright (c) 2019-2023, Arm Limited and Contributors. All rights reserved.
#
# SPDX-License-Identifier: BSD-3-Clause
#

# Making sure the corstone700 platform type is specified
ifeq ($(filter ${TARGET_PLATFORM}, fpga fvp),)
        $(error TARGET_PLATFORM must be fpga or fvp)
endif

CORSTONE700_CPU_LIBS	+=	lib/cpus/aarch32/cortex_a32.S

BL32_SOURCES		+=	plat/arm/common/aarch32/arm_helpers.S	\
				plat/arm/common/arm_console.c	\
				plat/arm/common/arm_common.c	\
				lib/xlat_tables/aarch32/xlat_tables.c	\
				lib/xlat_tables/xlat_tables_common.c	\
				${CORSTONE700_CPU_LIBS}	\
				plat/arm/board/corstone700/common/drivers/mhu/corstone700_mhu.c

PLAT_INCLUDES		:=	-Iplat/arm/board/corstone700/common/include	\
				-Iinclude/plat/arm/common	\
				-Iplat/arm/board/corstone700/common/drivers/mhu

NEED_BL32		:=	yes

ifeq (${AARCH32_SP},none)
    $(error Variable AARCH32_SP has to be set for AArch32)
endif

# Include GICv2 driver files
include drivers/arm/gic/v2/gicv2.mk

CORSTONE700_GIC_SOURCES	:=	${GICV2_SOURCES}			\
				plat/common/plat_gicv2.c		\
				plat/arm/common/arm_gicv2.c

# BL1/BL2 Image not a part of the capsule Image for Corstone700
override NEED_BL1	:=	no
override NEED_BL2	:=	no
override NEED_BL2U	:=	no
override NEED_BL33	:=	yes

#TFA for Corstone700 starts from BL32
override RESET_TO_SP_MIN	:=	1

#Device tree
CORSTONE700_HW_CONFIG_DTS	:=	fdts/corstone700_${TARGET_PLATFORM}.dts
CORSTONE700_HW_CONFIG		:=	${BUILD_PLAT}/fdts/corstone700_${TARGET_PLATFORM}.dtb
FDT_SOURCES			+=	${CORSTONE700_HW_CONFIG_DTS}
$(eval CORSTONE700_HW_CONFIG	:=	${BUILD_PLAT}/$(patsubst %.dts,%.dtb,$(CORSTONE700_HW_CONFIG_DTS)))

# Add the HW_CONFIG to FIP and specify the same to certtool
$(eval $(call TOOL_ADD_PAYLOAD,${CORSTONE700_HW_CONFIG},--hw-config,${CORSTONE700_HW_CONFIG}))

# Check for Linux kernel as a BL33 image by default
$(eval $(call add_define,ARM_LINUX_KERNEL_AS_BL33))
  ifndef ARM_PRELOADED_DTB_BASE
    $(error "ARM_PRELOADED_DTB_BASE must be set if ARM_LINUX_KERNEL_AS_BL33 is used.")
  endif
  $(eval $(call add_define,ARM_PRELOADED_DTB_BASE))

# Adding TARGET_PLATFORM as a GCC define (-D option)
$(eval $(call add_define,TARGET_PLATFORM_$(call uppercase,${TARGET_PLATFORM})))

include plat/arm/board/common/board_common.mk
