1*91f16700Schasinglulu# 2*91f16700Schasinglulu# Copyright (c) 2017-2018, Arm Limited and Contributors. All rights reserved. 3*91f16700Schasinglulu# Copyright (c) 2018-2021, The Linux Foundation. All rights reserved. 4*91f16700Schasinglulu# 5*91f16700Schasinglulu# SPDX-License-Identifier: BSD-3-Clause 6*91f16700Schasinglulu# 7*91f16700Schasinglulu 8*91f16700Schasinglulu# Make for SC7280 QTI platform. 9*91f16700Schasinglulu 10*91f16700SchasingluluQTI_PLAT_PATH := plat/qti 11*91f16700SchasingluluCHIPSET := ${PLAT} 12*91f16700Schasinglulu 13*91f16700Schasinglulu# Turn On Separate code & data. 14*91f16700SchasingluluSEPARATE_CODE_AND_RODATA := 1 15*91f16700SchasingluluUSE_COHERENT_MEM := 0 16*91f16700SchasingluluWARMBOOT_ENABLE_DCACHE_EARLY := 1 17*91f16700SchasingluluHW_ASSISTED_COHERENCY := 1 18*91f16700Schasinglulu 19*91f16700Schasinglulu#Enable errata configs for cortex_a78 and cortex_a55 20*91f16700SchasingluluERRATA_A55_1530923 := 1 21*91f16700SchasingluluERRATA_A78_1941498 := 1 22*91f16700SchasingluluERRATA_A78_1951500 := 1 23*91f16700SchasingluluERRATA_A78_2132060 := 1 24*91f16700Schasinglulu 25*91f16700Schasinglulu# Disable the PSCI platform compatibility layer 26*91f16700SchasingluluENABLE_PLAT_COMPAT := 0 27*91f16700Schasinglulu 28*91f16700Schasinglulu# Enable PSCI v1.0 extended state ID format 29*91f16700SchasingluluPSCI_EXTENDED_STATE_ID := 1 30*91f16700SchasingluluARM_RECOM_STATE_ID_ENC := 1 31*91f16700SchasingluluPSCI_OS_INIT_MODE := 1 32*91f16700Schasinglulu 33*91f16700SchasingluluCOLD_BOOT_SINGLE_CPU := 1 34*91f16700SchasingluluPROGRAMMABLE_RESET_ADDRESS := 1 35*91f16700Schasinglulu 36*91f16700SchasingluluRESET_TO_BL31 := 0 37*91f16700Schasinglulu 38*91f16700SchasingluluQTI_SDI_BUILD := 0 39*91f16700Schasinglulu$(eval $(call assert_boolean,QTI_SDI_BUILD)) 40*91f16700Schasinglulu$(eval $(call add_define,QTI_SDI_BUILD)) 41*91f16700Schasinglulu 42*91f16700Schasinglulu#disable CTX_INCLUDE_AARCH32_REGS to support sc7280 gold cores 43*91f16700Schasingluluoverride CTX_INCLUDE_AARCH32_REGS := 0 44*91f16700SchasingluluWORKAROUND_CVE_2017_5715 := 0 45*91f16700SchasingluluDYNAMIC_WORKAROUND_CVE_2018_3639 := 1 46*91f16700Schasinglulu# Enable stack protector. 47*91f16700SchasingluluENABLE_STACK_PROTECTOR := strong 48*91f16700Schasinglulu 49*91f16700Schasinglulu 50*91f16700SchasingluluQTI_EXTERNAL_INCLUDES := -I${QTI_PLAT_PATH}/${CHIPSET}/inc \ 51*91f16700Schasinglulu -I${QTI_PLAT_PATH}/common/inc \ 52*91f16700Schasinglulu -I${QTI_PLAT_PATH}/common/inc/$(ARCH) \ 53*91f16700Schasinglulu -I${QTI_PLAT_PATH}/qtiseclib/inc \ 54*91f16700Schasinglulu -I${QTI_PLAT_PATH}/qtiseclib/inc/${CHIPSET} \ 55*91f16700Schasinglulu 56*91f16700SchasingluluQTI_BL31_SOURCES := $(QTI_PLAT_PATH)/common/src/$(ARCH)/qti_helpers.S \ 57*91f16700Schasinglulu $(QTI_PLAT_PATH)/common/src/$(ARCH)/qti_kryo6_silver.S \ 58*91f16700Schasinglulu $(QTI_PLAT_PATH)/common/src/$(ARCH)/qti_kryo6_gold.S \ 59*91f16700Schasinglulu $(QTI_PLAT_PATH)/common/src/$(ARCH)/qti_uart_console.S \ 60*91f16700Schasinglulu $(QTI_PLAT_PATH)/common/src/pm_ps_hold.c \ 61*91f16700Schasinglulu $(QTI_PLAT_PATH)/common/src/qti_stack_protector.c \ 62*91f16700Schasinglulu $(QTI_PLAT_PATH)/common/src/qti_common.c \ 63*91f16700Schasinglulu $(QTI_PLAT_PATH)/common/src/qti_bl31_setup.c \ 64*91f16700Schasinglulu $(QTI_PLAT_PATH)/common/src/qti_gic_v3.c \ 65*91f16700Schasinglulu $(QTI_PLAT_PATH)/common/src/qti_interrupt_svc.c \ 66*91f16700Schasinglulu $(QTI_PLAT_PATH)/common/src/qti_syscall.c \ 67*91f16700Schasinglulu $(QTI_PLAT_PATH)/common/src/qti_topology.c \ 68*91f16700Schasinglulu $(QTI_PLAT_PATH)/common/src/qti_pm.c \ 69*91f16700Schasinglulu $(QTI_PLAT_PATH)/common/src/qti_rng.c \ 70*91f16700Schasinglulu $(QTI_PLAT_PATH)/common/src/spmi_arb.c \ 71*91f16700Schasinglulu $(QTI_PLAT_PATH)/qtiseclib/src/qtiseclib_cb_interface.c \ 72*91f16700Schasinglulu 73*91f16700Schasinglulu 74*91f16700SchasingluluPLAT_INCLUDES := -Iinclude/plat/common/ \ 75*91f16700Schasinglulu 76*91f16700SchasingluluPLAT_INCLUDES += ${QTI_EXTERNAL_INCLUDES} 77*91f16700Schasinglulu 78*91f16700Schasingluluinclude lib/xlat_tables_v2/xlat_tables.mk 79*91f16700SchasingluluPLAT_BL_COMMON_SOURCES += ${XLAT_TABLES_LIB_SRCS} \ 80*91f16700Schasinglulu plat/common/aarch64/crash_console_helpers.S \ 81*91f16700Schasinglulu common/desc_image_load.c \ 82*91f16700Schasinglulu lib/bl_aux_params/bl_aux_params.c \ 83*91f16700Schasinglulu 84*91f16700Schasingluluinclude lib/coreboot/coreboot.mk 85*91f16700Schasinglulu 86*91f16700Schasinglulu#PSCI Sources. 87*91f16700SchasingluluPSCI_SOURCES := plat/common/plat_psci_common.c \ 88*91f16700Schasinglulu 89*91f16700Schasinglulu# GIC-600 configuration 90*91f16700SchasingluluGICV3_SUPPORT_GIC600 := 1 91*91f16700Schasinglulu# Include GICv3 driver files 92*91f16700Schasingluluinclude drivers/arm/gic/v3/gicv3.mk 93*91f16700Schasinglulu 94*91f16700Schasinglulu#Timer sources 95*91f16700SchasingluluTIMER_SOURCES := drivers/delay_timer/generic_delay_timer.c \ 96*91f16700Schasinglulu drivers/delay_timer/delay_timer.c \ 97*91f16700Schasinglulu 98*91f16700Schasinglulu#GIC sources. 99*91f16700SchasingluluGIC_SOURCES := plat/common/plat_gicv3.c \ 100*91f16700Schasinglulu ${GICV3_SOURCES} \ 101*91f16700Schasinglulu 102*91f16700SchasingluluCPU_SOURCES := lib/cpus/aarch64/cortex_a78.S \ 103*91f16700Schasinglulu lib/cpus/aarch64/cortex_a55.S \ 104*91f16700Schasinglulu 105*91f16700SchasingluluBL31_SOURCES += ${QTI_BL31_SOURCES} \ 106*91f16700Schasinglulu ${PSCI_SOURCES} \ 107*91f16700Schasinglulu ${GIC_SOURCES} \ 108*91f16700Schasinglulu ${TIMER_SOURCES} \ 109*91f16700Schasinglulu ${CPU_SOURCES} \ 110*91f16700Schasinglulu 111*91f16700SchasingluluLIB_QTI_PATH := ${QTI_PLAT_PATH}/qtiseclib/lib/${CHIPSET} 112*91f16700Schasinglulu 113*91f16700Schasinglulu 114*91f16700Schasinglulu# Override this on the command line to point to the qtiseclib library which 115*91f16700Schasinglulu# will be available in coreboot.org 116*91f16700SchasingluluQTISECLIB_PATH ?= 117*91f16700Schasinglulu 118*91f16700Schasingluluifeq ($(QTISECLIB_PATH),) 119*91f16700Schasinglulu# if No lib then use stub implementation for qtiseclib interface 120*91f16700Schasinglulu$(warning QTISECLIB_PATH is not provided while building, using stub implementation. \ 121*91f16700Schasinglulu Please refer docs/plat/qti.rst for more details \ 122*91f16700Schasinglulu THIS FIRMWARE WILL NOT BOOT!) 123*91f16700SchasingluluBL31_SOURCES += plat/qti/qtiseclib/src/qtiseclib_interface_stub.c 124*91f16700Schasingluluelse 125*91f16700Schasinglulu# use library provided by QTISECLIB_PATH 126*91f16700SchasingluluLDFLAGS += -L $(dir $(QTISECLIB_PATH)) 127*91f16700SchasingluluLDLIBS += -l$(patsubst lib%.a,%,$(notdir $(QTISECLIB_PATH))) 128*91f16700Schasingluluendif 129*91f16700Schasinglulu 130