1*91f16700Schasinglulu# 2*91f16700Schasinglulu# Copyright (c) 2018-2021, Renesas Electronics Corporation. All rights reserved. 3*91f16700Schasinglulu# 4*91f16700Schasinglulu# SPDX-License-Identifier: BSD-3-Clause 5*91f16700Schasinglulu# 6*91f16700Schasinglulu 7*91f16700Schasingluluinclude plat/renesas/common/common.mk 8*91f16700Schasinglulu 9*91f16700Schasingluluifndef LSI 10*91f16700Schasinglulu $(error "Error: Unknown LSI. Please use LSI=<LSI name> to specify the LSI") 11*91f16700Schasingluluelse 12*91f16700Schasinglulu ifeq (${LSI},AUTO) 13*91f16700Schasinglulu RCAR_LSI:=${RCAR_AUTO} 14*91f16700Schasinglulu else ifeq (${LSI},G2M) 15*91f16700Schasinglulu RCAR_LSI:=${RZ_G2M} 16*91f16700Schasinglulu ifndef LSI_CUT 17*91f16700Schasinglulu # enable compatible function. 18*91f16700Schasinglulu RCAR_LSI_CUT_COMPAT := 1 19*91f16700Schasinglulu $(eval $(call add_define,RCAR_LSI_CUT_COMPAT)) 20*91f16700Schasinglulu else 21*91f16700Schasinglulu # disable compatible function. 22*91f16700Schasinglulu ifeq (${LSI_CUT},10) 23*91f16700Schasinglulu RCAR_LSI_CUT:=0 24*91f16700Schasinglulu else ifeq (${LSI_CUT},11) 25*91f16700Schasinglulu RCAR_LSI_CUT:=1 26*91f16700Schasinglulu else ifeq (${LSI_CUT},13) 27*91f16700Schasinglulu RCAR_LSI_CUT:=3 28*91f16700Schasinglulu else ifeq (${LSI_CUT},30) 29*91f16700Schasinglulu RCAR_LSI_CUT:=20 30*91f16700Schasinglulu else 31*91f16700Schasinglulu $(error "Error: ${LSI_CUT} is not supported.") 32*91f16700Schasinglulu endif 33*91f16700Schasinglulu $(eval $(call add_define,RCAR_LSI_CUT)) 34*91f16700Schasinglulu endif 35*91f16700Schasinglulu else ifeq (${LSI},G2H) 36*91f16700Schasinglulu RCAR_LSI:=${RZ_G2H} 37*91f16700Schasinglulu ifndef LSI_CUT 38*91f16700Schasinglulu # enable compatible function. 39*91f16700Schasinglulu RCAR_LSI_CUT_COMPAT := 1 40*91f16700Schasinglulu $(eval $(call add_define,RCAR_LSI_CUT_COMPAT)) 41*91f16700Schasinglulu else 42*91f16700Schasinglulu # disable compatible function. 43*91f16700Schasinglulu ifeq (${LSI_CUT},30) 44*91f16700Schasinglulu RCAR_LSI_CUT:=20 45*91f16700Schasinglulu else 46*91f16700Schasinglulu $(error "Error: ${LSI_CUT} is not supported.") 47*91f16700Schasinglulu endif 48*91f16700Schasinglulu $(eval $(call add_define,RCAR_LSI_CUT)) 49*91f16700Schasinglulu endif 50*91f16700Schasinglulu else ifeq (${LSI},G2N) 51*91f16700Schasinglulu RCAR_LSI:=${RZ_G2N} 52*91f16700Schasinglulu ifndef LSI_CUT 53*91f16700Schasinglulu # enable compatible function. 54*91f16700Schasinglulu RCAR_LSI_CUT_COMPAT := 1 55*91f16700Schasinglulu $(eval $(call add_define,RCAR_LSI_CUT_COMPAT)) 56*91f16700Schasinglulu else 57*91f16700Schasinglulu # disable compatible function. 58*91f16700Schasinglulu ifeq (${LSI_CUT},10) 59*91f16700Schasinglulu RCAR_LSI_CUT:=0 60*91f16700Schasinglulu else ifeq (${LSI_CUT},11) 61*91f16700Schasinglulu RCAR_LSI_CUT:=1 62*91f16700Schasinglulu else 63*91f16700Schasinglulu $(error "Error: ${LSI_CUT} is not supported.") 64*91f16700Schasinglulu endif 65*91f16700Schasinglulu $(eval $(call add_define,RCAR_LSI_CUT)) 66*91f16700Schasinglulu endif 67*91f16700Schasinglulu else ifeq (${LSI},G2E) 68*91f16700Schasinglulu RCAR_LSI:=${RZ_G2E} 69*91f16700Schasinglulu ifndef LSI_CUT 70*91f16700Schasinglulu # enable compatible function. 71*91f16700Schasinglulu RCAR_LSI_CUT_COMPAT := 1 72*91f16700Schasinglulu $(eval $(call add_define,RCAR_LSI_CUT_COMPAT)) 73*91f16700Schasinglulu else 74*91f16700Schasinglulu # disable compatible function. 75*91f16700Schasinglulu ifeq (${LSI_CUT},10) 76*91f16700Schasinglulu RCAR_LSI_CUT:=0 77*91f16700Schasinglulu else ifeq (${LSI_CUT},11) 78*91f16700Schasinglulu RCAR_LSI_CUT:=1 79*91f16700Schasinglulu else 80*91f16700Schasinglulu $(error "Error: ${LSI_CUT} is not supported.") 81*91f16700Schasinglulu endif 82*91f16700Schasinglulu $(eval $(call add_define,RCAR_LSI_CUT)) 83*91f16700Schasinglulu endif 84*91f16700Schasinglulu else 85*91f16700Schasinglulu $(error "Error: ${LSI} is not supported.") 86*91f16700Schasinglulu endif 87*91f16700Schasinglulu $(eval $(call add_define,RCAR_LSI)) 88*91f16700Schasingluluendif 89*91f16700Schasinglulu 90*91f16700Schasinglulu# Process RZG_LCS_STATE_DETECTION_ENABLE flag 91*91f16700Schasinglulu# Enable to get LCS state information 92*91f16700Schasingluluifndef RZG_LCS_STATE_DETECTION_ENABLE 93*91f16700SchasingluluRZG_LCS_STATE_DETECTION_ENABLE := 0 94*91f16700Schasingluluendif 95*91f16700Schasinglulu$(eval $(call add_define,RZG_LCS_STATE_DETECTION_ENABLE)) 96*91f16700Schasinglulu 97*91f16700Schasinglulu# Process RCAR_SECURE_BOOT flag 98*91f16700Schasingluluifndef RCAR_SECURE_BOOT 99*91f16700SchasingluluRCAR_SECURE_BOOT := 0 100*91f16700Schasingluluendif 101*91f16700Schasinglulu$(eval $(call add_define,RCAR_SECURE_BOOT)) 102*91f16700Schasinglulu 103*91f16700Schasinglulu# LCS state of RZ/G2 Chip is all CM. 104*91f16700Schasinglulu# However certain chips(RZ/G2M and RZ/G2E) have incorrect factory Fuse settings 105*91f16700Schasinglulu# which results in getting incorrect LCS states 106*91f16700Schasinglulu# if need to enable RCAR_SECURE_BOOT, make sure the chip has proper factory Fuse settings. 107*91f16700Schasingluluifeq (${RCAR_SECURE_BOOT},1) 108*91f16700Schasinglulu ifeq (${RZG_LCS_STATE_DETECTION_ENABLE},0) 109*91f16700Schasinglulu $(error "Error: Please check the chip has proper factory Fuse settings and set RZG_LCS_STATE_DETECTION_ENABLE to enable.") 110*91f16700Schasinglulu endif 111*91f16700Schasingluluendif 112*91f16700Schasinglulu 113*91f16700Schasinglulu# lock RPC HYPERFLASH access by default 114*91f16700Schasinglulu# unlock to repogram the ATF firmware from u-boot 115*91f16700Schasingluluifndef RCAR_RPC_HYPERFLASH_LOCKED 116*91f16700SchasingluluRCAR_RPC_HYPERFLASH_LOCKED := 1 117*91f16700Schasingluluendif 118*91f16700Schasinglulu$(eval $(call add_define,RCAR_RPC_HYPERFLASH_LOCKED)) 119*91f16700Schasinglulu 120*91f16700Schasinglulu# Process RCAR_QOS_TYPE flag 121*91f16700Schasingluluifndef RCAR_QOS_TYPE 122*91f16700SchasingluluRCAR_QOS_TYPE := 0 123*91f16700Schasingluluendif 124*91f16700Schasinglulu$(eval $(call add_define,RCAR_QOS_TYPE)) 125*91f16700Schasinglulu 126*91f16700Schasinglulu# Process RCAR_DRAM_SPLIT flag 127*91f16700Schasingluluifndef RCAR_DRAM_SPLIT 128*91f16700SchasingluluRCAR_DRAM_SPLIT := 0 129*91f16700Schasingluluendif 130*91f16700Schasinglulu$(eval $(call add_define,RCAR_DRAM_SPLIT)) 131*91f16700Schasinglulu 132*91f16700Schasinglulu# Process RCAR_BL33_EXECUTION_EL flag 133*91f16700Schasingluluifndef RCAR_BL33_EXECUTION_EL 134*91f16700SchasingluluRCAR_BL33_EXECUTION_EL := 0 135*91f16700Schasingluluendif 136*91f16700Schasinglulu$(eval $(call add_define,RCAR_BL33_EXECUTION_EL)) 137*91f16700Schasinglulu 138*91f16700Schasinglulu# Process RCAR_AVS_SETTING_ENABLE flag 139*91f16700Schasingluluifndef AVS_SETTING_ENABLE 140*91f16700SchasingluluAVS_SETTING_ENABLE := 0 141*91f16700Schasingluluendif 142*91f16700Schasinglulu$(eval $(call add_define,AVS_SETTING_ENABLE)) 143*91f16700Schasinglulu 144*91f16700Schasinglulu# Process RCAR_LOSSY_ENABLE flag 145*91f16700Schasingluluifndef RCAR_LOSSY_ENABLE 146*91f16700SchasingluluRCAR_LOSSY_ENABLE := 0 147*91f16700Schasingluluendif 148*91f16700Schasinglulu$(eval $(call add_define,RCAR_LOSSY_ENABLE)) 149*91f16700Schasinglulu 150*91f16700Schasinglulu# Process LIFEC_DBSC_PROTECT_ENABLE flag 151*91f16700Schasingluluifndef LIFEC_DBSC_PROTECT_ENABLE 152*91f16700SchasingluluLIFEC_DBSC_PROTECT_ENABLE := 1 153*91f16700Schasingluluendif 154*91f16700Schasinglulu$(eval $(call add_define,LIFEC_DBSC_PROTECT_ENABLE)) 155*91f16700Schasinglulu 156*91f16700Schasinglulu# Process RCAR_GEN3_ULCB flag 157*91f16700Schasingluluifndef RCAR_GEN3_ULCB 158*91f16700SchasingluluRCAR_GEN3_ULCB := 0 159*91f16700Schasingluluendif 160*91f16700Schasinglulu 161*91f16700Schasinglulu# Process RCAR_REF_INT flag 162*91f16700Schasingluluifndef RCAR_REF_INT 163*91f16700SchasingluluRCAR_REF_INT :=0 164*91f16700Schasingluluendif 165*91f16700Schasinglulu$(eval $(call add_define,RCAR_REF_INT)) 166*91f16700Schasinglulu 167*91f16700Schasinglulu# Process RCAR_REWT_TRAINING flag 168*91f16700Schasingluluifndef RCAR_REWT_TRAINING 169*91f16700SchasingluluRCAR_REWT_TRAINING := 1 170*91f16700Schasingluluendif 171*91f16700Schasinglulu$(eval $(call add_define,RCAR_REWT_TRAINING)) 172*91f16700Schasinglulu 173*91f16700Schasinglulu# Process RCAR_SYSTEM_SUSPEND flag 174*91f16700Schasingluluifndef RCAR_SYSTEM_SUSPEND 175*91f16700SchasingluluRCAR_SYSTEM_SUSPEND := 0 176*91f16700Schasingluluendif 177*91f16700Schasinglulu$(eval $(call add_define,RCAR_SYSTEM_SUSPEND)) 178*91f16700Schasinglulu 179*91f16700Schasinglulu# Process RCAR_DRAM_LPDDR4_MEMCONF flag 180*91f16700Schasingluluifndef RCAR_DRAM_LPDDR4_MEMCONF 181*91f16700SchasingluluRCAR_DRAM_LPDDR4_MEMCONF :=1 182*91f16700Schasingluluendif 183*91f16700Schasinglulu$(eval $(call add_define,RCAR_DRAM_LPDDR4_MEMCONF)) 184*91f16700Schasinglulu 185*91f16700Schasinglulu# Process RCAR_DRAM_DDR3L_MEMCONF flag 186*91f16700Schasingluluifndef RCAR_DRAM_DDR3L_MEMCONF 187*91f16700SchasingluluRCAR_DRAM_DDR3L_MEMCONF :=1 188*91f16700Schasingluluendif 189*91f16700Schasinglulu$(eval $(call add_define,RCAR_DRAM_DDR3L_MEMCONF)) 190*91f16700Schasinglulu 191*91f16700Schasinglulu# Process RCAR_DRAM_DDR3L_MEMDUAL flag 192*91f16700Schasingluluifndef RCAR_DRAM_DDR3L_MEMDUAL 193*91f16700SchasingluluRCAR_DRAM_DDR3L_MEMDUAL :=1 194*91f16700Schasingluluendif 195*91f16700Schasinglulu$(eval $(call add_define,RCAR_DRAM_DDR3L_MEMDUAL)) 196*91f16700Schasinglulu 197*91f16700Schasinglulu# Process RCAR_BL33_ARG0 flag 198*91f16700Schasingluluifdef RCAR_BL33_ARG0 199*91f16700Schasinglulu$(eval $(call add_define,RCAR_BL33_ARG0)) 200*91f16700Schasingluluendif 201*91f16700Schasinglulu 202*91f16700Schasinglulu#Process RCAR_BL2_DCACHE flag 203*91f16700Schasingluluifndef RCAR_BL2_DCACHE 204*91f16700SchasingluluRCAR_BL2_DCACHE := 0 205*91f16700Schasingluluendif 206*91f16700Schasinglulu$(eval $(call add_define,RCAR_BL2_DCACHE)) 207*91f16700Schasinglulu 208*91f16700Schasinglulu# Process RCAR_DRAM_CHANNEL flag 209*91f16700Schasingluluifndef RCAR_DRAM_CHANNEL 210*91f16700SchasingluluRCAR_DRAM_CHANNEL :=15 211*91f16700Schasingluluendif 212*91f16700Schasinglulu$(eval $(call add_define,RCAR_DRAM_CHANNEL)) 213*91f16700Schasinglulu 214*91f16700Schasinglulu#Process RCAR_SYSTEM_RESET_KEEPON_DDR flag 215*91f16700Schasingluluifndef RCAR_SYSTEM_RESET_KEEPON_DDR 216*91f16700SchasingluluRCAR_SYSTEM_RESET_KEEPON_DDR := 0 217*91f16700Schasingluluendif 218*91f16700Schasinglulu$(eval $(call add_define,RCAR_SYSTEM_RESET_KEEPON_DDR)) 219*91f16700Schasinglulu 220*91f16700SchasingluluRZG_SOC :=1 221*91f16700Schasinglulu$(eval $(call add_define,RZG_SOC)) 222*91f16700Schasinglulu 223*91f16700Schasingluluinclude drivers/renesas/common/ddr/ddr.mk 224*91f16700Schasingluluinclude drivers/renesas/rzg/qos/qos.mk 225*91f16700Schasingluluinclude drivers/renesas/rzg/pfc/pfc.mk 226*91f16700Schasingluluinclude lib/libfdt/libfdt.mk 227*91f16700Schasinglulu 228*91f16700SchasingluluPLAT_INCLUDES += -Idrivers/renesas/common/ddr \ 229*91f16700Schasinglulu -Idrivers/renesas/rzg/qos \ 230*91f16700Schasinglulu -Idrivers/renesas/rzg/board \ 231*91f16700Schasinglulu -Idrivers/renesas/common \ 232*91f16700Schasinglulu -Idrivers/renesas/common/iic_dvfs \ 233*91f16700Schasinglulu -Idrivers/renesas/common/avs \ 234*91f16700Schasinglulu -Idrivers/renesas/common/delay \ 235*91f16700Schasinglulu -Idrivers/renesas/common/rom \ 236*91f16700Schasinglulu -Idrivers/renesas/common/scif \ 237*91f16700Schasinglulu -Idrivers/renesas/common/emmc \ 238*91f16700Schasinglulu -Idrivers/renesas/common/pwrc \ 239*91f16700Schasinglulu -Idrivers/renesas/common/io 240*91f16700Schasinglulu 241*91f16700SchasingluluBL2_SOURCES += plat/renesas/rzg/bl2_plat_setup.c \ 242*91f16700Schasinglulu drivers/renesas/rzg/board/board.c 243*91f16700Schasinglulu 244*91f16700Schasinglulu# build the layout images for the bootrom and the necessary srecords 245*91f16700Schasinglulurzg: rzg_layout_create rzg_srecord 246*91f16700Schasingluludistclean realclean clean: clean_layout_tool clean_srecord 247*91f16700Schasinglulu 248*91f16700Schasinglulu# layout images 249*91f16700SchasingluluLAYOUT_TOOLPATH ?= tools/renesas/rzg_layout_create 250*91f16700Schasinglulu 251*91f16700Schasingluluclean_layout_tool: 252*91f16700Schasinglulu @echo "clean layout tool" 253*91f16700Schasinglulu ${Q}${MAKE} -C ${LAYOUT_TOOLPATH} clean 254*91f16700Schasinglulu 255*91f16700Schasinglulu.PHONY: rzg_layout_create 256*91f16700Schasinglulurzg_layout_create: 257*91f16700Schasinglulu @echo "generating layout srecs" 258*91f16700Schasinglulu ${Q}${MAKE} CPPFLAGS="-D=AARCH64" --no-print-directory -C ${LAYOUT_TOOLPATH} 259*91f16700Schasinglulu 260*91f16700Schasinglulu# srecords 261*91f16700SchasingluluSREC_PATH = ${BUILD_PLAT} 262*91f16700SchasingluluBL2_ELF_SRC = ${SREC_PATH}/bl2/bl2.elf 263*91f16700SchasingluluBL31_ELF_SRC = ${SREC_PATH}/bl31/bl31.elf 264*91f16700Schasinglulu 265*91f16700Schasingluluclean_srecord: 266*91f16700Schasinglulu @echo "clean bl2 and bl31 srecs" 267*91f16700Schasinglulu rm -f ${SREC_PATH}/bl2.srec ${SREC_PATH}/bl31.srec 268*91f16700Schasinglulu 269*91f16700Schasinglulu.PHONY: rzg_srecord 270*91f16700Schasinglulurzg_srecord: $(BL2_ELF_SRC) $(BL31_ELF_SRC) 271*91f16700Schasinglulu @echo "generating srec: ${SREC_PATH}/bl2.srec" 272*91f16700Schasinglulu $(Q)$(OC) -O srec --srec-forceS3 ${BL2_ELF_SRC} ${SREC_PATH}/bl2.srec 273*91f16700Schasinglulu @echo "generating srec: ${SREC_PATH}/bl31.srec" 274*91f16700Schasinglulu $(Q)$(OC) -O srec --srec-forceS3 ${BL31_ELF_SRC} ${SREC_PATH}/bl31.srec 275