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