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