1# 2# Copyright (c) 2018-2020, 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_DDR3L_MEMCONF flag 249ifndef RCAR_DRAM_DDR3L_MEMCONF 250RCAR_DRAM_DDR3L_MEMCONF :=1 251endif 252$(eval $(call add_define,RCAR_DRAM_DDR3L_MEMCONF)) 253 254# Process RCAR_DRAM_DDR3L_MEMDUAL flag 255ifndef RCAR_DRAM_DDR3L_MEMDUAL 256RCAR_DRAM_DDR3L_MEMDUAL :=1 257endif 258$(eval $(call add_define,RCAR_DRAM_DDR3L_MEMDUAL)) 259 260# Process RCAR_BL33_ARG0 flag 261ifdef RCAR_BL33_ARG0 262$(eval $(call add_define,RCAR_BL33_ARG0)) 263endif 264 265#Process RCAR_BL2_DCACHE flag 266ifndef RCAR_BL2_DCACHE 267RCAR_BL2_DCACHE := 0 268endif 269$(eval $(call add_define,RCAR_BL2_DCACHE)) 270 271# Process RCAR_DRAM_CHANNEL flag 272ifndef RCAR_DRAM_CHANNEL 273RCAR_DRAM_CHANNEL :=15 274endif 275$(eval $(call add_define,RCAR_DRAM_CHANNEL)) 276 277#Process RCAR_SYSTEM_RESET_KEEPON_DDR flag 278ifndef RCAR_SYSTEM_RESET_KEEPON_DDR 279RCAR_SYSTEM_RESET_KEEPON_DDR := 0 280endif 281$(eval $(call add_define,RCAR_SYSTEM_RESET_KEEPON_DDR)) 282 283# RCAR_SYSTEM_RESET_KEEPON_DDR requires power control of PMIC etc. 284# When executing SYSTEM_SUSPEND other than Salvator-X, Salvator-XS and Ebisu, 285# processing equivalent to that implemented in PMIC_ROHM_BD9571 is necessary. 286# Also, it is necessary to enable RCAR_SYSTEM_SUSPEND. 287ifeq (${RCAR_SYSTEM_RESET_KEEPON_DDR},1) 288 ifeq (${PMIC_ROHM_BD9571},0) 289 $(error "Error: When you want RCAR_SYSTEM_RESET_KEEPON_DDR to be enable, please also set PMIC_ROHM_BD9571 to enable.") 290 endif 291 ifeq (${RCAR_SYSTEM_SUSPEND},0) 292 $(error "Error: When you want RCAR_SYSTEM_RESET_KEEPON_DDR to be enable, please also set RCAR_SYSTEM_SUSPEND to enable.") 293 endif 294endif 295 296include drivers/renesas/rcar/ddr/ddr.mk 297include drivers/renesas/rcar/qos/qos.mk 298include drivers/renesas/rcar/pfc/pfc.mk 299include lib/libfdt/libfdt.mk 300 301PLAT_INCLUDES += -Idrivers/renesas/rcar/ddr \ 302 -Idrivers/renesas/rcar/qos \ 303 -Idrivers/renesas/rcar/board \ 304 -Idrivers/renesas/rcar/cpld/ \ 305 -Idrivers/renesas/common \ 306 -Idrivers/renesas/common/iic_dvfs \ 307 -Idrivers/renesas/common/avs \ 308 -Idrivers/renesas/common/delay \ 309 -Idrivers/renesas/common/rom \ 310 -Idrivers/renesas/common/scif \ 311 -Idrivers/renesas/common/emmc \ 312 -Idrivers/renesas/common/pwrc \ 313 -Idrivers/renesas/common/io 314 315BL2_SOURCES += plat/renesas/rcar/bl2_plat_setup.c \ 316 drivers/renesas/rcar/board/board.c 317 318ifeq (${RCAR_GEN3_ULCB},1) 319BL31_SOURCES += drivers/renesas/rcar/cpld/ulcb_cpld.c 320endif 321 322# build the layout images for the bootrom and the necessary srecords 323rcar: rcar_layout_tool rcar_srecord 324distclean realclean clean: clean_layout_tool clean_srecord 325 326# layout images 327LAYOUT_TOOLPATH ?= tools/renesas/rcar_layout_create 328 329clean_layout_tool: 330 @echo "clean layout tool" 331 ${Q}${MAKE} -C ${LAYOUT_TOOLPATH} clean 332 333.PHONY: rcar_layout_tool 334rcar_layout_tool: 335 @echo "generating layout srecs" 336 ${Q}${MAKE} CPPFLAGS="-D=AARCH64" --no-print-directory -C ${LAYOUT_TOOLPATH} 337 338# srecords 339SREC_PATH = ${BUILD_PLAT} 340BL2_ELF_SRC = ${SREC_PATH}/bl2/bl2.elf 341BL31_ELF_SRC = ${SREC_PATH}/bl31/bl31.elf 342 343clean_srecord: 344 @echo "clean bl2 and bl31 srecs" 345 rm -f ${SREC_PATH}/bl2.srec ${SREC_PATH}/bl31.srec 346 347.PHONY: rcar_srecord 348rcar_srecord: $(BL2_ELF_SRC) $(BL31_ELF_SRC) 349 @echo "generating srec: ${SREC_PATH}/bl2.srec" 350 $(Q)$(OC) -O srec --srec-forceS3 ${BL2_ELF_SRC} ${SREC_PATH}/bl2.srec 351 @echo "generating srec: ${SREC_PATH}/bl31.srec" 352 $(Q)$(OC) -O srec --srec-forceS3 ${BL31_ELF_SRC} ${SREC_PATH}/bl31.srec 353 354