1# 2# Copyright (c) 2018-2021, Renesas Electronics Corporation. All rights reserved. 3# 4# SPDX-License-Identifier: BSD-3-Clause 5# 6 7include plat/renesas/common/common.mk 8 9ENABLE_STACK_PROTECTOR := strong 10 11ifndef LSI 12 $(error "Error: Unknown LSI. Please use LSI=<LSI name> to specify the LSI") 13else 14 ifeq (${LSI},AUTO) 15 RCAR_LSI:=${RCAR_AUTO} 16 else ifeq (${LSI},H3) 17 RCAR_LSI:=${RCAR_H3} 18 ifndef LSI_CUT 19 # enable compatible function. 20 RCAR_LSI_CUT_COMPAT := 1 21 $(eval $(call add_define,RCAR_LSI_CUT_COMPAT)) 22 else 23 # disable compatible function. 24 ifeq (${LSI_CUT},10) 25 RCAR_LSI_CUT:=0 26 else ifeq (${LSI_CUT},11) 27 RCAR_LSI_CUT:=1 28 else ifeq (${LSI_CUT},20) 29 RCAR_LSI_CUT:=10 30 else ifeq (${LSI_CUT},30) 31 RCAR_LSI_CUT:=20 32 else 33 $(error "Error: ${LSI_CUT} is not supported.") 34 endif 35 $(eval $(call add_define,RCAR_LSI_CUT)) 36 endif 37 else ifeq (${LSI},H3N) 38 RCAR_LSI:=${RCAR_H3N} 39 ifndef LSI_CUT 40 # enable compatible function. 41 RCAR_LSI_CUT_COMPAT := 1 42 $(eval $(call add_define,RCAR_LSI_CUT_COMPAT)) 43 else 44 # disable compatible function. 45 ifeq (${LSI_CUT},30) 46 RCAR_LSI_CUT:=20 47 else 48 $(error "Error: ${LSI_CUT} is not supported.") 49 endif 50 $(eval $(call add_define,RCAR_LSI_CUT)) 51 endif 52 else ifeq (${LSI},M3) 53 RCAR_LSI:=${RCAR_M3} 54 ifndef LSI_CUT 55 # enable compatible function. 56 RCAR_LSI_CUT_COMPAT := 1 57 $(eval $(call add_define,RCAR_LSI_CUT_COMPAT)) 58 else 59 # disable compatible function. 60 ifeq (${LSI_CUT},10) 61 RCAR_LSI_CUT:=0 62 else ifeq (${LSI_CUT},11) 63 RCAR_LSI_CUT:=1 64 else ifeq (${LSI_CUT},13) 65 RCAR_LSI_CUT:=3 66 else ifeq (${LSI_CUT},30) 67 RCAR_LSI_CUT:=20 68 else 69 $(error "Error: ${LSI_CUT} is not supported.") 70 endif 71 $(eval $(call add_define,RCAR_LSI_CUT)) 72 endif 73 else ifeq (${LSI},M3N) 74 RCAR_LSI:=${RCAR_M3N} 75 ifndef LSI_CUT 76 # enable compatible function. 77 RCAR_LSI_CUT_COMPAT := 1 78 $(eval $(call add_define,RCAR_LSI_CUT_COMPAT)) 79 else 80 # disable compatible function. 81 ifeq (${LSI_CUT},10) 82 RCAR_LSI_CUT:=0 83 else ifeq (${LSI_CUT},11) 84 RCAR_LSI_CUT:=1 85 else 86 $(error "Error: ${LSI_CUT} is not supported.") 87 endif 88 $(eval $(call add_define,RCAR_LSI_CUT)) 89 endif 90 else ifeq (${LSI},E3) 91 RCAR_LSI:=${RCAR_E3} 92 ifndef LSI_CUT 93 # enable compatible function. 94 RCAR_LSI_CUT_COMPAT := 1 95 $(eval $(call add_define,RCAR_LSI_CUT_COMPAT)) 96 else 97 # disable compatible function. 98 ifeq (${LSI_CUT},10) 99 RCAR_LSI_CUT:=0 100 else ifeq (${LSI_CUT},11) 101 RCAR_LSI_CUT:=1 102 else 103 $(error "Error: ${LSI_CUT} is not supported.") 104 endif 105 $(eval $(call add_define,RCAR_LSI_CUT)) 106 endif 107 else ifeq (${LSI},D3) 108 RCAR_LSI:=${RCAR_D3} 109 ifndef LSI_CUT 110 # enable compatible function. 111 RCAR_LSI_CUT_COMPAT := 1 112 $(eval $(call add_define,RCAR_LSI_CUT_COMPAT)) 113 else 114 # disable compatible function. 115 ifeq (${LSI_CUT},10) 116 RCAR_LSI_CUT:=0 117 else 118 $(error "Error: ${LSI_CUT} is not supported.") 119 endif 120 $(eval $(call add_define,RCAR_LSI_CUT)) 121 endif 122 else ifeq (${LSI},V3M) 123 RCAR_LSI:=${RCAR_V3M} 124 ifndef LSI_CUT 125 # enable compatible function. 126 RCAR_LSI_CUT_COMPAT := 1 127 $(eval $(call add_define,RCAR_LSI_CUT_COMPAT)) 128 else 129 # disable compatible function. 130 ifeq (${LSI_CUT},10) 131 RCAR_LSI_CUT:=0 132 endif 133 ifeq (${LSI_CUT},20) 134 RCAR_LSI_CUT:=10 135 endif 136 $(eval $(call add_define,RCAR_LSI_CUT)) 137 endif 138 else 139 $(error "Error: ${LSI} is not supported.") 140 endif 141 $(eval $(call add_define,RCAR_LSI)) 142endif 143 144# lock RPC HYPERFLASH access by default 145# unlock to repogram the ATF firmware from u-boot 146ifndef RCAR_RPC_HYPERFLASH_LOCKED 147RCAR_RPC_HYPERFLASH_LOCKED := 1 148endif 149$(eval $(call add_define,RCAR_RPC_HYPERFLASH_LOCKED)) 150 151# Process RCAR_SECURE_BOOT flag 152ifndef RCAR_SECURE_BOOT 153RCAR_SECURE_BOOT := 1 154endif 155$(eval $(call add_define,RCAR_SECURE_BOOT)) 156 157# Process RCAR_QOS_TYPE flag 158ifndef RCAR_QOS_TYPE 159RCAR_QOS_TYPE := 0 160endif 161$(eval $(call add_define,RCAR_QOS_TYPE)) 162 163# Process RCAR_DRAM_SPLIT flag 164ifndef RCAR_DRAM_SPLIT 165RCAR_DRAM_SPLIT := 0 166endif 167$(eval $(call add_define,RCAR_DRAM_SPLIT)) 168 169# Process RCAR_BL33_EXECUTION_EL flag 170ifndef RCAR_BL33_EXECUTION_EL 171RCAR_BL33_EXECUTION_EL := 0 172endif 173$(eval $(call add_define,RCAR_BL33_EXECUTION_EL)) 174 175# Process RCAR_AVS_SETTING_ENABLE flag 176ifeq (${RCAR_AVS_SETTING_ENABLE},0) 177AVS_SETTING_ENABLE := 0 178else 179AVS_SETTING_ENABLE := 1 180endif 181$(eval $(call add_define,AVS_SETTING_ENABLE)) 182 183# Process RCAR_LOSSY_ENABLE flag 184ifndef RCAR_LOSSY_ENABLE 185RCAR_LOSSY_ENABLE := 0 186endif 187$(eval $(call add_define,RCAR_LOSSY_ENABLE)) 188 189# Process LIFEC_DBSC_PROTECT_ENABLE flag 190ifndef LIFEC_DBSC_PROTECT_ENABLE 191LIFEC_DBSC_PROTECT_ENABLE := 1 192endif 193$(eval $(call add_define,LIFEC_DBSC_PROTECT_ENABLE)) 194 195# Process PMIC_ROHM_BD9571 flag 196ifndef PMIC_ROHM_BD9571 197PMIC_ROHM_BD9571 := 1 198endif 199$(eval $(call add_define,PMIC_ROHM_BD9571)) 200 201# Process PMIC_LEVEL_MODE flag 202ifndef PMIC_LEVEL_MODE 203PMIC_LEVEL_MODE := 1 204endif 205$(eval $(call add_define,PMIC_LEVEL_MODE)) 206 207# Process RCAR_GEN3_ULCB flag 208ifndef RCAR_GEN3_ULCB 209RCAR_GEN3_ULCB := 0 210endif 211ifeq (${RCAR_GEN3_ULCB},1) 212 BOARD_DEFAULT := 0x10 213 $(eval $(call add_define,BOARD_DEFAULT)) 214endif 215$(eval $(call add_define,RCAR_GEN3_ULCB)) 216 217# Process RCAR_REF_INT flag 218ifndef RCAR_REF_INT 219RCAR_REF_INT :=0 220endif 221$(eval $(call add_define,RCAR_REF_INT)) 222 223# Process RCAR_REWT_TRAINING flag 224ifndef RCAR_REWT_TRAINING 225RCAR_REWT_TRAINING := 1 226endif 227$(eval $(call add_define,RCAR_REWT_TRAINING)) 228 229# Process RCAR_SYSTEM_SUSPEND flag 230ifndef RCAR_SYSTEM_SUSPEND 231RCAR_SYSTEM_SUSPEND := 1 232endif 233$(eval $(call add_define,RCAR_SYSTEM_SUSPEND)) 234 235# SYSTEM_SUSPEND requires power control of PMIC etc. 236# When executing SYSTEM_SUSPEND other than Salvator-X, Salvator-XS and Ebisu, 237# processing equivalent to that implemented in PMIC_ROHM_BD9571 is necessary. 238ifeq (${RCAR_SYSTEM_SUSPEND},1) 239 ifeq (${PMIC_ROHM_BD9571},0) 240 $(error "Error: When you want RCAR_SYSTEM_SUSPEND to be enable, please also set PMIC_ROHM_BD9571 to enable.") 241 endif 242endif 243 244# Process RCAR_DRAM_LPDDR4_MEMCONF flag 245ifndef RCAR_DRAM_LPDDR4_MEMCONF 246RCAR_DRAM_LPDDR4_MEMCONF :=1 247endif 248$(eval $(call add_define,RCAR_DRAM_LPDDR4_MEMCONF)) 249 250# Process RCAR_DRAM_MEMRANK flag 251ifndef RCAR_DRAM_MEMRANK 252RCAR_DRAM_MEMRANK :=0 253endif 254$(eval $(call add_define,RCAR_DRAM_MEMRANK)) 255 256# Process RCAR_DRAM_DDR3L_MEMCONF flag 257ifndef RCAR_DRAM_DDR3L_MEMCONF 258RCAR_DRAM_DDR3L_MEMCONF :=1 259endif 260$(eval $(call add_define,RCAR_DRAM_DDR3L_MEMCONF)) 261 262# Process RCAR_DRAM_DDR3L_MEMDUAL flag 263ifndef RCAR_DRAM_DDR3L_MEMDUAL 264RCAR_DRAM_DDR3L_MEMDUAL :=1 265endif 266$(eval $(call add_define,RCAR_DRAM_DDR3L_MEMDUAL)) 267 268# Process RCAR_BL33_ARG0 flag 269ifdef RCAR_BL33_ARG0 270$(eval $(call add_define,RCAR_BL33_ARG0)) 271endif 272 273#Process RCAR_BL2_DCACHE flag 274ifndef RCAR_BL2_DCACHE 275RCAR_BL2_DCACHE := 0 276endif 277$(eval $(call add_define,RCAR_BL2_DCACHE)) 278 279# Process RCAR_DRAM_CHANNEL flag 280ifndef RCAR_DRAM_CHANNEL 281RCAR_DRAM_CHANNEL :=15 282endif 283$(eval $(call add_define,RCAR_DRAM_CHANNEL)) 284 285#Process RCAR_SYSTEM_RESET_KEEPON_DDR flag 286ifndef RCAR_SYSTEM_RESET_KEEPON_DDR 287RCAR_SYSTEM_RESET_KEEPON_DDR := 0 288endif 289$(eval $(call add_define,RCAR_SYSTEM_RESET_KEEPON_DDR)) 290 291ifndef RCAR_GEN3_BL33_GZIP 292RCAR_GEN3_BL33_GZIP := 0 293endif 294$(eval $(call add_define,RCAR_GEN3_BL33_GZIP)) 295 296# RCAR_SYSTEM_RESET_KEEPON_DDR requires power control of PMIC etc. 297# When executing SYSTEM_SUSPEND other than Salvator-X, Salvator-XS and Ebisu, 298# processing equivalent to that implemented in PMIC_ROHM_BD9571 is necessary. 299# Also, it is necessary to enable RCAR_SYSTEM_SUSPEND. 300ifeq (${RCAR_SYSTEM_RESET_KEEPON_DDR},1) 301 ifeq (${PMIC_ROHM_BD9571},0) 302 $(error "Error: When you want RCAR_SYSTEM_RESET_KEEPON_DDR to be enable, please also set PMIC_ROHM_BD9571 to enable.") 303 endif 304 ifeq (${RCAR_SYSTEM_SUSPEND},0) 305 $(error "Error: When you want RCAR_SYSTEM_RESET_KEEPON_DDR to be enable, please also set RCAR_SYSTEM_SUSPEND to enable.") 306 endif 307endif 308 309include drivers/renesas/common/ddr/ddr.mk 310include drivers/renesas/rcar/qos/qos.mk 311include drivers/renesas/rcar/pfc/pfc.mk 312include lib/libfdt/libfdt.mk 313 314PLAT_INCLUDES += -Idrivers/renesas/common/ddr \ 315 -Idrivers/renesas/rcar/qos \ 316 -Idrivers/renesas/rcar/board \ 317 -Idrivers/renesas/rcar/cpld/ \ 318 -Idrivers/renesas/common \ 319 -Idrivers/renesas/common/iic_dvfs \ 320 -Idrivers/renesas/common/avs \ 321 -Idrivers/renesas/common/delay \ 322 -Idrivers/renesas/common/rom \ 323 -Idrivers/renesas/common/scif \ 324 -Idrivers/renesas/common/emmc \ 325 -Idrivers/renesas/common/pwrc \ 326 -Idrivers/renesas/common/io 327 328BL2_SOURCES += plat/renesas/rcar/bl2_plat_setup.c \ 329 drivers/renesas/rcar/board/board.c 330 331ifeq (${RCAR_GEN3_BL33_GZIP},1) 332include lib/zlib/zlib.mk 333 334BL2_SOURCES += common/image_decompress.c \ 335 $(ZLIB_SOURCES) 336endif 337 338ifneq (${ENABLE_STACK_PROTECTOR},0) 339BL_COMMON_SOURCES += plat/renesas/rcar/rcar_stack_protector.c 340endif 341 342ifeq (${RCAR_GEN3_ULCB},1) 343BL31_SOURCES += drivers/renesas/rcar/cpld/ulcb_cpld.c 344endif 345 346# build the layout images for the bootrom and the necessary srecords 347rcar: rcar_layout_tool rcar_srecord 348distclean realclean clean: clean_layout_tool clean_srecord 349 350# layout images 351LAYOUT_TOOLPATH ?= tools/renesas/rcar_layout_create 352 353clean_layout_tool: 354 @echo "clean layout tool" 355 ${Q}${MAKE} -C ${LAYOUT_TOOLPATH} clean 356 357.PHONY: rcar_layout_tool 358rcar_layout_tool: 359 @echo "generating layout srecs" 360 ${Q}${MAKE} CPPFLAGS="-D=AARCH64" --no-print-directory -C ${LAYOUT_TOOLPATH} 361 362# srecords 363SREC_PATH = ${BUILD_PLAT} 364BL2_ELF_SRC = ${SREC_PATH}/bl2/bl2.elf 365BL31_ELF_SRC = ${SREC_PATH}/bl31/bl31.elf 366 367clean_srecord: 368 @echo "clean bl2 and bl31 srecs" 369 rm -f ${SREC_PATH}/bl2.srec ${SREC_PATH}/bl31.srec 370 371$(SREC_PATH)/bl2.srec: $(BL2_ELF_SRC) 372 @echo "generating srec: $(SREC_PATH)/bl2.srec" 373 $(Q)$($(ARCH)-oc) -O srec --srec-forceS3 $(BL2_ELF_SRC) $(SREC_PATH)/bl2.srec 374 375$(SREC_PATH)/bl31.srec: $(BL31_ELF_SRC) 376 @echo "generating srec: $(SREC_PATH)/bl31.srec" 377 $(Q)$($(ARCH)-oc) -O srec --srec-forceS3 $(BL31_ELF_SRC) $(SREC_PATH)/bl31.srec 378 379.PHONY: rcar_srecord 380rcar_srecord: $(SREC_PATH)/bl2.srec $(SREC_PATH)/bl31.srec 381