diff --git a/src/make/makestg2 b/src/make/makestg2
index 623298df7818327cd011737b7617a33080d87039..1407b4e65447f3f371142698040c0ee667f45900 100644 (file)
--- a/src/make/makestg2
+++ b/src/make/makestg2
endif
CFG_MODULES= main device
-MODULES= ethboot nandboot driver hw interp ecc
+MODULES= ethboot nandboot driver hw interp ecc norboot
# Note that the Hw module is a two stage clean and handled seperately
CLEAN_MODULES=$(addprefix clean_,$(subst hw,,$(MODULES)))
CLEAN_MODULES+=$(addprefix clean_,$(CFG_MODULES))
-TARGETS= c6472 c6474 c6474l c6455 c6457
+TARGETS= c6472 c6474 c6474l c6455 c6457 c661x
# The main module needs to know the device address of the i2c where the image map resides
MAINDEFS=-DIBL_CFG_I2C_MAP_TABLE_DATA_BUS_ADDR=$(I2C_BUS_ADDR)
# Add build time exclusion definitions
MAINDEFS+=$(addprefix -DEXCLUDE_,$(EXCLUDES))
+# Add SPI definitions
+SPI_CFG= $(addprefix -D,$(SPI_DEFS))
+
# Common symbols are functions which are loaded with the stage load of the IBL, and
# also referenced from the second stage
export ARCH
export TARGET
+.PHONY: $(TARGETS) i2crom spiRom compare iblInit iblMain $(MODULES) $(CFG_MODULES)
+.PHONY: utils clean clean_modules hwClean cleant
+
$(TARGETS): iblMain
+ifeq ($(TARGET),c661x)
+ HAS_SPI=1
+else
+ HAS_SPI=0
+endif
+
+ifeq (EXCLUDE_SPI, $(strip $(findstring EXCLUDE_SPI, $(MAINDEFS))))
+ HAS_SPI=0
+endif
+ifeq (EXCLUDE_I2C, $(strip $(findstring EXCLUDE_I2C, $(MAINDEFS))))
+ HAS_I2C=0
+else
+ HAS_I2C=1
+endif
# The I2C creation options. The I2C map file is run through the C pre-processor to generate
# the desired I2C mapping. There are three possible configurations - an i2c which has
I2C_INIT_BE_FILE= '"ibl_$(TARGET)/ibl_init.i2c.be.ccs"'
I2C_INIT_LE_FILE= '"ibl_$(TARGET)/ibl_init.i2c.le.ccs"'
-I2C_DEFS= -DI2C_BUS_ADDR=$(I2C_BUS_ADDR)
+I2C_DEFS= -DI2C_BUS_ADDR=$(I2C_BUS_ADDR)
+I2C_DEFS+= -DI2C_MAP_ADDR=$(I2C_MAP_ADDR)
ifeq ($(I2CROM),both)
I2C_DEFS+= -DINIT_EXE_FILE=$(I2C_INIT_LE_FILE)
I2C_DEFS+= -DPAD_FILE_ID_1=1
I2C_DEFS+= -DEXE_FILE_2=$(I2C_BE_FILE)
I2C_DEFS+= -DPAD_FILE_ID_2=2
+
+ SPI_CFG+= -DINIT_EXE_FILE=$(I2C_INIT_LE_FILE)
+ SPI_CFG+= -DEXE_FILE_1=$(I2C_LE_FILE)
+ SPI_CFG+= -DPAD_FILE_ID_1=1
+ SPI_CFG+= -DEXE_FILE_2=$(I2C_BE_FILE)
+ SPI_CFG+= -DPAD_FILE_ID_2=2
+
else
I2C_DEFS+= -DPAD_FILE_ID_1=1
I2C_DEFS+= -DPAD_FILE_ID_2=1
+ SPI_CFG+= -DPAD_FILE_ID_1=1
+ SPI_CFG+= -DPAD_FILE_ID_2=1
+
ifeq ($(I2CROM),little_endian)
I2C_DEFS+= -DINIT_EXE_FILE=$(I2C_INIT_LE_FILE)
I2C_DEFS+= -DEXE_FILE_1=$(I2C_LE_FILE)
I2C_DEFS+= -DEXE_FILE_2='""'
+
+ SPI_CFG+= -DINIT_EXE_FILE=$(I2C_INIT_LE_FILE)
+ SPI_CFG+= -DEXE_FILE_1=$(I2C_LE_FILE)
+ SPI_CFG+= -DEXE_FILE_2='""'
+
else
I2C_DEFS+= -DINIT_EXE_FILE=$(I2C_INIT_BE_FILE)
I2C_DEFS+= -DEXE_FILE_1='""'
I2C_DEFS+= -DEXE_FILE_2=$(I2C_BE_FILE)
+
+ SPI_CFG+= -DINIT_EXE_FILE=$(I2C_INIT_BE_FILE)
+ SPI_CFG+= -DEXE_FILE_1='""'
+ SPI_CFG+= -DEXE_FILE_2=$(I2C_BE_FILE)
+
endif
endif
-i2cRom:
+i2crom:
$(CC) -ppo -I../cfg/$(TARGET) $(I2C_DEFS) ibl_$(TARGET)/$@.map.pre
../util/romparse/romparse $(COMPACT) -rom_base $(I2C_BUS_ADDR) ibl_$(TARGET)/$@.map.pp
$(CP) i2crom.ccs ibl_$(TARGET)/$@.ccs
$(CP) i2crom.ccs ibl_$(TARGET)/$@.dat
+ ../util/btoccs/ccs2bin -swap ibl_$(TARGET)/$@.ccs ibl_$(TARGET)/$@.bin
$(RM) i2crom.ccs ibl_le.b ibl.b
+spiRom:
+ @echo Making SPI ROM
+ $(CC) -ppo -I../cfg/$(TARGET) $(SPI_CFG) ibl_$(TARGET)/$@.map.pre
+ ../util/romparse/romparse $(COMPACT) -fill 0xff -rom_base 0 ibl_$(TARGET)/$@.map.pp
+ $(CP) i2crom.ccs ibl_$(TARGET)/$@.ccs
+ $(CP) i2crom.ccs ibl_$(TARGET)/$@.dat
# For the init code a raw image is created as well as the i2c code to verify
# endian independent code is generated. The symbols required for linking
# the full application are then extracted
-iblInit: $(CFG_MODULES) $(MODULES) utils
- cat ibl_$(TARGET)/ibl_init_objs_template.inc | sed -e s/ENDIAN_TAG/$(IEXT)/g > ibl_$(TARGET)/ibl_init_objs.inc
+iblInit: $(CFG_MODULES) $(MODULES)
+ cat ibl_$(TARGET)/ibl_init_objs_template.inc | sed -e s/ENDIAN_TAG/$(IEXT)/g > ibl_$(TARGET)/ibl_init_objs.tmp
+ $(CC) -ppo $(MAINDEFS) -DENDIAN_TAG=$(IEXT) ibl_$(TARGET)/ibl_init_objs.tmp
+ $(CP) ibl_$(TARGET)/ibl_init_objs.pp ibl_$(TARGET)/ibl_init_objs.inc
$(LD) -o ibl_$(TARGET)/ibl_$(TARGET)_init.out -m ibl_$(TARGET)/ibl_$(TARGET)_init.map ibl_$(TARGET)/ibl_init.cmd $(RTLIBS)
$(CP) ibl_$(TARGET)/ibl_$(TARGET)_init.out ibl_$(TARGET)/ibl_$(TARGET)_init.$(IEXT).out
$(RM) -f ibl_$(TARGET)/ibl_init_obj.inc
../util/btoccs/b2i2c ibl_$(TARGET)/ibl.b ibl_$(TARGET)/ibl.i2c.b
../util/btoccs/b2ccs ibl_$(TARGET)/ibl.i2c.b ibl_$(TARGET)/ibl_init.i2c.$(IEXT).ccs
- bash ../util/symExtract/symExtract ibl_$(TARGET)/ibl_$(TARGET)_init.map ibl_$(TARGET)/ibl_init_symbols.inc $(COMMON_SYMBOLS)
+ sed -e 's/\\r//' ../util/symExtract/symExtract > ../util/symExtract/symExtract_unix
+ bash ../util/symExtract/symExtract_unix ibl_$(TARGET)/ibl_$(TARGET)_init.map ibl_$(TARGET)/ibl_init_symbols.inc $(COMMON_SYMBOLS)
+ rm -f ../util/symExtract/symExtract_unix
iblMain: iblInit $(CFG_MODULES) $(MODULES)
make -C $(IBL_ROOT)/$@/$(ARCH)/make $@
$(CFG_MODULES):
- @echo making $@
- make -C $(IBL_ROOT)/$@/$(ARCH)/make CDEFS='$(MAINDEFS)' $@
+ @echo making $@ SPI_CFG=$(SPI_CFG) CDEFS=$(CDEFS) EXCLUDES=$(EXCLUDES)
+ make -C $(IBL_ROOT)/$@/$(ARCH)/make CDEFS='$(MAINDEFS) $(SPI_CFG)' $@
utils:
+ifeq ($(HAS_SPI),1)
+ make -C $(IBL_ROOT)/util/spiWrite TARGET=$(TARGET) SPI_DEFS='$(SPI_DEFS)' MAINDEFS='$(MAINDEFS) $(SPI_CFG)' $(TARGET)
+ make -C $(IBL_ROOT)/util/spiConfig TARGET=$(TARGET) SPI_DEFS='$(SPI_DEFS)' MAINDEFS='$(MAINDEFS) $(SPI_CFG)' $(TARGET)
+endif
make -C $(IBL_ROOT)/util/btoccs
make -C $(IBL_ROOT)/util/romparse TARGET=$(TARGET)
- make -C $(IBL_ROOT)/util/i2cRead TARGET=$(TARGET) $(TARGET)
- make -C $(IBL_ROOT)/util/i2cWrite TARGET=$(TARGET) I2C_SIZE_BYTES=$(I2C_SIZE_BYTES) $(TARGET)
- make -C $(IBL_ROOT)/util/i2cConfig $(TARGET)
+ifeq ($(HAS_I2C),1)
+ make -C $(IBL_ROOT)/util/i2cRead TARGET=$(TARGET) $(TARGET)
+ make -C $(IBL_ROOT)/util/i2cWrite TARGET=$(TARGET) I2C_SIZE_BYTES=$(I2C_SIZE_BYTES) MAINDEFS='$(MAINDEFS) $(SPI_CFG)' $(TARGET)
+ make -C $(IBL_ROOT)/util/i2cConfig $(TARGET) MAINDEFS='$(MAINDEFS) $(SPI_CFG)'
+endif
make -C $(IBL_ROOT)/util/bconvert
clean: $(CLEAN_MODULES) hwClean
rm -rf ibl_$(TARGET)/ibl_init.i2c.le.ccs
rm -rf ibl_$(TARGET)/ibl_init.le.ccs
rm -rf ibl_$(TARGET)/ibl_init.be.ccs
- rm -rf ibl_$(TARGET)/i2crom.ccs
- rm -rf ibl_$(TARGET)/i2crom.dat
- rm -rf ibl_$(TARGET)/i2crom_0x50.dat
- rm -rf ibl_$(TARGET)/i2crom_0x51.dat
- rm -rf ibl_$(TARGET)/i2crom.map.pp
+ rm -rf ibl_$(TARGET)/i2crom*.ccs
+ rm -rf ibl_$(TARGET)/i2crom*.dat
+ rm -rf ibl_$(TARGET)/i2crom*.bin
+ rm -rf ibl_$(TARGET)/i2crom*.map.pp
rm -rf ibl_$(TARGET)/ibl_init_objs.inc
+ rm -rf ibl_$(TARGET)/ibl_init_objs.pp
rm -rf ibl_$(TARGET)/ibl_init_symbols.inc
rm -rf ibl_$(TARGET)/ibl_objs.inc
rm -rf ibl_$(TARGET)/ibl_objs.pp
rm -rf ibl_$(TARGET)/ibl_objs.tmp
+ rm -rf ibl_$(TARGET)/spiRom*.dat
+ rm -rf ibl_$(TARGET)/spiRom*.map.pp