1# 2# Makefile for Broadcom BCM947XX boards 3# 4# Copyright (C) 2013, Broadcom Corporation. All Rights Reserved. 5# 6# Permission to use, copy, modify, and/or distribute this software for any 7# purpose with or without fee is hereby granted, provided that the above 8# copyright notice and this permission notice appear in all copies. 9# 10# THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES 11# WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF 12# MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY 13# SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES 14# WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION 15# OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN 16# CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. 17# 18# $Id: Makefile 398971 2013-04-26 22:39:49Z $ 19# 20 21include ../../../../.config 22 23ARCH ?= arm 24CPU ?= bcmcore 25BOARD := bcm947xx 26CFE_NAME := `echo $(BUILD_NAME)|tr A-Z a-z` 27 28# Standard options 29CFG_MLONG64 := 0 30CFG_LITTLE ?= 1 31CFG_RELOC := 0 32CFG_UNCACHED := 0 33CFG_VAPI := 0 34CFG_BOARDNAME := "BCM947XX" 35CFG_PCI ?= 0 36CFG_ZLIB := 0 37CFG_LZMA := 1 38CFG_MINIMAL_SIZE := 1 39CFG_CFLASH := 1 40CFG_XIP := 0 41CFG_ATE := 0 42CFG_LDR_SREC := 0 43CFG_LDR_ELF := 0 44CFG_ROMBOOT ?= 0 45CFG_SHMOO := 1 46 47# BCM947XX options 48CFG_BCMHND74K ?= 0 49CFG_EMBEDDED_NVRAM := 1 50CFG_OTPNVRAM := 0 51CFG_FLASH := 1 # if CFG_XIP is set then CFG_FLASH must be set to 0 52CFG_SFLASH := 1 53CFG_NFLASH := 1 54ifeq ($(strip $(CFG_NFLASH)),1) 55CFG_FLASH_ERASE := 1 56endif 57CFG_ET := 1 58CFG_GMAC ?= 0 # CFG_GMAC requires CFG_ET 59CFG_WL := 0 60CFG_WLU := 0 61CFG_SIM := 0 # build for Quickturn/Simulator 62CFG_SIM_CONSOLE := 0 # with console 63ifeq ($(strip $(CFG_PCI)),1) 64CFG_BCM57XX := 1 65CFG_ET := 0 66else 67CFG_BCM57XX := 0 68endif 69CFG_FAILSAFE_UPGRADE ?= 1 # Default on, can be turned off with CFG_FAILSAFE_UPGRADE=0 70# CFG_DUAL_IMAGE :=1 # Default to off in compile time 71 72# read sdram params from nvram in internal builds 73CFG_SDRAM_PARAM_FROM_EMBEDDED_NVRAM := 1 74 75# Additional options 76COMPRESSED_CFE := 1 77RESCUE_MODE := 1 # disable for tmp 78RGMII_P5 := 0 79DSLAC68U := 0 80RTAC68U := 0 81PATYPE := 0 82BCM470XC0 := 0 83MTDSIZE ?= 64 84DUAL_TRX := 0 85 86# HND source base 87SRCBASE := $(shell cd ../../../.. && pwd) 88TOP := $(SRCBASE)/cfe/cfe 89 90ifeq ($(strip $(CFG_RELOC)),0) 91 92# Link binary in RAM 93CFG_BOOTRAM := 1 94ifeq ($(strip ${CFG_UNCACHED}),1) 95 ifeq ($(strip $(CFG_XIP)),0) 96 CFG_TEXT_START := 0xa0700000 97 else 98 CFG_DATA_START := 0xa0001000 99 endif 100else 101 ifeq ($(strip $(CFG_XIP)),0) 102 CFG_TEXT_START := 0x80e00000 103 else 104 CFG_DATA_START := 0x80001000 105 endif 106endif 107# To generating ATE traces 108ifeq ($(strip $(CFG_ATE)),1) 109CFLAGS += -DBCM_ATE 110endif 111 112ifeq ($(strip $(CFG_DUAL_IMAGE)),1) 113CFLAGS +=-DDUAL_IMAGE 114endif 115ifeq ($(strip $(CFG_FAILSAFE_UPGRADE)),1) 116CFLAGS +=-DFAILSAFE_UPGRADE 117endif 118ifeq ($(strip $(CFG_FLASH_ERASE)),1) 119CFLAGS +=-DCFE_FLASH_ERASE_FLASH_ENABLED=1 120endif 121ifeq ($(strip $(CFG_FLASH_FILL)),1) 122CFLAGS +=-DFLASH_PARTITION_FILL_ENABLED=1 123endif 124ifeq ($(strip $(CFG_SDRAM_PARAM_FROM_EMBEDDED_NVRAM)),1) 125CFLAGS +=-DSDRAM_PARAM_FROM_EMBEDDED_NVRAM 126endif 127 128ifeq ($(strip $(CFG_BCM_DEVINFO)),1) 129CFLAGS += -DBCM_DEVINFO 130endif 131 132ifeq ($(strip $(RESCUE_MODE)),1) 133CFLAGS += -DRESCUE_MODE 134endif 135 136ifeq ($(strip $(RGMII_P5)),1) 137CFLAGS += -DRGMII_P5 138endif 139 140ifeq ($(strip $(DUAL_TRX)),1) 141CFLAGS += -DDUAL_TRX 142endif 143 144ifeq ($(strip $(RTAC68U)),1) 145CFLAGS += -DRTAC68U 146endif 147 148ifeq ($(BUILD_NAME),$(filter $(BUILD_NAME),RT-AC88U RT-AC88B RT-AC5400)) 149CFLAGS += -DRTAC68U 150CFLAGS += -DRTAC88U -DRTL8365MB 151CFLAGS += -L /opt/hndtools-arm-linux-2.6.36-uclibc-4.5.3/bin/../lib/gcc/arm-brcm-linux-uclibcgnueabi/4.5.3 -lgcc 152endif 153 154ifeq ($(strip $(DSLAC68U)),1) 155CFLAGS += -DDSLAC68U 156endif 157 158ifeq ($(strip $(RTAC87U)),1) 159MTDSIZE := 128 160CFLAGS += -DRTAC87U 161endif 162 163ifeq ($(strip $(RTN18U)),1) 164CFLAGS += -DRTN18U 165endif 166 167ifeq ($(strip $(COMPRESSED_CFE)),1) 168CFLAGS += -DCOMPRESSED_CFE 169endif 170ifeq ($(MTDSIZE),32) 171CFLAGS += -D"CONFIG_LINUX_MTD=32" 172endif 173ifeq ($(MTDSIZE),48) 174CFLAGS += -D"CONFIG_LINUX_MTD=48" 175endif 176ifeq ($(MTDSIZE),64) 177CFLAGS += -D"CONFIG_LINUX_MTD=64" 178endif 179ifeq ($(MTDSIZE),128) 180CFLAGS += -D"CONFIG_LINUX_MTD=128" 181endif 182 183# Toolchain prefix 184LINUX_VERSION ?= 2_6 185ifeq ($(strip $(LINUX_VERSION)),2_6) 186 TOOLPREFIX := mipsel-uclibc-linux26- 187else 188 TOOLPREFIX := mipsel-linux- 189endif 190 191#PATH := $(PATH):/projects/hnd/tools/linux/bin:/projects/hnd/tools/linux/hndtools-mips-wrs-vxworks-3.2.3/bin 192 193CFLAGS += -Ulinux -pipe 194 195# Disable 4710A0 compiler workarounds if any 196check_gcc = $(shell if $(GCC) $(1) -c -o /dev/null -xc /dev/null > /dev/null 2>&1; then echo "$(1)"; else echo "$(2)"; fi) 197CFLAGS += $(call check_gcc, -m4710a0kern, ) 198 199# Disable PIC 200CFLAGS-mips = -G 0 -mno-abicalls -fno-pic 201CFLAGS-arm = -g -DSTANDALONE -O0 -D__KERNEL__ 202CFLAGS += $(CFLAGS-$(ARCH)) 203 204# Discard unused sections if supported 205CFLAGS += -ffunction-sections -fdata-sections 206LDFLAGS += -static --gc-sections 207 208else 209 210# Locate data in RAM 211CFG_BOOTRAM := 0 212ifeq ($(strip ${CFG_UNCACHED}),1) 213 CFG_DATA_START := 0xa0001000 214else 215 CFG_DATA_START := 0x80001000 216endif 217 218endif 219 220# ARM override 221ifeq ($(ARCH), arm) 222CPU := armv7 223CFG_NVRAM_SPACE := 65536 224CFG_GMAC := 1 225CFG_CFLASH := 0 226CFG_FLASH := 0 # if CFG_XIP is set then CFG_FLASH must be set to 0 227CFG_SFLASH := 1 228CFG_TEXT_START := 0x00f00000 229 230TOOLPREFIX := arm-uclibc-linux-2.6.36- 231 232ASFLAGS := -D_LANGUAGE_ASSEMBLY 233else 234CFG_NVRAM_SPACE := 32768 235endif 236 237CFLAGS += -DMAX_NVRAM_SPACE=$(CFG_NVRAM_SPACE) 238 239# handle "undefined reference to otp_read_word" problem 240ifeq ($CFG_OTPNVRAM), 1) 241CFLAGS += -DLOADADDR=$(CFG_TEXT_START) 242endif 243 244# define WL_CONFFILE for arch/mips/board/bcm947xx/src/Makefile 245ifeq ($(strip $(CFG_WL)),1) 246WLCONFFILE ?= wlconfig_cfe_apsta 247WLTUNEFILE ?= wltunable_cfe.h 248WLCFGDIR := $(SRCBASE)/wl/config 249UPDATESH := $(WLCFGDIR)/diffupdate.sh 250endif 251 252include $(TOP)/main/cfe.mk 253 254# 255# Main target for normal builds 256# 257ifneq ($(strip $(CFG_WL)),1) 258ALL: cfe.bin 259 $(MAKE) -C compressed 260 261else # CFG_WL = 1 262 263CLEANOBJS += wlconf.h 264 265ALL: version wlconf.h cfe.bin 266 $(MAKE) -C compressed 267 268wlconf.h: $(WLCFGDIR)/$(WLTUNEFILE) FORCE 269 [ ! -f $@ ] || chmod +w $@ 270 @echo "check and update config file" 271 cp $< wltemp 272 $(UPDATESH) wltemp $@ 273 274FORCE: 275 276endif 277 278 279cfe1M.bin: cfe.bin 280 dd conv=sync if=cfe.bin of=cfe1M.bin bs=1M 281 282CLEANOBJS += cfe1M.bin cfe.qt 283 284CLEAN: 285 $(MAKE) -C compressed clean 286 287clean: CLEAN 288 289 290.EXPORT_ALL_VARIABLES: 291 292# 293# Linker script 294# 295 296include $(TOP)/main/cfe_link.mk 297