]> git.kernelconcepts.de Git - karo-tx-uboot.git/commitdiff
merged current version of git://git.denx.de/u-boot
authorLothar Waßmann <LW@KARO-electronics.de>
Thu, 23 Feb 2012 13:40:17 +0000 (14:40 +0100)
committerLothar Waßmann <LW@KARO-electronics.de>
Thu, 23 Feb 2012 13:40:17 +0000 (14:40 +0100)
16 files changed:
1  2 
Makefile
common/Makefile
common/cmd_bootm.c
common/cmd_mmc.c
common/cmd_sata.c
disk/part.c
drivers/block/Makefile
drivers/input/Makefile
drivers/misc/Makefile
drivers/mtd/nand/Makefile
drivers/mtd/spi/Makefile
drivers/net/smc911x.h
drivers/spi/Makefile
include/ahci.h
include/environment.h
include/lcd.h

diff --combined Makefile
index db708fd4f9a73d676b1de92740b4b8afc0dff1e5,11aac21ea9b722b6d03273e9e1853d90689c7263..4585747b6415f1a54bf2031d9e9ec63d3310333f
+++ b/Makefile
@@@ -1,5 -1,5 +1,5 @@@
  #
- # (C) Copyright 2000-2009
+ # (C) Copyright 2000-2011
  # Wolfgang Denk, DENX Software Engineering, wd@denx.de.
  #
  # See file CREDITS for list of people who contributed to this
@@@ -21,8 -21,8 +21,8 @@@
  # MA 02111-1307 USA
  #
  
- VERSION = 2009
- PATCHLEVEL = 08
+ VERSION = 2011
+ PATCHLEVEL = 12
  SUBLEVEL =
  EXTRAVERSION =
  ifneq "$(SUBLEVEL)" ""
@@@ -30,15 -30,18 +30,16 @@@ U_BOOT_VERSION = $(VERSION).$(PATCHLEVE
  else
  U_BOOT_VERSION = $(VERSION).$(PATCHLEVEL)$(EXTRAVERSION)
  endif
 -TIMESTAMP_FILE = $(obj)include/generated/timestamp_autogenerated.h
 -VERSION_FILE = $(obj)include/generated/version_autogenerated.h
  
  HOSTARCH := $(shell uname -m | \
-       sed -e s/i.86/i386/ \
+       sed -e s/i.86/x86/ \
            -e s/sun4u/sparc64/ \
            -e s/arm.*/arm/ \
            -e s/sa110/arm/ \
-           -e s/powerpc/ppc/ \
-           -e s/ppc64/ppc/ \
-           -e s/macppc/ppc/)
+           -e s/ppc64/powerpc/ \
+           -e s/ppc/powerpc/ \
+           -e s/macppc/powerpc/\
+           -e s/sh.*/sh/)
  
  HOSTOS := $(shell uname -s | tr '[:upper:]' '[:lower:]' | \
            sed -e 's/\(cygwin\).*/cygwin/')
@@@ -101,10 -104,11 +102,11 @@@ $(if $(BUILD_DIR),,$(error output direc
  endif # ifneq ($(BUILD_DIR),)
  
  OBJTREE               := $(if $(BUILD_DIR),$(BUILD_DIR),$(CURDIR))
+ SPLTREE               := $(OBJTREE)/spl
  SRCTREE               := $(CURDIR)
  TOPDIR                := $(SRCTREE)
  LNDIR         := $(OBJTREE)
- export        TOPDIR SRCTREE OBJTREE
+ export        TOPDIR SRCTREE OBJTREE SPLTREE
  
  MKCONFIG      := $(SRCTREE)/mkconfig
  export MKCONFIG
@@@ -126,25 -130,20 +128,23 @@@ src :
  endif
  export obj src
  
 +TIMESTAMP_FILE = $(obj)include/timestamp_autogenerated.h
 +VERSION_FILE = $(obj)include/version_autogenerated.h
 +
  # Make sure CDPATH settings don't interfere
  unexport CDPATH
  
  #########################################################################
  
- ifeq ($(ARCH),powerpc)
- ARCH = ppc
- endif
  # The "tools" are needed early, so put this first
  # Don't include stuff already done in $(LIBS)
- SUBDIRS       = tools \
-         examples/standalone \
-         examples/api
+ # The "examples" conditionally depend on U-Boot (say, when USE_PRIVATE_LIBGCC
+ # is "yes"), so compile examples after U-Boot is compiled.
+ SUBDIR_TOOLS = tools
+ SUBDIR_EXAMPLES = examples/standalone examples/api
+ SUBDIRS = $(SUBDIR_TOOLS)
  
- .PHONY : $(SUBDIRS)
+ .PHONY : $(SUBDIRS) $(VERSION_FILE) $(TIMESTAMP_FILE)
  
  ifeq ($(obj)include/config.mk,$(wildcard $(obj)include/config.mk))
  
@@@ -155,6 -154,10 +155,10 @@@ all
  sinclude $(obj)include/autoconf.mk.dep
  sinclude $(obj)include/autoconf.mk
  
+ ifndef CONFIG_SANDBOX
+ SUBDIRS += $(SUBDIR_EXAMPLES)
+ endif
  # load ARCH, BOARD, and CPU configuration
  include $(obj)include/config.mk
  export        ARCH CPU BOARD VENDOR SOC
@@@ -167,103 -170,163 +171,163 @@@ endi
  # load other configuration
  include $(TOPDIR)/config.mk
  
+ # If board code explicitly specified LDSCRIPT or CONFIG_SYS_LDSCRIPT, use
+ # that (or fail if absent).  Otherwise, search for a linker script in a
+ # standard location.
+ ifndef LDSCRIPT
+       #LDSCRIPT := $(TOPDIR)/board/$(BOARDDIR)/u-boot.lds.debug
+       ifdef CONFIG_SYS_LDSCRIPT
+               # need to strip off double quotes
+               LDSCRIPT := $(subst ",,$(CONFIG_SYS_LDSCRIPT))
+       endif
+ endif
+ ifndef LDSCRIPT
+       ifeq ($(CONFIG_NAND_U_BOOT),y)
+               LDSCRIPT := $(TOPDIR)/board/$(BOARDDIR)/u-boot-nand.lds
+               ifeq ($(wildcard $(LDSCRIPT)),)
+                       LDSCRIPT := $(TOPDIR)/$(CPUDIR)/u-boot-nand.lds
+               endif
+       endif
+       ifeq ($(wildcard $(LDSCRIPT)),)
+               LDSCRIPT := $(TOPDIR)/board/$(BOARDDIR)/u-boot.lds
+       endif
+       ifeq ($(wildcard $(LDSCRIPT)),)
+               LDSCRIPT := $(TOPDIR)/$(CPUDIR)/u-boot.lds
+       endif
+       ifeq ($(wildcard $(LDSCRIPT)),)
+ $(error could not find linker script)
+       endif
+ endif
  #########################################################################
  # U-Boot objects....order is important (i.e. start must be first)
  
- OBJS  = cpu/$(CPU)/start.o
- ifeq ($(CPU),i386)
- OBJS += cpu/$(CPU)/start16.o
- OBJS += cpu/$(CPU)/resetvec.o
+ OBJS  = $(CPUDIR)/start.o
+ ifeq ($(CPU),x86)
+ OBJS += $(CPUDIR)/start16.o
+ OBJS += $(CPUDIR)/resetvec.o
  endif
  ifeq ($(CPU),ppc4xx)
- OBJS += cpu/$(CPU)/resetvec.o
+ OBJS += $(CPUDIR)/resetvec.o
  endif
  ifeq ($(CPU),mpc85xx)
- OBJS += cpu/$(CPU)/resetvec.o
+ OBJS += $(CPUDIR)/resetvec.o
  endif
  
  OBJS := $(addprefix $(obj),$(OBJS))
  
- LIBS  = lib_generic/libgeneric.a
- LIBS += lib_generic/lzma/liblzma.a
- LIBS += lib_generic/lzo/liblzo.a
+ LIBS  = lib/libgeneric.o
+ LIBS += lib/lzma/liblzma.o
+ LIBS += lib/lzo/liblzo.o
+ LIBS += lib/zlib/libz.o
  LIBS += $(shell if [ -f board/$(VENDOR)/common/Makefile ]; then echo \
-       "board/$(VENDOR)/common/lib$(VENDOR).a"; fi)
- LIBS += cpu/$(CPU)/lib$(CPU).a
+       "board/$(VENDOR)/common/lib$(VENDOR).o"; fi)
+ LIBS += $(CPUDIR)/lib$(CPU).o
  ifdef SOC
- LIBS += cpu/$(CPU)/$(SOC)/lib$(SOC).a
+ LIBS += $(CPUDIR)/$(SOC)/lib$(SOC).o
  endif
  ifeq ($(CPU),ixp)
- LIBS += cpu/ixp/npe/libnpe.a
+ LIBS += arch/arm/cpu/ixp/npe/libnpe.o
+ endif
+ ifeq ($(CONFIG_OF_EMBED),y)
+ LIBS += dts/libdts.o
  endif
- LIBS += lib_$(ARCH)/lib$(ARCH).a
- LIBS += fs/cramfs/libcramfs.a fs/fat/libfat.a fs/fdos/libfdos.a fs/jffs2/libjffs2.a \
-       fs/reiserfs/libreiserfs.a fs/ext2/libext2fs.a fs/yaffs2/libyaffs2.a \
-       fs/ubifs/libubifs.a
- LIBS += net/libnet.a
- LIBS += disk/libdisk.a
- LIBS += drivers/bios_emulator/libatibiosemu.a
- LIBS += drivers/block/libblock.a
- LIBS += drivers/dma/libdma.a
- LIBS += drivers/fpga/libfpga.a
- LIBS += drivers/gpio/libgpio.a
- LIBS += drivers/hwmon/libhwmon.a
- LIBS += drivers/i2c/libi2c.a
- LIBS += drivers/input/libinput.a
- LIBS += drivers/misc/libmisc.a
- LIBS += drivers/mmc/libmmc.a
- LIBS += drivers/mtd/libmtd.a
- LIBS += drivers/mtd/nand/libnand.a
- LIBS += drivers/mtd/onenand/libonenand.a
- LIBS += drivers/mtd/ubi/libubi.a
- LIBS += drivers/mtd/spi/libspi_flash.a
- LIBS += drivers/net/libnet.a
- LIBS += drivers/net/phy/libphy.a
- LIBS += drivers/net/sk98lin/libsk98lin.a
- LIBS += drivers/pci/libpci.a
- LIBS += drivers/pcmcia/libpcmcia.a
- LIBS += drivers/power/libpower.a
- LIBS += drivers/spi/libspi.a
+ LIBS += arch/$(ARCH)/lib/lib$(ARCH).o
+ LIBS += fs/cramfs/libcramfs.o fs/fat/libfat.o fs/fdos/libfdos.o fs/jffs2/libjffs2.o \
+       fs/reiserfs/libreiserfs.o fs/ext2/libext2fs.o fs/yaffs2/libyaffs2.o \
+       fs/ubifs/libubifs.o
+ LIBS += net/libnet.o
+ LIBS += disk/libdisk.o
+ LIBS += drivers/bios_emulator/libatibiosemu.o
+ LIBS += drivers/block/libblock.o
+ LIBS += drivers/dma/libdma.o
+ LIBS += drivers/fpga/libfpga.o
+ LIBS += drivers/gpio/libgpio.o
+ LIBS += drivers/hwmon/libhwmon.o
+ LIBS += drivers/i2c/libi2c.o
+ LIBS += drivers/input/libinput.o
+ LIBS += drivers/misc/libmisc.o
+ LIBS += drivers/mmc/libmmc.o
+ LIBS += drivers/mtd/libmtd.o
+ LIBS += drivers/mtd/nand/libnand.o
+ LIBS += drivers/mtd/onenand/libonenand.o
+ LIBS += drivers/mtd/ubi/libubi.o
+ LIBS += drivers/mtd/spi/libspi_flash.o
+ LIBS += drivers/net/libnet.o
+ LIBS += drivers/net/phy/libphy.o
+ LIBS += drivers/pci/libpci.o
+ LIBS += drivers/pcmcia/libpcmcia.o
+ LIBS += drivers/power/libpower.o
+ LIBS += drivers/spi/libspi.o
  ifeq ($(CPU),mpc83xx)
- LIBS += drivers/qe/qe.a
+ LIBS += drivers/qe/libqe.o
+ LIBS += arch/powerpc/cpu/mpc8xxx/ddr/libddr.o
+ LIBS += arch/powerpc/cpu/mpc8xxx/lib8xxx.o
  endif
  ifeq ($(CPU),mpc85xx)
- LIBS += drivers/qe/qe.a
- LIBS += cpu/mpc8xxx/ddr/libddr.a
- TAG_SUBDIRS += cpu/mpc8xxx
+ LIBS += drivers/qe/libqe.o
+ LIBS += drivers/net/fm/libfm.o
+ LIBS += arch/powerpc/cpu/mpc8xxx/ddr/libddr.o
+ LIBS += arch/powerpc/cpu/mpc8xxx/lib8xxx.o
  endif
  ifeq ($(CPU),mpc86xx)
- LIBS += cpu/mpc8xxx/ddr/libddr.a
- TAG_SUBDIRS += cpu/mpc8xxx
+ LIBS += arch/powerpc/cpu/mpc8xxx/ddr/libddr.o
+ LIBS += arch/powerpc/cpu/mpc8xxx/lib8xxx.o
+ endif
+ LIBS += drivers/rtc/librtc.o
+ LIBS += drivers/serial/libserial.o
+ ifeq ($(CONFIG_GENERIC_LPC_TPM),y)
+ LIBS += drivers/tpm/libtpm.o
+ endif
+ LIBS += drivers/twserial/libtws.o
+ LIBS += drivers/usb/eth/libusb_eth.o
+ LIBS += drivers/usb/gadget/libusb_gadget.o
+ LIBS += drivers/usb/host/libusb_host.o
+ LIBS += drivers/usb/musb/libusb_musb.o
+ LIBS += drivers/usb/phy/libusb_phy.o
+ LIBS += drivers/usb/ulpi/libusb_ulpi.o
+ LIBS += drivers/video/libvideo.o
+ LIBS += drivers/watchdog/libwatchdog.o
+ LIBS += common/libcommon.o
+ LIBS += lib/libfdt/libfdt.o
+ LIBS += api/libapi.o
+ LIBS += post/libpost.o
+ ifneq ($(CONFIG_AM33XX)$(CONFIG_OMAP34XX)$(CONFIG_OMAP44XX)$(CONFIG_OMAP54XX),)
+ LIBS += $(CPUDIR)/omap-common/libomap-common.o
+ endif
+ ifeq ($(SOC),mx5)
+ LIBS += $(CPUDIR)/imx-common/libimx-common.o
+ endif
+ ifeq ($(SOC),mx6)
+ LIBS += $(CPUDIR)/imx-common/libimx-common.o
+ endif
+ ifeq ($(SOC),s5pc1xx)
+ LIBS += $(CPUDIR)/s5p-common/libs5p-common.o
+ endif
+ ifeq ($(SOC),exynos)
+ LIBS += $(CPUDIR)/s5p-common/libs5p-common.o
  endif
- LIBS += drivers/rtc/librtc.a
- LIBS += drivers/serial/libserial.a
- LIBS += drivers/twserial/libtws.a
- LIBS += drivers/usb/gadget/libusb_gadget.a
- LIBS += drivers/usb/host/libusb_host.a
- LIBS += drivers/usb/musb/libusb_musb.a
- LIBS += drivers/video/libvideo.a
- LIBS += drivers/watchdog/libwatchdog.a
- LIBS += common/libcommon.a
- LIBS += libfdt/libfdt.a
- LIBS += api/libapi.a
- LIBS += post/libpost.a
- LIBS := $(addprefix $(obj),$(LIBS))
- .PHONY : $(LIBS) $(TIMESTAMP_FILE) $(VERSION_FILE)
- LIBBOARD = board/$(BOARDDIR)/lib$(BOARD).a
+ LIBS := $(addprefix $(obj),$(sort $(LIBS)))
+ .PHONY : $(LIBS)
+ LIBBOARD = board/$(BOARDDIR)/lib$(BOARD).o
  LIBBOARD := $(addprefix $(obj),$(LIBBOARD))
  
  # Add GCC lib
  ifdef USE_PRIVATE_LIBGCC
  ifeq ("$(USE_PRIVATE_LIBGCC)", "yes")
- PLATFORM_LIBGCC = -L $(OBJTREE)/lib_$(ARCH) -lgcc
+ PLATFORM_LIBGCC = $(OBJTREE)/arch/$(ARCH)/lib/libgcc.o
  else
  PLATFORM_LIBGCC = -L $(USE_PRIVATE_LIBGCC) -lgcc
  endif
  else
- PLATFORM_LIBGCC = -L $(shell dirname `$(CC) $(CFLAGS) -print-libgcc-file-name`) -lgcc
+ PLATFORM_LIBGCC := -L $(shell dirname `$(CC) $(CFLAGS) -print-libgcc-file-name`) -lgcc
  endif
  PLATFORM_LIBS += $(PLATFORM_LIBGCC)
  export PLATFORM_LIBS
@@@ -276,26 -339,45 +340,45 @@@ LDPPFLAGS += 
        $(shell $(LD) --version | \
          sed -ne 's/GNU ld version \([0-9][0-9]*\)\.\([0-9][0-9]*\).*/-DLD_MAJOR=\1 -DLD_MINOR=\2/p')
  
- ifeq ($(CONFIG_NAND_U_BOOT),y)
- NAND_SPL = nand_spl
- U_BOOT_NAND = $(obj)u-boot-nand.bin
- endif
- ifeq ($(CONFIG_ONENAND_U_BOOT),y)
- ONENAND_IPL = onenand_ipl
- U_BOOT_ONENAND = $(obj)u-boot-onenand.bin
- endif
  __OBJS := $(subst $(obj),,$(OBJS))
  __LIBS := $(subst $(obj),,$(LIBS)) $(subst $(obj),,$(LIBBOARD))
  
  #########################################################################
  #########################################################################
  
+ ifneq ($(CONFIG_BOARD_SIZE_LIMIT),)
+ BOARD_SIZE_CHECK = \
+       @actual=`wc -c $@ | awk '{print $$1}'`; \
+       limit=$(CONFIG_BOARD_SIZE_LIMIT); \
+       if test $$actual -gt $$limit; then \
+               echo "$@ exceeds file size limit:"; \
+               echo "  limit:  $$limit bytes"; \
+               echo "  actual: $$actual bytes"; \
+               echo "  excess: $$((actual - limit)) bytes"; \
+               exit 1; \
+       fi
+ else
+ BOARD_SIZE_CHECK =
+ endif
  # Always append ALL so that arch config.mk's can add custom ones
- ALL += $(obj)u-boot.srec $(obj)u-boot.bin $(obj)System.map $(U_BOOT_NAND) $(U_BOOT_ONENAND)
+ ALL-y += $(obj)u-boot.srec $(obj)u-boot.bin $(obj)System.map
  
- all:          $(ALL)
+ ALL-$(CONFIG_NAND_U_BOOT) += $(obj)u-boot-nand.bin
+ ALL-$(CONFIG_ONENAND_U_BOOT) += $(obj)u-boot-onenand.bin
+ ONENAND_BIN ?= $(obj)onenand_ipl/onenand-ipl-2k.bin
+ ALL-$(CONFIG_MMC_U_BOOT) += $(obj)mmc_spl/u-boot-mmc-spl.bin
+ ALL-$(CONFIG_SPL) += $(obj)spl/u-boot-spl.bin
+ ALL-$(CONFIG_OF_SEPARATE) += $(obj)u-boot.dtb $(obj)u-boot-dtb.bin
+ all:          $(ALL-y) $(SUBDIR_EXAMPLES)
+ $(obj)u-boot.dtb:     $(obj)u-boot
+               $(MAKE) -C dts binary
+               mv $(obj)dts/dt.dtb $@
+ $(obj)u-boot-dtb.bin: $(obj)u-boot.bin $(obj)u-boot.dtb
+               cat $^ >$@
  
  $(obj)u-boot.hex:     $(obj)u-boot
                $(OBJCOPY) ${OBJCFLAGS} -O ihex $< $@
@@@ -305,10 -387,12 +388,12 @@@ $(obj)u-boot.srec:      $(obj)u-boo
  
  $(obj)u-boot.bin:     $(obj)u-boot
                $(OBJCOPY) ${OBJCFLAGS} -O binary $< $@
+               $(BOARD_SIZE_CHECK)
  
  $(obj)u-boot.ldr:     $(obj)u-boot
-               $(obj)tools/envcrc --binary > $(obj)env-ldr.o
+               $(CREATE_LDR_ENV)
                $(LDR) -T $(CONFIG_BFIN_CPU) -c $@ $< $(LDR_FLAGS)
+               $(BOARD_SIZE_CHECK)
  
  $(obj)u-boot.ldr.hex: $(obj)u-boot.ldr
                $(OBJCOPY) ${OBJCFLAGS} -O ihex $< $@ -I binary
@@@ -317,25 -401,66 +402,66 @@@ $(obj)u-boot.ldr.srec:  $(obj)u-boot.ld
                $(OBJCOPY) ${OBJCFLAGS} -O srec $< $@ -I binary
  
  $(obj)u-boot.img:     $(obj)u-boot.bin
-               ./tools/mkimage -A $(ARCH) -T firmware -C none \
-               -a $(TEXT_BASE) -e 0 \
+               $(obj)tools/mkimage -A $(ARCH) -T firmware -C none \
+               -O u-boot -a $(CONFIG_SYS_TEXT_BASE) -e 0 \
                -n $(shell sed -n -e 's/.*U_BOOT_VERSION//p' $(VERSION_FILE) | \
                        sed -e 's/"[     ]*$$/ for $(BOARD) board"/') \
                -d $< $@
  
+ $(obj)u-boot.imx:       $(obj)u-boot.bin
+               $(obj)tools/mkimage -n  $(CONFIG_IMX_CONFIG) -T imximage \
+               -e $(CONFIG_SYS_TEXT_BASE) -d $< $@
+ $(obj)u-boot.kwb:       $(obj)u-boot.bin
+               $(obj)tools/mkimage -n $(CONFIG_SYS_KWD_CONFIG) -T kwbimage \
+               -a $(CONFIG_SYS_TEXT_BASE) -e $(CONFIG_SYS_TEXT_BASE) -d $< $@
  $(obj)u-boot.sha1:    $(obj)u-boot.bin
                $(obj)tools/ubsha1 $(obj)u-boot.bin
  
  $(obj)u-boot.dis:     $(obj)u-boot
                $(OBJDUMP) -d $< > $@
  
+ $(obj)u-boot.ubl:       $(obj)spl/u-boot-spl.bin $(obj)u-boot.bin
+               $(OBJCOPY) ${OBJCFLAGS} --pad-to=$(PAD_TO) -O binary $(obj)spl/u-boot-spl $(obj)spl/u-boot-spl-pad.bin
+               cat $(obj)spl/u-boot-spl-pad.bin $(obj)u-boot.bin > $(obj)u-boot-ubl.bin
+               $(obj)tools/mkimage -n $(UBL_CONFIG) -T ublimage \
+               -e $(CONFIG_SYS_TEXT_BASE) -d $(obj)u-boot-ubl.bin $(obj)u-boot.ubl
+               rm $(obj)u-boot-ubl.bin
+               rm $(obj)spl/u-boot-spl-pad.bin
+ $(obj)u-boot.ais:       $(obj)spl/u-boot-spl.bin $(obj)u-boot.bin
+               $(obj)tools/mkimage -s -n /dev/null -T aisimage \
+                       -e $(CONFIG_SPL_TEXT_BASE) \
+                       -d $(obj)spl/u-boot-spl.bin \
+                       $(obj)spl/u-boot-spl.ais
+               $(OBJCOPY) ${OBJCFLAGS} -I binary \
+                       --pad-to=$(CONFIG_SPL_MAX_SIZE) -O binary \
+                       $(obj)spl/u-boot-spl.ais $(obj)spl/u-boot-spl-pad.ais
+               cat $(obj)spl/u-boot-spl-pad.ais $(obj)u-boot.bin > \
+                       $(obj)u-boot.ais
+               rm $(obj)spl/u-boot-spl{,-pad}.ais
+ $(obj)u-boot.sb:       $(obj)u-boot.bin $(obj)spl/u-boot-spl.bin
+               elftosb -zdf imx28 -c $(TOPDIR)/board/$(BOARDDIR)/u-boot.bd \
+                       -o $(obj)u-boot.sb
+ ifeq ($(CONFIG_SANDBOX),y)
+ GEN_UBOOT = \
+               cd $(LNDIR) && $(CC) $(SYMS) -T $(obj)u-boot.lds \
+                       -Wl,--start-group $(__LIBS) -Wl,--end-group \
+                       $(PLATFORM_LIBS) -Wl,-Map -Wl,u-boot.map -o u-boot
+ else
  GEN_UBOOT = \
                UNDEF_SYM=`$(OBJDUMP) -x $(LIBBOARD) $(LIBS) | \
                sed  -n -e 's/.*\($(SYM_PREFIX)__u_boot_cmd_.*\)/-u\1/p'|sort|uniq`;\
-               cd $(LNDIR) && $(LD) $(LDFLAGS) $$UNDEF_SYM $(__OBJS) \
+               cd $(LNDIR) && $(LD) $(LDFLAGS) $(LDFLAGS_$(@F)) $$UNDEF_SYM $(__OBJS) \
                        --start-group $(__LIBS) --end-group $(PLATFORM_LIBS) \
                        -Map u-boot.map -o u-boot
- $(obj)u-boot: depend $(SUBDIRS) $(OBJS) $(LIBBOARD) $(LIBS) $(LDSCRIPT) $(obj)u-boot.lds
+ endif
+ $(obj)u-boot: depend \
+               $(SUBDIR_TOOLS) $(OBJS) $(LIBBOARD) $(LIBS) $(LDSCRIPT) $(obj)u-boot.lds
                $(GEN_UBOOT)
  ifeq ($(CONFIG_KALLSYMS),y)
                smap=`$(call SYSTEM_MAP,u-boot) | \
  endif
  
  $(OBJS):      depend
-               $(MAKE) -C cpu/$(CPU) $(if $(REMOTE_BUILD),$@,$(notdir $@))
+               $(MAKE) -C $(CPUDIR) $(if $(REMOTE_BUILD),$@,$(notdir $@))
  
- $(LIBS):      depend $(SUBDIRS)
+ $(LIBS):      depend $(SUBDIR_TOOLS)
                $(MAKE) -C $(dir $(subst $(obj),,$@))
  
  $(LIBBOARD):  depend $(LIBS)
  $(SUBDIRS):   depend
                $(MAKE) -C $@ all
  
+ $(SUBDIR_EXAMPLES): $(obj)u-boot
  $(LDSCRIPT):  depend
                $(MAKE) -C $(dir $@) $(notdir $@)
  
  $(obj)u-boot.lds: $(LDSCRIPT)
                $(CPP) $(CPPFLAGS) $(LDPPFLAGS) -ansi -D__ASSEMBLY__ -P - <$^ >$@
  
- $(NAND_SPL):  $(TIMESTAMP_FILE) $(VERSION_FILE) $(obj)include/autoconf.mk
+ nand_spl:     $(TIMESTAMP_FILE) $(VERSION_FILE) depend
                $(MAKE) -C nand_spl/board/$(BOARDDIR) all
  
- $(U_BOOT_NAND):       $(NAND_SPL) $(obj)u-boot.bin
+ $(obj)u-boot-nand.bin:        nand_spl $(obj)u-boot.bin
                cat $(obj)nand_spl/u-boot-spl-16k.bin $(obj)u-boot.bin > $(obj)u-boot-nand.bin
  
$(ONENAND_IPL):       $(TIMESTAMP_FILE) $(VERSION_FILE) $(obj)include/autoconf.mk
onenand_ipl:  $(TIMESTAMP_FILE) $(VERSION_FILE) $(obj)include/autoconf.mk
                $(MAKE) -C onenand_ipl/board/$(BOARDDIR) all
  
- $(U_BOOT_ONENAND):    $(ONENAND_IPL) $(obj)u-boot.bin
-               cat $(obj)onenand_ipl/onenand-ipl-2k.bin $(obj)u-boot.bin > $(obj)u-boot-onenand.bin
-               cat $(obj)onenand_ipl/onenand-ipl-4k.bin $(obj)u-boot.bin > $(obj)u-boot-flexonenand.bin
+ $(obj)u-boot-onenand.bin:     onenand_ipl $(obj)u-boot.bin
+               cat $(ONENAND_BIN) $(obj)u-boot.bin > $(obj)u-boot-onenand.bin
  
- $(VERSION_FILE):
-               @( printf '#define U_BOOT_VERSION "U-Boot %s%s"\n' "$(U_BOOT_VERSION)" \
-                '$(shell $(TOPDIR)/tools/setlocalversion $(TOPDIR))' ) > $@.tmp
-               @cmp -s $@ $@.tmp && rm -f $@.tmp || mv -f $@.tmp $@
+ mmc_spl:      $(TIMESTAMP_FILE) $(VERSION_FILE) depend
+               $(MAKE) -C mmc_spl/board/$(BOARDDIR) all
  
- $(TIMESTAMP_FILE):
-               @date +'#define U_BOOT_DATE "%b %d %C%y"' > $@
-               @date +'#define U_BOOT_TIME "%T"' >> $@
+ $(obj)mmc_spl/u-boot-mmc-spl.bin:     mmc_spl
  
- gdbtools:
-               $(MAKE) -C tools/gdb all || exit 1
+ $(obj)spl/u-boot-spl.bin:     $(SUBDIR_TOOLS) depend
+               $(MAKE) -C spl all
  
  updater:
-               $(MAKE) -C tools/updater all || exit 1
- env:
-               $(MAKE) -C tools/env all MTD_VERSION=${MTD_VERSION} || exit 1
- depend dep:   $(TIMESTAMP_FILE) $(VERSION_FILE) $(obj)include/autoconf.mk
-               for dir in $(SUBDIRS) ; do $(MAKE) -C $$dir _depend ; done
+               $(MAKE) -C tools/updater all
+ # Explicitly make _depend in subdirs containing multiple targets to prevent
+ # parallel sub-makes creating .depend files simultaneously.
+ depend dep:   $(TIMESTAMP_FILE) $(VERSION_FILE) \
+               $(obj)include/autoconf.mk \
+               $(obj)include/generated/generic-asm-offsets.h \
+               $(obj)include/generated/asm-offsets.h
+               for dir in $(SUBDIRS) $(CPUDIR) $(dir $(LDSCRIPT)) ; do \
+                       $(MAKE) -C $$dir _depend ; done
+ TAG_SUBDIRS = $(SUBDIRS)
+ TAG_SUBDIRS += $(dir $(__LIBS))
  TAG_SUBDIRS += include
- TAG_SUBDIRS += lib_generic board/$(BOARDDIR)
- TAG_SUBDIRS += cpu/$(CPU)
- TAG_SUBDIRS += lib_$(ARCH)
- TAG_SUBDIRS += fs/cramfs
- TAG_SUBDIRS += fs/fat
- TAG_SUBDIRS += fs/fdos
- TAG_SUBDIRS += fs/jffs2
- TAG_SUBDIRS += fs/yaffs2
- TAG_SUBDIRS += net
- TAG_SUBDIRS += disk
- TAG_SUBDIRS += common
- TAG_SUBDIRS += drivers/bios_emulator
- TAG_SUBDIRS += drivers/block
- TAG_SUBDIRS += drivers/gpio
- TAG_SUBDIRS += drivers/hwmon
- TAG_SUBDIRS += drivers/i2c
- TAG_SUBDIRS += drivers/input
- TAG_SUBDIRS += drivers/misc
- TAG_SUBDIRS += drivers/mmc
- TAG_SUBDIRS += drivers/mtd
- TAG_SUBDIRS += drivers/mtd/nand
- TAG_SUBDIRS += drivers/mtd/onenand
- TAG_SUBDIRS += drivers/mtd/spi
- TAG_SUBDIRS += drivers/net
- TAG_SUBDIRS += drivers/net/sk98lin
- TAG_SUBDIRS += drivers/pci
- TAG_SUBDIRS += drivers/pcmcia
- TAG_SUBDIRS += drivers/qe
- TAG_SUBDIRS += drivers/rtc
- TAG_SUBDIRS += drivers/serial
- TAG_SUBDIRS += drivers/spi
- TAG_SUBDIRS += drivers/usb
- TAG_SUBDIRS += drivers/video
+ FIND := find
+ FINDFLAGS := -L
  
  tags ctags:
-               ctags -w -o $(obj)ctags `find $(SUBDIRS) $(TAG_SUBDIRS) \
-                                               -name '*.[ch]' -print`
+               ctags -w -o $(obj)ctags `$(FIND) $(FINDFLAGS) $(TAG_SUBDIRS) \
+                                               -name '*.[chS]' -print`
  
  etags:
-               etags -a -o $(obj)etags `find $(SUBDIRS) $(TAG_SUBDIRS) \
-                                               -name '*.[ch]' -print`
+               etags -a -o $(obj)etags `$(FIND) $(FINDFLAGS) $(TAG_SUBDIRS) \
+                                               -name '*.[chS]' -print`
  cscope:
-               find $(SUBDIRS) $(TAG_SUBDIRS) -name '*.[ch]' -print \
-                                               cscope.files
+               $(FIND) $(FINDFLAGS) $(TAG_SUBDIRS) -name '*.[chS]' -print > \
+                                               cscope.files
                cscope -b -q -k
  
  SYSTEM_MAP = \
@@@ -461,7 -558,7 +559,7 @@@ $(obj)include/autoconf.mk.dep: $(obj)in
        @$(XECHO) Generating $@ ; \
        set -e ; \
        : Generate the dependancies ; \
-       $(CC) -x c -DDO_DEPS_ONLY -M $(HOSTCFLAGS) $(CPPFLAGS) \
+       $(CC) -x c -DDO_DEPS_ONLY -M $(CFLAGS) $(CPPFLAGS) \
                -MQ $(obj)include/autoconf.mk include/common.h > $@
  
  $(obj)include/autoconf.mk: $(obj)include/config.h
                sed -n -f tools/scripts/define2mk.sed > $@.tmp && \
        mv $@.tmp $@
  
+ $(obj)include/generated/generic-asm-offsets.h:        $(obj)include/autoconf.mk.dep \
+       $(obj)lib/asm-offsets.s
+       @$(XECHO) Generating $@
+       tools/scripts/make-asm-offsets $(obj)lib/asm-offsets.s $@
+ $(obj)lib/asm-offsets.s:      $(obj)include/autoconf.mk.dep \
+       $(src)lib/asm-offsets.c
+       @mkdir -p $(obj)lib
+       $(CC) -DDO_DEPS_ONLY \
+               $(CFLAGS) $(CFLAGS_$(BCURDIR)/$(@F)) $(CFLAGS_$(BCURDIR)) \
+               -o $@ $(src)lib/asm-offsets.c -c -S
+ $(obj)include/generated/asm-offsets.h:        $(obj)include/autoconf.mk.dep \
+       $(obj)$(CPUDIR)/$(SOC)/asm-offsets.s
+       @echo Generating $@
+       tools/scripts/make-asm-offsets $(obj)$(CPUDIR)/$(SOC)/asm-offsets.s $@
+ $(obj)$(CPUDIR)/$(SOC)/asm-offsets.s: $(obj)include/autoconf.mk.dep
+       @mkdir -p $(obj)$(CPUDIR)/$(SOC)
+       if [ -f $(src)$(CPUDIR)/$(SOC)/asm-offsets.c ];then \
+               $(CC) -DDO_DEPS_ONLY \
+               $(CFLAGS) $(CFLAGS_$(BCURDIR)/$(@F)) $(CFLAGS_$(BCURDIR)) \
+                       -o $@ $(src)$(CPUDIR)/$(SOC)/asm-offsets.c -c -S; \
+       else \
+               touch $@; \
+       fi
  #########################################################################
  else  # !config.mk
  all $(obj)u-boot.hex $(obj)u-boot.srec $(obj)u-boot.bin \
  $(obj)u-boot.img $(obj)u-boot.dis $(obj)u-boot \
- $(SUBDIRS) $(TIMESTAMP_FILE) $(VERSION_FILE) gdbtools updater env depend \
- dep tags ctags etags cscope $(obj)System.map:
+ $(filter-out tools,$(SUBDIRS)) \
updater depend dep tags ctags etags cscope $(obj)System.map:
        @echo "System not configured - see README" >&2
        @ exit 1
+ tools: $(VERSION_FILE) $(TIMESTAMP_FILE)
+       $(MAKE) -C $@ all
  endif # config.mk
  
+ $(VERSION_FILE):
+               @mkdir -p $(dir $(VERSION_FILE))
+               @( localvers='$(shell $(TOPDIR)/tools/setlocalversion $(TOPDIR))' ; \
+                  printf '#define PLAIN_VERSION "%s%s"\n' \
+                       "$(U_BOOT_VERSION)" "$${localvers}" ; \
+                  printf '#define U_BOOT_VERSION "U-Boot %s%s"\n' \
+                       "$(U_BOOT_VERSION)" "$${localvers}" ; \
+               ) > $@.tmp
+               @( printf '#define CC_VERSION_STRING "%s"\n' \
+                '$(shell $(CC) --version | head -n 1)' )>>  $@.tmp
+               @( printf '#define LD_VERSION_STRING "%s"\n' \
+                '$(shell $(LD) -v | head -n 1)' )>>  $@.tmp
+               @cmp -s $@ $@.tmp && rm -f $@.tmp || mv -f $@.tmp $@
+ $(TIMESTAMP_FILE):
+               @mkdir -p $(dir $(TIMESTAMP_FILE))
+               @LC_ALL=C date +'#define U_BOOT_DATE "%b %d %C%y"' > $@.tmp
+               @LC_ALL=C date +'#define U_BOOT_TIME "%T"' >> $@.tmp
+               @cmp -s $@ $@.tmp && rm -f $@.tmp || mv -f $@.tmp $@
+ easylogo env gdb:
+       $(MAKE) -C tools/$@ all MTD_VERSION=${MTD_VERSION}
+ gdbtools: gdb
+ tools-all: easylogo env gdb $(VERSION_FILE) $(TIMESTAMP_FILE)
+       $(MAKE) -C tools HOST_TOOLS_ALL=y
  .PHONY : CHANGELOG
  CHANGELOG:
        git log --no-merges U-Boot-1_1_5.. | \
        unexpand -a | sed -e 's/\s\s*$$//' > $@
  
  include/license.h: tools/bin2header COPYING
-        cat COPYING | gzip -9 -c | ./tools/bin2header license_gzip > include/license.h
+       cat COPYING | gzip -9 -c | ./tools/bin2header license_gzip > include/license.h
  #########################################################################
  
  unconfig:
                $(obj)board/*/config.tmp $(obj)board/*/*/config.tmp \
                $(obj)include/autoconf.mk $(obj)include/autoconf.mk.dep
  
- #========================================================================
- # PowerPC
- #========================================================================
- #########################################################################
- ## MPC5xx Systems
- #########################################################################
- canmb_config: unconfig
-       @$(MKCONFIG) -a canmb ppc mpc5xxx canmb
- cmi_mpc5xx_config:    unconfig
-       @$(MKCONFIG) $(@:_config=) ppc mpc5xx cmi
+ %_config::    unconfig
+       @$(MKCONFIG) -A $(@:_config=)
  
- PATI_config:          unconfig
-       @$(MKCONFIG) $(@:_config=) ppc mpc5xx pati mpl
+ sinclude $(obj).boards.depend
+ $(obj).boards.depend: boards.cfg
+       @awk '(NF && $$1 !~ /^#/) { print $$1 ": " $$1 "_config; $$(MAKE)" }' $< > $@
  
- #########################################################################
- ## MPC5xxx Systems
- #########################################################################
- aev_config: unconfig
-       @$(MKCONFIG) -a aev ppc mpc5xxx tqm5200 tqc
- BC3450_config:        unconfig
-       @$(MKCONFIG) -a BC3450 ppc mpc5xxx bc3450
- cm5200_config:        unconfig
-       @$(MKCONFIG) -a cm5200 ppc mpc5xxx cm5200
+ #
+ # Functions to generate common board directory names
+ #
+ lcname        = $(shell echo $(1) | sed -e 's/\(.*\)_config/\L\1/')
+ ucname        = $(shell echo $(1) | sed -e 's/\(.*\)_config/\U\1/')
  
- cpci5200_config:  unconfig
-       @$(MKCONFIG) -a cpci5200  ppc mpc5xxx cpci5200 esd
+ #========================================================================
+ # ARM
+ #========================================================================
  
- digsy_mtc_config \
- digsy_mtc_LOWBOOT_config      \
- digsy_mtc_RAMBOOT_config:     unconfig
-       @mkdir -p $(obj)include
-       @mkdir -p $(obj)board/digsy_mtc
-       @ >$(obj)include/config.h
-       @[ -z "$(findstring LOWBOOT_,$@)" ] || \
-               { echo "TEXT_BASE = 0xFF000000" >$(obj)board/digsy_mtc/config.tmp ; \
-                 echo "... with LOWBOOT configuration" ; \
-               }
-       @[ -z "$(findstring RAMBOOT_,$@)" ] || \
-               { echo "TEXT_BASE = 0x00100000" >$(obj)board/digsy_mtc/config.tmp ; \
-                 echo "... with RAMBOOT configuration" ; \
-               }
-       @$(MKCONFIG) -a digsy_mtc  ppc mpc5xxx digsy_mtc
- hmi1001_config:       unconfig
-       @$(MKCONFIG) hmi1001 ppc mpc5xxx hmi1001
- Lite5200_config                               \
- Lite5200_LOWBOOT_config                       \
- Lite5200_LOWBOOT08_config             \
- icecube_5200_config                   \
- icecube_5200_LOWBOOT_config           \
- icecube_5200_LOWBOOT08_config         \
- icecube_5200_DDR_config                       \
- icecube_5200_DDR_LOWBOOT_config               \
- icecube_5200_DDR_LOWBOOT08_config     \
- icecube_5100_config:                  unconfig
-       @mkdir -p $(obj)include
-       @mkdir -p $(obj)board/icecube
-       @[ -z "$(findstring LOWBOOT_,$@)" ] || \
-               { if [ "$(findstring DDR,$@)" ] ; \
-                       then echo "TEXT_BASE = 0xFF800000" >$(obj)board/icecube/config.tmp ; \
-                       else echo "TEXT_BASE = 0xFF000000" >$(obj)board/icecube/config.tmp ; \
-                 fi ; \
-                 $(XECHO) "... with LOWBOOT configuration" ; \
-               }
-       @[ -z "$(findstring LOWBOOT08,$@)" ] || \
-               { echo "TEXT_BASE = 0xFF800000" >$(obj)board/icecube/config.tmp ; \
-                 echo "... with 8 MB flash only" ; \
-                 $(XECHO) "... with LOWBOOT configuration" ; \
-               }
-       @[ -z "$(findstring DDR,$@)" ] || \
-               { echo "#define CONFIG_MPC5200_DDR"     >>$(obj)include/config.h ; \
-                 $(XECHO) "... DDR memory revision" ; \
-               }
-       @[ -z "$(findstring 5200,$@)" ] || \
-               { echo "#define CONFIG_MPC5200"         >>$(obj)include/config.h ; \
-                 $(XECHO) "... with MPC5200 processor" ; \
-               }
-       @[ -z "$(findstring 5100,$@)" ] || \
-               { echo "#define CONFIG_MGT5100"         >>$(obj)include/config.h ; \
-                 $(XECHO) "... with MGT5100 processor" ; \
-               }
-       @$(MKCONFIG) -a IceCube ppc mpc5xxx icecube
- jupiter_config:       unconfig
-       @$(MKCONFIG) jupiter ppc mpc5xxx jupiter
- inka4x0_config:       unconfig
-       @$(MKCONFIG) inka4x0 ppc mpc5xxx inka4x0
- lite5200b_config      \
- lite5200b_PM_config   \
- lite5200b_LOWBOOT_config:     unconfig
-       @mkdir -p $(obj)include
-       @mkdir -p $(obj)board/icecube
-       @ echo "#define CONFIG_MPC5200_DDR"     >>$(obj)include/config.h
-       @ $(XECHO) "... DDR memory revision"
-       @ echo "#define CONFIG_MPC5200"         >>$(obj)include/config.h
-       @ echo "#define CONFIG_LITE5200B"       >>$(obj)include/config.h
-       @[ -z "$(findstring _PM_,$@)" ] || \
-               { echo "#define CONFIG_LITE5200B_PM"    >>$(obj)include/config.h ; \
-                 $(XECHO) "... with power management (low-power mode) support" ; \
-               }
-       @[ -z "$(findstring LOWBOOT_,$@)" ] || \
-               { echo "TEXT_BASE = 0xFF000000" >$(obj)board/icecube/config.tmp ; \
-                 $(XECHO) "... with LOWBOOT configuration" ; \
-               }
-       @ $(XECHO) "... with MPC5200B processor"
-       @$(MKCONFIG) -a IceCube  ppc mpc5xxx icecube
- mcc200_config \
- mcc200_SDRAM_config   \
- mcc200_highboot_config        \
- mcc200_COM12_config   \
- mcc200_COM12_SDRAM_config     \
- mcc200_COM12_highboot_config  \
- mcc200_COM12_highboot_SDRAM_config    \
- mcc200_highboot_SDRAM_config  \
- prs200_config \
- prs200_DDR_config     \
- prs200_highboot_config        \
- prs200_highboot_DDR_config:   unconfig
-       @mkdir -p $(obj)include
-       @mkdir -p $(obj)board/mcc200
-       @[ -n "$(findstring highboot,$@)" ] || \
-               { $(XECHO) "... with lowboot configuration" ; \
-               }
-       @[ -z "$(findstring highboot,$@)" ] || \
-               { echo "TEXT_BASE = 0xFFF00000" >$(obj)board/mcc200/config.tmp ; \
-                 $(XECHO) "... with highboot configuration" ; \
-               }
-       @[ -n "$(findstring _SDRAM,$@)" ] || \
-               { if [ -n "$(findstring mcc200,$@)" ]; \
-                 then \
-                       $(XECHO) "... with DDR" ; \
-                 else \
-                       if [ -n "$(findstring _DDR,$@)" ];\
-                       then \
-                               $(XECHO) "... with DDR" ; \
-                       else \
-                               echo "#define CONFIG_MCC200_SDRAM" >>$(obj)include/config.h ;\
-                               $(XECHO) "... with SDRAM" ; \
-                       fi; \
-                 fi; \
-               }
-       @[ -z "$(findstring _SDRAM,$@)" ] || \
-               { echo "#define CONFIG_MCC200_SDRAM"    >>$(obj)include/config.h ; \
-                 $(XECHO) "... with SDRAM" ; \
-               }
-       @[ -z "$(findstring COM12,$@)" ] || \
-               { echo "#define CONFIG_CONSOLE_COM12"   >>$(obj)include/config.h ; \
-                 $(XECHO) "... with console on COM12" ; \
-               }
-       @[ -z "$(findstring prs200,$@)" ] || \
-               { echo "#define CONFIG_PRS200"  >>$(obj)include/config.h ;\
-               }
-       @$(MKCONFIG) -n $@ -a mcc200 ppc mpc5xxx mcc200
- mecp5200_config:  unconfig
-       @$(MKCONFIG) mecp5200  ppc mpc5xxx mecp5200 esd
- motionpro_config:     unconfig
-       @$(MKCONFIG) motionpro ppc mpc5xxx motionpro
- mucmc52_config:               unconfig
-       @$(MKCONFIG) mucmc52 ppc mpc5xxx mucmc52
- munices_config:       unconfig
-       @$(MKCONFIG) munices ppc mpc5xxx munices
- MVBC_P_config: unconfig
-       @mkdir -p $(obj)include
-       @mkdir -p $(obj)board/mvbc_p
-       @ >$(obj)include/config.h
-       @[ -z "$(findstring MVBC_P,$@)" ] || \
-       {       echo "#define CONFIG_MVBC_P"    >>$(obj)include/config.h; }
-       @$(MKCONFIG) -n $@ -a MVBC_P ppc mpc5xxx mvbc_p matrix_vision
- o2dnt_config: unconfig
-       @$(MKCONFIG) o2dnt ppc mpc5xxx o2dnt
- pcm030_config \
- pcm030_LOWBOOT_config:        unconfig
-       @mkdir -p $(obj)include $(obj)board/phytec/pcm030
-       @ >$(obj)include/config.h
-       @[ -z "$(findstring LOWBOOT_,$@)" ] || \
-               { echo "TEXT_BASE = 0xFF000000" >$(obj)board/phytec/pcm030/config.tmp ; \
-                 echo "... with LOWBOOT configuration" ; \
-               }
-       @$(MKCONFIG) -a pcm030 ppc mpc5xxx pcm030 phytec
- pf5200_config:        unconfig
-       @$(MKCONFIG) pf5200  ppc mpc5xxx pf5200 esd
- PM520_config \
- PM520_DDR_config \
- PM520_ROMBOOT_config \
- PM520_ROMBOOT_DDR_config:     unconfig
-       @mkdir -p $(obj)include
-       @[ -z "$(findstring DDR,$@)" ] || \
-               { echo "#define CONFIG_MPC5200_DDR"     >>$(obj)include/config.h ; \
-                 $(XECHO) "... DDR memory revision" ; \
-               }
-       @[ -z "$(findstring ROMBOOT,$@)" ] || \
-               { echo "#define CONFIG_BOOT_ROM" >>$(obj)include/config.h ; \
-                 $(XECHO) "... booting from 8-bit flash" ; \
-               }
-       @$(MKCONFIG) -a PM520 ppc mpc5xxx pm520
- smmaco4_config: unconfig
-       @$(MKCONFIG) -a smmaco4 ppc mpc5xxx tqm5200 tqc
- spieval_config:       unconfig
-       @$(MKCONFIG) -a spieval ppc mpc5xxx tqm5200 tqc
- TB5200_B_config \
- TB5200_config:        unconfig
-       @mkdir -p $(obj)include
-       @[ -z "$(findstring _B,$@)" ] || \
-               { echo "#define CONFIG_TQM5200_B"       >>$(obj)include/config.h ; \
-                 $(XECHO) "... with MPC5200B processor" ; \
-               }
-       @$(MKCONFIG) -n $@ -a TB5200 ppc mpc5xxx tqm5200 tqc
- MINI5200_config       \
- EVAL5200_config       \
- TOP5200_config:       unconfig
-       @mkdir -p $(obj)include
-       @ echo "#define CONFIG_$(@:_config=) 1" >$(obj)include/config.h
-       @$(MKCONFIG) -n $@ -a TOP5200 ppc mpc5xxx top5200 emk
- Total5100_config              \
- Total5200_config              \
- Total5200_lowboot_config      \
- Total5200_Rev2_config         \
- Total5200_Rev2_lowboot_config:        unconfig
-       @mkdir -p $(obj)include
-       @mkdir -p $(obj)board/total5200
-       @[ -z "$(findstring 5100,$@)" ] || \
-               { echo "#define CONFIG_MGT5100"         >>$(obj)include/config.h ; \
-                 $(XECHO) "... with MGT5100 processor" ; \
-               }
-       @[ -z "$(findstring 5200,$@)" ] || \
-               { echo "#define CONFIG_MPC5200"         >>$(obj)include/config.h ; \
-                 $(XECHO) "... with MPC5200 processor" ; \
-               }
-       @[ -n "$(findstring Rev,$@)" ] || \
-               { echo "#define CONFIG_TOTAL5200_REV 1" >>$(obj)include/config.h ; \
-                 $(XECHO) "... revision 1 board" ; \
-               }
-       @[ -z "$(findstring Rev2_,$@)" ] || \
-               { echo "#define CONFIG_TOTAL5200_REV 2" >>$(obj)include/config.h ; \
-                 $(XECHO) "... revision 2 board" ; \
-               }
-       @[ -z "$(findstring lowboot_,$@)" ] || \
-               { echo "TEXT_BASE = 0xFE000000" >$(obj)board/total5200/config.tmp ; \
-                 $(XECHO) "... with lowboot configuration" ; \
-               }
-       @$(MKCONFIG) -a Total5200 ppc mpc5xxx total5200
- cam5200_config \
- cam5200_niosflash_config \
- fo300_config \
- MiniFAP_config \
- TQM5200S_config \
- TQM5200S_HIGHBOOT_config \
- TQM5200_B_config \
- TQM5200_B_HIGHBOOT_config \
- TQM5200_config        \
- TQM5200_STK100_config:        unconfig
+ SX1_stdout_serial_config \
+ SX1_config:           unconfig
        @mkdir -p $(obj)include
-       @mkdir -p $(obj)board/tqc/tqm5200
-       @[ -z "$(findstring cam5200,$@)" ] || \
-               { echo "#define CONFIG_CAM5200" >>$(obj)include/config.h ; \
-                 echo "#define CONFIG_TQM5200S"        >>$(obj)include/config.h ; \
-                 echo "#define CONFIG_TQM5200_B"       >>$(obj)include/config.h ; \
-                 $(XECHO) "... TQM5200S on Cam5200" ; \
-               }
-       @[ -z "$(findstring niosflash,$@)" ] || \
-               { echo "#define CONFIG_CAM5200_NIOSFLASH"       >>$(obj)include/config.h ; \
-                 $(XECHO) "... with NIOS flash driver" ; \
-               }
-       @[ -z "$(findstring fo300,$@)" ] || \
-               { echo "#define CONFIG_FO300"   >>$(obj)include/config.h ; \
-                 $(XECHO) "... TQM5200 on FO300" ; \
-               }
-       @[ -z "$(findstring MiniFAP,$@)" ] || \
-               { echo "#define CONFIG_MINIFAP" >>$(obj)include/config.h ; \
-                 $(XECHO) "... TQM5200_AC on MiniFAP" ; \
-               }
-       @[ -z "$(findstring STK100,$@)" ] || \
-               { echo "#define CONFIG_STK52XX_REV100"  >>$(obj)include/config.h ; \
-                 $(XECHO) "... on a STK52XX.100 base board" ; \
-               }
-       @[ -z "$(findstring TQM5200_B,$@)" ] || \
-               { echo "#define CONFIG_TQM5200_B"       >>$(obj)include/config.h ; \
-               }
-       @[ -z "$(findstring TQM5200S,$@)" ] || \
-               { echo "#define CONFIG_TQM5200S"        >>$(obj)include/config.h ; \
-                 echo "#define CONFIG_TQM5200_B"       >>$(obj)include/config.h ; \
-               }
-       @[ -z "$(findstring HIGHBOOT,$@)" ] || \
-               { echo "TEXT_BASE = 0xFFF00000" >$(obj)board/tqm5200/config.tmp ; \
-               }
-       @$(MKCONFIG) -n $@ -a TQM5200 ppc mpc5xxx tqm5200 tqc
- uc101_config:         unconfig
-       @$(MKCONFIG) uc101 ppc mpc5xxx uc101
- v38b_config: unconfig
-       @$(MKCONFIG) -a v38b ppc mpc5xxx v38b
+       @if [ "$(findstring _stdout_serial_, $@)" ] ; then \
+               echo "#undef CONFIG_STDOUT_USBTTY" >> $(obj)include/config.h ; \
+       else \
+               echo "#define CONFIG_STDOUT_USBTTY" >> $(obj)include/config.h ; \
+       fi;
+       @$(MKCONFIG) -n $@ SX1 arm arm925t sx1
  
  #########################################################################
- ## MPC512x Systems
+ ## XScale Systems
  #########################################################################
  
- aria_config:  unconfig
-       @$(MKCONFIG) -a aria ppc mpc512x aria davedenx
- mecp5123_config:      unconfig
-       @$(MKCONFIG) -a mecp5123 ppc mpc512x mecp5123 esd
- mpc5121ads_config \
- mpc5121ads_rev2_config        \
-       : unconfig
+ pdnb3_config \
+ scpu_config:  unconfig
        @mkdir -p $(obj)include
-       @if [ "$(findstring rev2,$@)" ] ; then \
-               echo "#define CONFIG_ADS5121_REV2 1" > $(obj)include/config.h; \
+       @if [ "$(findstring scpu_,$@)" ] ; then \
+               echo "#define CONFIG_SCPU"      >>$(obj)include/config.h ; \
        fi
-       @$(MKCONFIG) -a mpc5121ads ppc mpc512x mpc5121ads freescale
- #########################################################################
- ## MPC8xx Systems
- #########################################################################
- Adder_config  \
- Adder87x_config \
- AdderII_config        \
-       :               unconfig
-       @mkdir -p $(obj)include
-       $(if $(findstring AdderII,$@), \
-       @echo "#define CONFIG_MPC852T" > $(obj)include/config.h)
-       @$(MKCONFIG) -a Adder ppc mpc8xx adder
- AdderUSB_config:      unconfig
-       @$(MKCONFIG) -a AdderUSB ppc mpc8xx adder
- ADS860_config   \
- FADS823_config          \
- FADS850SAR_config \
- MPC86xADS_config  \
- MPC885ADS_config  \
- FADS860T_config:      unconfig
-       @$(MKCONFIG) $(@:_config=) ppc mpc8xx fads
- AMX860_config :       unconfig
-       @$(MKCONFIG) $(@:_config=) ppc mpc8xx amx860 westel
- c2mon_config:         unconfig
-       @$(MKCONFIG) $(@:_config=) ppc mpc8xx c2mon
- CCM_config:           unconfig
-       @$(MKCONFIG) $(@:_config=) ppc mpc8xx CCM siemens
- cogent_mpc8xx_config: unconfig
-       @$(MKCONFIG) $(@:_config=) ppc mpc8xx cogent
- ELPT860_config:               unconfig
-       @$(MKCONFIG) $(@:_config=) ppc mpc8xx elpt860 LEOX
- EP88x_config:         unconfig
-       @$(MKCONFIG) $(@:_config=) ppc mpc8xx ep88x
- ESTEEM192E_config:    unconfig
-       @$(MKCONFIG) $(@:_config=) ppc mpc8xx esteem192e
- ETX094_config :       unconfig
-       @$(MKCONFIG) $(@:_config=) ppc mpc8xx etx094
- FLAGADM_config:       unconfig
-       @$(MKCONFIG) $(@:_config=) ppc mpc8xx flagadm
- xtract_GEN860T = $(subst _SC,,$(subst _config,,$1))
- GEN860T_SC_config     \
- GEN860T_config: unconfig
-       @mkdir -p $(obj)include
-       @[ -z "$(findstring _SC,$@)" ] || \
-               { echo "#define CONFIG_SC" >>$(obj)include/config.h ; \
-                 $(XECHO) "With reduced H/W feature set (SC)..." ; \
-               }
-       @$(MKCONFIG) -a $(call xtract_GEN860T,$@) ppc mpc8xx gen860t
- GENIETV_config:       unconfig
-       @$(MKCONFIG) $(@:_config=) ppc mpc8xx genietv
- GTH_config:   unconfig
-       @$(MKCONFIG) $(@:_config=) ppc mpc8xx gth
- hermes_config :       unconfig
-       @$(MKCONFIG) $(@:_config=) ppc mpc8xx hermes
- HMI10_config  :       unconfig
-       @$(MKCONFIG) $(@:_config=) ppc mpc8xx tqm8xx tqc
- IAD210_config: unconfig
-       @$(MKCONFIG) $(@:_config=) ppc mpc8xx IAD210 siemens
- xtract_ICU862 = $(subst _100MHz,,$(subst _config,,$1))
- ICU862_100MHz_config  \
- ICU862_config: unconfig
-       @mkdir -p $(obj)include
-       @[ -z "$(findstring _100MHz,$@)" ] || \
-               { echo "#define CONFIG_100MHz"  >>$(obj)include/config.h ; \
-                 $(XECHO) "... with 100MHz system clock" ; \
-               }
-       @$(MKCONFIG) -a $(call xtract_ICU862,$@) ppc mpc8xx icu862
- IP860_config  :       unconfig
-       @$(MKCONFIG) $(@:_config=) ppc mpc8xx ip860
- IVML24_256_config \
- IVML24_128_config \
- IVML24_config:        unconfig
-       @mkdir -p $(obj)include
-       @[ -z "$(findstring IVML24_config,$@)" ] || \
-                { echo "#define CONFIG_IVML24_16M"     >>$(obj)include/config.h ; \
-                }
-       @[ -z "$(findstring IVML24_128_config,$@)" ] || \
-                { echo "#define CONFIG_IVML24_32M"     >>$(obj)include/config.h ; \
-                }
-       @[ -z "$(findstring IVML24_256_config,$@)" ] || \
-                { echo "#define CONFIG_IVML24_64M"     >>$(obj)include/config.h ; \
-                }
-       @$(MKCONFIG) -a IVML24 ppc mpc8xx ivm
- IVMS8_256_config \
- IVMS8_128_config \
- IVMS8_config: unconfig
-       @mkdir -p $(obj)include
-       @[ -z "$(findstring IVMS8_config,$@)" ] || \
-                { echo "#define CONFIG_IVMS8_16M"      >>$(obj)include/config.h ; \
-                }
-       @[ -z "$(findstring IVMS8_128_config,$@)" ] || \
-                { echo "#define CONFIG_IVMS8_32M"      >>$(obj)include/config.h ; \
-                }
-       @[ -z "$(findstring IVMS8_256_config,$@)" ] || \
-                { echo "#define CONFIG_IVMS8_64M"      >>$(obj)include/config.h ; \
-                }
-       @$(MKCONFIG) -a IVMS8 ppc mpc8xx ivm
- kmsupx4_config:               unconfig
-       @$(MKCONFIG) $(@:_config=) ppc mpc8xx km8xx keymile
- KUP4K_config  :       unconfig
-       @$(MKCONFIG) $(@:_config=) ppc mpc8xx kup4k kup
- KUP4X_config  :       unconfig
-       @$(MKCONFIG) $(@:_config=) ppc mpc8xx kup4x kup
- LANTEC_config :       unconfig
-       @$(MKCONFIG) $(@:_config=) ppc mpc8xx lantec
- lwmon_config:         unconfig
-       @$(MKCONFIG) $(@:_config=) ppc mpc8xx lwmon
- MBX_config    \
- MBX860T_config:       unconfig
-       @$(MKCONFIG) $(@:_config=) ppc mpc8xx mbx8xx
- mgsuvd_config:                unconfig
-       @$(MKCONFIG) $(@:_config=) ppc mpc8xx km8xx keymile
- MHPC_config:          unconfig
-       @$(MKCONFIG) $(@:_config=) ppc mpc8xx mhpc eltec
- xtract_NETVIA = $(subst _V2,,$(subst _config,,$1))
- NETVIA_V2_config \
- NETVIA_config:                unconfig
-       @mkdir -p $(obj)include
-       @[ -z "$(findstring NETVIA_config,$@)" ] || \
-                { echo "#define CONFIG_NETVIA_VERSION 1" >>$(obj)include/config.h ; \
-                 $(XECHO) "... Version 1" ; \
-                }
-       @[ -z "$(findstring NETVIA_V2_config,$@)" ] || \
-                { echo "#define CONFIG_NETVIA_VERSION 2" >>$(obj)include/config.h ; \
-                 $(XECHO) "... Version 2" ; \
-                }
-       @$(MKCONFIG) -a $(call xtract_NETVIA,$@) ppc mpc8xx netvia
- xtract_NETPHONE = $(subst _V2,,$(subst _config,,$1))
- NETPHONE_V2_config \
- NETPHONE_config:      unconfig
-       @mkdir -p $(obj)include
-       @[ -z "$(findstring NETPHONE_config,$@)" ] || \
-                { echo "#define CONFIG_NETPHONE_VERSION 1" >>$(obj)include/config.h ; \
-                }
-       @[ -z "$(findstring NETPHONE_V2_config,$@)" ] || \
-                { echo "#define CONFIG_NETPHONE_VERSION 2" >>$(obj)include/config.h ; \
-                }
-       @$(MKCONFIG) -a $(call xtract_NETPHONE,$@) ppc mpc8xx netphone
- xtract_NETTA = $(subst _SWAPHOOK,,$(subst _6412,,$(subst _ISDN,,$(subst _config,,$1))))
- NETTA_ISDN_6412_SWAPHOOK_config \
- NETTA_ISDN_SWAPHOOK_config \
- NETTA_6412_SWAPHOOK_config \
- NETTA_SWAPHOOK_config \
- NETTA_ISDN_6412_config \
- NETTA_ISDN_config \
- NETTA_6412_config \
- NETTA_config:         unconfig
-       @mkdir -p $(obj)include
-       @[ -z "$(findstring ISDN_,$@)" ] || \
-                { echo "#define CONFIG_NETTA_ISDN 1" >>$(obj)include/config.h ; \
-                }
-       @[ -n "$(findstring ISDN_,$@)" ] || \
-                { echo "#undef CONFIG_NETTA_ISDN" >>$(obj)include/config.h ; \
-                }
-       @[ -z "$(findstring 6412_,$@)" ] || \
-                { echo "#define CONFIG_NETTA_6412 1" >>$(obj)include/config.h ; \
-                }
-       @[ -n "$(findstring 6412_,$@)" ] || \
-                { echo "#undef CONFIG_NETTA_6412" >>$(obj)include/config.h ; \
-                }
-       @[ -z "$(findstring SWAPHOOK_,$@)" ] || \
-                { echo "#define CONFIG_NETTA_SWAPHOOK 1" >>$(obj)include/config.h ; \
-                }
-       @[ -n "$(findstring SWAPHOOK_,$@)" ] || \
-                { echo "#undef CONFIG_NETTA_SWAPHOOK" >>$(obj)include/config.h ; \
-                }
-       @$(MKCONFIG) -a $(call xtract_NETTA,$@) ppc mpc8xx netta
- xtract_NETTA2 = $(subst _V2,,$(subst _config,,$1))
- NETTA2_V2_config \
- NETTA2_config:                unconfig
-       @mkdir -p $(obj)include
-       @[ -z "$(findstring NETTA2_config,$@)" ] || \
-                { echo "#define CONFIG_NETTA2_VERSION 1" >>$(obj)include/config.h ; \
-                }
-       @[ -z "$(findstring NETTA2_V2_config,$@)" ] || \
-                { echo "#define CONFIG_NETTA2_VERSION 2" >>$(obj)include/config.h ; \
-                }
-       @$(MKCONFIG) -a $(call xtract_NETTA2,$@) ppc mpc8xx netta2
- NC650_Rev1_config \
- NC650_Rev2_config \
- CP850_config: unconfig
-       @mkdir -p $(obj)include
-       @[ -z "$(findstring CP850,$@)" ] || \
-                { echo "#define CONFIG_CP850 1" >>$(obj)include/config.h ; \
-                  echo "#define CONFIG_IDS852_REV2 1" >>$(obj)include/config.h ; \
-                }
-       @[ -z "$(findstring Rev1,$@)" ] || \
-                { echo "#define CONFIG_IDS852_REV1 1" >>$(obj)include/config.h ; \
-                }
-       @[ -z "$(findstring Rev2,$@)" ] || \
-                { echo "#define CONFIG_IDS852_REV2 1" >>$(obj)include/config.h ; \
-                }
-       @$(MKCONFIG) -a NC650 ppc mpc8xx nc650
- NX823_config:         unconfig
-       @$(MKCONFIG) $(@:_config=) ppc mpc8xx nx823
- pcu_e_config:         unconfig
-       @$(MKCONFIG) $(@:_config=) ppc mpc8xx pcu_e siemens
- QS850_config: unconfig
-       @$(MKCONFIG) $(@:_config=) ppc mpc8xx qs850 snmc
- QS823_config: unconfig
-       @$(MKCONFIG) $(@:_config=) ppc mpc8xx qs850 snmc
- QS860T_config:        unconfig
-       @$(MKCONFIG) $(@:_config=) ppc mpc8xx qs860t snmc
- quantum_config:       unconfig
-       @$(MKCONFIG) $(@:_config=) ppc mpc8xx quantum
- R360MPI_config:       unconfig
-       @$(MKCONFIG) $(@:_config=) ppc mpc8xx r360mpi
- RBC823_config:        unconfig
-       @$(MKCONFIG) $(@:_config=) ppc mpc8xx rbc823
- RPXClassic_config:    unconfig
-       @$(MKCONFIG) $(@:_config=) ppc mpc8xx RPXClassic
- RPXlite_config:               unconfig
-       @$(MKCONFIG) $(@:_config=) ppc mpc8xx RPXlite
- RPXlite_DW_64_config          \
- RPXlite_DW_LCD_config         \
- RPXlite_DW_64_LCD_config      \
- RPXlite_DW_NVRAM_config               \
- RPXlite_DW_NVRAM_64_config    \
- RPXlite_DW_NVRAM_LCD_config   \
- RPXlite_DW_NVRAM_64_LCD_config        \
- RPXlite_DW_config:    unconfig
-       @mkdir -p $(obj)include
-       @[ -z "$(findstring _64,$@)" ] || \
-               { echo "#define RPXlite_64MHz"          >>$(obj)include/config.h ; \
-                 $(XECHO) "... with 64MHz system clock ..."; \
-               }
-       @[ -z "$(findstring _LCD,$@)" ] || \
-               { echo "#define CONFIG_LCD"             >>$(obj)include/config.h ; \
-                 echo "#define CONFIG_NEC_NL6448BC20"  >>$(obj)include/config.h ; \
-                 $(XECHO) "... with LCD display ..."; \
-               }
-       @[ -z "$(findstring _NVRAM,$@)" ] || \
-               { echo "#define  CONFIG_ENV_IS_IN_NVRAM"        >>$(obj)include/config.h ; \
-                 $(XECHO) "... with ENV in NVRAM ..."; \
-               }
-       @$(MKCONFIG) -a RPXlite_DW ppc mpc8xx RPXlite_dw
- rmu_config:   unconfig
-       @$(MKCONFIG) $(@:_config=) ppc mpc8xx rmu
- RRvision_config:      unconfig
-       @$(MKCONFIG) $(@:_config=) ppc mpc8xx RRvision
- RRvision_LCD_config:  unconfig
-       @mkdir -p $(obj)include
-       @echo "#define CONFIG_LCD" >$(obj)include/config.h
-       @echo "#define CONFIG_SHARP_LQ104V7DS01" >>$(obj)include/config.h
-       @$(MKCONFIG) -a RRvision ppc mpc8xx RRvision
- SM850_config  :       unconfig
-       @$(MKCONFIG) $(@:_config=) ppc mpc8xx tqm8xx tqc
- spc1920_config:               unconfig
-       @$(MKCONFIG) $(@:_config=) ppc mpc8xx spc1920
- SPD823TS_config:      unconfig
-       @$(MKCONFIG) $(@:_config=) ppc mpc8xx spd8xx
- stxxtc_config:        unconfig
-       @$(MKCONFIG) $(@:_config=) ppc mpc8xx stxxtc
- svm_sc8xx_config:     unconfig
-       @$(MKCONFIG) $(@:_config=) ppc mpc8xx svm_sc8xx
- SXNI855T_config:      unconfig
-       @$(MKCONFIG) $(@:_config=) ppc mpc8xx sixnet
- # EMK MPC8xx based modules
- TOP860_config:                unconfig
-       @$(MKCONFIG) $(@:_config=) ppc mpc8xx top860 emk
- # Play some tricks for configuration selection
- # Only 855 and 860 boards may come with FEC
- # and only 823 boards may have LCD support
- xtract_8xx = $(subst _LCD,,$(subst _config,,$1))
- FPS850L_config                \
- FPS860L_config                \
- NSCU_config           \
- TQM823L_config                \
- TQM823L_LCD_config    \
- TQM850L_config                \
- TQM855L_config                \
- TQM860L_config                \
- TQM862L_config                \
- TQM823M_config                \
- TQM850M_config                \
- TQM855M_config                \
- TQM860M_config                \
- TQM862M_config                \
- TQM866M_config                \
- TQM885D_config                \
- TK885D_config         \
- virtlab2_config:      unconfig
-       @mkdir -p $(obj)include
-       @[ -z "$(findstring _LCD,$@)" ] || \
-               { echo "#define CONFIG_LCD"             >>$(obj)include/config.h ; \
-                 echo "#define CONFIG_NEC_NL6448BC20"  >>$(obj)include/config.h ; \
-                 $(XECHO) "... with LCD display" ; \
-               }
-       @$(MKCONFIG) -a $(call xtract_8xx,$@) ppc mpc8xx tqm8xx tqc
- TTTech_config:        unconfig
-       @mkdir -p $(obj)include
-       @echo "#define CONFIG_LCD" >$(obj)include/config.h
-       @echo "#define CONFIG_SHARP_LQ104V7DS01" >>$(obj)include/config.h
-       @$(MKCONFIG) -a TQM823L ppc mpc8xx tqm8xx tqc
- uc100_config  :       unconfig
-       @$(MKCONFIG) $(@:_config=) ppc mpc8xx uc100
- v37_config:   unconfig
-       @mkdir -p $(obj)include
-       @echo "#define CONFIG_LCD" >$(obj)include/config.h
-       @echo "#define CONFIG_SHARP_LQ084V1DG21" >>$(obj)include/config.h
-       @$(MKCONFIG) $(@:_config=) ppc mpc8xx v37
- wtk_config:   unconfig
-       @mkdir -p $(obj)include
-       @echo "#define CONFIG_LCD" >$(obj)include/config.h
-       @echo "#define CONFIG_SHARP_LQ065T9DR51U" >>$(obj)include/config.h
-       @$(MKCONFIG) -a TQM823L ppc mpc8xx tqm8xx tqc
+       @$(MKCONFIG) -n $@ -a pdnb3 arm ixp pdnb3 prodrive
  
  #########################################################################
- ## PPC4xx Systems
+ ## ARM1176 Systems
  #########################################################################
- xtract_4xx = $(subst _25,,$(subst _33,,$(subst _BA,,$(subst _ME,,$(subst _HI,,$(subst _config,,$1))))))
- acadia_config:        unconfig
-       @$(MKCONFIG) $(@:_config=) ppc ppc4xx acadia amcc
- acadia_nand_config:   unconfig
-       @mkdir -p $(obj)include $(obj)board/amcc/acadia
-       @mkdir -p $(obj)nand_spl/board/amcc/acadia
-       @echo "#define CONFIG_NAND_U_BOOT" > $(obj)include/config.h
-       @$(MKCONFIG) -n $@ -a acadia ppc ppc4xx acadia amcc
-       @echo "TEXT_BASE = 0x01000000" > $(obj)board/amcc/acadia/config.tmp
-       @echo "CONFIG_NAND_U_BOOT = y" >> $(obj)include/config.mk
- ADCIOP_config:        unconfig
-       @$(MKCONFIG) $(@:_config=) ppc ppc4xx adciop esd
- alpr_config:  unconfig
-       @$(MKCONFIG) $(@:_config=) ppc ppc4xx alpr prodrive
- AP1000_config:unconfig
-       @$(MKCONFIG) $(@:_config=) ppc ppc4xx ap1000 amirix
- APC405_config:        unconfig
-       @$(MKCONFIG) $(@:_config=) ppc ppc4xx apc405 esd
- AR405_config: unconfig
-       @$(MKCONFIG) $(@:_config=) ppc ppc4xx ar405 esd
- ASH405_config:        unconfig
-       @$(MKCONFIG) $(@:_config=) ppc ppc4xx ash405 esd
- bamboo_config:        unconfig
-       @$(MKCONFIG) $(@:_config=) ppc ppc4xx bamboo amcc
- bamboo_nand_config:   unconfig
-       @mkdir -p $(obj)include $(obj)board/amcc/bamboo
-       @mkdir -p $(obj)nand_spl/board/amcc/bamboo
-       @echo "#define CONFIG_NAND_U_BOOT" > $(obj)include/config.h
-       @$(MKCONFIG) -n $@ -a bamboo ppc ppc4xx bamboo amcc
-       @echo "TEXT_BASE = 0x01000000" > $(obj)board/amcc/bamboo/config.tmp
-       @echo "CONFIG_NAND_U_BOOT = y" >> $(obj)include/config.mk
- bubinga_config:       unconfig
-       @$(MKCONFIG) $(@:_config=) ppc ppc4xx bubinga amcc
- CANBT_config: unconfig
-       @$(MKCONFIG) $(@:_config=) ppc ppc4xx canbt esd
- # Arches, Canyonlands & Glacier use different U-Boot images
- arches_config \
- canyonlands_config \
- glacier_config:       unconfig
-       @mkdir -p $(obj)include
-       @echo "#define CONFIG_$$(echo $(subst ,,$(@:_config=)) | \
-               tr '[:lower:]' '[:upper:]')" >$(obj)include/config.h
-       @$(MKCONFIG) -n $@ -a canyonlands ppc ppc4xx canyonlands amcc
- canyonlands_nand_config \
- glacier_nand_config:  unconfig
-       @mkdir -p $(obj)include $(obj)board/amcc/canyonlands
-       @mkdir -p $(obj)nand_spl/board/amcc/canyonlands
-       @echo "#define CONFIG_NAND_U_BOOT" > $(obj)include/config.h
-       @echo "#define CONFIG_$$(echo $(subst ,,$(@:_nand_config=)) | \
-               tr '[:lower:]' '[:upper:]')" >> $(obj)include/config.h
-       @$(MKCONFIG) -n $@ -a canyonlands ppc ppc4xx canyonlands amcc
-       @echo "TEXT_BASE = 0x01000000" > $(obj)board/amcc/canyonlands/config.tmp
-       @echo "CONFIG_NAND_U_BOOT = y" >> $(obj)include/config.mk
- CATcenter_config      \
- CATcenter_25_config   \
- CATcenter_33_config:  unconfig
-       @mkdir -p $(obj)include
-       @ echo "/* CATcenter uses PPChameleon Model ME */"  > $(obj)include/config.h
-       @ echo "#define CONFIG_PPCHAMELEON_MODULE_MODEL 1" >> $(obj)include/config.h
-       @[ -z "$(findstring _25,$@)" ] || \
-               { echo "#define CONFIG_PPCHAMELEON_CLK_25" >> $(obj)include/config.h ; \
-                 $(XECHO) "SysClk = 25MHz" ; \
-               }
-       @[ -z "$(findstring _33,$@)" ] || \
-               { echo "#define CONFIG_PPCHAMELEON_CLK_33" >> $(obj)include/config.h ; \
-                 $(XECHO) "SysClk = 33MHz" ; \
-               }
-       @$(MKCONFIG) -a $(call xtract_4xx,$@) ppc ppc4xx PPChameleonEVB dave
- CMS700_config:        unconfig
-       @$(MKCONFIG) $(@:_config=) ppc ppc4xx cms700 esd
- # Compact-Center & DevCon-Center use different U-Boot images
- compactcenter_config \
- devconcenter_config:  unconfig
-       @mkdir -p $(obj)include
-       @echo "#define CONFIG_$$(echo $(subst ,,$(@:_config=)) | \
-               tr '[:lower:]' '[:upper:]')" >$(obj)include/config.h
-       @$(MKCONFIG) -n $@ -a compactcenter ppc ppc4xx compactcenter gdsys
- CPCI2DP_config:       unconfig
-       @$(MKCONFIG) $(@:_config=) ppc ppc4xx cpci2dp esd
- CPCI405_config                \
- CPCI4052_config               \
- CPCI405DT_config      \
- CPCI405AB_config:     unconfig
-       @mkdir -p $(obj)board/esd/cpci405
-       @$(MKCONFIG) $(@:_config=) ppc ppc4xx cpci405 esd
- CPCIISER4_config:     unconfig
-       @$(MKCONFIG) $(@:_config=) ppc ppc4xx cpciiser4 esd
- CRAYL1_config:        unconfig
-       @$(MKCONFIG) $(@:_config=) ppc ppc4xx L1 cray
- csb272_config:        unconfig
-       @$(MKCONFIG) $(@:_config=) ppc ppc4xx csb272
- csb472_config:        unconfig
-       @$(MKCONFIG) $(@:_config=) ppc ppc4xx csb472
- DASA_SIM_config: unconfig
-       @$(MKCONFIG) $(@:_config=) ppc ppc4xx dasa_sim esd
- dlvision_config: unconfig
-       @$(MKCONFIG) $(@:_config=) ppc ppc4xx dlvision gdsys
- DP405_config: unconfig
-       @$(MKCONFIG) $(@:_config=) ppc ppc4xx dp405 esd
- DU405_config: unconfig
-       @$(MKCONFIG) $(@:_config=) ppc ppc4xx du405 esd
- DU440_config: unconfig
-       @$(MKCONFIG) $(@:_config=) ppc ppc4xx du440 esd
- ebony_config: unconfig
-       @$(MKCONFIG) $(@:_config=) ppc ppc4xx ebony amcc
- ERIC_config:  unconfig
-       @$(MKCONFIG) $(@:_config=) ppc ppc4xx eric
- EXBITGEN_config:      unconfig
-       @$(MKCONFIG) $(@:_config=) ppc ppc4xx exbitgen
- fx12mm_flash_config: unconfig
-       @mkdir -p $(obj)include $(obj)board/xilinx/ppc405-generic
-       @mkdir -p $(obj)include $(obj)board/avnet/fx12mm
-       @echo "LDSCRIPT:=$(SRCTREE)/board/xilinx/ppc405-generic/u-boot-rom.lds"\
-               > $(obj)board/avnet/fx12mm/config.tmp
-       @echo "TEXT_BASE := 0xFFCB0000" \
-               >> $(obj)board/avnet/fx12mm/config.tmp
-       @$(MKCONFIG) fx12mm ppc ppc4xx fx12mm avnet
- fx12mm_config: unconfig
-       @mkdir -p $(obj)include $(obj)board/xilinx/ppc405-generic
-       @mkdir -p $(obj)include $(obj)board/avnet/fx12mm
-       @echo "LDSCRIPT:=$(SRCTREE)/board/xilinx/ppc405-generic/u-boot-ram.lds"\
-               > $(obj)board/avnet/fx12mm/config.tmp
-       @echo "TEXT_BASE := 0x03000000" \
-               >> $(obj)board/avnet/fx12mm/config.tmp
-       @$(MKCONFIG) fx12mm ppc ppc4xx fx12mm avnet
- G2000_config: unconfig
-       @$(MKCONFIG) $(@:_config=) ppc ppc4xx g2000
- gdppc440etx_config:   unconfig
-       @$(MKCONFIG) $(@:_config=) ppc ppc4xx gdppc440etx gdsys
- hcu4_config:  unconfig
-       @mkdir -p $(obj)board/netstal/common
-       @$(MKCONFIG) $(@:_config=) ppc ppc4xx hcu4 netstal
- hcu5_config:  unconfig
-       @mkdir -p $(obj)board/netstal/common
-       @$(MKCONFIG) $(@:_config=) ppc ppc4xx hcu5 netstal
- HH405_config: unconfig
-       @$(MKCONFIG) $(@:_config=) ppc ppc4xx hh405 esd
- HUB405_config:        unconfig
-       @$(MKCONFIG) $(@:_config=) ppc ppc4xx hub405 esd
- JSE_config:   unconfig
-       @$(MKCONFIG) $(@:_config=) ppc ppc4xx jse
- KAREF_config: unconfig
-       @$(MKCONFIG) $(@:_config=) ppc ppc4xx karef sandburst
- katmai_config:        unconfig
-       @$(MKCONFIG) $(@:_config=) ppc ppc4xx katmai amcc
- # Kilauea & Haleakala images are identical (recognized via PVR)
- kilauea_config \
- haleakala_config: unconfig
-       @$(MKCONFIG) -n $@ -a kilauea ppc ppc4xx kilauea amcc
- kilauea_nand_config \
- haleakala_nand_config: unconfig
-       @mkdir -p $(obj)include $(obj)board/amcc/kilauea
-       @mkdir -p $(obj)nand_spl/board/amcc/kilauea
+ smdk6400_noUSB_config \
+ smdk6400_config       :       unconfig
+       @mkdir -p $(obj)include $(obj)board/samsung/smdk6400
+       @mkdir -p $(obj)nand_spl/board/samsung/smdk6400
        @echo "#define CONFIG_NAND_U_BOOT" > $(obj)include/config.h
-       @$(MKCONFIG) -n $@ -a kilauea ppc ppc4xx kilauea amcc
-       @echo "TEXT_BASE = 0x01000000" > $(obj)board/amcc/kilauea/config.tmp
        @echo "CONFIG_NAND_U_BOOT = y" >> $(obj)include/config.mk
- korat_config: unconfig
-       @$(MKCONFIG) $(@:_config=) ppc ppc4xx korat
- luan_config:  unconfig
-       @$(MKCONFIG) $(@:_config=) ppc ppc4xx luan amcc
- lwmon5_config:        unconfig
-       @$(MKCONFIG) $(@:_config=) ppc ppc4xx lwmon5
- makalu_config:        unconfig
-       @$(MKCONFIG) $(@:_config=) ppc ppc4xx makalu amcc
- mcu25_config:  unconfig
-       @mkdir -p $(obj)board/netstal/common
-       @$(MKCONFIG) $(@:_config=) ppc ppc4xx mcu25 netstal
- METROBOX_config: unconfig
-       @$(MKCONFIG) $(@:_config=) ppc ppc4xx metrobox sandburst
- MIP405_config:        unconfig
-       @$(MKCONFIG) $(@:_config=) ppc ppc4xx mip405 mpl
- MIP405T_config:       unconfig
-       @mkdir -p $(obj)include
-       @echo "#define CONFIG_MIP405T" >$(obj)include/config.h
-       @$(XECHO) "Enable subset config for MIP405T"
-       @$(MKCONFIG) -a MIP405 ppc ppc4xx mip405 mpl
- ML2_config:   unconfig
-       @$(MKCONFIG) $(@:_config=) ppc ppc4xx ml2
- ml300_config: unconfig
-       @$(MKCONFIG) $(@:_config=) ppc ppc4xx ml300 xilinx
- ml507_flash_config: unconfig
-       @mkdir -p $(obj)include $(obj)board/xilinx/ppc440-generic
-       @mkdir -p $(obj)include $(obj)board/xilinx/ml507
-       @echo "LDSCRIPT:=$(SRCTREE)/board/xilinx/ppc440-generic/u-boot-rom.lds"\
-               > $(obj)board/xilinx/ml507/config.tmp
-       @echo "TEXT_BASE := 0xFE360000" \
-               >> $(obj)board/xilinx/ml507/config.tmp
-       @$(MKCONFIG) ml507 ppc ppc4xx ml507 xilinx
- ml507_config: unconfig
-       @mkdir -p $(obj)include $(obj)board/xilinx/ppc440-generic
-       @mkdir -p $(obj)include $(obj)board/xilinx/ml507
-       @echo "LDSCRIPT:=$(SRCTREE)/board/xilinx/ppc440-generic/u-boot-ram.lds"\
-               > $(obj)board/xilinx/ml507/config.tmp
-       @echo "TEXT_BASE := 0x04000000"  \
-               >> $(obj)board/xilinx/ml507/config.tmp
-       @$(MKCONFIG) ml507 ppc ppc4xx ml507 xilinx
- neo_config:   unconfig
-       @$(MKCONFIG) $(@:_config=) ppc ppc4xx neo gdsys
- ocotea_config:        unconfig
-       @$(MKCONFIG) $(@:_config=) ppc ppc4xx ocotea amcc
- OCRTC_config          \
- ORSG_config:  unconfig
-       @$(MKCONFIG) $(@:_config=) ppc ppc4xx ocrtc esd
- p3p440_config:        unconfig
-       @$(MKCONFIG) $(@:_config=) ppc ppc4xx p3p440 prodrive
- PCI405_config:        unconfig
-       @$(MKCONFIG) $(@:_config=) ppc ppc4xx pci405 esd
- pcs440ep_config:      unconfig
-       @$(MKCONFIG) $(@:_config=) ppc ppc4xx pcs440ep
- PIP405_config:        unconfig
-       @$(MKCONFIG) $(@:_config=) ppc ppc4xx pip405 mpl
- PLU405_config:        unconfig
-       @$(MKCONFIG) $(@:_config=) ppc ppc4xx plu405 esd
- PMC405_config:        unconfig
-       @$(MKCONFIG) $(@:_config=) ppc ppc4xx pmc405 esd
- PMC405DE_config:      unconfig
-       @$(MKCONFIG) $(@:_config=) ppc ppc4xx pmc405de esd
- PMC440_config:        unconfig
-       @$(MKCONFIG) $(@:_config=) ppc ppc4xx pmc440 esd
- PPChameleonEVB_config         \
- PPChameleonEVB_BA_25_config   \
- PPChameleonEVB_ME_25_config   \
- PPChameleonEVB_HI_25_config   \
- PPChameleonEVB_BA_33_config   \
- PPChameleonEVB_ME_33_config   \
- PPChameleonEVB_HI_33_config:  unconfig
-       @mkdir -p $(obj)include
-       @[ -z "$(findstring EVB_BA,$@)" ] || \
-               { echo "#define CONFIG_PPCHAMELEON_MODULE_MODEL 0" >>$(obj)include/config.h ; \
-                 $(XECHO) "... BASIC model" ; \
-               }
-       @[ -z "$(findstring EVB_ME,$@)" ] || \
-               { echo "#define CONFIG_PPCHAMELEON_MODULE_MODEL 1" >>$(obj)include/config.h ; \
-                 $(XECHO) "... MEDIUM model" ; \
-               }
-       @[ -z "$(findstring EVB_HI,$@)" ] || \
-               { echo "#define CONFIG_PPCHAMELEON_MODULE_MODEL 2" >>$(obj)include/config.h ; \
-                 $(XECHO) "... HIGH-END model" ; \
-               }
-       @[ -z "$(findstring _25,$@)" ] || \
-               { echo "#define CONFIG_PPCHAMELEON_CLK_25" >>$(obj)include/config.h ; \
-                 $(XECHO) "SysClk = 25MHz" ; \
-               }
-       @[ -z "$(findstring _33,$@)" ] || \
-               { echo "#define CONFIG_PPCHAMELEON_CLK_33" >>$(obj)include/config.h ; \
-                 $(XECHO) "SysClk = 33MHz" ; \
-               }
-       @$(MKCONFIG) -a $(call xtract_4xx,$@) ppc ppc4xx PPChameleonEVB dave
- quad100hd_config:     unconfig
-       @$(MKCONFIG) $(@:_config=) ppc ppc4xx quad100hd
- redwood_config: unconfig
-       @$(MKCONFIG) $(@:_config=) ppc ppc4xx redwood amcc
- sbc405_config:        unconfig
-       @$(MKCONFIG) $(@:_config=) ppc ppc4xx sbc405
- sc3_config:unconfig
-       @$(MKCONFIG) $(@:_config=) ppc ppc4xx sc3
- sequoia_config \
- rainier_config: unconfig
-       @mkdir -p $(obj)include
-       @echo "#define CONFIG_$$(echo $(subst ,,$(@:_config=)) | \
-               tr '[:lower:]' '[:upper:]')" >$(obj)include/config.h
-       @$(MKCONFIG) -n $@ -a sequoia ppc ppc4xx sequoia amcc
- sequoia_nand_config \
- rainier_nand_config: unconfig
-       @mkdir -p $(obj)include $(obj)board/amcc/sequoia
-       @mkdir -p $(obj)nand_spl/board/amcc/sequoia
-       @echo "#define CONFIG_NAND_U_BOOT" > $(obj)include/config.h
-       @echo "#define CONFIG_$$(echo $(subst ,,$(@:_config=)) | \
-               tr '[:lower:]' '[:upper:]')" >> $(obj)include/config.h
-       @$(MKCONFIG) -n $@ -a sequoia ppc ppc4xx sequoia amcc
-       @echo "TEXT_BASE = 0x01000000" > $(obj)board/amcc/sequoia/config.tmp
+       @if [ -z "$(findstring smdk6400_noUSB_config,$@)" ]; then                       \
+               echo "RAM_TEXT = 0x57e00000" >> $(obj)board/samsung/smdk6400/config.tmp;\
+       else                                                                            \
+               echo "RAM_TEXT = 0xc7e00000" >> $(obj)board/samsung/smdk6400/config.tmp;\
+       fi
+       @$(MKCONFIG) smdk6400 arm arm1176 smdk6400 samsung s3c64xx
        @echo "CONFIG_NAND_U_BOOT = y" >> $(obj)include/config.mk
  
- sequoia_ramboot_config \
- rainier_ramboot_config: unconfig
-       @mkdir -p $(obj)include $(obj)board/amcc/sequoia
-       @echo "#define CONFIG_SYS_RAMBOOT" > $(obj)include/config.h
-       @echo "#define CONFIG_$$(echo $(subst ,,$(@:_config=)) | \
-               tr '[:lower:]' '[:upper:]')" >> $(obj)include/config.h
-       @$(MKCONFIG) -n $@ -a sequoia ppc ppc4xx sequoia amcc
-       @echo "TEXT_BASE = 0x01000000" > $(obj)board/amcc/sequoia/config.tmp
-       @echo "LDSCRIPT = board/amcc/sequoia/u-boot-ram.lds" >> \
-               $(obj)board/amcc/sequoia/config.tmp
- taihu_config: unconfig
-       @$(MKCONFIG) $(@:_config=) ppc ppc4xx taihu amcc
- taishan_config:       unconfig
-       @$(MKCONFIG) $(@:_config=) ppc ppc4xx taishan amcc
- v5fx30teval_config: unconfig
-       @mkdir -p $(obj)include $(obj)board/xilinx/ppc440-generic
-       @mkdir -p $(obj)include $(obj)board/avnet/v5fx30teval
-       @echo "LDSCRIPT:=$(SRCTREE)/board/xilinx/ppc440-generic/u-boot-ram.lds"\
-               > $(obj)board/avnet/v5fx30teval/config.tmp
-       @echo "TEXT_BASE := 0x03000000" \
-               >> $(obj)board/avnet/v5fx30teval/config.tmp
-       @$(MKCONFIG) v5fx30teval ppc ppc4xx v5fx30teval avnet
- v5fx30teval_flash_config: unconfig
-       @mkdir -p $(obj)include $(obj)board/xilinx/ppc440-generic
-       @mkdir -p $(obj)include $(obj)board/avnet/v5fx30teval
-       @echo "LDSCRIPT:=$(SRCTREE)/board/xilinx/ppc440-generic/u-boot-rom.lds"\
-               > $(obj)board/avnet/v5fx30teval/config.tmp
-       @echo "TEXT_BASE := 0xFF1C0000" \
-               >> $(obj)board/avnet/v5fx30teval/config.tmp
-       @$(MKCONFIG) v5fx30teval ppc ppc4xx v5fx30teval avnet
- VOH405_config:        unconfig
-       @$(MKCONFIG) $(@:_config=) ppc ppc4xx voh405 esd
- VOM405_config:        unconfig
-       @$(MKCONFIG) $(@:_config=) ppc ppc4xx vom405 esd
- W7OLMC_config \
- W7OLMG_config: unconfig
-       @$(MKCONFIG) $(@:_config=) ppc ppc4xx w7o
- # Walnut & Sycamore images are identical (recognized via PVR)
- walnut_config \
- sycamore_config: unconfig
-       @$(MKCONFIG) -n $@ -a walnut ppc ppc4xx walnut amcc
- WUH405_config:        unconfig
-       @$(MKCONFIG) $(@:_config=) ppc ppc4xx wuh405 esd
- xilinx-ppc405-generic_flash_config: unconfig
-       @mkdir -p $(obj)include $(obj)board/xilinx/ppc405-generic
-       @echo "LDSCRIPT:=$(SRCTREE)/board/xilinx/ppc405-generic/u-boot-rom.lds"\
-               > $(obj)board/xilinx/ppc405-generic/config.tmp
-       @echo "TEXT_BASE := 0xFE360000" \
-               >> $(obj)board/xilinx/ppc405-generic/config.tmp
-       @$(MKCONFIG) xilinx-ppc405-generic ppc ppc4xx ppc405-generic xilinx
- xilinx-ppc405-generic_config: unconfig
-       @mkdir -p $(obj)include $(obj)board/xilinx/ppc405-generic
-       @echo "LDSCRIPT:=$(SRCTREE)/board/xilinx/ppc405-generic/u-boot-ram.lds"\
-               > $(obj)board/xilinx/ppc405-generic/config.tmp
-       @echo "TEXT_BASE := 0x04000000" \
-               >> $(obj)board/xilinx/ppc405-generic/config.tmp
-       @$(MKCONFIG) xilinx-ppc405-generic ppc ppc4xx ppc405-generic xilinx
- xilinx-ppc440-generic_flash_config: unconfig
-       @mkdir -p $(obj)include $(obj)board/xilinx/ppc440-generic
-       @echo "LDSCRIPT:=$(SRCTREE)/board/xilinx/ppc440-generic/u-boot-rom.lds"\
-               > $(obj)board/xilinx/ppc440-generic/config.tmp
-       @echo "TEXT_BASE := 0xFE360000" \
-               >> $(obj)board/xilinx/ppc440-generic/config.tmp
-       @$(MKCONFIG) xilinx-ppc440-generic ppc ppc4xx ppc440-generic xilinx
- xilinx-ppc440-generic_config: unconfig
-       @mkdir -p $(obj)include $(obj)board/xilinx/ppc440-generic
-       @echo "LDSCRIPT:=$(SRCTREE)/board/xilinx/ppc440-generic/u-boot-ram.lds"\
-               > $(obj)board/xilinx/ppc440-generic/config.tmp
-       @echo "TEXT_BASE := 0x04000000" \
-               >> $(obj)board/xilinx/ppc440-generic/config.tmp
-       @$(MKCONFIG) xilinx-ppc440-generic ppc ppc4xx ppc440-generic xilinx
- XPEDITE1000_config:   unconfig
-       @$(MKCONFIG) $(@:_config=) ppc ppc4xx xpedite1000 xes
- yosemite_config \
- yellowstone_config: unconfig
-       @mkdir -p $(obj)include
-       @echo "#define CONFIG_$$(echo $(subst ,,$(@:_config=)) | \
-               tr '[:lower:]' '[:upper:]')" >$(obj)include/config.h
-       @$(MKCONFIG) -n $@ -a yosemite ppc ppc4xx yosemite amcc
- yucca_config: unconfig
-       @$(MKCONFIG) $(@:_config=) ppc ppc4xx yucca amcc
- zeus_config:  unconfig
-       @$(MKCONFIG) $(@:_config=) ppc ppc4xx zeus
- #########################################################################
- ## MPC8220 Systems
- #########################################################################
- Alaska8220_config     \
- Yukon8220_config:     unconfig
-       @$(MKCONFIG) $(@:_config=) ppc mpc8220 alaska
- sorcery_config:               unconfig
-       @$(MKCONFIG) $(@:_config=) ppc mpc8220 sorcery
  #########################################################################
- ## MPC824x Systems
  #########################################################################
- xtract_82xx = $(subst _BIGFLASH,,$(subst _ROMBOOT,,$(subst _L2,,$(subst _266MHz,,$(subst _300MHz,,$(subst _config,,$1))))))
  
- A3000_config: unconfig
-       @$(MKCONFIG) $(@:_config=) ppc mpc824x a3000
+ clean:
+       @rm -f $(obj)examples/standalone/82559_eeprom                     \
+              $(obj)examples/standalone/atmel_df_pow2                    \
+              $(obj)examples/standalone/eepro100_eeprom                  \
+              $(obj)examples/standalone/hello_world                      \
+              $(obj)examples/standalone/interrupt                        \
+              $(obj)examples/standalone/mem_to_mem_idma2intr             \
+              $(obj)examples/standalone/sched                            \
+              $(obj)examples/standalone/smc911{11,x}_eeprom              \
+              $(obj)examples/standalone/test_burst                       \
+              $(obj)examples/standalone/timer
+       @rm -f $(obj)examples/api/demo{,.bin}
+       @rm -f $(obj)tools/bmp_logo        $(obj)tools/easylogo/easylogo  \
+              $(obj)tools/env/{fw_printenv,fw_setenv}                    \
+              $(obj)tools/envcrc                                         \
+              $(obj)tools/gdb/{astest,gdbcont,gdbsend}                   \
+              $(obj)tools/gen_eth_addr    $(obj)tools/img2srec           \
+              $(obj)tools/mk{env,}image   $(obj)tools/mpc86x_clk         \
+              $(obj)tools/mk{smdk5250,}spl                               \
+              $(obj)tools/ncb             $(obj)tools/ubsha1
+       @rm -f $(obj)board/cray/L1/{bootscript.c,bootscript.image}        \
+              $(obj)board/matrix_vision/*/bootscript.img                 \
+              $(obj)board/voiceblue/eeprom                               \
+              $(obj)u-boot.lds                                           \
+              $(obj)arch/blackfin/cpu/bootrom-asm-offsets.[chs]          \
+              $(obj)arch/blackfin/cpu/init.{lds,elf}
+       @rm -f $(obj)include/bmp_logo.h
+       @rm -f $(obj)include/bmp_logo_data.h
+       @rm -f $(obj)lib/asm-offsets.s
+       @rm -f $(obj)include/generated/asm-offsets.h
+       @rm -f $(obj)$(CPUDIR)/$(SOC)/asm-offsets.s
+       @rm -f $(obj)nand_spl/{u-boot.lds,u-boot-nand_spl.lds,u-boot-spl,u-boot-spl.map,System.map}
+       @rm -f $(obj)onenand_ipl/onenand-{ipl,ipl.bin,ipl.map}
+       @rm -f $(obj)mmc_spl/{u-boot.lds,u-boot-spl,u-boot-spl.map,u-boot-spl.bin,u-boot-mmc-spl.bin}
+       @rm -f $(ONENAND_BIN)
+       @rm -f $(obj)onenand_ipl/u-boot.lds
+       @rm -f $(obj)spl/{u-boot-spl,u-boot-spl.bin,u-boot-spl.lds,u-boot-spl.map}
+       @rm -f $(obj)MLO
+       @rm -f $(TIMESTAMP_FILE) $(VERSION_FILE)
+       @find $(OBJTREE) -type f \
+               \( -name 'core' -o -name '*.bak' -o -name '*~' \
+               -o -name '*.o'  -o -name '*.a' -o -name '*.exe' \) -print \
+               | xargs rm -f
  
- barco_config: unconfig
-       @$(MKCONFIG) $(@:_config=) ppc mpc824x barco
+ # Removes everything not needed for testing u-boot
+ tidy: clean
+       @find $(OBJTREE) -type f \( -name '*.depend*' \) -print | xargs rm -f
  
- BMW_config: unconfig
-       @$(MKCONFIG) $(@:_config=) ppc mpc824x bmw
- CPC45_config  \
- CPC45_ROMBOOT_config: unconfig
-       @$(MKCONFIG) $(call xtract_82xx,$@) ppc mpc824x cpc45
-       @cd $(obj)include ;                             \
-       if [ "$(findstring _ROMBOOT_,$@)" ] ; then \
-               echo "CONFIG_BOOT_ROM = y" >> config.mk ; \
-               $(XECHO) "... booting from 8-bit flash" ; \
-       else \
-               echo "CONFIG_BOOT_ROM = n" >> config.mk ; \
-               $(XECHO) "... booting from 64-bit flash" ; \
-       fi; \
-       echo "export CONFIG_BOOT_ROM" >> config.mk;
- CU824_config: unconfig
-       @$(MKCONFIG) $(@:_config=) ppc mpc824x cu824
- debris_config: unconfig
-       @$(MKCONFIG) $(@:_config=) ppc mpc824x debris etin
- eXalion_config: unconfig
-       @$(MKCONFIG) $(@:_config=) ppc mpc824x eXalion
- HIDDEN_DRAGON_config: unconfig
-       @$(MKCONFIG) $(@:_config=) ppc mpc824x hidden_dragon
- kvme080_config: unconfig
-       @$(MKCONFIG) $(@:_config=) ppc mpc824x kvme080 etin
- # HDLAN is broken ATM. Should be fixed as soon as hardware is available and as
- # time permits.
- #linkstation_HDLAN_config \
- # Remove this line when HDLAN is fixed
- linkstation_HGLAN_config: unconfig
-       @mkdir -p $(obj)include
-       @case $@ in \
-               *HGLAN*) echo "#define CONFIG_HGLAN 1" >$(obj)include/config.h; ;; \
-               *HDLAN*) echo "#define CONFIG_HLAN 1" >$(obj)include/config.h; ;; \
-       esac
-       @$(MKCONFIG) -n $@ -a linkstation ppc mpc824x linkstation
- MOUSSE_config: unconfig
-       @$(MKCONFIG) $(@:_config=) ppc mpc824x mousse
- MUSENKI_config: unconfig
-       @$(MKCONFIG) $(@:_config=) ppc mpc824x musenki
- MVBLUE_config:        unconfig
-       @$(MKCONFIG) $(@:_config=) ppc mpc824x mvblue
- OXC_config: unconfig
-       @$(MKCONFIG) $(@:_config=) ppc mpc824x oxc
- PN62_config: unconfig
-       @$(MKCONFIG) $(@:_config=) ppc mpc824x pn62
- Sandpoint8240_config: unconfig
-       @$(MKCONFIG) $(@:_config=) ppc mpc824x sandpoint
- Sandpoint8245_config: unconfig
-       @$(MKCONFIG) $(@:_config=) ppc mpc824x sandpoint
- sbc8240_config: unconfig
-       @$(MKCONFIG) $(@:_config=) ppc mpc824x sbc8240
- SL8245_config: unconfig
-       @$(MKCONFIG) $(@:_config=) ppc mpc824x sl8245
- utx8245_config: unconfig
-       @$(MKCONFIG) $(@:_config=) ppc mpc824x utx8245
- #########################################################################
- ## MPC8260 Systems
- #########################################################################
- atc_config:   unconfig
-       @$(MKCONFIG) $(@:_config=) ppc mpc8260 atc
- cogent_mpc8260_config:        unconfig
-       @$(MKCONFIG) $(@:_config=) ppc mpc8260 cogent
- CPU86_config  \
- CPU86_ROMBOOT_config: unconfig
-       @$(MKCONFIG) $(call xtract_82xx,$@) ppc mpc8260 cpu86
-       @cd $(obj)include ;                             \
-       if [ "$(findstring _ROMBOOT_,$@)" ] ; then \
-               echo "CONFIG_BOOT_ROM = y" >> config.mk ; \
-               $(XECHO) "... booting from 8-bit flash" ; \
-       else \
-               echo "CONFIG_BOOT_ROM = n" >> config.mk ; \
-               $(XECHO) "... booting from 64-bit flash" ; \
-       fi; \
-       echo "export CONFIG_BOOT_ROM" >> config.mk;
- CPU87_config  \
- CPU87_ROMBOOT_config: unconfig
-       @$(MKCONFIG) $(call xtract_82xx,$@) ppc mpc8260 cpu87
-       @cd $(obj)include ;                             \
-       if [ "$(findstring _ROMBOOT_,$@)" ] ; then \
-               echo "CONFIG_BOOT_ROM = y" >> config.mk ; \
-               $(XECHO) "... booting from 8-bit flash" ; \
-       else \
-               echo "CONFIG_BOOT_ROM = n" >> config.mk ; \
-               $(XECHO) "... booting from 64-bit flash" ; \
-       fi; \
-       echo "export CONFIG_BOOT_ROM" >> config.mk;
- ep8248_config \
- ep8248E_config        :       unconfig
-       @$(MKCONFIG) ep8248 ppc mpc8260 ep8248
- ep8260_config:        unconfig
-       @$(MKCONFIG) $(@:_config=) ppc mpc8260 ep8260
- ep82xxm_config:       unconfig
-       @$(MKCONFIG) $(@:_config=) ppc mpc8260 ep82xxm
- gw8260_config:        unconfig
-       @$(MKCONFIG) $(@:_config=) ppc mpc8260 gw8260
- hymod_config: unconfig
-       @$(MKCONFIG) $(@:_config=) ppc mpc8260 hymod
- IDS8247_config:       unconfig
-       @$(MKCONFIG) $(@:_config=) ppc mpc8260 ids8247
- IPHASE4539_config:    unconfig
-       @$(MKCONFIG) $(@:_config=) ppc mpc8260 iphase4539
- ISPAN_config          \
- ISPAN_REVB_config:    unconfig
-       @mkdir -p $(obj)include
-       @if [ "$(findstring _REVB_,$@)" ] ; then \
-               echo "#define CONFIG_SYS_REV_B" > $(obj)include/config.h ; \
-       fi
-       @$(MKCONFIG) -a ISPAN ppc mpc8260 ispan
- mgcoge_config :       unconfig
-       @$(MKCONFIG) mgcoge ppc mpc8260 mgcoge keymile
- MPC8260ADS_config     \
- MPC8260ADS_lowboot_config     \
- MPC8260ADS_33MHz_config       \
- MPC8260ADS_33MHz_lowboot_config       \
- MPC8260ADS_40MHz_config       \
- MPC8260ADS_40MHz_lowboot_config       \
- MPC8272ADS_config     \
- MPC8272ADS_lowboot_config     \
- PQ2FADS_config                \
- PQ2FADS_lowboot_config                \
- PQ2FADS-VR_config     \
- PQ2FADS-VR_lowboot_config     \
- PQ2FADS-ZU_config     \
- PQ2FADS-ZU_lowboot_config     \
- PQ2FADS-ZU_66MHz_config       \
- PQ2FADS-ZU_66MHz_lowboot_config       \
-       :               unconfig
-       @mkdir -p $(obj)include
-       @mkdir -p $(obj)board/freescale/mpc8260ads
-       $(if $(findstring PQ2FADS,$@), \
-       @echo "#define CONFIG_ADSTYPE CONFIG_SYS_PQ2FADS" > $(obj)include/config.h, \
-       @echo "#define CONFIG_ADSTYPE CONFIG_SYS_"$(subst MPC,,$(word 1,$(subst _, ,$@))) > $(obj)include/config.h)
-       $(if $(findstring MHz,$@), \
-       @echo "#define CONFIG_8260_CLKIN" $(subst MHz,,$(word 2,$(subst _, ,$@)))"000000" >> $(obj)include/config.h, \
-       $(if $(findstring VR,$@), \
-       @echo "#define CONFIG_8260_CLKIN 66000000" >> $(obj)include/config.h))
-       @[ -z "$(findstring lowboot_,$@)" ] || \
-               { echo "TEXT_BASE = 0xFF800000" >$(obj)board/freescale/mpc8260ads/config.tmp ; \
-                 $(XECHO) "... with lowboot configuration" ; \
-               }
-       @$(MKCONFIG) -a MPC8260ADS ppc mpc8260 mpc8260ads freescale
- MPC8266ADS_config:    unconfig
-       @$(MKCONFIG) $(@:_config=) ppc mpc8260 mpc8266ads freescale
- muas3001_dev_config \
- muas3001_config       :       unconfig
-       @mkdir -p $(obj)include
-       @mkdir -p $(obj)board/muas3001
-       @if [ "$(findstring dev,$@)" ] ; then \
-               echo "#define CONFIG_MUAS_DEV_BOARD" > $(obj)include/config.h ; \
-       fi
-       @$(MKCONFIG) -a muas3001 ppc mpc8260 muas3001
- # PM825/PM826 default configuration:  small (= 8 MB) Flash / boot from 64-bit flash
- PM825_config  \
- PM825_ROMBOOT_config  \
- PM825_BIGFLASH_config \
- PM825_ROMBOOT_BIGFLASH_config \
- PM826_config  \
- PM826_ROMBOOT_config  \
- PM826_BIGFLASH_config \
- PM826_ROMBOOT_BIGFLASH_config:        unconfig
-       @mkdir -p $(obj)include
-       @mkdir -p $(obj)board/pm826
-       @if [ "$(findstring PM825_,$@)" ] ; then \
-               echo "#define CONFIG_PCI"       >$(obj)include/config.h ; \
-       else \
-               >$(obj)include/config.h ; \
-       fi
-       @if [ "$(findstring _ROMBOOT_,$@)" ] ; then \
-               $(XECHO) "... booting from 8-bit flash" ; \
-               echo "#define CONFIG_BOOT_ROM" >>$(obj)include/config.h ; \
-               echo "TEXT_BASE = 0xFF800000" >$(obj)board/pm826/config.tmp ; \
-               if [ "$(findstring _BIGFLASH_,$@)" ] ; then \
-                       $(XECHO) "... with 32 MB Flash" ; \
-                       echo "#define CONFIG_FLASH_32MB" >>$(obj)include/config.h ; \
-               fi; \
-       else \
-               $(XECHO) "... booting from 64-bit flash" ; \
-               if [ "$(findstring _BIGFLASH_,$@)" ] ; then \
-                       $(XECHO) "... with 32 MB Flash" ; \
-                       echo "#define CONFIG_FLASH_32MB" >>$(obj)include/config.h ; \
-                       echo "TEXT_BASE = 0x40000000" >$(obj)board/pm826/config.tmp ; \
-               else \
-                       echo "TEXT_BASE = 0xFF000000" >$(obj)board/pm826/config.tmp ; \
-               fi; \
-       fi
-       @$(MKCONFIG) -a PM826 ppc mpc8260 pm826
- PM828_config  \
- PM828_PCI_config      \
- PM828_ROMBOOT_config  \
- PM828_ROMBOOT_PCI_config:     unconfig
-       @mkdir -p $(obj)include
-       @mkdir -p $(obj)board/pm826
-       @if [ "$(findstring _PCI_,$@)" ] ; then \
-               echo "#define CONFIG_PCI"  >>$(obj)include/config.h ; \
-               $(XECHO) "... with PCI enabled" ; \
-       fi
-       @if [ "$(findstring _ROMBOOT_,$@)" ] ; then \
-               $(XECHO) "... booting from 8-bit flash" ; \
-               echo "#define CONFIG_BOOT_ROM" >>$(obj)include/config.h ; \
-               echo "TEXT_BASE = 0xFF800000" >$(obj)board/pm826/config.tmp ; \
-       fi
-       @$(MKCONFIG) -a PM828 ppc mpc8260 pm828
- ppmc8260_config:      unconfig
-       @$(MKCONFIG) $(@:_config=) ppc mpc8260 ppmc8260
- Rattler8248_config    \
- Rattler_config:               unconfig
-       @mkdir -p $(obj)include
-       $(if $(findstring 8248,$@), \
-       @echo "#define CONFIG_MPC8248" > $(obj)include/config.h)
-       @$(MKCONFIG) -a Rattler ppc mpc8260 rattler
- RPXsuper_config:      unconfig
-       @$(MKCONFIG) $(@:_config=) ppc mpc8260 rpxsuper
- rsdproto_config:      unconfig
-       @$(MKCONFIG) $(@:_config=) ppc mpc8260 rsdproto
- sacsng_config:        unconfig
-       @$(MKCONFIG) $(@:_config=) ppc mpc8260 sacsng
- sbc8260_config:       unconfig
-       @$(MKCONFIG) $(@:_config=) ppc mpc8260 sbc8260
- SCM_config:           unconfig
-       @$(MKCONFIG) $(@:_config=) ppc mpc8260 SCM siemens
- TQM8255_AA_config \
- TQM8260_AA_config \
- TQM8260_AB_config \
- TQM8260_AC_config \
- TQM8260_AD_config \
- TQM8260_AE_config \
- TQM8260_AF_config \
- TQM8260_AG_config \
- TQM8260_AH_config \
- TQM8260_AI_config \
- TQM8265_AA_config:  unconfig
-       @mkdir -p $(obj)include
-       @case "$@" in \
-       TQM8255_AA_config) CTYPE=MPC8255; CFREQ=300; CACHE=no;  BMODE=8260;;  \
-       TQM8260_AA_config) CTYPE=MPC8260; CFREQ=200; CACHE=no;  BMODE=8260;; \
-       TQM8260_AB_config) CTYPE=MPC8260; CFREQ=200; CACHE=yes; BMODE=60x;;  \
-       TQM8260_AC_config) CTYPE=MPC8260; CFREQ=200; CACHE=yes; BMODE=60x;;  \
-       TQM8260_AD_config) CTYPE=MPC8260; CFREQ=300; CACHE=no;  BMODE=60x;;  \
-       TQM8260_AE_config) CTYPE=MPC8260; CFREQ=266; CACHE=no;  BMODE=8260;; \
-       TQM8260_AF_config) CTYPE=MPC8260; CFREQ=300; CACHE=no;  BMODE=60x;;  \
-       TQM8260_AG_config) CTYPE=MPC8260; CFREQ=300; CACHE=no;  BMODE=8260;; \
-       TQM8260_AH_config) CTYPE=MPC8260; CFREQ=300; CACHE=yes; BMODE=60x;;  \
-       TQM8260_AI_config) CTYPE=MPC8260; CFREQ=300; CACHE=no;  BMODE=60x;;  \
-       TQM8265_AA_config) CTYPE=MPC8265; CFREQ=300; CACHE=no;  BMODE=60x;;  \
-       esac; \
-       if [ "$${CTYPE}" != "MPC8260" ] ; then \
-               echo "#define CONFIG_$${CTYPE}" >>$(obj)include/config.h ; \
-       fi; \
-       echo "#define CONFIG_$${CFREQ}MHz"      >>$(obj)include/config.h ; \
-       echo "... with $${CFREQ}MHz system clock" ; \
-       if [ "$${CACHE}" = "yes" ] ; then \
-               echo "#define CONFIG_L2_CACHE"  >>$(obj)include/config.h ; \
-               $(XECHO) "... with L2 Cache support" ; \
-       else \
-               echo "#undef CONFIG_L2_CACHE"   >>$(obj)include/config.h ; \
-               $(XECHO) "... without L2 Cache support" ; \
-       fi; \
-       if [ "$${BMODE}" = "60x" ] ; then \
-               echo "#define CONFIG_BUSMODE_60x" >>$(obj)include/config.h ; \
-               $(XECHO) "... with 60x Bus Mode" ; \
-       else \
-               echo "#undef CONFIG_BUSMODE_60x"  >>$(obj)include/config.h ; \
-               $(XECHO) "... without 60x Bus Mode" ; \
-       fi
-       @$(MKCONFIG) -a TQM8260 ppc mpc8260 tqm8260 tqc
- TQM8272_config: unconfig
-       @$(MKCONFIG) TQM8272 ppc mpc8260 tqm8272 tqc
- VoVPN-GW_66MHz_config \
- VoVPN-GW_100MHz_config:               unconfig
-       @mkdir -p $(obj)include
-       @echo "#define CONFIG_CLKIN_$(word 2,$(subst _, ,$@))" > $(obj)include/config.h
-       @$(MKCONFIG) -a VoVPN-GW ppc mpc8260 vovpn-gw funkwerk
- ZPC1900_config: unconfig
-       @$(MKCONFIG) $(@:_config=) ppc mpc8260 zpc1900
- #########################################################################
- ## Coldfire
- #########################################################################
- M5208EVBE_config :            unconfig
-       @$(MKCONFIG) $(@:_config=) m68k mcf52x2 m5208evbe freescale
- M52277EVB_config \
- M52277EVB_spansion_config \
- M52277EVB_stmicro_config :    unconfig
-       @case "$@" in \
-       M52277EVB_config)               FLASH=SPANSION;; \
-       M52277EVB_spansion_config)      FLASH=SPANSION;; \
-       M52277EVB_stmicro_config)       FLASH=STMICRO;; \
-       esac; \
-       if [ "$${FLASH}" = "SPANSION" ] ; then \
-               echo "#define CONFIG_SYS_SPANSION_BOOT" >> $(obj)include/config.h ; \
-               echo "TEXT_BASE = 0x00000000" > $(obj)board/freescale/m52277evb/config.tmp ; \
-               cp $(obj)board/freescale/m52277evb/u-boot.spa $(obj)board/freescale/m52277evb/u-boot.lds ; \
-               $(XECHO) "... with SPANSION boot..." ; \
-       fi; \
-       if [ "$${FLASH}" = "STMICRO" ] ; then \
-               echo "#define CONFIG_CF_SBF"    >> $(obj)include/config.h ; \
-               echo "#define CONFIG_SYS_STMICRO_BOOT"  >> $(obj)include/config.h ; \
-               echo "TEXT_BASE = 0x43E00000" > $(obj)board/freescale/m52277evb/config.tmp ; \
-               cp $(obj)board/freescale/m52277evb/u-boot.stm $(obj)board/freescale/m52277evb/u-boot.lds ; \
-               $(XECHO) "... with ST Micro boot..." ; \
-       fi
-       @$(MKCONFIG) -a M52277EVB m68k mcf5227x m52277evb freescale
- M5235EVB_config \
- M5235EVB_Flash16_config \
- M5235EVB_Flash32_config:      unconfig
-       @case "$@" in \
-       M5235EVB_config)                FLASH=16;; \
-       M5235EVB_Flash16_config)        FLASH=16;; \
-       M5235EVB_Flash32_config)        FLASH=32;; \
-       esac; \
-       if [ "$${FLASH}" != "16" ] ; then \
-               echo "#define NORFLASH_PS32BIT  1" >> $(obj)include/config.h ; \
-               echo "TEXT_BASE = 0xFFC00000" > $(obj)board/freescale/m5235evb/config.tmp ; \
-               cp $(obj)board/freescale/m5235evb/u-boot.32 $(obj)board/freescale/m5235evb/u-boot.lds ; \
-       else \
-               echo "TEXT_BASE = 0xFFE00000" > $(obj)board/freescale/m5235evb/config.tmp ; \
-               cp $(obj)board/freescale/m5235evb/u-boot.16 $(obj)board/freescale/m5235evb/u-boot.lds ; \
-       fi
-       @$(MKCONFIG) -a M5235EVB m68k mcf523x m5235evb freescale
- M5249EVB_config :             unconfig
-       @$(MKCONFIG) $(@:_config=) m68k mcf52x2 m5249evb freescale
- M5253DEMO_config :            unconfig
-       @$(MKCONFIG) $(@:_config=) m68k mcf52x2 m5253demo freescale
- M5253EVBE_config :            unconfig
-       @$(MKCONFIG) $(@:_config=) m68k mcf52x2 m5253evbe freescale
- cobra5272_config :            unconfig
-       @$(MKCONFIG) $(@:_config=) m68k mcf52x2 cobra5272
- EB+MCF-EV123_config :         unconfig
-       @mkdir -p $(obj)include
-       @mkdir -p $(obj)board/BuS/EB+MCF-EV123
-       @echo "TEXT_BASE = 0xFFE00000"|tee $(obj)board/BuS/EB+MCF-EV123/textbase.mk
-       @$(MKCONFIG) EB+MCF-EV123 m68k mcf52x2 EB+MCF-EV123 BuS
- EB+MCF-EV123_internal_config :        unconfig
-       @mkdir -p $(obj)include
-       @mkdir -p $(obj)board/BuS/EB+MCF-EV123
-       @echo "TEXT_BASE = 0xF0000000"|tee $(obj)board/BuS/EB+MCF-EV123/textbase.mk
-       @$(MKCONFIG) EB+MCF-EV123 m68k mcf52x2 EB+MCF-EV123 BuS
- idmr_config :                 unconfig
-       @$(MKCONFIG) $(@:_config=) m68k mcf52x2 idmr
- M5271EVB_config :             unconfig
-       @$(MKCONFIG) $(@:_config=) m68k mcf52x2 m5271evb freescale
- M5272C3_config :              unconfig
-       @$(MKCONFIG) $(@:_config=) m68k mcf52x2 m5272c3 freescale
- M5275EVB_config :             unconfig
-       @$(MKCONFIG) $(@:_config=) m68k mcf52x2 m5275evb freescale
- M5282EVB_config :             unconfig
-       @$(MKCONFIG) $(@:_config=) m68k mcf52x2 m5282evb freescale
- M53017EVB_config :            unconfig
-       @$(MKCONFIG) $(@:_config=) m68k mcf532x m53017evb freescale
- M5329AFEE_config \
- M5329BFEE_config :    unconfig
-       @case "$@" in \
-       M5329AFEE_config)       NAND=0;; \
-       M5329BFEE_config)       NAND=16;; \
-       esac; \
-       if [ "$${NAND}" != "0" ] ; then \
-               echo "#define NANDFLASH_SIZE    $${NAND}" > $(obj)include/config.h ; \
-       fi
-       @$(MKCONFIG) -a M5329EVB m68k mcf532x m5329evb freescale
- M5373EVB_config :     unconfig
-       @case "$@" in \
-       M5373EVB_config)        NAND=16;; \
-       esac; \
-       if [ "$${NAND}" != "0" ] ; then \
-               echo "#define NANDFLASH_SIZE    $${NAND}" > $(obj)include/config.h ; \
-       fi
-       @$(MKCONFIG) -a M5373EVB m68k mcf532x m5373evb freescale
- M54451EVB_config \
- M54451EVB_stmicro_config :    unconfig
-       @case "$@" in \
-       M54451EVB_config)               FLASH=NOR;; \
-       M54451EVB_stmicro_config)       FLASH=STMICRO;; \
-       esac; \
-       if [ "$${FLASH}" = "NOR" ] ; then \
-               echo "TEXT_BASE = 0x00000000" > $(obj)board/freescale/m54451evb/config.tmp ; \
-               cp $(obj)board/freescale/m54451evb/u-boot.spa $(obj)board/freescale/m54451evb/u-boot.lds ; \
-               $(XECHO) "... with NOR boot..." ; \
-       fi; \
-       if [ "$${FLASH}" = "STMICRO" ] ; then \
-               echo "#define CONFIG_CF_SBF"    >> $(obj)include/config.h ; \
-               echo "#define CONFIG_SYS_STMICRO_BOOT"  >> $(obj)include/config.h ; \
-               echo "TEXT_BASE = 0x47E00000" > $(obj)board/freescale/m54451evb/config.tmp ; \
-               cp $(obj)board/freescale/m54451evb/u-boot.stm $(obj)board/freescale/m54451evb/u-boot.lds ; \
-               $(XECHO) "... with ST Micro boot..." ; \
-       fi; \
-       echo "#define CONFIG_SYS_INPUT_CLKSRC 24000000" >> $(obj)include/config.h ;
-       @$(MKCONFIG) -a M54451EVB m68k mcf5445x m54451evb freescale
- M54455EVB_config \
- M54455EVB_atmel_config \
- M54455EVB_intel_config \
- M54455EVB_a33_config \
- M54455EVB_a66_config \
- M54455EVB_i33_config \
- M54455EVB_i66_config \
- M54455EVB_stm33_config :      unconfig
-       @case "$@" in \
-       M54455EVB_config)               FLASH=ATMEL; FREQ=33333333;; \
-       M54455EVB_atmel_config)         FLASH=ATMEL; FREQ=33333333;; \
-       M54455EVB_intel_config)         FLASH=INTEL; FREQ=33333333;; \
-       M54455EVB_a33_config)           FLASH=ATMEL; FREQ=33333333;; \
-       M54455EVB_a66_config)           FLASH=ATMEL; FREQ=66666666;; \
-       M54455EVB_i33_config)           FLASH=INTEL; FREQ=33333333;; \
-       M54455EVB_i66_config)           FLASH=INTEL; FREQ=66666666;; \
-       M54455EVB_stm33_config)         FLASH=STMICRO; FREQ=33333333;; \
-       esac; \
-       if [ "$${FLASH}" = "INTEL" ] ; then \
-               echo "#define CONFIG_SYS_INTEL_BOOT" >> $(obj)include/config.h ; \
-               echo "TEXT_BASE = 0x00000000" > $(obj)board/freescale/m54455evb/config.tmp ; \
-               cp $(obj)board/freescale/m54455evb/u-boot.int $(obj)board/freescale/m54455evb/u-boot.lds ; \
-               $(XECHO) "... with INTEL boot..." ; \
-       fi; \
-       if [ "$${FLASH}" = "ATMEL" ] ; then \
-               echo "#define CONFIG_SYS_ATMEL_BOOT"    >> $(obj)include/config.h ; \
-               echo "TEXT_BASE = 0x04000000" > $(obj)board/freescale/m54455evb/config.tmp ; \
-               cp $(obj)board/freescale/m54455evb/u-boot.atm $(obj)board/freescale/m54455evb/u-boot.lds ; \
-               $(XECHO) "... with ATMEL boot..." ; \
-       fi; \
-       if [ "$${FLASH}" = "STMICRO" ] ; then \
-               echo "#define CONFIG_CF_SBF"    >> $(obj)include/config.h ; \
-               echo "#define CONFIG_SYS_STMICRO_BOOT"  >> $(obj)include/config.h ; \
-               echo "TEXT_BASE = 0x4FE00000" > $(obj)board/freescale/m54455evb/config.tmp ; \
-               cp $(obj)board/freescale/m54455evb/u-boot.stm $(obj)board/freescale/m54455evb/u-boot.lds ; \
-               $(XECHO) "... with ST Micro boot..." ; \
-       fi; \
-       echo "#define CONFIG_SYS_INPUT_CLKSRC $${FREQ}" >> $(obj)include/config.h ; \
-       $(XECHO) "... with $${FREQ}Hz input clock"
-       @$(MKCONFIG) -a M54455EVB m68k mcf5445x m54455evb freescale
- M5475AFE_config \
- M5475BFE_config \
- M5475CFE_config \
- M5475DFE_config \
- M5475EFE_config \
- M5475FFE_config \
- M5475GFE_config :     unconfig
-       @case "$@" in \
-       M5475AFE_config)        BOOT=2;CODE=0;VID=0;USB=0;RAM=64;RAM1=0;; \
-       M5475BFE_config)        BOOT=2;CODE=16;VID=0;USB=0;RAM=64;RAM1=0;; \
-       M5475CFE_config)        BOOT=2;CODE=16;VID=1;USB=1;RAM=64;RAM1=0;; \
-       M5475DFE_config)        BOOT=2;CODE=0;VID=0;USB=1;RAM=64;RAM1=0;; \
-       M5475EFE_config)        BOOT=2;CODE=0;VID=1;USB=1;RAM=64;RAM1=0;; \
-       M5475FFE_config)        BOOT=2;CODE=32;VID=1;USB=1;RAM=64;RAM1=64;; \
-       M5475GFE_config)        BOOT=4;CODE=0;VID=0;USB=0;RAM=64;RAM1=0;; \
-       esac; \
-       echo "#define CONFIG_SYS_BUSCLK 133333333" > $(obj)include/config.h ; \
-       echo "#define CONFIG_SYS_BOOTSZ $${BOOT}" >> $(obj)include/config.h ; \
-       echo "#define CONFIG_SYS_DRAMSZ $${RAM}" >> $(obj)include/config.h ; \
-       if [ "$${RAM1}" != "0" ] ; then \
-               echo "#define CONFIG_SYS_DRAMSZ1        $${RAM1}" >> $(obj)include/config.h ; \
-       fi; \
-       if [ "$${CODE}" != "0" ] ; then \
-               echo "#define CONFIG_SYS_NOR1SZ $${CODE}" >> $(obj)include/config.h ; \
-       fi; \
-       if [ "$${VID}" == "1" ] ; then \
-               echo "#define CONFIG_SYS_VIDEO" >> $(obj)include/config.h ; \
-       fi; \
-       if [ "$${USB}" == "1" ] ; then \
-               echo "#define CONFIG_SYS_USBCTRL" >> $(obj)include/config.h ; \
-       fi
-       @$(MKCONFIG) -a M5475EVB m68k mcf547x_8x m547xevb freescale
- M5485AFE_config \
- M5485BFE_config \
- M5485CFE_config \
- M5485DFE_config \
- M5485EFE_config \
- M5485FFE_config \
- M5485GFE_config \
- M5485HFE_config :     unconfig
-       @case "$@" in \
-       M5485AFE_config)        BOOT=2;CODE=0;VID=0;USB=0;RAM=64;RAM1=0;; \
-       M5485BFE_config)        BOOT=2;CODE=16;VID=0;USB=0;RAM=64;RAM1=0;; \
-       M5485CFE_config)        BOOT=2;CODE=16;VID=1;USB=1;RAM=64;RAM1=0;; \
-       M5485DFE_config)        BOOT=2;CODE=0;VID=0;USB=1;RAM=64;RAM1=0;; \
-       M5485EFE_config)        BOOT=2;CODE=0;VID=1;USB=1;RAM=64;RAM1=0;; \
-       M5485FFE_config)        BOOT=2;CODE=32;VID=1;USB=1;RAM=64;RAM1=64;; \
-       M5485GFE_config)        BOOT=4;CODE=0;VID=0;USB=0;RAM=64;RAM1=0;; \
-       M5485HFE_config)        BOOT=2;CODE=16;VID=1;USB=0;RAM=64;RAM1=0;; \
-       esac; \
-       echo "#define CONFIG_SYS_BUSCLK 100000000" > $(obj)include/config.h ; \
-       echo "#define CONFIG_SYS_BOOTSZ $${BOOT}" >> $(obj)include/config.h ; \
-       echo "#define CONFIG_SYS_DRAMSZ $${RAM}" >> $(obj)include/config.h ; \
-       if [ "$${RAM1}" != "0" ] ; then \
-               echo "#define CONFIG_SYS_DRAMSZ1        $${RAM1}" >> $(obj)include/config.h ; \
-       fi; \
-       if [ "$${CODE}" != "0" ] ; then \
-               echo "#define CONFIG_SYS_NOR1SZ $${CODE}" >> $(obj)include/config.h ; \
-       fi; \
-       if [ "$${VID}" == "1" ] ; then \
-               echo "#define CONFIG_SYS_VIDEO" >> $(obj)include/config.h ; \
-       fi; \
-       if [ "$${USB}" == "1" ] ; then \
-               echo "#define CONFIG_SYS_USBCTRL" >> $(obj)include/config.h ; \
-       fi
-       @$(MKCONFIG) -a M5485EVB m68k mcf547x_8x m548xevb freescale
- TASREG_config :               unconfig
-       @$(MKCONFIG) $(@:_config=) m68k mcf52x2 tasreg esd
- #########################################################################
- ## MPC83xx Systems
- #########################################################################
- kmeter1_config: unconfig
-       @$(MKCONFIG) kmeter1 ppc mpc83xx kmeter1 keymile
- MPC8313ERDB_33_config \
- MPC8313ERDB_66_config \
- MPC8313ERDB_NAND_33_config \
- MPC8313ERDB_NAND_66_config: unconfig
-       @mkdir -p $(obj)include
-       @mkdir -p $(obj)board/freescale/mpc8313erdb
-       @if [ "$(findstring _33_,$@)" ] ; then \
-               $(XECHO) -n "...33M ..." ; \
-               echo "#define CONFIG_SYS_33MHZ" >>$(obj)include/config.h ; \
-       fi ; \
-       if [ "$(findstring _66_,$@)" ] ; then \
-               $(XECHO) -n "...66M..." ; \
-               echo "#define CONFIG_SYS_66MHZ" >>$(obj)include/config.h ; \
-       fi ; \
-       if [ "$(findstring _NAND_,$@)" ] ; then \
-               $(XECHO) -n "...NAND..." ; \
-               echo "TEXT_BASE = 0x00100000" > $(obj)board/freescale/mpc8313erdb/config.tmp ; \
-               echo "#define CONFIG_NAND_U_BOOT" >>$(obj)include/config.h ; \
-       fi ;
-       @$(MKCONFIG) -a MPC8313ERDB ppc mpc83xx mpc8313erdb freescale
-       @if [ "$(findstring _NAND_,$@)" ] ; then \
-               echo "CONFIG_NAND_U_BOOT = y" >> $(obj)include/config.mk ; \
-       fi ;
- MPC8315ERDB_config: unconfig
-       @$(MKCONFIG) -a MPC8315ERDB ppc mpc83xx mpc8315erdb freescale
- MPC8323ERDB_config:   unconfig
-       @$(MKCONFIG) -a MPC8323ERDB ppc mpc83xx mpc8323erdb freescale
- MPC832XEMDS_config \
- MPC832XEMDS_HOST_33_config \
- MPC832XEMDS_HOST_66_config \
- MPC832XEMDS_SLAVE_config \
- MPC832XEMDS_ATM_config:       unconfig
-       @mkdir -p $(obj)include
-       @if [ "$(findstring _HOST_,$@)" ] ; then \
-               $(XECHO) -n "... PCI HOST " ; \
-               echo "#define CONFIG_PCI" >>$(obj)include/config.h ; \
-       fi ; \
-       if [ "$(findstring _SLAVE_,$@)" ] ; then \
-               $(XECHO) "...PCI SLAVE 66M"  ; \
-               echo "#define CONFIG_PCI" >>$(obj)include/config.h ; \
-               echo "#define CONFIG_PCISLAVE" >>$(obj)include/config.h ; \
-       fi ; \
-       if [ "$(findstring _33_,$@)" ] ; then \
-               $(XECHO) -n "...33M ..." ; \
-               echo "#define PCI_33M" >>$(obj)include/config.h ; \
-               echo "#define CONFIG_PQ_MDS_PIB 1" >>$(obj)include/config.h ; \
-       fi ; \
-       if [ "$(findstring _66_,$@)" ] ; then \
-               $(XECHO) -n "...66M..." ; \
-               echo "#define PCI_66M" >>$(obj)include/config.h ; \
-               echo "#define CONFIG_PQ_MDS_PIB 1" >>$(obj)include/config.h ; \
-       fi ; \
-       if [ "$(findstring _ATM_,$@)" ] ; then \
-               $(XECHO) -n "...ATM..." ; \
-               echo "#define CONFIG_PQ_MDS_PIB 1" >>$(obj)include/config.h ; \
-               echo "#define CONFIG_PQ_MDS_PIB_ATM     1" >>$(obj)include/config.h ; \
-       fi ;
-       @$(MKCONFIG) -a MPC832XEMDS ppc mpc83xx mpc832xemds freescale
- MPC8349EMDS_config:   unconfig
-       @$(MKCONFIG) $(@:_config=) ppc mpc83xx mpc8349emds freescale
- MPC8349ITX_config \
- MPC8349ITX_LOWBOOT_config \
- MPC8349ITXGP_config:  unconfig
-       @mkdir -p $(obj)include
-       @mkdir -p $(obj)board/freescale/mpc8349itx
-       @echo "#define CONFIG_$(subst _LOWBOOT,,$(@:_config=))" >> $(obj)include/config.h
-       @if [ "$(findstring GP,$@)" ] ; then \
-               echo "TEXT_BASE = 0xFE000000" >$(obj)board/freescale/mpc8349itx/config.tmp ; \
-       fi
-       @if [ "$(findstring LOWBOOT,$@)" ] ; then \
-               echo "TEXT_BASE = 0xFE000000" >$(obj)board/freescale/mpc8349itx/config.tmp ; \
-       fi
-       @$(MKCONFIG) -a -n $(@:_config=) MPC8349ITX ppc mpc83xx mpc8349itx freescale
- MPC8360EMDS_config \
- MPC8360EMDS_HOST_33_config \
- MPC8360EMDS_HOST_66_config \
- MPC8360EMDS_SLAVE_config \
- MPC8360EMDS_ATM_config: unconfig
-       @mkdir -p $(obj)include
-       @if [ "$(findstring _HOST_,$@)" ] ; then \
-               $(XECHO) -n "... PCI HOST " ; \
-               echo "#define CONFIG_PCI" >>$(obj)include/config.h ; \
-       fi ; \
-       if [ "$(findstring _SLAVE_,$@)" ] ; then \
-               $(XECHO) "...PCI SLAVE 66M"  ; \
-               echo "#define CONFIG_PCI" >>$(obj)include/config.h ; \
-               echo "#define CONFIG_PCISLAVE" >>$(obj)include/config.h ; \
-       fi ; \
-       if [ "$(findstring _33_,$@)" ] ; then \
-               $(XECHO) -n "...33M ..." ; \
-               echo "#define PCI_33M" >>$(obj)include/config.h ; \
-               echo "#define CONFIG_PQ_MDS_PIB 1" >>$(obj)include/config.h ; \
-       fi ; \
-       if [ "$(findstring _66_,$@)" ] ; then \
-               $(XECHO) -n "...66M..." ; \
-               echo "#define PCI_66M" >>$(obj)include/config.h ; \
-               echo "#define CONFIG_PQ_MDS_PIB 1" >>$(obj)include/config.h ; \
-       fi ; \
-       if [ "$(findstring _ATM_,$@)" ] ; then \
-               $(XECHO) -n "...ATM..." ; \
-               echo "#define CONFIG_PQ_MDS_PIB 1" >>$(obj)include/config.h ; \
-               echo "#define CONFIG_PQ_MDS_PIB_ATM     1" >>$(obj)include/config.h ; \
-       fi ;
-       @$(MKCONFIG) -a MPC8360EMDS ppc mpc83xx mpc8360emds freescale
- MPC8360ERDK_33_config \
- MPC8360ERDK_66_config \
- MPC8360ERDK_config:   unconfig
-       @mkdir -p $(obj)include
-       @if [ "$(findstring _33_,$@)" ] ; then \
-               $(XECHO) -n "... CLKIN 33MHz " ; \
-               echo "#define CONFIG_CLKIN_33MHZ" >>$(obj)include/config.h ;\
-       fi ;
-       @$(MKCONFIG) -a MPC8360ERDK ppc mpc83xx mpc8360erdk freescale
- MPC837XEMDS_config \
- MPC837XEMDS_HOST_config:      unconfig
-       @mkdir -p $(obj)include
-       @if [ "$(findstring _HOST_,$@)" ] ; then \
-               $(XECHO) -n "... PCI HOST " ; \
-               echo "#define CONFIG_PCI" >>$(obj)include/config.h ; \
-       fi ;
-       @$(MKCONFIG) -a MPC837XEMDS ppc mpc83xx mpc837xemds freescale
- MPC837XERDB_config:   unconfig
-       @$(MKCONFIG) -a MPC837XERDB ppc mpc83xx mpc837xerdb freescale
- MVBLM7_config: unconfig
-       @$(MKCONFIG) $(@:_config=) ppc mpc83xx mvblm7 matrix_vision
- sbc8349_config \
- sbc8349_PCI_33_config \
- sbc8349_PCI_66_config: unconfig
-       @mkdir -p $(obj)include
-       @if [ "$(findstring _PCI_,$@)" ] ; then \
-               $(XECHO) -n "... PCI HOST at " ; \
-               echo "#define CONFIG_PCI" >>$(obj)include/config.h ; \
-       fi ; \
-       if [ "$(findstring _33_,$@)" ] ; then \
-               $(XECHO) -n "33MHz... " ; \
-               echo "#define PCI_33M" >>$(obj)include/config.h ; \
-       fi ; \
-       if [ "$(findstring _66_,$@)" ] ; then \
-               $(XECHO) -n "66MHz... " ; \
-               echo "#define PCI_66M" >>$(obj)include/config.h ; \
-       fi ;
-       @$(MKCONFIG) -a sbc8349 ppc mpc83xx sbc8349
- SIMPC8313_LP_config \
- SIMPC8313_SP_config: unconfig
-       @mkdir -p $(obj)include
-       @mkdir -p $(obj)board/sheldon/simpc8313
-       @if [ "$(findstring _LP_,$@)" ] ; then \
-               $(XECHO) -n "...Large Page NAND..." ; \
-               echo "#define CONFIG_NAND_LP" >> $(obj)include/config.h ; \
-       fi ; \
-       if [ "$(findstring _SP_,$@)" ] ; then \
-               $(XECHO) -n "...Small Page NAND..." ; \
-               echo "#define CONFIG_NAND_SP" >> $(obj)include/config.h ; \
-       fi ;
-       @$(MKCONFIG) -a SIMPC8313 ppc mpc83xx simpc8313 sheldon
-       @echo "CONFIG_NAND_U_BOOT = y" >> $(obj)include/config.mk
- TQM834x_config:       unconfig
-       @$(MKCONFIG) $(@:_config=) ppc mpc83xx tqm834x tqc
- vme8349_config:               unconfig
-       @$(MKCONFIG) $(@:_config=) ppc mpc83xx vme8349 esd
- #########################################################################
- ## MPC85xx Systems
- #########################################################################
- ATUM8548_config:      unconfig
-       @$(MKCONFIG) $(@:_config=) ppc mpc85xx atum8548
- MPC8536DS_config:       unconfig
-       @$(MKCONFIG) $(@:_config=) ppc mpc85xx mpc8536ds freescale
- MPC8540ADS_config:    unconfig
-       @$(MKCONFIG) $(@:_config=) ppc mpc85xx mpc8540ads freescale
- MPC8540EVAL_config \
- MPC8540EVAL_33_config \
- MPC8540EVAL_66_config \
- MPC8540EVAL_33_slave_config \
- MPC8540EVAL_66_slave_config:    unconfig
-       @mkdir -p $(obj)include
-       @if [ "$(findstring _33_,$@)" ] ; then \
-               $(XECHO) "... 33 MHz PCI" ; \
-       else \
-               echo "#define CONFIG_SYSCLK_66M" >>$(obj)include/config.h ; \
-               $(XECHO) "... 66 MHz PCI" ; \
-       fi ; \
-       if [ "$(findstring _slave_,$@)" ] ; then \
-               echo "#define CONFIG_PCI_SLAVE" >>$(obj)include/config.h ; \
-               $(XECHO) " slave" ; \
-       else \
-               $(XECHO) " host" ; \
-       fi
-       @$(MKCONFIG) -a MPC8540EVAL ppc mpc85xx mpc8540eval
- MPC8560ADS_config:    unconfig
-       @$(MKCONFIG) $(@:_config=) ppc mpc85xx mpc8560ads freescale
- MPC8541CDS_legacy_config \
- MPC8541CDS_config:    unconfig
-       @mkdir -p $(obj)include
-       @if [ "$(findstring _legacy_,$@)" ] ; then \
-               echo "#define CONFIG_LEGACY" >>$(obj)include/config.h ; \
-               $(XECHO) "... legacy" ; \
-       fi
-       @$(MKCONFIG) -a MPC8541CDS ppc mpc85xx mpc8541cds freescale
- MPC8544DS_config:     unconfig
-       @$(MKCONFIG) $(@:_config=) ppc mpc85xx mpc8544ds freescale
- MPC8548CDS_legacy_config \
- MPC8548CDS_config:    unconfig
-       @mkdir -p $(obj)include
-       @if [ "$(findstring _legacy_,$@)" ] ; then \
-               echo "#define CONFIG_LEGACY" >>$(obj)include/config.h ; \
-               $(XECHO) "... legacy" ; \
-       fi
-       @$(MKCONFIG) -a MPC8548CDS ppc mpc85xx mpc8548cds freescale
- MPC8555CDS_legacy_config \
- MPC8555CDS_config:    unconfig
-       @mkdir -p $(obj)include
-       @if [ "$(findstring _legacy_,$@)" ] ; then \
-               echo "#define CONFIG_LEGACY" >>$(obj)include/config.h ; \
-               $(XECHO) "... legacy" ; \
-       fi
-       @$(MKCONFIG) -a MPC8555CDS ppc mpc85xx mpc8555cds freescale
- MPC8568MDS_config:    unconfig
-       @$(MKCONFIG) $(@:_config=) ppc mpc85xx mpc8568mds freescale
- MPC8569MDS_config:    unconfig
-       @$(MKCONFIG) $(@:_config=) ppc mpc85xx mpc8569mds freescale
- MPC8572DS_36BIT_config \
- MPC8572DS_config:       unconfig
-       @mkdir -p $(obj)include
-       @if [ "$(findstring _36BIT_,$@)" ] ; then \
-               echo "#define CONFIG_PHYS_64BIT" >>$(obj)include/config.h ; \
-               $(XECHO) "... enabling 36-bit physical addressing." ; \
-       fi
-       @$(MKCONFIG) -a MPC8572DS ppc mpc85xx mpc8572ds freescale
- P2020DS_36BIT_config \
- P2020DS_config:               unconfig
-       @mkdir -p $(obj)include
-       @if [ "$(findstring _36BIT_,$@)" ] ; then \
-               echo "#define CONFIG_PHYS_64BIT" >>$(obj)include/config.h ; \
-               $(XECHO) "... enabling 36-bit physical addressing." ; \
-       fi
-       @$(MKCONFIG) -a P2020DS ppc mpc85xx p2020ds freescale
- PM854_config: unconfig
-       @$(MKCONFIG) $(@:_config=) ppc mpc85xx pm854
- PM856_config: unconfig
-       @$(MKCONFIG) $(@:_config=) ppc mpc85xx pm856
- sbc8540_config \
- sbc8540_33_config \
- sbc8540_66_config:    unconfig
-       @mkdir -p $(obj)include
-       @if [ "$(findstring _66_,$@)" ] ; then \
-               echo "#define CONFIG_PCI_66"    >>$(obj)include/config.h ; \
-               $(XECHO) "... 66 MHz PCI" ; \
-       else \
-               $(XECHO) "... 33 MHz PCI" ; \
-       fi
-       @$(MKCONFIG) -a SBC8540 ppc mpc85xx sbc8560
- sbc8548_config:               unconfig
-       @$(MKCONFIG) $(@:_config=) ppc mpc85xx sbc8548
- sbc8560_config \
- sbc8560_33_config \
- sbc8560_66_config:    unconfig
-       @mkdir -p $(obj)include
-       @if [ "$(findstring _66_,$@)" ] ; then \
-               echo "#define CONFIG_PCI_66"    >>$(obj)include/config.h ; \
-               $(XECHO) "... 66 MHz PCI" ; \
-       else \
-               $(XECHO) "... 33 MHz PCI" ; \
-       fi
-       @$(MKCONFIG) -a sbc8560 ppc mpc85xx sbc8560
- socrates_config:      unconfig
-       @$(MKCONFIG) $(@:_config=) ppc mpc85xx socrates
- stxgp3_config:                unconfig
-       @$(MKCONFIG) $(@:_config=) ppc mpc85xx stxgp3
- stxssa_config         \
- stxssa_4M_config:     unconfig
-       @mkdir -p $(obj)include
-       @if [ "$(findstring _4M_,$@)" ] ; then \
-               echo "#define CONFIG_STXSSA_4M" >>$(obj)include/config.h ; \
-               $(XECHO) "... with 4 MiB flash memory" ; \
-       fi
-       @$(MKCONFIG) -a stxssa ppc mpc85xx stxssa
- TQM8540_config                \
- TQM8541_config                \
- TQM8548_config                \
- TQM8548_AG_config     \
- TQM8548_BE_config     \
- TQM8555_config                \
- TQM8560_config:               unconfig
-       @mkdir -p $(obj)include
-       @BTYPE=$(@:_config=); \
-       CTYPE=$(subst TQM,,$(subst _AG,,$(subst _BE,,$(@:_config=)))); \
-       $(XECHO) "... "$${BTYPE}" (MPC"$${CTYPE}")"; \
-       echo "#define CONFIG_MPC$${CTYPE}">>$(obj)include/config.h; \
-       echo "#define CONFIG_$${BTYPE}">>$(obj)include/config.h; \
-       echo "#define CONFIG_HOSTNAME tqm$${CTYPE}">>$(obj)include/config.h; \
-       echo "#define CONFIG_BOARDNAME \"$${BTYPE}\"">>$(obj)include/config.h;
-       @$(MKCONFIG) -a TQM85xx ppc mpc85xx tqm85xx tqc
-       @echo "CONFIG_$(@:_config=) = y">>$(obj)include/config.mk;
- XPEDITE5200_config:   unconfig
-       @$(MKCONFIG) $(@:_config=) ppc mpc85xx xpedite5200 xes
- XPEDITE5370_config:   unconfig
-       @$(MKCONFIG) $(@:_config=) ppc mpc85xx xpedite5370 xes
- #########################################################################
- ## MPC86xx Systems
- #########################################################################
- MPC8610HPCD_config:   unconfig
-       @$(MKCONFIG) $(@:_config=) ppc mpc86xx mpc8610hpcd freescale
- MPC8641HPCN_36BIT_config \
- MPC8641HPCN_config:    unconfig
-       @mkdir -p $(obj)include
-       @if [ "$(findstring _36BIT_,$@)" ] ; then \
-               echo "#define CONFIG_PHYS_64BIT" >>$(obj)include/config.h ; \
-               $(XECHO) "... enabling 36-bit physical addressing." ; \
-       fi
-       @$(MKCONFIG) -a MPC8641HPCN ppc mpc86xx mpc8641hpcn freescale
- sbc8641d_config:      unconfig
-       @$(MKCONFIG) $(@:_config=) ppc mpc86xx sbc8641d
- XPEDITE5170_config:   unconfig
-       @$(MKCONFIG) $(@:_config=) ppc mpc86xx xpedite5170 xes
- #########################################################################
- ## 74xx/7xx Systems
- #########################################################################
- AmigaOneG3SE_config:  unconfig
-       @$(MKCONFIG) $(@:_config=) ppc 74xx_7xx AmigaOneG3SE MAI
- BAB7xx_config: unconfig
-       @$(MKCONFIG) $(@:_config=) ppc 74xx_7xx bab7xx eltec
- CPCI750_config:       unconfig
-       @$(MKCONFIG) CPCI750 ppc 74xx_7xx cpci750 esd
- DB64360_config:       unconfig
-       @$(MKCONFIG) DB64360 ppc 74xx_7xx db64360 Marvell
- DB64460_config:       unconfig
-       @$(MKCONFIG) DB64460 ppc 74xx_7xx db64460 Marvell
- ELPPC_config: unconfig
-       @$(MKCONFIG) $(@:_config=) ppc 74xx_7xx elppc eltec
- EVB64260_config       \
- EVB64260_750CX_config:        unconfig
-       @$(MKCONFIG) EVB64260 ppc 74xx_7xx evb64260
- mpc7448hpc2_config:  unconfig
-       @$(MKCONFIG) $(@:_config=) ppc 74xx_7xx mpc7448hpc2 freescale
- P3G4_config: unconfig
-       @$(MKCONFIG) $(@:_config=) ppc 74xx_7xx evb64260
- p3m750_config \
- p3m7448_config:               unconfig
-       @mkdir -p $(obj)include
-       @if [ "$(findstring 750_,$@)" ] ; then \
-               echo "#define CONFIG_P3M750" >>$(obj)include/config.h ; \
-       else \
-               echo "#define CONFIG_P3M7448" >>$(obj)include/config.h ; \
-       fi
-       @$(MKCONFIG) -a p3mx ppc 74xx_7xx p3mx prodrive
- PCIPPC2_config \
- PCIPPC6_config: unconfig
-       @$(MKCONFIG) $(@:_config=) ppc 74xx_7xx pcippc2
- ppmc7xx_config: unconfig
-       @$(MKCONFIG) $(@:_config=) ppc 74xx_7xx ppmc7xx
- ZUMA_config:  unconfig
-       @$(MKCONFIG) $(@:_config=) ppc 74xx_7xx evb64260
- #========================================================================
- # ARM
- #========================================================================
- #########################################################################
- ## StrongARM Systems
- #########################################################################
- assabet_config        :       unconfig
-       @$(MKCONFIG) $(@:_config=) arm sa1100 assabet
- dnp1110_config        :       unconfig
-       @$(MKCONFIG) $(@:_config=) arm sa1100 dnp1110
- gcplus_config :       unconfig
-       @$(MKCONFIG) $(@:_config=) arm sa1100 gcplus
- lart_config   :       unconfig
-       @$(MKCONFIG) $(@:_config=) arm sa1100 lart
- shannon_config        :       unconfig
-       @$(MKCONFIG) $(@:_config=) arm sa1100 shannon
- #########################################################################
- ## ARM92xT Systems
- #########################################################################
- #########################################################################
- ## Atmel AT91RM9200 Systems
- #########################################################################
- at91rm9200dk_config   :       unconfig
-       @$(MKCONFIG) $(@:_config=) arm arm920t at91rm9200dk atmel at91rm9200
- at91rm9200ek_config   :       unconfig
-       @$(MKCONFIG) $(@:_config=) arm arm920t at91rm9200ek atmel at91rm9200
- cmc_pu2_config        :       unconfig
-       @$(MKCONFIG) $(@:_config=) arm arm920t cmc_pu2 NULL at91rm9200
- csb637_config :       unconfig
-       @$(MKCONFIG) $(@:_config=) arm arm920t csb637 NULL at91rm9200
- kb9202_config :       unconfig
-       @$(MKCONFIG) $(@:_config=) arm arm920t kb9202 NULL at91rm9200
- m501sk_config :       unconfig
-       @$(MKCONFIG) $(@:_config=) arm arm920t m501sk NULL at91rm9200
- mp2usb_config :       unconfig
-       @$(MKCONFIG) $(@:_config=) arm arm920t mp2usb NULL at91rm9200
- #########################################################################
- ## Atmel ARM926EJ-S Systems
- #########################################################################
- afeb9260_config:      unconfig
-       @$(MKCONFIG) $(@:_config=) arm arm926ejs afeb9260 NULL at91
- at91cap9adk_config    :       unconfig
-       @$(MKCONFIG) $(@:_config=) arm arm926ejs at91cap9adk atmel at91
- at91sam9260ek_nandflash_config \
- at91sam9260ek_dataflash_cs0_config \
- at91sam9260ek_dataflash_cs1_config \
- at91sam9260ek_config \
- at91sam9g20ek_nandflash_config \
- at91sam9g20ek_dataflash_cs0_config \
- at91sam9g20ek_dataflash_cs1_config \
- at91sam9g20ek_config  :       unconfig
-       @mkdir -p $(obj)include
-       @if [ "$(findstring 9g20,$@)" ] ; then \
-               echo "#define CONFIG_AT91SAM9G20EK 1"   >>$(obj)include/config.h ; \
-               $(XECHO) "... 9G20 Variant" ; \
-       else \
-               echo "#define CONFIG_AT91SAM9260EK 1"   >>$(obj)include/config.h ; \
-       fi;
-       @if [ "$(findstring _nandflash,$@)" ] ; then \
-               echo "#define CONFIG_SYS_USE_NANDFLASH 1"       >>$(obj)include/config.h ; \
-               $(XECHO) "... with environment variable in NAND FLASH" ; \
-       elif [ "$(findstring dataflash_cs0,$@)" ] ; then \
-               echo "#define CONFIG_SYS_USE_DATAFLASH_CS0 1"   >>$(obj)include/config.h ; \
-               $(XECHO) "... with environment variable in SPI DATAFLASH CS0" ; \
-       else \
-               echo "#define CONFIG_SYS_USE_DATAFLASH_CS1 1"   >>$(obj)include/config.h ; \
-               $(XECHO) "... with environment variable in SPI DATAFLASH CS1" ; \
-       fi;
-       @$(MKCONFIG) -a at91sam9260ek arm arm926ejs at91sam9260ek atmel at91
- at91sam9xeek_nandflash_config \
- at91sam9xeek_dataflash_cs0_config \
- at91sam9xeek_dataflash_cs1_config \
- at91sam9xeek_config   :       unconfig
-       @mkdir -p $(obj)include
-       @if [ "$(findstring _nandflash,$@)" ] ; then \
-               echo "#define CONFIG_SYS_USE_NANDFLASH 1"       >>$(obj)include/config.h ; \
-               $(XECHO) "... with environment variable in NAND FLASH" ; \
-       elif [ "$(findstring dataflash_cs0,$@)" ] ; then \
-               echo "#define CONFIG_SYS_USE_DATAFLASH_CS0 1"   >>$(obj)include/config.h ; \
-               $(XECHO) "... with environment variable in SPI DATAFLASH CS0" ; \
-       else \
-               echo "#define CONFIG_SYS_USE_DATAFLASH_CS1 1"   >>$(obj)include/config.h ; \
-               $(XECHO) "... with environment variable in SPI DATAFLASH CS1" ; \
-       fi;
-       @$(MKCONFIG) -n at91sam9xeek -a at91sam9260ek arm arm926ejs at91sam9260ek atmel at91
- at91sam9261ek_nandflash_config \
- at91sam9261ek_dataflash_cs0_config \
- at91sam9261ek_dataflash_cs3_config \
- at91sam9261ek_config \
- at91sam9g10ek_nandflash_config \
- at91sam9g10ek_dataflash_cs0_config \
- at91sam9g10ek_dataflash_cs3_config \
- at91sam9g10ek_config  :       unconfig
-       @mkdir -p $(obj)include
-       @if [ "$(findstring 9g10,$@)" ] ; then \
-               echo "#define CONFIG_AT91SAM9G10EK 1"   >>$(obj)include/config.h ; \
-               $(XECHO) "... 9G10 Variant" ; \
-       else \
-               echo "#define CONFIG_AT91SAM9261EK 1"   >>$(obj)include/config.h ; \
-       fi;
-       @if [ "$(findstring _nandflash,$@)" ] ; then \
-               echo "#define CONFIG_SYS_USE_NANDFLASH 1"       >>$(obj)include/config.h ; \
-               $(XECHO) "... with environment variable in NAND FLASH" ; \
-       elif [ "$(findstring dataflash_cs0,$@)" ] ; then \
-               echo "#define CONFIG_SYS_USE_DATAFLASH_CS3 1"   >>$(obj)include/config.h ; \
-               $(XECHO) "... with environment variable in SPI DATAFLASH CS3" ; \
-       else \
-               echo "#define CONFIG_SYS_USE_DATAFLASH_CS0 1"   >>$(obj)include/config.h ; \
-               $(XECHO) "... with environment variable in SPI DATAFLASH CS0" ; \
-       fi;
-       @$(MKCONFIG) -a at91sam9261ek arm arm926ejs at91sam9261ek atmel at91
- at91sam9263ek_norflash_config \
- at91sam9263ek_norflash_boot_config \
- at91sam9263ek_nandflash_config \
- at91sam9263ek_dataflash_config \
- at91sam9263ek_dataflash_cs0_config \
- at91sam9263ek_config  :       unconfig
-       @mkdir -p $(obj)include
-       @if [ "$(findstring _nandflash,$@)" ] ; then \
-               echo "#define CONFIG_SYS_USE_NANDFLASH 1"       >>$(obj)include/config.h ; \
-               $(XECHO) "... with environment variable in NAND FLASH" ; \
-       elif [ "$(findstring norflash,$@)" ] ; then \
-               echo "#define CONFIG_SYS_USE_NORFLASH 1"        >>$(obj)include/config.h ; \
-               $(XECHO) "... with environment variable in NOR FLASH" ; \
-       else \
-               echo "#define CONFIG_SYS_USE_DATAFLASH 1"       >>$(obj)include/config.h ; \
-               $(XECHO) "... with environment variable in SPI DATAFLASH CS0" ; \
-       fi;
-       @if [ "$(findstring norflash_boot,$@)" ] ; then \
-               echo "#define CONFIG_SYS_USE_BOOT_NORFLASH 1"   >>$(obj)include/config.h ; \
-               $(XECHO) "... and boot from NOR FLASH" ; \
-       fi;
-       @$(MKCONFIG) -a at91sam9263ek arm arm926ejs at91sam9263ek atmel at91
- at91sam9rlek_nandflash_config \
- at91sam9rlek_dataflash_config \
- at91sam9rlek_dataflash_cs0_config \
- at91sam9rlek_config   :       unconfig
-       @mkdir -p $(obj)include
-       @if [ "$(findstring _nandflash,$@)" ] ; then \
-               echo "#define CONFIG_SYS_USE_NANDFLASH 1"       >>$(obj)include/config.h ; \
-               $(XECHO) "... with environment variable in NAND FLASH" ; \
-       else \
-               echo "#define CONFIG_SYS_USE_DATAFLASH 1"       >>$(obj)include/config.h ; \
-               $(XECHO) "... with environment variable in SPI DATAFLASH CS0" ; \
-       fi;
-       @$(MKCONFIG) -a at91sam9rlek arm arm926ejs at91sam9rlek atmel at91
- meesc_config  :       unconfig
-       @$(MKCONFIG) $(@:_config=) arm arm926ejs meesc esd at91
- pm9261_config :       unconfig
-       @$(MKCONFIG) $(@:_config=) arm arm926ejs pm9261 ronetix at91
- at91sam9m10g45ek_nandflash_config \
- at91sam9m10g45ek_dataflash_config \
- at91sam9m10g45ek_dataflash_cs0_config \
- at91sam9m10g45ek_config \
- at91sam9g45ekes_nandflash_config \
- at91sam9g45ekes_dataflash_config \
- at91sam9g45ekes_dataflash_cs0_config \
- at91sam9g45ekes_config        :       unconfig
-       @mkdir -p $(obj)include
-               @if [ "$(findstring 9m10,$@)" ] ; then \
-               echo "#define CONFIG_AT91SAM9M10G45EK 1"        >>$(obj)include/config.h ; \
-               $(XECHO) "... 9M10G45 Variant" ; \
-       else \
-               echo "#define CONFIG_AT91SAM9G45EKES 1" >>$(obj)include/config.h ; \
-       fi;
-       @if [ "$(findstring _nandflash,$@)" ] ; then \
-               echo "#define CONFIG_SYS_USE_NANDFLASH 1"       >>$(obj)include/config.h ; \
-               $(XECHO) "... with environment variable in NAND FLASH" ; \
-       else \
-               echo "#define CONFIG_ATMEL_SPI 1"       >>$(obj)include/config.h ; \
-               $(XECHO) "... with environment variable in SPI DATAFLASH CS0" ; \
-       fi;
-       @$(MKCONFIG) -a at91sam9m10g45ek arm arm926ejs at91sam9m10g45ek atmel at91
- pm9263_config :       unconfig
-       @$(MKCONFIG) $(@:_config=) arm arm926ejs pm9263 ronetix at91
- ########################################################################
- ## ARM Integrator boards - see doc/README-integrator for more info.
- integratorap_config   \
- ap_config             \
- ap966_config          \
- ap922_config          \
- ap922_XA10_config     \
- ap7_config            \
- ap720t_config         \
- ap920t_config         \
- ap926ejs_config               \
- ap946es_config: unconfig
-       @board/armltd/integrator/split_by_variant.sh ap $@
- integratorcp_config   \
- cp_config             \
- cp920t_config         \
- cp926ejs_config               \
- cp946es_config                \
- cp1136_config         \
- cp966_config          \
- cp922_config          \
- cp922_XA10_config     \
- cp1026_config: unconfig
-       @board/armltd/integrator/split_by_variant.sh cp $@
- davinci_dvevm_config :        unconfig
-       @$(MKCONFIG) $(@:_config=) arm arm926ejs dvevm davinci davinci
- davinci_schmoogie_config :    unconfig
-       @$(MKCONFIG) $(@:_config=) arm arm926ejs schmoogie davinci davinci
- davinci_sffsdr_config :       unconfig
-       @$(MKCONFIG) $(@:_config=) arm arm926ejs sffsdr davinci davinci
- davinci_sonata_config :       unconfig
-       @$(MKCONFIG) $(@:_config=) arm arm926ejs sonata davinci davinci
- davinci_dm355evm_config :     unconfig
-       @$(MKCONFIG) $(@:_config=) arm arm926ejs dm355evm davinci davinci
- lpd7a400_config \
- lpd7a404_config:      unconfig
-       @$(MKCONFIG) $(@:_config=) arm lh7a40x lpd7a40x
- mv88f6281gtw_ge_config: unconfig
-       @$(MKCONFIG) $(@:_config=) arm arm926ejs $(@:_config=) Marvell kirkwood
- mx1ads_config :       unconfig
-       @$(MKCONFIG) $(@:_config=) arm arm920t mx1ads NULL imx
- mx1fs2_config :       unconfig
-       @$(MKCONFIG) $(@:_config=) arm arm920t mx1fs2 NULL imx
- netstar_config:               unconfig
-       @$(MKCONFIG) $(@:_config=) arm arm925t netstar
- nhk8815_config \
- nhk8815_onenand_config:       unconfig
-       @mkdir -p $(obj)include
-       @ > $(obj)include/config.h
-       @if [ "$(findstring _onenand, $@)" ] ; then \
-               echo "#define CONFIG_BOOT_ONENAND" >> $(obj)include/config.h; \
-               $(XECHO) "... configured to boot from OneNand Flash"; \
-       else \
-               $(XECHO) "... configured to boot from Nand Flash"; \
-       fi
-       @$(MKCONFIG) -a nhk8815 arm arm926ejs nhk8815 st nomadik
- omap1510inn_config :  unconfig
-       @$(MKCONFIG) $(@:_config=) arm arm925t omap1510inn
- xtract_omap1610xxx = $(subst _cs0boot,,$(subst _cs3boot,,$(subst _cs_autoboot,,$(subst _config,,$1))))
- omap1610inn_config \
- omap1610inn_cs0boot_config \
- omap1610inn_cs3boot_config \
- omap1610inn_cs_autoboot_config \
- omap1610h2_config \
- omap1610h2_cs0boot_config \
- omap1610h2_cs3boot_config \
- omap1610h2_cs_autoboot_config:        unconfig
-       @mkdir -p $(obj)include
-       @if [ "$(findstring _cs0boot_, $@)" ] ; then \
-               echo "#define CONFIG_CS0_BOOT" >> .$(obj)include/config.h ; \
-               $(XECHO) "... configured for CS0 boot"; \
-       elif [ "$(findstring _cs_autoboot_, $@)" ] ; then \
-               echo "#define CONFIG_CS_AUTOBOOT" >> $(obj)include/config.h ; \
-               $(XECHO) "... configured for CS_AUTO boot"; \
-       else \
-               echo "#define CONFIG_CS3_BOOT" >> $(obj)include/config.h ; \
-               $(XECHO) "... configured for CS3 boot"; \
-       fi;
-       @$(MKCONFIG) -a $(call xtract_omap1610xxx,$@) arm arm926ejs omap1610inn NULL omap
- omap5912osk_config :  unconfig
-       @$(MKCONFIG) $(@:_config=) arm arm926ejs omap5912osk NULL omap
- xtract_omap730p2 = $(subst _cs0boot,,$(subst _cs3boot,, $(subst _config,,$1)))
- omap730p2_config \
- omap730p2_cs0boot_config \
- omap730p2_cs3boot_config :    unconfig
-       @mkdir -p $(obj)include
-       @if [ "$(findstring _cs0boot_, $@)" ] ; then \
-               echo "#define CONFIG_CS0_BOOT" >> $(obj)include/config.h ; \
-               $(XECHO) "... configured for CS0 boot"; \
-       else \
-               echo "#define CONFIG_CS3_BOOT" >> $(obj)include/config.h ; \
-               $(XECHO) "... configured for CS3 boot"; \
-       fi;
-       @$(MKCONFIG) -a $(call xtract_omap730p2,$@) arm arm926ejs omap730p2 NULL omap
- rd6281a_config: unconfig
-       @$(MKCONFIG) $(@:_config=) arm arm926ejs $(@:_config=) Marvell kirkwood
- sbc2410x_config: unconfig
-       @$(MKCONFIG) $(@:_config=) arm arm920t sbc2410x NULL s3c24x0
- scb9328_config        :       unconfig
-       @$(MKCONFIG) $(@:_config=) arm arm920t scb9328 NULL imx
- sheevaplug_config: unconfig
-       @$(MKCONFIG) $(@:_config=) arm arm926ejs $(@:_config=) Marvell kirkwood
- smdk2400_config       :       unconfig
-       @$(MKCONFIG) $(@:_config=) arm arm920t smdk2400 samsung s3c24x0
- smdk2410_config       :       unconfig
-       @$(MKCONFIG) $(@:_config=) arm arm920t smdk2410 samsung s3c24x0
- SX1_stdout_serial_config \
- SX1_config:           unconfig
-       @mkdir -p $(obj)include
-       @if [ "$(findstring _stdout_serial_, $@)" ] ; then \
-               echo "#undef CONFIG_STDOUT_USBTTY" >> $(obj)include/config.h ; \
-               $(XECHO) "... configured for stdout serial"; \
-       else \
-               echo "#define CONFIG_STDOUT_USBTTY" >> $(obj)include/config.h ; \
-               $(XECHO) "... configured for stdout usbtty"; \
-       fi;
-       @$(MKCONFIG) SX1 arm arm925t sx1
- # TRAB default configuration: 8 MB Flash, 32 MB RAM
- xtract_trab = $(subst _bigram,,$(subst _bigflash,,$(subst _old,,$(subst _config,,$1))))
- trab_config \
- trab_bigram_config \
- trab_bigflash_config \
- trab_old_config:      unconfig
-       @mkdir -p $(obj)include
-       @mkdir -p $(obj)board/trab
-       @[ -z "$(findstring _bigram,$@)" ] || \
-               { echo "#define CONFIG_FLASH_8MB"  >>$(obj)include/config.h ; \
-                 echo "#define CONFIG_RAM_32MB"   >>$(obj)include/config.h ; \
-                 $(XECHO) "... with 8 MB Flash, 32 MB RAM" ; \
-               }
-       @[ -z "$(findstring _bigflash,$@)" ] || \
-               { echo "#define CONFIG_FLASH_16MB" >>$(obj)include/config.h ; \
-                 echo "#define CONFIG_RAM_16MB"   >>$(obj)include/config.h ; \
-                 $(XECHO) "... with 16 MB Flash, 16 MB RAM" ; \
-                 echo "TEXT_BASE = 0x0CF40000" >$(obj)board/trab/config.tmp ; \
-               }
-       @[ -z "$(findstring _old,$@)" ] || \
-               { echo "#define CONFIG_FLASH_8MB"  >>$(obj)include/config.h ; \
-                 echo "#define CONFIG_RAM_16MB"   >>$(obj)include/config.h ; \
-                 $(XECHO) "... with 8 MB Flash, 16 MB RAM" ; \
-                 echo "TEXT_BASE = 0x0CF40000" >$(obj)board/trab/config.tmp ; \
-               }
-       @$(MKCONFIG) -a $(call xtract_trab,$@) arm arm920t trab NULL s3c24x0
- VCMA9_config  :       unconfig
-       @$(MKCONFIG) $(@:_config=) arm arm920t vcma9 mpl s3c24x0
- #########################################################################
- # ARM supplied Versatile development boards
- #########################################################################
- cm4008_config :       unconfig
-       @$(MKCONFIG) $(@:_config=) arm arm920t cm4008 NULL ks8695
- cm41xx_config :       unconfig
-       @$(MKCONFIG) $(@:_config=) arm arm920t cm41xx NULL ks8695
- versatile_config      \
- versatileab_config    \
- versatilepb_config :  unconfig
-       @board/armltd/versatile/split_by_variant.sh $@
- voiceblue_config:     unconfig
-       @$(MKCONFIG) $(@:_config=) arm arm925t voiceblue
- #########################################################################
- ## S3C44B0 Systems
- #########################################################################
- B2_config     :       unconfig
-       @$(MKCONFIG) $(@:_config=) arm s3c44b0 B2 dave
- #########################################################################
- ## ARM720T Systems
- #########################################################################
- armadillo_config:     unconfig
-       @$(MKCONFIG) $(@:_config=) arm arm720t armadillo
- ep7312_config :       unconfig
-       @$(MKCONFIG) $(@:_config=) arm arm720t ep7312
- impa7_config  :       unconfig
-       @$(MKCONFIG) $(@:_config=) arm arm720t impa7
- modnet50_config :     unconfig
-       @$(MKCONFIG) $(@:_config=) arm arm720t modnet50
- evb4510_config :      unconfig
-       @$(MKCONFIG) $(@:_config=) arm arm720t evb4510 NULL s3c4510b
- lpc2292sodimm_config: unconfig
-       @$(MKCONFIG) $(@:_config=) arm arm720t lpc2292sodimm NULL lpc2292
- SMN42_config  :       unconfig
-       @$(MKCONFIG) $(@:_config=) arm arm720t SMN42 siemens lpc2292
- #########################################################################
- ## ARM CORTEX Systems
- #########################################################################
- omap3_beagle_config : unconfig
-       @$(MKCONFIG) $(@:_config=) arm arm_cortexa8 beagle omap3 omap3
- omap3_overo_config :  unconfig
-       @$(MKCONFIG) $(@:_config=) arm arm_cortexa8 overo omap3 omap3
- omap3_evm_config :    unconfig
-       @$(MKCONFIG) $(@:_config=) arm arm_cortexa8 evm omap3 omap3
- omap3_pandora_config :        unconfig
-       @$(MKCONFIG) $(@:_config=) arm arm_cortexa8 pandora omap3 omap3
- omap3_zoom1_config :  unconfig
-       @$(MKCONFIG) $(@:_config=) arm arm_cortexa8 zoom1 omap3 omap3
- omap3_zoom2_config :  unconfig
-       @$(MKCONFIG) $(@:_config=) arm arm_cortexa8 zoom2 omap3 omap3
- #########################################################################
- ## XScale Systems
- #########################################################################
- actux1_config :       unconfig
-       @$(MKCONFIG) $(@:_config=) arm ixp actux1
- actux2_config :       unconfig
-       @$(MKCONFIG) $(@:_config=) arm ixp actux2
- actux3_config :       unconfig
-       @$(MKCONFIG) $(@:_config=) arm ixp actux3
- actux4_config :       unconfig
-       @$(MKCONFIG) $(@:_config=) arm ixp actux4
- cerf250_config :      unconfig
-       @$(MKCONFIG) $(@:_config=) arm pxa cerf250
- cradle_config :       unconfig
-       @$(MKCONFIG) $(@:_config=) arm pxa cradle
- csb226_config :       unconfig
-       @$(MKCONFIG) $(@:_config=) arm pxa csb226
- delta_config :        unconfig
-       @$(MKCONFIG) $(@:_config=) arm pxa delta
- innokom_config        :       unconfig
-       @$(MKCONFIG) $(@:_config=) arm pxa innokom
- ixdp425_config        :       unconfig
-       @$(MKCONFIG) $(@:_config=) arm ixp ixdp425
- ixdpg425_config       :       unconfig
-       @$(MKCONFIG) $(@:_config=) arm ixp ixdp425
- lubbock_config        :       unconfig
-       @$(MKCONFIG) $(@:_config=) arm pxa lubbock
- pleb2_config  :       unconfig
-       @$(MKCONFIG) $(@:_config=) arm pxa pleb2
- logodl_config :       unconfig
-       @$(MKCONFIG) $(@:_config=) arm pxa logodl
- pdnb3_config \
- scpu_config:  unconfig
-       @mkdir -p $(obj)include
-       @if [ "$(findstring scpu_,$@)" ] ; then \
-               echo "#define CONFIG_SCPU"      >>$(obj)include/config.h ; \
-               $(XECHO) "... on SCPU board variant" ; \
-       fi
-       @$(MKCONFIG) -a pdnb3 arm ixp pdnb3 prodrive
- pxa255_idp_config:    unconfig
-       @$(MKCONFIG) $(@:_config=) arm pxa pxa255_idp
- polaris_config \
- trizepsiv_config      :       unconfig
-       @mkdir -p $(obj)include
-       @if [ "$(findstring polaris,$@)" ] ; then \
-               echo "#define CONFIG_POLARIS 1" >>$(obj)include/config.h ; \
-       fi;
-       @$(MKCONFIG) -a trizepsiv arm pxa trizepsiv
- wepep250_config       :       unconfig
-       @$(MKCONFIG) $(@:_config=) arm pxa wepep250
- xaeniax_config        :       unconfig
-       @$(MKCONFIG) $(@:_config=) arm pxa xaeniax
- xm250_config  :       unconfig
-       @$(MKCONFIG) $(@:_config=) arm pxa xm250
- xsengine_config :     unconfig
-       @$(MKCONFIG) $(@:_config=) arm pxa xsengine
- zylonite_config :
-       @$(MKCONFIG) $(@:_config=) arm pxa zylonite
- #########################################################################
- ## ARM1136 Systems
- #########################################################################
- apollon_config                : unconfig
-       @mkdir -p $(obj)include
-       @mkdir -p $(obj)onenand_ipl/board/apollon
-       @echo "#define CONFIG_ONENAND_U_BOOT" > $(obj)include/config.h
-       @$(MKCONFIG) $(@:_config=) arm arm1136 apollon NULL omap24xx
-       @echo "CONFIG_ONENAND_U_BOOT = y" >> $(obj)include/config.mk
- mx23_evk_config : unconfig
-       @$(MKCONFIG) $(@:_config=) arm arm926ejs mx23_evk freescale mx23
- mx25_3stack_mfg_config \
- mx25_3stack_config    :       unconfig
-       @$(MKCONFIG) $(@:_config=) arm arm926ejs mx25_3stack freescale mx25
- mx28_evk_config : unconfig
-       @$(MKCONFIG) $(@:_config=) arm arm926ejs mx28_evk freescale mx28
- tx28_config : unconfig
-       @$(MKCONFIG) $(@:_config=) arm arm926ejs tx28 karo mx28
- imx31_litekit_config  : unconfig
-       @$(MKCONFIG) $(@:_config=) arm arm1136 imx31_litekit NULL mx31
- imx31_phycore_eet_config \
- imx31_phycore_config  : unconfig
-       @mkdir -p $(obj)include
-       @if [ -n "$(findstring _eet_,$@)" ]; then                                       \
-               echo "#define CONFIG_IMX31_PHYCORE_EET" >> $(obj)include/config.h;      \
-       fi
-       @$(MKCONFIG) -a imx31_phycore arm arm1136 imx31_phycore NULL mx31
- mx31ads_config                : unconfig
-       @$(MKCONFIG) $(@:_config=) arm arm1136 mx31ads freescale mx31
- mx31pdk_config \
- mx31pdk_nand_config   : unconfig
-       @mkdir -p $(obj)include
-       @if [ -n "$(findstring _nand_,$@)" ]; then                                      \
-               echo "#define CONFIG_NAND_U_BOOT" >> $(obj)include/config.h;            \
-       else                                                                            \
-               echo "#define CONFIG_SKIP_LOWLEVEL_INIT" >> $(obj)include/config.h;     \
-               echo "#define CONFIG_SKIP_RELOCATE_UBOOT" >> $(obj)include/config.h;    \
-       fi
-       @$(MKCONFIG) -a mx31pdk arm arm1136 mx31pdk freescale mx31
- mx31_3stack_config    : unconfig
-       @$(MKCONFIG) $(@:_config=) arm arm1136 mx31_3stack freescale mx31
- mx35_3stack_config      \
- mx35_3stack_mfg_config \
- mx35_3stack_mmc_config: unconfig
-       @$(MKCONFIG) $(@:_config=) arm arm1136 mx35_3stack freescale mx35
- mx50_arm2_lpddr2_config \
- mx50_arm2_iram_config \
- mx50_arm2_config  \
- mx50_arm2_mfg_config  : unconfig
-       @[ -z "$(findstring iram_,$@)" ] || \
-               { echo "TEXT_BASE = 0xF8008400" >$(obj)board/freescale/mx50_arm2/config.tmp ; \
-                 echo "... with iram configuration" ; \
-               }
-       @$(MKCONFIG) $(@:_config=) arm arm_cortexa8 mx50_arm2 freescale mx50
- mx51_bbg_android_config       \
- mx51_bbg_mfg_config \
- mx51_bbg_config               : unconfig
-       @$(MKCONFIG) $(@:_config=) arm arm_cortexa8 mx51_bbg freescale mx51
- mx51_3stack_android_config    \
- mx51_3stack_config    : unconfig
-       @$(MKCONFIG) $(@:_config=) arm arm_cortexa8 mx51_3stack freescale mx51
- mx53_evk_mfg_config           \
- mx53_arm2_ddr3_config         \
- mx53_arm2_config              \
- mx53_evk_config      : unconfig
-       @$(MKCONFIG) $(@:_config=) arm arm_cortexa8 mx53_evk freescale mx53
- omap2420h4_config     : unconfig
-       @$(MKCONFIG) $(@:_config=) arm arm1136 omap2420h4 NULL omap24xx
- qong_config           : unconfig
-       @$(MKCONFIG) $(@:_config=) arm arm1136 qong davedenx mx31
- #########################################################################
- ## ARM1176 Systems
- #########################################################################
- smdk6400_noUSB_config \
- smdk6400_config       :       unconfig
-       @mkdir -p $(obj)include $(obj)board/samsung/smdk6400
-       @mkdir -p $(obj)nand_spl/board/samsung/smdk6400
-       @echo "#define CONFIG_NAND_U_BOOT" > $(obj)include/config.h
-       @if [ -z "$(findstring smdk6400_noUSB_config,$@)" ]; then                       \
-               echo "RAM_TEXT = 0x57e00000" >> $(obj)board/samsung/smdk6400/config.tmp;\
-               $(MKCONFIG) $(@:_config=) arm arm1176 smdk6400 samsung s3c64xx;         \
-       else                                                                            \
-               echo "RAM_TEXT = 0xc7e00000" >> $(obj)board/samsung/smdk6400/config.tmp;\
-               $(MKCONFIG) $(@:_noUSB_config=) arm arm1176 smdk6400 samsung s3c64xx;   \
-       fi
-       @echo "CONFIG_NAND_U_BOOT = y" >> $(obj)include/config.mk
- #========================================================================
- # i386
- #========================================================================
- #########################################################################
- ## AMD SC520 CDP
- #########################################################################
- eNET_config   :       unconfig
-       @$(MKCONFIG) $(@:_config=) i386 i386 eNET NULL sc520
- sc520_cdp_config      :       unconfig
-       @$(MKCONFIG) $(@:_config=) i386 i386 sc520_cdp NULL sc520
- sc520_spunk_config    :       unconfig
-       @$(MKCONFIG) $(@:_config=) i386 i386 sc520_spunk NULL sc520
- sc520_spunk_rel_config        :       unconfig
-       @$(MKCONFIG) $(@:_config=) i386 i386 sc520_spunk NULL sc520
- #========================================================================
- # MIPS
- #========================================================================
- #########################################################################
- ## MIPS32 4Kc
- #########################################################################
- xtract_incaip = $(subst _100MHz,,$(subst _133MHz,,$(subst _150MHz,,$(subst _config,,$1))))
- incaip_100MHz_config  \
- incaip_133MHz_config  \
- incaip_150MHz_config  \
- incaip_config: unconfig
-       @mkdir -p $(obj)include
-       @[ -z "$(findstring _100MHz,$@)" ] || \
-               { echo "#define CPU_CLOCK_RATE 100000000" >>$(obj)include/config.h ; \
-                 $(XECHO) "... with 100MHz system clock" ; \
-               }
-       @[ -z "$(findstring _133MHz,$@)" ] || \
-               { echo "#define CPU_CLOCK_RATE 133000000" >>$(obj)include/config.h ; \
-                 $(XECHO) "... with 133MHz system clock" ; \
-               }
-       @[ -z "$(findstring _150MHz,$@)" ] || \
-               { echo "#define CPU_CLOCK_RATE 150000000" >>$(obj)include/config.h ; \
-                 $(XECHO) "... with 150MHz system clock" ; \
-               }
-       @$(MKCONFIG) -a $(call xtract_incaip,$@) mips mips incaip
- tb0229_config: unconfig
-       @$(MKCONFIG) $(@:_config=) mips mips tb0229
- vct_premium_config            \
- vct_premium_small_config      \
- vct_premium_onenand_config    \
- vct_premium_onenand_small_config \
- vct_platinum_config           \
- vct_platinum_small_config     \
- vct_platinum_onenand_config   \
- vct_platinum_onenand_small_config \
- vct_platinumavc_config                \
- vct_platinumavc_small_config  \
- vct_platinumavc_onenand_config        \
- vct_platinumavc_onenand_small_config: unconfig
-       @mkdir -p $(obj)include
-       @if [ "$(findstring _premium,$@)" ] ; then \
-               echo "#define CONFIG_VCT_PREMIUM" > $(obj)include/config.h ; \
-               $(XECHO) "... on Premium board variant" ; \
-       fi
-       @if [ "$(findstring _platinum_,$@)" ] ; then \
-               echo "#define CONFIG_VCT_PLATINUM" > $(obj)include/config.h ; \
-               $(XECHO) "... on Platinum board variant" ; \
-       fi
-       @if [ "$(findstring _platinumavc,$@)" ] ; then \
-               echo "#define CONFIG_VCT_PLATINUMAVC" > $(obj)include/config.h ; \
-               $(XECHO) "... on PlatinumAVC board variant" ; \
-       fi
-       @if [ "$(findstring _onenand,$@)" ] ; then \
-               echo "#define CONFIG_VCT_ONENAND" >> $(obj)include/config.h ; \
-               $(XECHO) "... on OneNAND board variant" ; \
-       fi
-       @if [ "$(findstring _small,$@)" ] ; then \
-               echo "#define CONFIG_VCT_SMALL_IMAGE" >> $(obj)include/config.h ; \
-               $(XECHO) "... stripped down image variant" ; \
-       fi
-       @$(MKCONFIG) -a vct mips mips vct micronas
- #########################################################################
- ## MIPS32 AU1X00
- #########################################################################
- dbau1000_config               :       unconfig
-       @mkdir -p $(obj)include
-       @echo "#define CONFIG_DBAU1000 1" >$(obj)include/config.h
-       @$(MKCONFIG) -a dbau1x00 mips mips dbau1x00
- dbau1100_config               :       unconfig
-       @mkdir -p $(obj)include
-       @echo "#define CONFIG_DBAU1100 1" >$(obj)include/config.h
-       @$(MKCONFIG) -a dbau1x00 mips mips dbau1x00
- dbau1500_config               :       unconfig
-       @mkdir -p $(obj)include
-       @echo "#define CONFIG_DBAU1500 1" >$(obj)include/config.h
-       @$(MKCONFIG) -a dbau1x00 mips mips dbau1x00
- dbau1550_config               :       unconfig
-       @mkdir -p $(obj)include
-       @echo "#define CONFIG_DBAU1550 1" >$(obj)include/config.h
-       @$(MKCONFIG) -a dbau1x00 mips mips dbau1x00
- dbau1550_el_config    :       unconfig
-       @mkdir -p $(obj)include
-       @echo "#define CONFIG_DBAU1550 1" >$(obj)include/config.h
-       @$(MKCONFIG) -a dbau1x00 mips mips dbau1x00
- gth2_config           :       unconfig
-       @mkdir -p $(obj)include
-       @echo "#define CONFIG_GTH2 1" >$(obj)include/config.h
-       @$(MKCONFIG) -a gth2 mips mips gth2
- pb1000_config         :       unconfig
-       @mkdir -p $(obj)include
-       @echo "#define CONFIG_PB1000 1" >$(obj)include/config.h
-       @$(MKCONFIG) -a pb1x00 mips mips pb1x00
- qemu_mips_config      : unconfig
-       @mkdir -p $(obj)include
-       @echo "#define CONFIG_QEMU_MIPS 1" >$(obj)include/config.h
-       @$(MKCONFIG) -a qemu-mips mips mips qemu-mips
- #########################################################################
- ## MIPS64 5Kc
- #########################################################################
- purple_config :               unconfig
-       @$(MKCONFIG) $(@:_config=) mips mips purple
- #========================================================================
- # Nios
- #========================================================================
- #########################################################################
- ## Nios32
- #########################################################################
- ADNPESC1_DNPEVA2_base_32_config       \
- ADNPESC1_base_32_config               \
- ADNPESC1_config: unconfig
-       @mkdir -p $(obj)include
-       @[ -z "$(findstring _DNPEVA2,$@)" ] || \
-               { echo "#define CONFIG_DNPEVA2 1" >>$(obj)include/config.h ; \
-                 $(XECHO) "... DNP/EVA2 configuration" ; \
-               }
-       @[ -z "$(findstring _base_32,$@)" ] || \
-               { echo "#define CONFIG_NIOS_BASE_32 1" >>$(obj)include/config.h ; \
-                 $(XECHO) "... NIOS 'base_32' configuration" ; \
-               }
-       @[ -z "$(findstring ADNPESC1_config,$@)" ] || \
-               { echo "#define CONFIG_NIOS_BASE_32 1" >>$(obj)include/config.h ; \
-                 $(XECHO) "... NIOS 'base_32' configuration (DEFAULT)" ; \
-               }
-       @$(MKCONFIG) -a ADNPESC1 nios nios adnpesc1 ssv
- DK1C20_safe_32_config         \
- DK1C20_standard_32_config     \
- DK1C20_config:        unconfig
-       @mkdir -p $(obj)include
-       @[ -z "$(findstring _safe_32,$@)" ] || \
-               { echo "#define CONFIG_NIOS_SAFE_32 1" >>$(obj)include/config.h ; \
-                 $(XECHO) "... NIOS 'safe_32' configuration" ; \
-               }
-       @[ -z "$(findstring _standard_32,$@)" ] || \
-               { echo "#define CONFIG_NIOS_STANDARD_32 1" >>$(obj)include/config.h ; \
-                 $(XECHO) "... NIOS 'standard_32' configuration" ; \
-               }
-       @[ -z "$(findstring DK1C20_config,$@)" ] || \
-               { echo "#define CONFIG_NIOS_STANDARD_32 1" >>$(obj)include/config.h ; \
-                 $(XECHO) "... NIOS 'standard_32' configuration (DEFAULT)" ; \
-               }
-       @$(MKCONFIG) -a DK1C20 nios nios dk1c20 altera
- DK1S10_safe_32_config         \
- DK1S10_standard_32_config     \
- DK1S10_mtx_ldk_20_config      \
- DK1S10_config:        unconfig
-       @mkdir -p $(obj)include
-       @[ -z "$(findstring _safe_32,$@)" ] || \
-               { echo "#define CONFIG_NIOS_SAFE_32 1" >>$(obj)include/config.h ; \
-                 $(XECHO) "... NIOS 'safe_32' configuration" ; \
-               }
-       @[ -z "$(findstring _standard_32,$@)" ] || \
-               { echo "#define CONFIG_NIOS_STANDARD_32 1" >>$(obj)include/config.h ; \
-                 $(XECHO) "... NIOS 'standard_32' configuration" ; \
-               }
-       @[ -z "$(findstring _mtx_ldk_20,$@)" ] || \
-               { echo "#define CONFIG_NIOS_MTX_LDK_20 1" >>$(obj)include/config.h ; \
-                 $(XECHO) "... NIOS 'mtx_ldk_20' configuration" ; \
-               }
-       @[ -z "$(findstring DK1S10_config,$@)" ] || \
-               { echo "#define CONFIG_NIOS_STANDARD_32 1" >>$(obj)include/config.h ; \
-                 $(XECHO) "... NIOS 'standard_32' configuration (DEFAULT)" ; \
-               }
-       @$(MKCONFIG) -a DK1S10 nios nios dk1s10 altera
- #########################################################################
- ## Nios-II
- #########################################################################
- EP1C20_config : unconfig
-       @$(MKCONFIG)  EP1C20 nios2 nios2 ep1c20 altera
- EP1S10_config : unconfig
-       @$(MKCONFIG)  EP1S10 nios2 nios2 ep1s10 altera
- EP1S40_config : unconfig
-       @$(MKCONFIG)  EP1S40 nios2 nios2 ep1s40 altera
- PK1C20_config : unconfig
-       @$(MKCONFIG)  PK1C20 nios2 nios2 pk1c20 psyent
- PCI5441_config : unconfig
-       @$(MKCONFIG)  PCI5441 nios2 nios2 pci5441 psyent
- #========================================================================
- ## Microblaze
- #========================================================================
- microblaze-generic_config:    unconfig
-       @mkdir -p $(obj)include
-       @$(MKCONFIG) -a $(@:_config=) microblaze microblaze microblaze-generic xilinx
- suzaku_config:        unconfig
-       @mkdir -p $(obj)include
-       @echo "#define CONFIG_SUZAKU 1" > $(obj)include/config.h
-       @$(MKCONFIG) -a $(@:_config=) microblaze microblaze suzaku AtmarkTechno
- #========================================================================
- # Blackfin
- #========================================================================
- # Analog Devices boards
- BFIN_BOARDS = bf518f-ezbrd bf526-ezbrd bf527-ezkit bf533-ezkit bf533-stamp \
-       bf537-pnav bf537-stamp bf538f-ezkit bf548-ezkit bf561-ezkit
- # Bluetechnix tinyboards
- BFIN_BOARDS += cm-bf527 cm-bf533 cm-bf537e cm-bf548 cm-bf561 tcm-bf537
- # Misc third party boards
- BFIN_BOARDS += bf537-minotaur bf537-srv1 blackstamp
- # I-SYST Micromodule
- BFIN_BOARDS += ibf-dsp561
- $(BFIN_BOARDS:%=%_config)     : unconfig
-       @$(MKCONFIG) $(@:_config=) blackfin blackfin $(@:_config=)
- $(BFIN_BOARDS):
-       $(MAKE) $@_config
-       $(MAKE)
- #========================================================================
- # AVR32
- #========================================================================
- atngw100_config       :       unconfig
-       @$(MKCONFIG) $(@:_config=) avr32 at32ap atngw100 atmel at32ap700x
- atstk1002_config      :       unconfig
-       @$(MKCONFIG) $(@:_config=) avr32 at32ap atstk1000 atmel at32ap700x
- atstk1003_config      :       unconfig
-       @$(MKCONFIG) $(@:_config=) avr32 at32ap atstk1000 atmel at32ap700x
- atstk1004_config      :       unconfig
-       @$(MKCONFIG) $(@:_config=) avr32 at32ap atstk1000 atmel at32ap700x
- atstk1006_config      :       unconfig
-       @$(MKCONFIG) $(@:_config=) avr32 at32ap atstk1000 atmel at32ap700x
- favr-32-ezkit_config  :       unconfig
-       @$(MKCONFIG) $(@:_config=) avr32 at32ap favr-32-ezkit earthlcd at32ap700x
- hammerhead_config     :       unconfig
-       @$(MKCONFIG) $(@:_config=) avr32 at32ap hammerhead miromico at32ap700x
- mimc200_config                :       unconfig
-       @$(MKCONFIG) $(@:_config=) avr32 at32ap mimc200 mimc at32ap700x
- #========================================================================
- # SH3 (SuperH)
- #========================================================================
- #########################################################################
- ## sh2 (Renesas SuperH)
- #########################################################################
- rsk7203_config: unconfig
-       @mkdir -p $(obj)include
-       @echo "#define CONFIG_RSK7203 1" > $(obj)include/config.h
-       @$(MKCONFIG) -a $(@:_config=) sh sh2 rsk7203 renesas
- #########################################################################
- ## sh3 (Renesas SuperH)
- #########################################################################
- mpr2_config: unconfig
-       @mkdir -p $(obj)include
-       @echo "#define CONFIG_MPR2 1" > $(obj)include/config.h
-       @$(MKCONFIG) -a $(@:_config=) sh sh3 mpr2
- ms7720se_config: unconfig
-       @mkdir -p $(obj)include
-       @echo "#define CONFIG_MS7720SE 1" > $(obj)include/config.h
-       @$(MKCONFIG) -a $(@:_config=) sh sh3 ms7720se
- #########################################################################
- ## sh4 (Renesas SuperH)
- #########################################################################
- MigoR_config :       unconfig
-       @mkdir -p $(obj)include
-       @echo "#define CONFIG_MIGO_R 1" > $(obj)include/config.h
-       @$(MKCONFIG) -a $(@:_config=) sh sh4 MigoR renesas
- ms7750se_config: unconfig
-       @mkdir -p $(obj)include
-       @echo "#define CONFIG_MS7750SE 1" > $(obj)include/config.h
-       @$(MKCONFIG) -a $(@:_config=) sh sh4 ms7750se
- ms7722se_config :     unconfig
-       @mkdir -p $(obj)include
-       @echo "#define CONFIG_MS7722SE 1" > $(obj)include/config.h
-       @$(MKCONFIG) -a $(@:_config=) sh sh4 ms7722se
- r2dplus_config  :   unconfig
-       @mkdir -p $(obj)include
-       @echo "#define CONFIG_R2DPLUS 1" > $(obj)include/config.h
-       @$(MKCONFIG) -a $(@:_config=) sh sh4 r2dplus renesas
- r7780mp_config: unconfig
-       @mkdir -p $(obj)include
-       @echo "#define CONFIG_R7780MP 1" > $(obj)include/config.h
-       @$(MKCONFIG) -a $(@:_config=) sh sh4 r7780mp renesas
- sh7763rdp_config  :   unconfig
-       @mkdir -p $(obj)include
-       @echo "#define CONFIG_SH7763RDP 1" > $(obj)include/config.h
-       @$(MKCONFIG) -a $(@:_config=) sh sh4 sh7763rdp renesas
- xtract_sh7785lcr = $(subst _32bit,,$(subst _config,,$1))
- sh7785lcr_32bit_config \
- sh7785lcr_config  :   unconfig
-       @mkdir -p $(obj)include
-       @mkdir -p $(obj)board/renesas/sh7785lcr
-       @echo "#define CONFIG_SH7785LCR 1" > $(obj)include/config.h
-       @if [ "$(findstring 32bit, $@)" ] ; then \
-               echo "#define CONFIG_SH_32BIT 1" >> $(obj)include/config.h ; \
-               echo "TEXT_BASE = 0x8ff80000" > \
-                       $(obj)board/renesas/sh7785lcr/config.tmp ; \
-                 $(XECHO) " ... enable 32-Bit Address Extended Mode" ; \
-       fi
-       @$(MKCONFIG) -a $(call xtract_sh7785lcr,$@) sh sh4 sh7785lcr renesas
- ap325rxa_config  :   unconfig
-       @mkdir -p $(obj)include
-       @echo "#define CONFIG_AP325RXA 1" > $(obj)include/config.h
-       @$(MKCONFIG) -a $(@:_config=) sh sh4 ap325rxa renesas
- espt_config  :   unconfig
-       @mkdir -p $(obj)include
-       @echo "#define CONFIG_ESPT 1" > $(obj)include/config.h
-       @$(MKCONFIG) -a $(@:_config=) sh sh4 espt
- #========================================================================
- # SPARC
- #========================================================================
- #########################################################################
- ## LEON3
- #########################################################################
- # Gaisler GR-XC3S-1500 board
- gr_xc3s_1500_config : unconfig
-       @$(MKCONFIG) $(@:_config=) sparc leon3 gr_xc3s_1500 gaisler
- # Gaisler GR-CPCI-AX2000 board, a General purpose FPGA-AX system
- gr_cpci_ax2000_config : unconfig
-       @$(MKCONFIG) $(@:_config=) sparc leon3 gr_cpci_ax2000 gaisler
- # Gaisler GRLIB template design (GPL SPARC/LEON3) for Altera NIOS
- # Development board Stratix II edition, FPGA Device EP2S60.
- gr_ep2s60_config: unconfig
-       @$(MKCONFIG) $(@:_config=) sparc leon3 gr_ep2s60 gaisler
- # Gaisler LEON3 GRSIM simulator
- grsim_config : unconfig
-       @$(MKCONFIG) $(@:_config=) sparc leon3 grsim gaisler
- #########################################################################
- ## LEON2
- #########################################################################
- # Gaisler LEON2 GRSIM simulator
- grsim_leon2_config : unconfig
-       @$(MKCONFIG) $(@:_config=) sparc leon2 grsim_leon2 gaisler
- #########################################################################
- #########################################################################
- #########################################################################
- clean:
-       @rm -f $(obj)examples/standalone/82559_eeprom                     \
-              $(obj)examples/standalone/eepro100_eeprom                  \
-              $(obj)examples/standalone/hello_world                      \
-              $(obj)examples/standalone/interrupt                        \
-              $(obj)examples/standalone/mem_to_mem_idma2intr             \
-              $(obj)examples/standalone/sched                            \
-              $(obj)examples/standalone/smc91111_eeprom                  \
-              $(obj)examples/standalone/test_burst                       \
-              $(obj)examples/standalone/timer
-       @rm -f $(obj)examples/api/demo{,.bin}
-       @rm -f $(obj)tools/bmp_logo        $(obj)tools/easylogo/easylogo  \
-              $(obj)tools/env/{fw_printenv,fw_setenv}                    \
-              $(obj)tools/envcrc                                         \
-              $(obj)tools/gdb/{astest,gdbcont,gdbsend}                   \
-              $(obj)tools/gen_eth_addr    $(obj)tools/img2srec           \
-              $(obj)tools/mkimage         $(obj)tools/mpc86x_clk         \
-              $(obj)tools/ncb             $(obj)tools/ubsha1
-       @rm -f $(obj)board/cray/L1/{bootscript.c,bootscript.image}        \
-              $(obj)board/netstar/{eeprom,crcek,crcit,*.srec,*.bin}      \
-              $(obj)board/trab/trab_fkt   $(obj)board/voiceblue/eeprom   \
-              $(obj)board/armltd/{integratorap,integratorcp}/u-boot.lds  \
-              $(obj)lib_blackfin/u-boot.lds                              \
-              $(obj)u-boot.lds                                           \
-              $(obj)cpu/blackfin/bootrom-asm-offsets.[chs]
-       @rm -f $(obj)include/bmp_logo.h
-       @rm -f $(obj)nand_spl/{u-boot.lds,u-boot-spl,u-boot-spl.map,System.map}
-       @rm -f $(obj)onenand_ipl/onenand-{ipl,ipl.bin,ipl-2k.bin,ipl-4k.bin,ipl.map}
-       @rm -f $(obj)onenand_ipl/u-boot.lds
-       @rm -f $(TIMESTAMP_FILE) $(VERSION_FILE)
-       @find $(OBJTREE) -type f \
-               \( -name 'core' -o -name '*.bak' -o -name '*~' \
-               -o -name '*.o'  -o -name '*.a' -o -name '*.exe' \) -print \
-               | xargs rm -f
- clobber:      clean
-       @find $(OBJTREE) -type f \( -name .depend \
-               -o -name '*.srec' -o -name '*.bin' -o -name u-boot.img \) \
-               -print0 \
-               | xargs -0 rm -f
+ clobber:      tidy
+       @find $(OBJTREE) -type f \( -name '*.srec' \
+               -o -name '*.bin' -o -name u-boot.img \) \
+               -print0 | xargs -0 rm -f
        @rm -f $(OBJS) $(obj)*.bak $(obj)ctags $(obj)etags $(obj)TAGS \
                $(obj)cscope.* $(obj)*.*~
-       @rm -f $(obj)u-boot $(obj)u-boot.map $(obj)u-boot.hex $(ALL)
-       @rm -f $(obj)tools/{env/crc32.c,inca-swap-bytes}
-       @rm -f $(obj)cpu/mpc824x/bedbug_603e.c
-       @rm -f $(obj)include/asm/proc $(obj)include/asm/arch $(obj)include/asm
+       @rm -f $(obj)u-boot $(obj)u-boot.map $(obj)u-boot.hex $(ALL-y)
+       @rm -f $(obj)u-boot.kwb
+       @rm -f $(obj)u-boot.imx
+       @rm -f $(obj)u-boot.ubl
+       @rm -f $(obj)u-boot.ais
+       @rm -f $(obj)u-boot.dtb
+       @rm -f $(obj)u-boot.sb
+       @rm -f $(obj)tools/inca-swap-bytes
+       @rm -f $(obj)arch/powerpc/cpu/mpc824x/bedbug_603e.c
+       @rm -f $(obj)arch/powerpc/cpu/mpc83xx/ddr-gen?.c
+       @rm -fr $(obj)include/asm/proc $(obj)include/asm/arch $(obj)include/asm
+       @rm -fr $(obj)include/generated
        @[ ! -d $(obj)nand_spl ] || find $(obj)nand_spl -name "*" -type l -print | xargs rm -f
        @[ ! -d $(obj)onenand_ipl ] || find $(obj)onenand_ipl -name "*" -type l -print | xargs rm -f
+       @[ ! -d $(obj)mmc_spl ] || find $(obj)mmc_spl -name "*" -type l -print | xargs rm -f
+       @rm -f $(obj)dts/*.tmp
  
- ifeq ($(OBJTREE),$(SRCTREE))
- mrproper \
- distclean:    clobber unconfig
- else
  mrproper \
  distclean:    clobber unconfig
+ ifneq ($(OBJTREE),$(SRCTREE))
        rm -rf $(obj)*
  endif
  
  backup:
        F=`basename $(TOPDIR)` ; cd .. ; \
-       gtar --force-local -zcvf `date "+$$F-%Y-%m-%d-%T.tar.gz"` $$F
+       gtar --force-local -zcvf `LC_ALL=C date "+$$F-%Y-%m-%d-%T.tar.gz"` $$F
  
  #########################################################################
diff --combined common/Makefile
index ad7cb4f36e687a79c92f4a1a87ed234a16774dd3,2d9ae8c5c92319f666edd859b28903b179e54eec..447bed47db0904761125e2a5178a3ef7eced343b
  
  include $(TOPDIR)/config.mk
  
- LIB   = $(obj)libcommon.a
- AOBJS =
+ LIB   = $(obj)libcommon.o
  
  # core
+ ifndef CONFIG_SPL_BUILD
  COBJS-y += main.o
- COBJS-y += circbuf.o
- COBJS-y += console.o
  COBJS-y += command.o
- COBJS-y += dlmalloc.o
  COBJS-y += exports.o
  COBJS-$(CONFIG_SYS_HUSH_PARSER) += hush.o
  COBJS-y += image.o
- COBJS-y += memsize.o
  COBJS-y += s_record.o
  COBJS-$(CONFIG_SERIAL_MULTI) += serial.o
- COBJS-y += stdio.o
  COBJS-y += xyzModem.o
  
  # core command
  COBJS-y += cmd_boot.o
- COBJS-y += cmd_bootm.o
+ COBJS-$(CONFIG_CMD_BOOTM) += cmd_bootm.o
+ COBJS-y += cmd_help.o
  COBJS-y += cmd_nvedit.o
+ COBJS-y += cmd_version.o
  
  # environment
  COBJS-y += env_common.o
  COBJS-$(CONFIG_ENV_IS_IN_DATAFLASH) += env_dataflash.o
  COBJS-$(CONFIG_ENV_IS_IN_EEPROM) += env_eeprom.o
- COBJS-$(CONFIG_ENV_IS_EMBEDDED) += env_embedded.o
XCOBJS-$(CONFIG_ENV_IS_EMBEDDED) += env_embedded.o
  COBJS-$(CONFIG_ENV_IS_IN_EEPROM) += env_embedded.o
- COBJS-$(CONFIG_ENV_IS_IN_FLASH) += env_embedded.o
XCOBJS-$(CONFIG_ENV_IS_IN_FLASH) += env_embedded.o
  COBJS-$(CONFIG_ENV_IS_IN_NVRAM) += env_embedded.o
 +COBJS-$(CONFIG_ENV_IS_IN_MMC) += env_embedded.o
 +COBJS-$(CONFIG_ENV_IS_IN_NAND) += env_embedded.o
 +COBJS-$(CONFIG_ENV_IS_IN_SPI_FLASH) += env_embedded.o
  COBJS-$(CONFIG_ENV_IS_IN_FLASH) += env_flash.o
  COBJS-$(CONFIG_ENV_IS_IN_MG_DISK) += env_mgdisk.o
+ COBJS-$(CONFIG_ENV_IS_IN_MMC) += env_mmc.o
  COBJS-$(CONFIG_ENV_IS_IN_NAND) += env_nand.o
  COBJS-$(CONFIG_ENV_IS_IN_NVRAM) += env_nvram.o
  COBJS-$(CONFIG_ENV_IS_IN_ONENAND) += env_onenand.o
  COBJS-$(CONFIG_ENV_IS_IN_SPI_FLASH) += env_sf.o
 +COBJS-$(CONFIG_ENV_IS_IN_MMC) += env_mmc.o
  COBJS-$(CONFIG_ENV_IS_NOWHERE) += env_nowhere.o
  
  # command
@@@ -76,7 -69,6 +73,7 @@@ COBJS-$(CONFIG_CMD_BEDBUG) += bedbug.o 
  COBJS-$(CONFIG_CMD_BMP) += cmd_bmp.o
  COBJS-$(CONFIG_CMD_BOOTLDR) += cmd_bootldr.o
  COBJS-$(CONFIG_CMD_CACHE) += cmd_cache.o
 +COBJS-$(CONFIG_CMD_CLOCK) += cmd_clk.o
  COBJS-$(CONFIG_CMD_CONSOLE) += cmd_console.o
  COBJS-$(CONFIG_CMD_CPLBINFO) += cmd_cplbinfo.o
  COBJS-$(CONFIG_DATAFLASH_MMC_SELECT) += cmd_dataflash_mmc_mux.o
@@@ -89,63 -81,80 +86,82 @@@ COBJS-$(CONFIG_CMD_DIAG) += cmd_diag.
  endif
  COBJS-$(CONFIG_CMD_DISPLAY) += cmd_display.o
  COBJS-$(CONFIG_CMD_DTT) += cmd_dtt.o
+ COBJS-$(CONFIG_CMD_ECHO) += cmd_echo.o
  COBJS-$(CONFIG_ENV_IS_IN_EEPROM) += cmd_eeprom.o
  COBJS-$(CONFIG_CMD_EEPROM) += cmd_eeprom.o
  COBJS-$(CONFIG_CMD_ELF) += cmd_elf.o
+ COBJS-$(CONFIG_SYS_HUSH_PARSER) += cmd_exit.o
  COBJS-$(CONFIG_CMD_EXT2) += cmd_ext2.o
  COBJS-$(CONFIG_CMD_FAT) += cmd_fat.o
  COBJS-$(CONFIG_CMD_FDC)$(CONFIG_CMD_FDOS) += cmd_fdc.o
  COBJS-$(CONFIG_OF_LIBFDT) += cmd_fdt.o fdt_support.o
  COBJS-$(CONFIG_CMD_FDOS) += cmd_fdos.o
+ COBJS-$(CONFIG_CMD_FITUPD) += cmd_fitupd.o
  COBJS-$(CONFIG_CMD_FLASH) += cmd_flash.o
  ifdef CONFIG_FPGA
  COBJS-$(CONFIG_CMD_FPGA) += cmd_fpga.o
  endif
+ COBJS-$(CONFIG_CMD_GPIO) += cmd_gpio.o
 +COBJS-$(CONFIG_CMD_IIM) += cmd_iim.o
  COBJS-$(CONFIG_CMD_I2C) += cmd_i2c.o
  COBJS-$(CONFIG_CMD_IDE) += cmd_ide.o
  COBJS-$(CONFIG_CMD_IMMAP) += cmd_immap.o
  COBJS-$(CONFIG_CMD_IRQ) += cmd_irq.o
  COBJS-$(CONFIG_CMD_ITEST) += cmd_itest.o
  COBJS-$(CONFIG_CMD_JFFS2) += cmd_jffs2.o
+ COBJS-$(CONFIG_CMD_CRAMFS) += cmd_cramfs.o
+ COBJS-$(CONFIG_CMD_LDRINFO) += cmd_ldrinfo.o
+ COBJS-$(CONFIG_CMD_LED) += cmd_led.o
  COBJS-$(CONFIG_CMD_LICENSE) += cmd_license.o
  COBJS-y += cmd_load.o
  COBJS-$(CONFIG_LOGBUFFER) += cmd_log.o
  COBJS-$(CONFIG_ID_EEPROM) += cmd_mac.o
+ COBJS-$(CONFIG_CMD_MD5SUM) += cmd_md5sum.o
  COBJS-$(CONFIG_CMD_MEMORY) += cmd_mem.o
  COBJS-$(CONFIG_CMD_MFSL) += cmd_mfsl.o
  COBJS-$(CONFIG_CMD_MG_DISK) += cmd_mgdisk.o
  COBJS-$(CONFIG_MII) += miiphyutil.o
  COBJS-$(CONFIG_CMD_MII) += miiphyutil.o
+ COBJS-$(CONFIG_PHYLIB) += miiphyutil.o
  COBJS-$(CONFIG_CMD_MII) += cmd_mii.o
+ ifdef CONFIG_PHYLIB
+ COBJS-$(CONFIG_CMD_MII) += cmd_mdio.o
+ endif
  COBJS-$(CONFIG_CMD_MISC) += cmd_misc.o
  COBJS-$(CONFIG_CMD_MMC) += cmd_mmc.o
+ COBJS-$(CONFIG_CMD_MMC_SPI) += cmd_mmc_spi.o
  COBJS-$(CONFIG_MP) += cmd_mp.o
  COBJS-$(CONFIG_CMD_MTDPARTS) += cmd_mtdparts.o
- COBJS-y += cmd_nand.o
+ COBJS-$(CONFIG_CMD_NAND) += cmd_nand.o
  COBJS-$(CONFIG_CMD_NET) += cmd_net.o
  COBJS-$(CONFIG_CMD_ONENAND) += cmd_onenand.o
  COBJS-$(CONFIG_CMD_OTP) += cmd_otp.o
 +COBJS-$(CONFIG_CMD_PATA) += cmd_pata.o
  ifdef CONFIG_PCI
  COBJS-$(CONFIG_CMD_PCI) += cmd_pci.o
  endif
  COBJS-y += cmd_pcmcia.o
  COBJS-$(CONFIG_CMD_PORTIO) += cmd_portio.o
+ COBJS-$(CONFIG_CMD_PXE) += cmd_pxe.o
  COBJS-$(CONFIG_CMD_REGINFO) += cmd_reginfo.o
  COBJS-$(CONFIG_CMD_REISER) += cmd_reiser.o
  COBJS-$(CONFIG_CMD_SATA) += cmd_sata.o
  COBJS-$(CONFIG_CMD_SF) += cmd_sf.o
  COBJS-$(CONFIG_CMD_SCSI) += cmd_scsi.o
+ COBJS-$(CONFIG_CMD_SHA1SUM) += cmd_sha1sum.o
  COBJS-$(CONFIG_CMD_SETEXPR) += cmd_setexpr.o
  COBJS-$(CONFIG_CMD_SPI) += cmd_spi.o
  COBJS-$(CONFIG_CMD_SPIBOOTLDR) += cmd_spibootldr.o
  COBJS-$(CONFIG_CMD_STRINGS) += cmd_strings.o
  COBJS-$(CONFIG_CMD_TERMINAL) += cmd_terminal.o
+ COBJS-$(CONFIG_CMD_TIME) += cmd_time.o
+ COBJS-$(CONFIG_SYS_HUSH_PARSER) += cmd_test.o
+ COBJS-$(CONFIG_CMD_TPM) += cmd_tpm.o
  COBJS-$(CONFIG_CMD_TSI148) += cmd_tsi148.o
  COBJS-$(CONFIG_CMD_UBI) += cmd_ubi.o
  COBJS-$(CONFIG_CMD_UBIFS) += cmd_ubifs.o
  COBJS-$(CONFIG_CMD_UNIVERSE) += cmd_universe.o
+ COBJS-$(CONFIG_CMD_UNZIP) += cmd_unzip.o
  ifdef CONFIG_CMD_USB
  COBJS-y += cmd_usb.o
  COBJS-y += usb.o
@@@ -153,32 -162,46 +169,46 @@@ COBJS-$(CONFIG_USB_STORAGE) += usb_stor
  endif
  COBJS-$(CONFIG_CMD_XIMG) += cmd_ximg.o
  COBJS-$(CONFIG_YAFFS2) += cmd_yaffs2.o
- COBJS-$(CONFIG_VFD) += cmd_vfd.o
  
  # others
- COBJS-$(CONFIG_DDR_SPD) += ddr_spd.o
+ ifdef CONFIG_DDR_SPD
+ SPD := y
+ endif
+ ifdef CONFIG_SPD_EEPROM
+ SPD := y
+ endif
+ COBJS-$(SPD) += ddr_spd.o
  COBJS-$(CONFIG_HWCONFIG) += hwconfig.o
  COBJS-$(CONFIG_CONSOLE_MUX) += iomux.o
  COBJS-y += flash.o
- COBJS-$(CONFIG_CMD_KGDB) += kgdb.o
+ COBJS-$(CONFIG_CMD_KGDB) += kgdb.o kgdb_stubs.o
  COBJS-$(CONFIG_KALLSYMS) += kallsyms.o
  COBJS-$(CONFIG_LCD) += lcd.o
  COBJS-$(CONFIG_LYNXKDI) += lynxkdi.o
+ COBJS-$(CONFIG_MENU) += menu.o
  COBJS-$(CONFIG_MODEM_SUPPORT) += modem.o
  COBJS-$(CONFIG_UPDATE_TFTP) += update.o
  COBJS-$(CONFIG_USB_KEYBOARD) += usb_kbd.o
+ endif
+ COBJS-y += console.o
+ COBJS-y += dlmalloc.o
+ COBJS-y += memsize.o
+ COBJS-y += stdio.o
  
  
  COBJS := $(sort $(COBJS-y))
- SRCS  := $(AOBJS:.o=.S) $(COBJS:.o=.c)
- OBJS  := $(addprefix $(obj),$(AOBJS) $(COBJS))
+ XCOBJS        := $(sort $(XCOBJS-y))
+ SRCS  := $(COBJS:.o=.c) $(XCOBJS:.o=.c)
+ OBJS  := $(addprefix $(obj),$(COBJS))
+ XOBJS := $(addprefix $(obj),$(XCOBJS))
  
  CPPFLAGS += -I..
  
- all:  $(LIB) $(AOBJS)
+ all:  $(LIB) $(XOBJS)
  
  $(LIB): $(obj).depend $(OBJS)
-       $(AR) $(ARFLAGS) $@ $(OBJS)
+       $(call cmd_link_o_target, $(OBJS))
  
  $(obj)env_embedded.o: $(src)env_embedded.c $(obj)../tools/envcrc
        $(CC) $(AFLAGS) -Wa,--no-warn \
diff --combined common/cmd_bootm.c
index f43b472a4c5f4fe68c72c2acb21aaaee9eea460f,d5745b14e2ce54427ce7153759b0f39a0bb8fa3f..be25fe0b1a4a5af788822658b0fbf86d523e1e03
@@@ -36,6 -36,7 +36,7 @@@
  #include <lmb.h>
  #include <linux/ctype.h>
  #include <asm/byteorder.h>
+ #include <linux/compiler.h>
  
  #if defined(CONFIG_CMD_USB)
  #include <usb.h>
  #include <lzma/LzmaTools.h>
  #endif /* CONFIG_LZMA */
  
+ #ifdef CONFIG_LZO
+ #include <linux/lzo.h>
+ #endif /* CONFIG_LZO */
  DECLARE_GLOBAL_DATA_PTR;
  
- extern int gunzip (void *dst, int dstlen, unsigned char *src, unsigned long *lenp);
  #ifndef CONFIG_SYS_BOOTM_LEN
  #define CONFIG_SYS_BOOTM_LEN  0x800000        /* use 8MByte as default max gunzip size */
  #endif
@@@ -69,27 -73,28 +73,28 @@@ extern void bz_internal_error(int)
  #endif
  
  #if defined(CONFIG_CMD_IMI)
- static int image_info (unsigned long addr);
+ static int image_info(unsigned long addr);
  #endif
  
  #if defined(CONFIG_CMD_IMLS)
  #include <flash.h>
+ #include <mtd/cfi_flash.h>
  extern flash_info_t flash_info[]; /* info for FLASH chips */
- static int do_imls (cmd_tbl_t *cmdtp, int flag, int argc, char *argv[]);
+ static int do_imls(cmd_tbl_t *cmdtp, int flag, int argc, char * const argv[]);
  #endif
  
  #ifdef CONFIG_SILENT_CONSOLE
- static void fixup_silent_linux (void);
+ static void fixup_silent_linux(void);
  #endif
  
- static image_header_t *image_get_kernel (ulong img_addr, int verify);
+ static image_header_t *image_get_kernel(ulong img_addr, int verify);
  #if defined(CONFIG_FIT)
- static int fit_check_kernel (const void *fit, int os_noffset, int verify);
+ static int fit_check_kernel(const void *fit, int os_noffset, int verify);
  #endif
  
- static void *boot_get_kernel (cmd_tbl_t *cmdtp, int flag,int argc, char *argv[],
-               bootm_headers_t *images, ulong *os_data, ulong *os_len);
extern int do_reset (cmd_tbl_t *cmdtp, int flag, int argc, char *argv[]);
+ static void *boot_get_kernel(cmd_tbl_t *cmdtp, int flag, int argc,
+                               char * const argv[], bootm_headers_t *images,
                              ulong *os_data, ulong *os_len);
  
  /*
   *  Continue booting an OS image; caller already has:
   *  - loaded (first part of) image to header load address,
   *  - disabled interrupts.
   */
- typedef int boot_os_fn (int flag, int argc, char *argv[],
+ typedef int boot_os_fn(int flag, int argc, char * const argv[],
                        bootm_headers_t *images); /* pointers to os/initrd/fdt */
  
- #define CONFIG_BOOTM_LINUX 1
- #define CONFIG_BOOTM_NETBSD 1
- #define CONFIG_BOOTM_RTEMS 1
  #ifdef CONFIG_BOOTM_LINUX
  extern boot_os_fn do_bootm_linux;
  #endif
@@@ -114,22 -115,25 +115,25 @@@ static boot_os_fn do_bootm_netbsd
  #endif
  #if defined(CONFIG_LYNXKDI)
  static boot_os_fn do_bootm_lynxkdi;
- extern void lynxkdi_boot (image_header_t *);
+ extern void lynxkdi_boot(image_header_t *);
  #endif
  #ifdef CONFIG_BOOTM_RTEMS
  static boot_os_fn do_bootm_rtems;
  #endif
+ #if defined(CONFIG_BOOTM_OSE)
+ static boot_os_fn do_bootm_ose;
+ #endif
  #if defined(CONFIG_CMD_ELF)
  static boot_os_fn do_bootm_vxworks;
  static boot_os_fn do_bootm_qnxelf;
- int do_bootvx (cmd_tbl_t *cmdtp, int flag, int argc, char *argv[]);
- int do_bootelf (cmd_tbl_t *cmdtp, int flag, int argc, char *argv[]);
+ int do_bootvx(cmd_tbl_t *cmdtp, int flag, int argc, char * const argv[]);
+ int do_bootelf(cmd_tbl_t *cmdtp, int flag, int argc, char * const argv[]);
  #endif
  #if defined(CONFIG_INTEGRITY)
  static boot_os_fn do_bootm_integrity;
  #endif
  
boot_os_fn * boot_os[] = {
static boot_os_fn *boot_os[] = {
  #ifdef CONFIG_BOOTM_LINUX
        [IH_OS_LINUX] = do_bootm_linux,
  #endif
  #ifdef CONFIG_BOOTM_RTEMS
        [IH_OS_RTEMS] = do_bootm_rtems,
  #endif
+ #if defined(CONFIG_BOOTM_OSE)
+       [IH_OS_OSE] = do_bootm_ose,
+ #endif
  #if defined(CONFIG_CMD_ELF)
        [IH_OS_VXWORKS] = do_bootm_vxworks,
        [IH_OS_QNX] = do_bootm_qnxelf,
  #endif
  };
  
- ulong load_addr = CONFIG_SYS_LOAD_ADDR;       /* Default Load Address */
- static bootm_headers_t images;                /* pointers to os/initrd/fdt images */
+ bootm_headers_t images;               /* pointers to os/initrd/fdt images */
  
- void __board_lmb_reserve(struct lmb *lmb)
+ /* Allow for arch specific config before we boot */
+ void __arch_preboot_os(void)
  {
-       /* please define platform specific board_lmb_reserve() */
+       /* please define platform specific arch_preboot_os() */
  }
- void board_lmb_reserve(struct lmb *lmb) __attribute__((weak, alias("__board_lmb_reserve")));
+ void arch_preboot_os(void) __attribute__((weak, alias("__arch_preboot_os")));
  
- void __arch_lmb_reserve(struct lmb *lmb)
- {
-       /* please define platform specific arch_lmb_reserve() */
- }
- void arch_lmb_reserve(struct lmb *lmb) __attribute__((weak, alias("__arch_lmb_reserve")));
- #if defined(__ARM__)
-   #define IH_INITRD_ARCH IH_ARCH_ARM
- #elif defined(__avr32__)
-   #define IH_INITRD_ARCH IH_ARCH_AVR32
- #elif defined(__bfin__)
-   #define IH_INITRD_ARCH IH_ARCH_BLACKFIN
- #elif defined(__I386__)
-   #define IH_INITRD_ARCH IH_ARCH_I386
- #elif defined(__M68K__)
-   #define IH_INITRD_ARCH IH_ARCH_M68K
- #elif defined(__microblaze__)
-   #define IH_INITRD_ARCH IH_ARCH_MICROBLAZE
- #elif defined(__mips__)
-   #define IH_INITRD_ARCH IH_ARCH_MIPS
- #elif defined(__nios__)
-   #define IH_INITRD_ARCH IH_ARCH_NIOS
- #elif defined(__nios2__)
-   #define IH_INITRD_ARCH IH_ARCH_NIOS2
- #elif defined(__PPC__)
-   #define IH_INITRD_ARCH IH_ARCH_PPC
- #elif defined(__sh__)
-   #define IH_INITRD_ARCH IH_ARCH_SH
- #elif defined(__sparc__)
-   #define IH_INITRD_ARCH IH_ARCH_SPARC
- #else
- # error Unknown CPU type
- #endif
+ #define IH_INITRD_ARCH IH_ARCH_DEFAULT
  
- static int bootm_start(cmd_tbl_t *cmdtp, int flag, int argc, char *argv[])
+ static void bootm_start_lmb(void)
  {
+ #ifdef CONFIG_LMB
        ulong           mem_start;
        phys_size_t     mem_size;
-       void            *os_hdr;
-       int             ret;
-       memset ((void *)&images, 0, sizeof (images));
-       images.verify = getenv_yesno ("verify");
  
        lmb_init(&images.lmb);
  
  
        arch_lmb_reserve(&images.lmb);
        board_lmb_reserve(&images.lmb);
+ #else
+ # define lmb_reserve(lmb, base, size)
+ #endif
+ }
+ static int bootm_start(cmd_tbl_t *cmdtp, int flag, int argc, char * const argv[])
+ {
+       void            *os_hdr;
+       int             ret;
+       memset((void *)&images, 0, sizeof(images));
+       images.verify = getenv_yesno("verify");
+       bootm_start_lmb();
  
        /* get kernel image header, start address and length */
-       os_hdr = boot_get_kernel (cmdtp, flag, argc, argv,
+       os_hdr = boot_get_kernel(cmdtp, flag, argc, argv,
                        &images, &images.os.image_start, &images.os.image_len);
        if (images.os.image_len == 0) {
-               puts ("ERROR: can't get kernel image!\n");
+               puts("ERROR: can't get kernel image!\n");
                return 1;
        }
  
        /* get image parameters */
-       switch (genimg_get_format (os_hdr)) {
+       switch (genimg_get_format(os_hdr)) {
        case IMAGE_FORMAT_LEGACY:
-               images.os.type = image_get_type (os_hdr);
-               images.os.comp = image_get_comp (os_hdr);
-               images.os.os = image_get_os (os_hdr);
+               images.os.type = image_get_type(os_hdr);
+               images.os.comp = image_get_comp(os_hdr);
+               images.os.os = image_get_os(os_hdr);
  
-               images.os.end = image_get_image_end (os_hdr);
-               images.os.load = image_get_load (os_hdr);
+               images.os.end = image_get_image_end(os_hdr);
+               images.os.load = image_get_load(os_hdr);
                break;
  #if defined(CONFIG_FIT)
        case IMAGE_FORMAT_FIT:
-               if (fit_image_get_type (images.fit_hdr_os,
+               if (fit_image_get_type(images.fit_hdr_os,
                                        images.fit_noffset_os, &images.os.type)) {
-                       puts ("Can't get image type!\n");
-                       show_boot_progress (-109);
+                       puts("Can't get image type!\n");
+                       show_boot_progress(-109);
                        return 1;
                }
  
-               if (fit_image_get_comp (images.fit_hdr_os,
+               if (fit_image_get_comp(images.fit_hdr_os,
                                        images.fit_noffset_os, &images.os.comp)) {
-                       puts ("Can't get image compression!\n");
-                       show_boot_progress (-110);
+                       puts("Can't get image compression!\n");
+                       show_boot_progress(-110);
                        return 1;
                }
  
-               if (fit_image_get_os (images.fit_hdr_os,
+               if (fit_image_get_os(images.fit_hdr_os,
                                        images.fit_noffset_os, &images.os.os)) {
-                       puts ("Can't get image OS!\n");
-                       show_boot_progress (-111);
+                       puts("Can't get image OS!\n");
+                       show_boot_progress(-111);
                        return 1;
                }
  
-               images.os.end = fit_get_end (images.fit_hdr_os);
+               images.os.end = fit_get_end(images.fit_hdr_os);
  
-               if (fit_image_get_load (images.fit_hdr_os, images.fit_noffset_os,
+               if (fit_image_get_load(images.fit_hdr_os, images.fit_noffset_os,
                                        &images.os.load)) {
-                       puts ("Can't get image load address!\n");
-                       show_boot_progress (-112);
+                       puts("Can't get image load address!\n");
+                       show_boot_progress(-112);
                        return 1;
                }
                break;
  #endif
        default:
-               puts ("ERROR: unknown image format type!\n");
+               puts("ERROR: unknown image format type!\n");
                return 1;
        }
  
        /* find kernel entry point */
        if (images.legacy_hdr_valid) {
-               images.ep = image_get_ep (&images.legacy_hdr_os_copy);
+               images.ep = image_get_ep(&images.legacy_hdr_os_copy);
  #if defined(CONFIG_FIT)
        } else if (images.fit_uname_os) {
-               ret = fit_image_get_entry (images.fit_hdr_os,
+               ret = fit_image_get_entry(images.fit_hdr_os,
                                images.fit_noffset_os, &images.ep);
                if (ret) {
-                       puts ("Can't get entry point property!\n");
+                       puts("Can't get entry point property!\n");
                        return 1;
                }
  #endif
        } else {
-               puts ("Could not find kernel entry point!\n");
+               puts("Could not find kernel entry point!\n");
                return 1;
        }
  
-       if (images.os.os == IH_OS_LINUX) {
+       if (images.os.type == IH_TYPE_KERNEL_NOLOAD) {
+               images.os.load = images.os.image_start;
+               images.ep += images.os.load;
+       }
+       if (((images.os.type == IH_TYPE_KERNEL) ||
+            (images.os.type == IH_TYPE_KERNEL_NOLOAD) ||
+            (images.os.type == IH_TYPE_MULTI)) &&
+           (images.os.os == IH_OS_LINUX)) {
                /* find ramdisk */
-               ret = boot_get_ramdisk (argc, argv, &images, IH_INITRD_ARCH,
+               ret = boot_get_ramdisk(argc, argv, &images, IH_INITRD_ARCH,
                                &images.rd_start, &images.rd_end);
                if (ret) {
-                       puts ("Ramdisk image is corrupt or invalid\n");
+                       puts("Ramdisk image is corrupt or invalid\n");
                        return 1;
                }
  
  #if defined(CONFIG_OF_LIBFDT)
- #if defined(CONFIG_PPC) || defined(CONFIG_M68K) || defined(CONFIG_SPARC)
                /* find flattened device tree */
-               ret = boot_get_fdt (flag, argc, argv, &images,
-                                   &images.ft_addr, &images.ft_len);
+               ret = boot_get_fdt(flag, argc, argv, &images,
+                                  &images.ft_addr, &images.ft_len);
                if (ret) {
-                       puts ("Could not find a valid device tree\n");
+                       puts("Could not find a valid device tree\n");
                        return 1;
                }
  
                set_working_fdt_addr(images.ft_addr);
- #endif
  #endif
        }
  
@@@ -328,54 -319,58 +319,58 @@@ static int bootm_load_os(image_info_t o
        ulong blob_end = os.end;
        ulong image_start = os.image_start;
        ulong image_len = os.image_len;
-       uint unc_len = CONFIG_SYS_BOOTM_LEN;
+       __maybe_unused uint unc_len = CONFIG_SYS_BOOTM_LEN;
+       int no_overlap = 0;
+ #if defined(CONFIG_LZMA) || defined(CONFIG_LZO)
+       int ret;
+ #endif /* defined(CONFIG_LZMA) || defined(CONFIG_LZO) */
  
-       const char *type_name = genimg_get_type_name (os.type);
+       const char *type_name = genimg_get_type_name(os.type);
  
        switch (comp) {
        case IH_COMP_NONE:
-               if (load == blob_start) {
-                       printf ("   XIP %s ... ", type_name);
+               if (load == blob_start || load == image_start) {
+                       printf("   XIP %s ... ", type_name);
+                       no_overlap = 1;
                } else {
-                       printf ("   Loading %s ... ", type_name);
-                       if (load != image_start) {
-                               memmove_wd ((void *)load,
-                                               (void *)image_start, image_len, CHUNKSZ);
-                       }
+                       printf("   Loading %s ... ", type_name);
+                       memmove_wd((void *)load, (void *)image_start,
+                                       image_len, CHUNKSZ);
                }
                *load_end = load + image_len;
                puts("OK\n");
                break;
+ #ifdef CONFIG_GZIP
        case IH_COMP_GZIP:
-               printf ("   Uncompressing %s ... ", type_name);
-               if (gunzip ((void *)load, unc_len,
-                                       (uchar *)image_start, &image_len) != 0) {
-                       puts ("GUNZIP: uncompress, out-of-mem or overwrite error "
-                               "- must RESET board to recover\n");
+               printf("   Uncompressing %s ... ", type_name);
+               if (gunzip((void *)load, unc_len,
+                               (uchar *)image_start, &image_len) != 0) {
+                       puts("GUNZIP: uncompress, out-of-mem or overwrite "
+                               "error - must RESET board to recover\n");
                        if (boot_progress)
-                               show_boot_progress (-6);
+                               show_boot_progress(-6);
                        return BOOTM_ERR_RESET;
                }
  
                *load_end = load + image_len;
                break;
+ #endif /* CONFIG_GZIP */
  #ifdef CONFIG_BZIP2
        case IH_COMP_BZIP2:
-               printf ("   Uncompressing %s ... ", type_name);
+               printf("   Uncompressing %s ... ", type_name);
                /*
                 * If we've got less than 4 MB of malloc() space,
                 * use slower decompression algorithm which requires
                 * at most 2300 KB of memory.
                 */
-               int i = BZ2_bzBuffToBuffDecompress ((char*)load,
+               int i = BZ2_bzBuffToBuffDecompress((char *)load,
                                        &unc_len, (char *)image_start, image_len,
                                        CONFIG_SYS_MALLOC_LEN < (4096 * 1024), 0);
                if (i != BZ_OK) {
-                       printf ("BUNZIP2: uncompress or overwrite error %d "
+                       printf("BUNZIP2: uncompress or overwrite error %d "
                                "- must RESET board to recover\n", i);
                        if (boot_progress)
-                               show_boot_progress (-6);
+                               show_boot_progress(-6);
                        return BOOTM_ERR_RESET;
                }
  
                break;
  #endif /* CONFIG_BZIP2 */
  #ifdef CONFIG_LZMA
-       case IH_COMP_LZMA:
-               printf ("   Uncompressing %s ... ", type_name);
+       case IH_COMP_LZMA: {
+               SizeT lzma_len = unc_len;
+               printf("   Uncompressing %s ... ", type_name);
  
-               int ret = lzmaBuffToBuffDecompress(
-                       (unsigned char *)load, &unc_len,
+               ret = lzmaBuffToBuffDecompress(
+                       (unsigned char *)load, &lzma_len,
                        (unsigned char *)image_start, image_len);
+               unc_len = lzma_len;
                if (ret != SZ_OK) {
-                       printf ("LZMA: uncompress or overwrite error %d "
+                       printf("LZMA: uncompress or overwrite error %d "
                                "- must RESET board to recover\n", ret);
-                       show_boot_progress (-6);
+                       show_boot_progress(-6);
                        return BOOTM_ERR_RESET;
                }
                *load_end = load + unc_len;
                break;
+       }
  #endif /* CONFIG_LZMA */
+ #ifdef CONFIG_LZO
+       case IH_COMP_LZO:
+               printf("   Uncompressing %s ... ", type_name);
+               ret = lzop_decompress((const unsigned char *)image_start,
+                                         image_len, (unsigned char *)load,
+                                         &unc_len);
+               if (ret != LZO_E_OK) {
+                       printf("LZO: uncompress or overwrite error %d "
+                             "- must RESET board to recover\n", ret);
+                       if (boot_progress)
+                               show_boot_progress(-6);
+                       return BOOTM_ERR_RESET;
+               }
+               *load_end = load + unc_len;
+               break;
+ #endif /* CONFIG_LZO */
        default:
-               printf ("Unimplemented compression type %d\n", comp);
+               printf("Unimplemented compression type %d\n", comp);
                return BOOTM_ERR_UNIMPLEMENTED;
        }
-       puts ("OK\n");
-       debug ("   kernel loaded at 0x%08lx, end = 0x%08lx\n", load, *load_end);
+       flush_cache(load, (*load_end - load) * sizeof(ulong));
+       puts("OK\n");
+       debug("   kernel loaded at 0x%08lx, end = 0x%08lx\n", load, *load_end);
        if (boot_progress)
-               show_boot_progress (7);
+               show_boot_progress(7);
  
-       if ((load < blob_end) && (*load_end > blob_start)) {
-               debug ("images.os.start = 0x%lX, images.os.end = 0x%lx\n", blob_start, blob_end);
-               debug ("images.os.load = 0x%lx, load_end = 0x%lx\n", load, *load_end);
+       if (!no_overlap && (load < blob_end) && (*load_end > blob_start)) {
+               debug("images.os.start = 0x%lX, images.os.end = 0x%lx\n",
+                       blob_start, blob_end);
+               debug("images.os.load = 0x%lx, load_end = 0x%lx\n", load,
+                       *load_end);
  
                return BOOTM_ERR_OVERLAP;
        }
        return 0;
  }
  
- static int bootm_start_standalone(ulong iflag, int argc, char *argv[])
+ static int bootm_start_standalone(ulong iflag, int argc, char * const argv[])
  {
        char  *s;
-       int   (*appl)(int, char *[]);
+       int   (*appl)(int, char * const []);
  
        /* Don't start if "autostart" is set to "no" */
        if (((s = getenv("autostart")) != NULL) && (strcmp(s, "no") == 0)) {
                setenv("filesize", buf);
                return 0;
        }
-       appl = (int (*)(int, char *[]))ntohl(images.ep);
+       appl = (int (*)(int, char * const []))(ulong)ntohl(images.ep);
        (*appl)(argc-1, &argv[1]);
        return 0;
  }
  
  /* we overload the cmd field with our state machine info instead of a
   * function pointer */
- cmd_tbl_t cmd_bootm_sub[] = {
static cmd_tbl_t cmd_bootm_sub[] = {
        U_BOOT_CMD_MKENT(start, 0, 1, (void *)BOOTM_STATE_START, "", ""),
        U_BOOT_CMD_MKENT(loados, 0, 1, (void *)BOOTM_STATE_LOADOS, "", ""),
- #if defined(CONFIG_PPC) || defined(CONFIG_M68K) || defined(CONFIG_SPARC)
+ #ifdef CONFIG_SYS_BOOT_RAMDISK_HIGH
        U_BOOT_CMD_MKENT(ramdisk, 0, 1, (void *)BOOTM_STATE_RAMDISK, "", ""),
  #endif
  #ifdef CONFIG_OF_LIBFDT
        U_BOOT_CMD_MKENT(fdt, 0, 1, (void *)BOOTM_STATE_FDT, "", ""),
  #endif
-       U_BOOT_CMD_MKENT(bdt, 0, 1, (void *)BOOTM_STATE_OS_BD_T, "", ""),
        U_BOOT_CMD_MKENT(cmdline, 0, 1, (void *)BOOTM_STATE_OS_CMDLINE, "", ""),
+       U_BOOT_CMD_MKENT(bdt, 0, 1, (void *)BOOTM_STATE_OS_BD_T, "", ""),
        U_BOOT_CMD_MKENT(prep, 0, 1, (void *)BOOTM_STATE_OS_PREP, "", ""),
        U_BOOT_CMD_MKENT(go, 0, 1, (void *)BOOTM_STATE_OS_GO, "", ""),
  };
  
- int do_bootm_subcommand (cmd_tbl_t *cmdtp, int flag, int argc, char *argv[])
+ int do_bootm_subcommand(cmd_tbl_t *cmdtp, int flag, int argc,
+                       char * const argv[])
  {
        int ret = 0;
-       int state;
+       long state;
        cmd_tbl_t *c;
        boot_os_fn *boot_fn;
  
        c = find_cmd_tbl(argv[1], &cmd_bootm_sub[0], ARRAY_SIZE(cmd_bootm_sub));
  
        if (c) {
-               state = (int)c->cmd;
+               state = (long)c->cmd;
  
                /* treat start special since it resets the state machine */
                if (state == BOOTM_STATE_START) {
                        argv++;
                        return bootm_start(cmdtp, flag, argc, argv);
                }
-       }
-       /* Unrecognized command */
-       else {
-               cmd_usage(cmdtp);
-               return 1;
+       } else {
+               /* Unrecognized command */
+               return cmd_usage(cmdtp);
        }
  
        if (images.state >= state) {
-               printf ("Trying to execute a command out of order\n");
-               cmd_usage(cmdtp);
-               return 1;
+               printf("Trying to execute a command out of order\n");
+               return cmd_usage(cmdtp);
        }
  
        images.state |= state;
                        lmb_reserve(&images.lmb, images.os.load,
                                        (load_end - images.os.load));
                        break;
- #if defined(CONFIG_PPC) || defined(CONFIG_M68K) || defined(CONFIG_SPARC)
+ #ifdef CONFIG_SYS_BOOT_RAMDISK_HIGH
                case BOOTM_STATE_RAMDISK:
                {
                        ulong rd_len = images.rd_end - images.rd_start;
                }
                        break;
  #endif
- #ifdef CONFIG_OF_LIBFDT
+ #if defined(CONFIG_OF_LIBFDT)
                case BOOTM_STATE_FDT:
                {
-                       ulong bootmap_base = getenv_bootm_low();
-                       ret = boot_relocate_fdt(&images.lmb, bootmap_base,
+                       boot_fdt_add_mem_rsv_regions(&images.lmb,
+                                                    images.ft_addr);
+                       ret = boot_relocate_fdt(&images.lmb,
                                &images.ft_addr, &images.ft_len);
                        break;
                }
                case BOOTM_STATE_OS_CMDLINE:
                        ret = boot_fn(BOOTM_STATE_OS_CMDLINE, argc, argv, &images);
                        if (ret)
-                               printf ("cmdline subcommand not supported\n");
+                               printf("cmdline subcommand not supported\n");
                        break;
                case BOOTM_STATE_OS_BD_T:
                        ret = boot_fn(BOOTM_STATE_OS_BD_T, argc, argv, &images);
                        if (ret)
-                               printf ("bdt subcommand not supported\n");
+                               printf("bdt subcommand not supported\n");
                        break;
                case BOOTM_STATE_OS_PREP:
                        ret = boot_fn(BOOTM_STATE_OS_PREP, argc, argv, &images);
                        if (ret)
-                               printf ("prep subcommand not supported\n");
+                               printf("prep subcommand not supported\n");
                        break;
                case BOOTM_STATE_OS_GO:
                        disable_interrupts();
+                       arch_preboot_os();
                        boot_fn(BOOTM_STATE_OS_GO, argc, argv, &images);
                        break;
        }
  /*******************************************************************/
  /* bootm - boot application image from image in memory */
  /*******************************************************************/
- static int relocated = 0;
  
- int do_bootm (cmd_tbl_t *cmdtp, int flag, int argc, char *argv[])
+ int do_bootm(cmd_tbl_t *cmdtp, int flag, int argc, char * const argv[])
  {
        ulong           iflag;
        ulong           load_end = 0;
        int             ret;
        boot_os_fn      *boot_fn;
+ #ifdef CONFIG_NEEDS_MANUAL_RELOC
+       static int relocated = 0;
  
        /* relocate boot function table */
        if (!relocated) {
                                boot_os[i] += gd->reloc_off;
                relocated = 1;
        }
+ #endif
  
        /* determine if we have a sub command */
        if (argc > 1) {
        usb_stop();
  #endif
  
- #ifdef CONFIG_AMIGAONEG3SE
-       /*
-        * We've possible left the caches enabled during
-        * bios emulation, so turn them off again
-        */
-       icache_disable();
-       dcache_disable();
- #endif
        ret = bootm_load_os(images.os, &load_end, 1);
  
        if (ret < 0) {
                if (ret == BOOTM_ERR_RESET)
-                       do_reset (cmdtp, flag, argc, argv);
+                       do_reset(cmdtp, flag, argc, argv);
                if (ret == BOOTM_ERR_OVERLAP) {
                        if (images.legacy_hdr_valid) {
-                               if (image_get_type (&images.legacy_hdr_os_copy) == IH_TYPE_MULTI)
-                                       puts ("WARNING: legacy format multi component "
-                                               "image overwritten\n");
+                               image_header_t *hdr;
+                               hdr = &images.legacy_hdr_os_copy;
+                               if (image_get_type(hdr) == IH_TYPE_MULTI)
+                                       puts("WARNING: legacy format multi "
+                                               "component image "
+                                               "overwritten\n");
                        } else {
-                               puts ("ERROR: new format image overwritten - "
+                               puts("ERROR: new format image overwritten - "
                                        "must RESET the board to recover\n");
-                               show_boot_progress (-113);
-                               do_reset (cmdtp, flag, argc, argv);
+                               show_boot_progress(-113);
+                               do_reset(cmdtp, flag, argc, argv);
                        }
                }
                if (ret == BOOTM_ERR_UNIMPLEMENTED) {
                        if (iflag)
                                enable_interrupts();
-                       show_boot_progress (-7);
+                       show_boot_progress(-7);
                        return 1;
                }
        }
                return 0;
        }
  
-       show_boot_progress (8);
+       show_boot_progress(8);
  
  #ifdef CONFIG_SILENT_CONSOLE
        if (images.os.os == IH_OS_LINUX)
        if (boot_fn == NULL) {
                if (iflag)
                        enable_interrupts();
-               printf ("ERROR: booting os '%s' (%d) is not supported\n",
+               printf("ERROR: booting os '%s' (%d) is not supported\n",
                        genimg_get_os_name(images.os.os), images.os.os);
-               show_boot_progress (-8);
+               show_boot_progress(-8);
                return 1;
        }
  
+       arch_preboot_os();
        boot_fn(0, argc, argv, &images);
  
-       show_boot_progress (-9);
+       show_boot_progress(-9);
  #ifdef DEBUG
-       puts ("\n## Control returned to monitor - resetting...\n");
+       puts("\n## Control returned to monitor - resetting...\n");
  #endif
-       do_reset (cmdtp, flag, argc, argv);
+       do_reset(cmdtp, flag, argc, argv);
  
        return 1;
  }
  
+ int bootm_maybe_autostart(cmd_tbl_t *cmdtp, const char *cmd)
+ {
+       const char *ep = getenv("autostart");
+       if (ep && !strcmp(ep, "yes")) {
+               char *local_args[2];
+               local_args[0] = (char *)cmd;
+               local_args[1] = NULL;
+               printf("Automatic boot of image at addr 0x%08lX ...\n", load_addr);
+               return do_bootm(cmdtp, 0, 1, local_args);
+       }
+       return 0;
+ }
  /**
   * image_get_kernel - verify legacy format kernel image
   * @img_addr: in RAM address of the legacy format image to be verified
   *     pointer to a legacy image header if valid image was found
   *     otherwise return NULL
   */
- static image_header_t *image_get_kernel (ulong img_addr, int verify)
+ static image_header_t *image_get_kernel(ulong img_addr, int verify)
  {
        image_header_t *hdr = (image_header_t *)img_addr;
  
        if (!image_check_magic(hdr)) {
-               puts ("Bad Magic Number\n");
-               show_boot_progress (-1);
+               puts("Bad Magic Number\n");
+               show_boot_progress(-1);
                return NULL;
        }
-       show_boot_progress (2);
+       show_boot_progress(2);
  
-       if (!image_check_hcrc (hdr)) {
-               puts ("Bad Header Checksum\n");
-               show_boot_progress (-2);
+       if (!image_check_hcrc(hdr)) {
+               puts("Bad Header Checksum\n");
+               show_boot_progress(-2);
                return NULL;
        }
  
-       show_boot_progress (3);
-       image_print_contents (hdr);
 +#if defined(CONFIG_MX51_BBG) || defined(CONFIG_MX51_3DS)
 +      if (image_get_load(hdr) < 0x90000000)
 +              image_set_load(hdr, image_get_load(hdr)+0x20000000);
 +      if (image_get_ep(hdr) < 0x90000000)
 +              image_set_ep(hdr, image_get_ep(hdr)+0x20000000);
 +#endif
 +
+       show_boot_progress(3);
+       image_print_contents(hdr);
  
        if (verify) {
-               puts ("   Verifying Checksum ... ");
-               if (!image_check_dcrc (hdr)) {
-                       printf ("Bad Data CRC\n");
-                       show_boot_progress (-3);
+               puts("   Verifying Checksum ... ");
+               if (!image_check_dcrc(hdr)) {
+                       printf("Bad Data CRC\n");
+                       show_boot_progress(-3);
                        return NULL;
                }
-               puts ("OK\n");
+               puts("OK\n");
        }
-       show_boot_progress (4);
+       show_boot_progress(4);
  
-       if (!image_check_target_arch (hdr)) {
-               printf ("Unsupported Architecture 0x%x\n", image_get_arch (hdr));
-               show_boot_progress (-4);
+       if (!image_check_target_arch(hdr)) {
+               printf("Unsupported Architecture 0x%x\n", image_get_arch(hdr));
+               show_boot_progress(-4);
                return NULL;
        }
        return hdr;
   *     1, on success
   *     0, on failure
   */
- #if defined (CONFIG_FIT)
- static int fit_check_kernel (const void *fit, int os_noffset, int verify)
+ #if defined(CONFIG_FIT)
+ static int fit_check_kernel(const void *fit, int os_noffset, int verify)
  {
-       fit_image_print (fit, os_noffset, "   ");
+       fit_image_print(fit, os_noffset, "   ");
  
        if (verify) {
-               puts ("   Verifying Hash Integrity ... ");
-               if (!fit_image_check_hashes (fit, os_noffset)) {
-                       puts ("Bad Data Hash\n");
-                       show_boot_progress (-104);
+               puts("   Verifying Hash Integrity ... ");
+               if (!fit_image_check_hashes(fit, os_noffset)) {
+                       puts("Bad Data Hash\n");
+                       show_boot_progress(-104);
                        return 0;
                }
-               puts ("OK\n");
+               puts("OK\n");
        }
-       show_boot_progress (105);
+       show_boot_progress(105);
  
-       if (!fit_image_check_target_arch (fit, os_noffset)) {
-               puts ("Unsupported Architecture\n");
-               show_boot_progress (-105);
+       if (!fit_image_check_target_arch(fit, os_noffset)) {
+               puts("Unsupported Architecture\n");
+               show_boot_progress(-105);
                return 0;
        }
  
-       show_boot_progress (106);
-       if (!fit_image_check_type (fit, os_noffset, IH_TYPE_KERNEL)) {
-               puts ("Not a kernel image\n");
-               show_boot_progress (-106);
+       show_boot_progress(106);
+       if (!fit_image_check_type(fit, os_noffset, IH_TYPE_KERNEL) &&
+           !fit_image_check_type(fit, os_noffset, IH_TYPE_KERNEL_NOLOAD)) {
+               puts("Not a kernel image\n");
+               show_boot_progress(-106);
                return 0;
        }
  
-       show_boot_progress (107);
+       show_boot_progress(107);
        return 1;
  }
  #endif /* CONFIG_FIT */
   *     pointer to image header if valid image was found, plus kernel start
   *     address and length, otherwise NULL
   */
- static void *boot_get_kernel (cmd_tbl_t *cmdtp, int flag, int argc, char *argv[],
-               bootm_headers_t *images, ulong *os_data, ulong *os_len)
+ static void *boot_get_kernel(cmd_tbl_t *cmdtp, int flag, int argc,
+               char * const argv[], bootm_headers_t *images, ulong *os_data,
+               ulong *os_len)
  {
        image_header_t  *hdr;
        ulong           img_addr;
        /* find out kernel image address */
        if (argc < 2) {
                img_addr = load_addr;
-               debug ("*  kernel: default image load address = 0x%08lx\n",
+               debug("*  kernel: default image load address = 0x%08lx\n",
                                load_addr);
  #if defined(CONFIG_FIT)
-       } else if (fit_parse_conf (argv[1], load_addr, &img_addr,
+       } else if (fit_parse_conf(argv[1], load_addr, &img_addr,
                                                        &fit_uname_config)) {
-               debug ("*  kernel: config '%s' from image at 0x%08lx\n",
+               debug("*  kernel: config '%s' from image at 0x%08lx\n",
                                fit_uname_config, img_addr);
-       } else if (fit_parse_subimage (argv[1], load_addr, &img_addr,
+       } else if (fit_parse_subimage(argv[1], load_addr, &img_addr,
                                                        &fit_uname_kernel)) {
-               debug ("*  kernel: subimage '%s' from image at 0x%08lx\n",
+               debug("*  kernel: subimage '%s' from image at 0x%08lx\n",
                                fit_uname_kernel, img_addr);
  #endif
        } else {
                img_addr = simple_strtoul(argv[1], NULL, 16);
-               debug ("*  kernel: cmdline image address = 0x%08lx\n", img_addr);
+               debug("*  kernel: cmdline image address = 0x%08lx\n", img_addr);
        }
  
-       show_boot_progress (1);
+       show_boot_progress(1);
  
        /* copy from dataflash if needed */
-       img_addr = genimg_get_image (img_addr);
+       img_addr = genimg_get_image(img_addr);
  
        /* check image type, for FIT images get FIT kernel node */
        *os_data = *os_len = 0;
-       switch (genimg_get_format ((void *)img_addr)) {
+       switch (genimg_get_format((void *)img_addr)) {
        case IMAGE_FORMAT_LEGACY:
-               printf ("## Booting kernel from Legacy Image at %08lx ...\n",
+               printf("## Booting kernel from Legacy Image at %08lx ...\n",
                                img_addr);
-               hdr = image_get_kernel (img_addr, images->verify);
+               hdr = image_get_kernel(img_addr, images->verify);
                if (!hdr)
                        return NULL;
-               show_boot_progress (5);
+               show_boot_progress(5);
  
                /* get os_data and os_len */
-               switch (image_get_type (hdr)) {
+               switch (image_get_type(hdr)) {
                case IH_TYPE_KERNEL:
-                       *os_data = image_get_data (hdr);
-                       *os_len = image_get_data_size (hdr);
+               case IH_TYPE_KERNEL_NOLOAD:
+                       *os_data = image_get_data(hdr);
+                       *os_len = image_get_data_size(hdr);
                        break;
                case IH_TYPE_MULTI:
-                       image_multi_getimg (hdr, 0, os_data, os_len);
+                       image_multi_getimg(hdr, 0, os_data, os_len);
                        break;
                case IH_TYPE_STANDALONE:
-                       if (argc >2) {
-                               hdr->ih_load = htonl(simple_strtoul(argv[2], NULL, 16));
-                       }
-                       *os_data = image_get_data (hdr);
-                       *os_len = image_get_data_size (hdr);
+                       *os_data = image_get_data(hdr);
+                       *os_len = image_get_data_size(hdr);
                        break;
                default:
-                       printf ("Wrong Image Type for %s command\n", cmdtp->name);
-                       show_boot_progress (-5);
+                       printf("Wrong Image Type for %s command\n",
+                               cmdtp->name);
+                       show_boot_progress(-5);
                        return NULL;
                }
  
                /*
-                * copy image header to allow for image overwrites during kernel
-                * decompression.
+                * copy image header to allow for image overwrites during
+                * kernel decompression.
                 */
-               memmove (&images->legacy_hdr_os_copy, hdr, sizeof(image_header_t));
+               memmove(&images->legacy_hdr_os_copy, hdr,
+                       sizeof(image_header_t));
  
                /* save pointer to image header */
                images->legacy_hdr_os = hdr;
  
                images->legacy_hdr_valid = 1;
-               show_boot_progress (6);
+               show_boot_progress(6);
                break;
  #if defined(CONFIG_FIT)
        case IMAGE_FORMAT_FIT:
                fit_hdr = (void *)img_addr;
-               printf ("## Booting kernel from FIT Image at %08lx ...\n",
+               printf("## Booting kernel from FIT Image at %08lx ...\n",
                                img_addr);
  
-               if (!fit_check_format (fit_hdr)) {
-                       puts ("Bad FIT kernel image format!\n");
-                       show_boot_progress (-100);
+               if (!fit_check_format(fit_hdr)) {
+                       puts("Bad FIT kernel image format!\n");
+                       show_boot_progress(-100);
                        return NULL;
                }
-               show_boot_progress (100);
+               show_boot_progress(100);
  
                if (!fit_uname_kernel) {
                        /*
                         * no kernel image node unit name, try to get config
                         * node first. If config unit node name is NULL
-                        * fit_conf_get_node() will try to find default config node
+                        * fit_conf_get_node() will try to find default config
+                        * node
                         */
-                       show_boot_progress (101);
-                       cfg_noffset = fit_conf_get_node (fit_hdr, fit_uname_config);
+                       show_boot_progress(101);
+                       cfg_noffset = fit_conf_get_node(fit_hdr,
+                                                       fit_uname_config);
                        if (cfg_noffset < 0) {
-                               show_boot_progress (-101);
+                               show_boot_progress(-101);
                                return NULL;
                        }
                        /* save configuration uname provided in the first
                         * bootm argument
                         */
-                       images->fit_uname_cfg = fdt_get_name (fit_hdr, cfg_noffset, NULL);
-                       printf ("   Using '%s' configuration\n", images->fit_uname_cfg);
-                       show_boot_progress (103);
-                       os_noffset = fit_conf_get_kernel_node (fit_hdr, cfg_noffset);
-                       fit_uname_kernel = fit_get_name (fit_hdr, os_noffset, NULL);
+                       images->fit_uname_cfg = fdt_get_name(fit_hdr,
+                                                               cfg_noffset,
+                                                               NULL);
+                       printf("   Using '%s' configuration\n",
+                               images->fit_uname_cfg);
+                       show_boot_progress(103);
+                       os_noffset = fit_conf_get_kernel_node(fit_hdr,
+                                                               cfg_noffset);
+                       fit_uname_kernel = fit_get_name(fit_hdr, os_noffset,
+                                                       NULL);
                } else {
                        /* get kernel component image node offset */
-                       show_boot_progress (102);
-                       os_noffset = fit_image_get_node (fit_hdr, fit_uname_kernel);
+                       show_boot_progress(102);
+                       os_noffset = fit_image_get_node(fit_hdr,
+                                                       fit_uname_kernel);
                }
                if (os_noffset < 0) {
-                       show_boot_progress (-103);
+                       show_boot_progress(-103);
                        return NULL;
                }
  
-               printf ("   Trying '%s' kernel subimage\n", fit_uname_kernel);
+               printf("   Trying '%s' kernel subimage\n", fit_uname_kernel);
  
-               show_boot_progress (104);
-               if (!fit_check_kernel (fit_hdr, os_noffset, images->verify))
+               show_boot_progress(104);
+               if (!fit_check_kernel(fit_hdr, os_noffset, images->verify))
                        return NULL;
  
                /* get kernel image data address and length */
-               if (fit_image_get_data (fit_hdr, os_noffset, &data, &len)) {
-                       puts ("Could not find kernel subimage data!\n");
-                       show_boot_progress (-107);
+               if (fit_image_get_data(fit_hdr, os_noffset, &data, &len)) {
+                       puts("Could not find kernel subimage data!\n");
+                       show_boot_progress(-107);
                        return NULL;
                }
-               show_boot_progress (108);
+               show_boot_progress(108);
  
                *os_len = len;
                *os_data = (ulong)data;
                break;
  #endif
        default:
-               printf ("Wrong Image Format for %s command\n", cmdtp->name);
-               show_boot_progress (-108);
+               printf("Wrong Image Format for %s command\n", cmdtp->name);
+               show_boot_progress(-108);
                return NULL;
        }
  
-       debug ("   kernel data at 0x%08lx, len = 0x%08lx (%ld)\n",
+       debug("   kernel data at 0x%08lx, len = 0x%08lx (%ld)\n",
                        *os_data, *os_len, *os_len);
  
        return (void *)img_addr;
@@@ -995,8 -1031,8 +1038,8 @@@ U_BOOT_CMD
  #if defined(CONFIG_OF_LIBFDT)
        "\tfdt     - relocate flat device tree\n"
  #endif
-       "\tbdt     - OS specific bd_t processing\n"
        "\tcmdline - OS specific command line processing/setup\n"
+       "\tbdt     - OS specific bd_t processing\n"
        "\tprep    - OS specific prep before relocation or go\n"
        "\tgo      - start OS"
  );
  /* bootd - boot default image */
  /*******************************************************************/
  #if defined(CONFIG_CMD_BOOTD)
- int do_bootd (cmd_tbl_t *cmdtp, int flag, int argc, char *argv[])
+ int do_bootd(cmd_tbl_t *cmdtp, int flag, int argc, char * const argv[])
  {
        int rcode = 0;
  
  #ifndef CONFIG_SYS_HUSH_PARSER
-       if (run_command (getenv ("bootcmd"), flag) < 0)
+       if (run_command(getenv("bootcmd"), flag) < 0)
                rcode = 1;
  #else
-       if (parse_string_outer (getenv ("bootcmd"),
+       if (parse_string_outer(getenv("bootcmd"),
                        FLAG_PARSE_SEMICOLON | FLAG_EXIT_FROM_LOOP) != 0)
                rcode = 1;
  #endif
@@@ -1040,72 -1076,72 +1083,72 @@@ U_BOOT_CMD
  /* iminfo - print header info for a requested image */
  /*******************************************************************/
  #if defined(CONFIG_CMD_IMI)
- int do_iminfo (cmd_tbl_t *cmdtp, int flag, int argc, char *argv[])
+ int do_iminfo(cmd_tbl_t *cmdtp, int flag, int argc, char * const argv[])
  {
        int     arg;
        ulong   addr;
        int     rcode = 0;
  
        if (argc < 2) {
-               return image_info (load_addr);
+               return image_info(load_addr);
        }
  
        for (arg = 1; arg < argc; ++arg) {
-               addr = simple_strtoul (argv[arg], NULL, 16);
-               if (image_info (addr) != 0)
+               addr = simple_strtoul(argv[arg], NULL, 16);
+               if (image_info(addr) != 0)
                        rcode = 1;
        }
        return rcode;
  }
  
- static int image_info (ulong addr)
+ static int image_info(ulong addr)
  {
        void *hdr = (void *)addr;
  
-       printf ("\n## Checking Image at %08lx ...\n", addr);
+       printf("\n## Checking Image at %08lx ...\n", addr);
  
-       switch (genimg_get_format (hdr)) {
+       switch (genimg_get_format(hdr)) {
        case IMAGE_FORMAT_LEGACY:
-               puts ("   Legacy image found\n");
-               if (!image_check_magic (hdr)) {
-                       puts ("   Bad Magic Number\n");
+               puts("   Legacy image found\n");
+               if (!image_check_magic(hdr)) {
+                       puts("   Bad Magic Number\n");
                        return 1;
                }
  
-               if (!image_check_hcrc (hdr)) {
-                       puts ("   Bad Header Checksum\n");
+               if (!image_check_hcrc(hdr)) {
+                       puts("   Bad Header Checksum\n");
                        return 1;
                }
  
-               image_print_contents (hdr);
+               image_print_contents(hdr);
  
-               puts ("   Verifying Checksum ... ");
-               if (!image_check_dcrc (hdr)) {
-                       puts ("   Bad Data CRC\n");
+               puts("   Verifying Checksum ... ");
+               if (!image_check_dcrc(hdr)) {
+                       puts("   Bad Data CRC\n");
                        return 1;
                }
-               puts ("OK\n");
+               puts("OK\n");
                return 0;
  #if defined(CONFIG_FIT)
        case IMAGE_FORMAT_FIT:
-               puts ("   FIT image found\n");
+               puts("   FIT image found\n");
  
-               if (!fit_check_format (hdr)) {
-                       puts ("Bad FIT image format!\n");
+               if (!fit_check_format(hdr)) {
+                       puts("Bad FIT image format!\n");
                        return 1;
                }
  
-               fit_print_contents (hdr);
+               fit_print_contents(hdr);
  
-               if (!fit_all_image_check_hashes (hdr)) {
-                       puts ("Bad hash in FIT image!\n");
+               if (!fit_all_image_check_hashes(hdr)) {
+                       puts("Bad hash in FIT image!\n");
                        return 1;
                }
  
                return 0;
  #endif
        default:
-               puts ("Unknown image format!\n");
+               puts("Unknown image format!\n");
                break;
        }
  
@@@ -1127,7 -1163,7 +1170,7 @@@ U_BOOT_CMD
  /* imls - list all images found in flash */
  /*******************************************************************/
  #if defined(CONFIG_CMD_IMLS)
- int do_imls (cmd_tbl_t *cmdtp, int flag, int argc, char *argv[])
+ int do_imls(cmd_tbl_t *cmdtp, int flag, int argc, char * const argv[])
  {
        flash_info_t *info;
        int i, j;
                        if (!hdr)
                                goto next_sector;
  
-                       switch (genimg_get_format (hdr)) {
+                       switch (genimg_get_format(hdr)) {
                        case IMAGE_FORMAT_LEGACY:
-                               if (!image_check_hcrc (hdr))
+                               if (!image_check_hcrc(hdr))
                                        goto next_sector;
  
-                               printf ("Legacy Image at %08lX:\n", (ulong)hdr);
-                               image_print_contents (hdr);
+                               printf("Legacy Image at %08lX:\n", (ulong)hdr);
+                               image_print_contents(hdr);
  
-                               puts ("   Verifying Checksum ... ");
-                               if (!image_check_dcrc (hdr)) {
-                                       puts ("Bad Data CRC\n");
+                               puts("   Verifying Checksum ... ");
+                               if (!image_check_dcrc(hdr)) {
+                                       puts("Bad Data CRC\n");
                                } else {
-                                       puts ("OK\n");
+                                       puts("OK\n");
                                }
                                break;
  #if defined(CONFIG_FIT)
                        case IMAGE_FORMAT_FIT:
-                               if (!fit_check_format (hdr))
+                               if (!fit_check_format(hdr))
                                        goto next_sector;
  
-                               printf ("FIT Image at %08lX:\n", (ulong)hdr);
-                               fit_print_contents (hdr);
+                               printf("FIT Image at %08lX:\n", (ulong)hdr);
+                               fit_print_contents(hdr);
                                break;
  #endif
                        default:
@@@ -1193,34 -1229,35 +1236,35 @@@ U_BOOT_CMD
  /* helper routines */
  /*******************************************************************/
  #ifdef CONFIG_SILENT_CONSOLE
- static void fixup_silent_linux ()
+ static void fixup_silent_linux(void)
  {
        char buf[256], *start, *end;
-       char *cmdline = getenv ("bootargs");
+       char *cmdline = getenv("bootargs");
  
        /* Only fix cmdline when requested */
        if (!(gd->flags & GD_FLG_SILENT))
                return;
  
-       debug ("before silent fix-up: %s\n", cmdline);
+       debug("before silent fix-up: %s\n", cmdline);
        if (cmdline) {
-               if ((start = strstr (cmdline, "console=")) != NULL) {
-                       end = strchr (start, ' ');
-                       strncpy (buf, cmdline, (start - cmdline + 8));
+               start = strstr(cmdline, "console=");
+               if (start) {
+                       end = strchr(start, ' ');
+                       strncpy(buf, cmdline, (start - cmdline + 8));
                        if (end)
-                               strcpy (buf + (start - cmdline + 8), end);
+                               strcpy(buf + (start - cmdline + 8), end);
                        else
                                buf[start - cmdline + 8] = '\0';
                } else {
-                       strcpy (buf, cmdline);
-                       strcat (buf, " console=");
+                       strcpy(buf, cmdline);
+                       strcat(buf, " console=");
                }
        } else {
-               strcpy (buf, "console=");
+               strcpy(buf, "console=");
        }
  
-       setenv ("bootargs", buf);
-       debug ("after silent fix-up: %s\n", buf);
+       setenv("bootargs", buf);
+       debug("after silent fix-up: %s\n", buf);
  }
  #endif /* CONFIG_SILENT_CONSOLE */
  
  /*******************************************************************/
  
  #ifdef CONFIG_BOOTM_NETBSD
- static int do_bootm_netbsd (int flag, int argc, char *argv[],
+ static int do_bootm_netbsd(int flag, int argc, char * const argv[],
                            bootm_headers_t *images)
  {
        void (*loader)(bd_t *, image_header_t *, char *, char *);
  
  #if defined(CONFIG_FIT)
        if (!images->legacy_hdr_valid) {
-               fit_unsupported_reset ("NetBSD");
+               fit_unsupported_reset("NetBSD");
                return 1;
        }
  #endif
         * address of the original image header.
         */
        os_hdr = NULL;
-       if (image_check_type (&images->legacy_hdr_os_copy, IH_TYPE_MULTI)) {
-               image_multi_getimg (hdr, 1, &kernel_data, &kernel_len);
+       if (image_check_type(&images->legacy_hdr_os_copy, IH_TYPE_MULTI)) {
+               image_multi_getimg(hdr, 1, &kernel_data, &kernel_len);
                if (kernel_len)
                        os_hdr = hdr;
        }
  
        consdev = "";
- #if   defined (CONFIG_8xx_CONS_SMC1)
+ #if   defined(CONFIG_8xx_CONS_SMC1)
        consdev = "smc1";
- #elif defined (CONFIG_8xx_CONS_SMC2)
+ #elif defined(CONFIG_8xx_CONS_SMC2)
        consdev = "smc2";
- #elif defined (CONFIG_8xx_CONS_SCC2)
+ #elif defined(CONFIG_8xx_CONS_SCC2)
        consdev = "scc2";
- #elif defined (CONFIG_8xx_CONS_SCC3)
+ #elif defined(CONFIG_8xx_CONS_SCC3)
        consdev = "scc3";
  #endif
  
                int   i;
  
                for (i = 2, len = 0; i < argc; i += 1)
-                       len += strlen (argv[i]) + 1;
-               cmdline = malloc (len);
+                       len += strlen(argv[i]) + 1;
+               cmdline = malloc(len);
  
                for (i = 2, len = 0; i < argc; i += 1) {
                        if (i > 2)
                                cmdline[len++] = ' ';
-                       strcpy (&cmdline[len], argv[i]);
-                       len += strlen (argv[i]);
+                       strcpy(&cmdline[len], argv[i]);
+                       len += strlen(argv[i]);
                }
-       } else if ((cmdline = getenv ("bootargs")) == NULL) {
+       } else if ((cmdline = getenv("bootargs")) == NULL) {
                cmdline = "";
        }
  
        loader = (void (*)(bd_t *, image_header_t *, char *, char *))images->ep;
  
-       printf ("## Transferring control to NetBSD stage-2 loader (at address %08lx) ...\n",
+       printf("## Transferring control to NetBSD stage-2 loader "
+               "(at address %08lx) ...\n",
                (ulong)loader);
  
-       show_boot_progress (15);
+       show_boot_progress(15);
  
        /*
         * NetBSD Stage-2 Loader Parameters:
         *   r5: console device
         *   r6: boot args string
         */
-       (*loader) (gd->bd, os_hdr, consdev, cmdline);
+       (*loader)(gd->bd, os_hdr, consdev, cmdline);
  
        return 1;
  }
  #endif /* CONFIG_BOOTM_NETBSD*/
  
  #ifdef CONFIG_LYNXKDI
- static int do_bootm_lynxkdi (int flag, int argc, char *argv[],
+ static int do_bootm_lynxkdi(int flag, int argc, char * const argv[],
                             bootm_headers_t *images)
  {
        image_header_t *hdr = &images->legacy_hdr_os_copy;
  
  #if defined(CONFIG_FIT)
        if (!images->legacy_hdr_valid) {
-               fit_unsupported_reset ("Lynx");
+               fit_unsupported_reset("Lynx");
                return 1;
        }
  #endif
  
-       lynxkdi_boot ((image_header_t *)hdr);
+       lynxkdi_boot((image_header_t *)hdr);
  
        return 1;
  }
  #endif /* CONFIG_LYNXKDI */
  
  #ifdef CONFIG_BOOTM_RTEMS
- static int do_bootm_rtems (int flag, int argc, char *argv[],
+ static int do_bootm_rtems(int flag, int argc, char * const argv[],
                           bootm_headers_t *images)
  {
        void (*entry_point)(bd_t *);
  
  #if defined(CONFIG_FIT)
        if (!images->legacy_hdr_valid) {
-               fit_unsupported_reset ("RTEMS");
+               fit_unsupported_reset("RTEMS");
                return 1;
        }
  #endif
  
        entry_point = (void (*)(bd_t *))images->ep;
  
-       printf ("## Transferring control to RTEMS (at address %08lx) ...\n",
+       printf("## Transferring control to RTEMS (at address %08lx) ...\n",
                (ulong)entry_point);
  
-       show_boot_progress (15);
+       show_boot_progress(15);
  
        /*
         * RTEMS Parameters:
  }
  #endif /* CONFIG_BOOTM_RTEMS */
  
+ #if defined(CONFIG_BOOTM_OSE)
+ static int do_bootm_ose(int flag, int argc, char * const argv[],
+                          bootm_headers_t *images)
+ {
+       void (*entry_point)(void);
+       if ((flag != 0) && (flag != BOOTM_STATE_OS_GO))
+               return 1;
+ #if defined(CONFIG_FIT)
+       if (!images->legacy_hdr_valid) {
+               fit_unsupported_reset("OSE");
+               return 1;
+       }
+ #endif
+       entry_point = (void (*)(void))images->ep;
+       printf("## Transferring control to OSE (at address %08lx) ...\n",
+               (ulong)entry_point);
+       show_boot_progress(15);
+       /*
+        * OSE Parameters:
+        *   None
+        */
+       (*entry_point)();
+       return 1;
+ }
+ #endif /* CONFIG_BOOTM_OSE */
  #if defined(CONFIG_CMD_ELF)
- static int do_bootm_vxworks (int flag, int argc, char *argv[],
+ static int do_bootm_vxworks(int flag, int argc, char * const argv[],
                             bootm_headers_t *images)
  {
        char str[80];
  
  #if defined(CONFIG_FIT)
        if (!images->legacy_hdr_valid) {
-               fit_unsupported_reset ("VxWorks");
+               fit_unsupported_reset("VxWorks");
                return 1;
        }
  #endif
        return 1;
  }
  
- static int do_bootm_qnxelf(int flag, int argc, char *argv[],
+ static int do_bootm_qnxelf(int flag, int argc, char * const argv[],
                            bootm_headers_t *images)
  {
        char *local_args[2];
  
  #if defined(CONFIG_FIT)
        if (!images->legacy_hdr_valid) {
-               fit_unsupported_reset ("QNX");
+               fit_unsupported_reset("QNX");
                return 1;
        }
  #endif
  #endif
  
  #ifdef CONFIG_INTEGRITY
- static int do_bootm_integrity (int flag, int argc, char *argv[],
+ static int do_bootm_integrity(int flag, int argc, char * const argv[],
                           bootm_headers_t *images)
  {
        void (*entry_point)(void);
  
  #if defined(CONFIG_FIT)
        if (!images->legacy_hdr_valid) {
-               fit_unsupported_reset ("INTEGRITY");
+               fit_unsupported_reset("INTEGRITY");
                return 1;
        }
  #endif
  
        entry_point = (void (*)(void))images->ep;
  
-       printf ("## Transferring control to INTEGRITY (at address %08lx) ...\n",
+       printf("## Transferring control to INTEGRITY (at address %08lx) ...\n",
                (ulong)entry_point);
  
-       show_boot_progress (15);
+       show_boot_progress(15);
  
        /*
         * INTEGRITY Parameters:
diff --combined common/cmd_mmc.c
index 139b1e82201c54bb827b5f1f3e1b52e8c5c1b61d,8f13c22d9baba16c2ab6a975a129901987618b33..aea8fe496595fd40b63279912046cf9f3328c7b9
  #include <command.h>
  #include <mmc.h>
  
- #ifndef CONFIG_GENERIC_MMC
  static int curr_device = -1;
- int do_mmc (cmd_tbl_t *cmdtp, int flag, int argc, char *argv[])
+ #ifndef CONFIG_GENERIC_MMC
+ int do_mmc (cmd_tbl_t *cmdtp, int flag, int argc, char * const argv[])
  {
        int dev;
  
-       if (argc < 2) {
-               cmd_usage(cmdtp);
-               return 1;
-       }
+       if (argc < 2)
+               return cmd_usage(cmdtp);
  
        if (strcmp(argv[1], "init") == 0) {
                if (argc == 2) {
@@@ -46,8 -43,7 +43,7 @@@
                } else if (argc == 3) {
                        dev = (int)simple_strtoul(argv[2], NULL, 10);
                } else {
-                       cmd_usage(cmdtp);
-                       return 1;
+                       return cmd_usage(cmdtp);
                }
  
                if (mmc_legacy_init(dev) != 0) {
  #endif
                        curr_device = dev;
                } else {
-                       cmd_usage(cmdtp);
-                       return 1;
+                       return cmd_usage(cmdtp);
                }
  
                printf("mmc%d is current device\n", curr_device);
        } else {
-               cmd_usage(cmdtp);
-               return 1;
+               return cmd_usage(cmdtp);
        }
  
        return 0;
@@@ -93,33 -87,12 +87,42 @@@ U_BOOT_CMD
  );
  #else /* !CONFIG_GENERIC_MMC */
  
++<<<<<<< HEAD
 +#ifdef CONFIG_BOOT_PARTITION_ACCESS
 +#define MMC_PARTITION_SWITCH(mmc, part, enable_boot) \
 +      do { \
 +              if (IS_SD(mmc)) {       \
 +                      if (part > 1)   {\
 +                              printf( \
 +                              "\nError: SD partition can only be 0 or 1\n");\
 +                              return 1;       \
 +                      }       \
 +                      if (sd_switch_partition(mmc, part) < 0) {       \
 +                              if (part > 0) { \
 +                                      printf("\nError: Unable to switch SD "\
 +                                      "partition\n");\
 +                                      return 1;       \
 +                              }       \
 +                      }       \
 +              } else {        \
 +                      if (mmc_switch_partition(mmc, part, enable_boot) \
 +                              < 0) {  \
 +                              printf("Error: Fail to switch " \
 +                                      "partition to %d\n", part);     \
 +                              return 1;       \
 +                      }       \
 +              } \
 +      } while (0)
 +#endif
 +
++=======
+ enum mmc_state {
+       MMC_INVALID,
+       MMC_READ,
+       MMC_WRITE,
+       MMC_ERASE,
+ };
++>>>>>>> 9a3aae22edf1eda6326cc51c28631ca5c23b7706
  static void print_mmcinfo(struct mmc *mmc)
  {
        printf("Device: %s\n", mmc->name);
                        (mmc->version >> 4) & 0xf, mmc->version & 0xf);
  
        printf("High Capacity: %s\n", mmc->high_capacity ? "Yes" : "No");
-       printf("Capacity: %lld\n", mmc->capacity);
+       puts("Capacity: ");
+       print_size(mmc->capacity, "\n");
  
- #ifdef CONFIG_EMMC_DDR_MODE
-       if (mmc->bus_width == EMMC_MODE_4BIT_DDR ||
-               mmc->bus_width == EMMC_MODE_8BIT_DDR)
-               printf("Bus Width: %d-bit DDR\n", (mmc->bus_width >> 8));
-       else
- #endif
        printf("Bus Width: %d-bit\n", mmc->bus_width);
- #ifdef CONFIG_BOOT_PARTITION_ACCESS
-       if (mmc->boot_size_mult == 0) {
-               printf("Boot Partition Size: %s\n", "No boot partition available");
-       } else {
-               printf("Boot Partition Size: %5dKB\n", mmc->boot_size_mult * 128);
-               printf("Current Partition for boot: ");
-               switch (mmc->boot_config & EXT_CSD_BOOT_PARTITION_ENABLE_MASK) {
-               case EXT_CSD_BOOT_PARTITION_DISABLE:
-                       printf("Not bootable\n");
-                       break;
-               case EXT_CSD_BOOT_PARTITION_PART1:
-                       printf("Boot partition 1\n");
-                       break;
-               case EXT_CSD_BOOT_PARTITION_PART2:
-                       printf("Boot partition 2\n");
-                       break;
-               case EXT_CSD_BOOT_PARTITION_USER:
-                       printf("User area\n");
-                       break;
-               default:
-                       printf("Unknown\n");
-                       break;
-               }
-       }
- #endif
  }
  
- int do_mmcinfo (cmd_tbl_t *cmdtp, int flag, int argc, char *argv[])
+ int do_mmcinfo (cmd_tbl_t *cmdtp, int flag, int argc, char * const argv[])
  {
        struct mmc *mmc;
-       int dev_num;
  
-       if (argc < 2)
-               dev_num = 0;
-       else
-               dev_num = simple_strtoul(argv[1], NULL, 0);
+       if (curr_device < 0) {
+               if (get_mmc_num() > 0)
+                       curr_device = 0;
+               else {
+                       puts("No MMC device available\n");
+                       return 1;
+               }
+       }
  
-       mmc = find_mmc_device(dev_num);
+       mmc = find_mmc_device(curr_device);
  
        if (mmc) {
-       }
++<<<<<<< HEAD
 +              if (mmc_init(mmc))
 +                      puts("MMC card init failed!\n");
 +              else
 +                      print_mmcinfo(mmc);
++=======
+               mmc_init(mmc);
  
-       return 0;
+               print_mmcinfo(mmc);
+               return 0;
+       } else {
+               printf("no mmc device at slot %x\n", curr_device);
+               return 1;
++>>>>>>> 9a3aae22edf1eda6326cc51c28631ca5c23b7706
+       }
  }
  
++<<<<<<< HEAD
 +U_BOOT_CMD(mmcinfo, 2, 0, do_mmcinfo,
 +      "mmcinfo <dev num>-- display MMC info",
++=======
+ U_BOOT_CMD(
+       mmcinfo, 1, 0, do_mmcinfo,
+       "display MMC info",
+       "    - device number of the device to dislay info of\n"
++>>>>>>> 9a3aae22edf1eda6326cc51c28631ca5c23b7706
        ""
  );
  
- int do_mmcops(cmd_tbl_t *cmdtp, int flag, int argc, char *argv[])
+ int do_mmcops(cmd_tbl_t *cmdtp, int flag, int argc, char * const argv[])
  {
++<<<<<<< HEAD
 +      int rc = 0;
 +#ifdef CONFIG_BOOT_PARTITION_ACCESS
 +      u32 part = 0;
 +#endif
++=======
+       enum mmc_state state;
++>>>>>>> 9a3aae22edf1eda6326cc51c28631ca5c23b7706
  
-       switch (argc) {
-       case 3:
-               if (strcmp(argv[1], "rescan") == 0) {
-                       int dev = simple_strtoul(argv[2], NULL, 10);
-                       struct mmc *mmc = find_mmc_device(dev);
+       if (argc < 2)
+               return cmd_usage(cmdtp);
  
-                       if (!mmc)
-                               return 1;
+       if (curr_device < 0) {
+               if (get_mmc_num() > 0)
+                       curr_device = 0;
+               else {
+                       puts("No MMC device available\n");
+                       return 1;
+               }
+       }
  
-                       mmc_init(mmc);
+       if (strcmp(argv[1], "rescan") == 0) {
+               struct mmc *mmc = find_mmc_device(curr_device);
  
-                       return 0;
+               if (!mmc) {
+                       printf("no mmc device at slot %x\n", curr_device);
+                       return 1;
                }
  
-       case 0:
-       case 1:
-       case 4:
-               printf("Usage:\n%s\n", cmdtp->usage);
-               return 1;
+               mmc->has_init = 0;
  
-       case 2:
-               if (!strcmp(argv[1], "list")) {
-                       print_mmc_devices('\n');
+               if (mmc_init(mmc))
+                       return 1;
+               else
                        return 0;
+       } else if (strncmp(argv[1], "part", 4) == 0) {
+               block_dev_desc_t *mmc_dev;
+               struct mmc *mmc = find_mmc_device(curr_device);
+               if (!mmc) {
+                       printf("no mmc device at slot %x\n", curr_device);
+                       return 1;
                }
+               mmc_init(mmc);
+               mmc_dev = mmc_get_dev(curr_device);
+               if (mmc_dev != NULL &&
+                               mmc_dev->type != DEV_TYPE_UNKNOWN) {
+                       print_part(mmc_dev);
+                       return 0;
+               }
+               puts("get mmc type error!\n");
                return 1;
++<<<<<<< HEAD
 +#ifdef CONFIG_BOOT_PARTITION_ACCESS
 +      case 7: /* Fall through */
 +              part = simple_strtoul(argv[6], NULL, 10);
 +#endif
 +      default: /* at least 5 args */
 +              if (strcmp(argv[1], "read") == 0) {
 +                      int dev = simple_strtoul(argv[2], NULL, 10);
 +                      void *addr = (void *)simple_strtoul(argv[3], NULL, 16);
 +                      u32 cnt = simple_strtoul(argv[5], NULL, 16);
 +                      u32 n;
 +                      u32 blk = simple_strtoul(argv[4], NULL, 16);
 +
 +                      struct mmc *mmc = find_mmc_device(dev);
 +
 +                      if (!mmc)
++=======
+       } else if (strcmp(argv[1], "list") == 0) {
+               print_mmc_devices('\n');
+               return 0;
+       } else if (strcmp(argv[1], "dev") == 0) {
+               int dev, part = -1;
+               struct mmc *mmc;
+               if (argc == 2)
+                       dev = curr_device;
+               else if (argc == 3)
+                       dev = simple_strtoul(argv[2], NULL, 10);
+               else if (argc == 4) {
+                       dev = (int)simple_strtoul(argv[2], NULL, 10);
+                       part = (int)simple_strtoul(argv[3], NULL, 10);
+                       if (part > PART_ACCESS_MASK) {
+                               printf("#part_num shouldn't be larger"
+                                       " than %d\n", PART_ACCESS_MASK);
++>>>>>>> 9a3aae22edf1eda6326cc51c28631ca5c23b7706
                                return 1;
+                       }
+               } else
+                       return cmd_usage(cmdtp);
  
++<<<<<<< HEAD
 +#ifdef CONFIG_BOOT_PARTITION_ACCESS
 +                      printf("\nMMC read: dev # %d, block # %d, "
 +                              "count %d partition # %d ... \n",
 +                              dev, blk, cnt, part);
 +#else
 +                      printf("\nMMC read: dev # %d, block # %d,"
 +                              "count %d ... \n", dev, blk, cnt);
 +#endif
 +
 +                      mmc_init(mmc);
 +
 +#ifdef CONFIG_BOOT_PARTITION_ACCESS
 +                      if (((mmc->boot_config &
 +                              EXT_CSD_BOOT_PARTITION_ACCESS_MASK) != part)
 +                              || IS_SD(mmc)) {
 +                              /*
 +                               * After mmc_init, we now know whether
 +                               * this is a eSD/eMMC which support boot
 +                               * partition
 +                               */
 +                              MMC_PARTITION_SWITCH(mmc, part, 0);
 +                      }
 +#endif
 +
 +                      n = mmc->block_dev.block_read(dev, blk, cnt, addr);
++=======
+               mmc = find_mmc_device(dev);
+               if (!mmc) {
+                       printf("no mmc device at slot %x\n", dev);
+                       return 1;
+               }
++>>>>>>> 9a3aae22edf1eda6326cc51c28631ca5c23b7706
  
-                       /* flush cache after read */
-                       flush_cache((ulong)addr, cnt * 512); /* FIXME */
+               mmc_init(mmc);
+               if (part != -1) {
+                       int ret;
+                       if (mmc->part_config == MMCPART_NOAVAILABLE) {
+                               printf("Card doesn't support part_switch\n");
+                               return 1;
+                       }
  
++<<<<<<< HEAD
 +                      printf("%d blocks read: %s\n",
 +                              n, (n==cnt) ? "OK" : "ERROR");
 +                      return (n == cnt) ? 0 : 1;
 +              } else if (strcmp(argv[1], "write") == 0) {
 +                      int dev = simple_strtoul(argv[2], NULL, 10);
 +                      void *addr = (void *)simple_strtoul(argv[3], NULL, 16);
 +                      u32 cnt = simple_strtoul(argv[5], NULL, 16);
 +                      u32 n;
 +
 +                      struct mmc *mmc = find_mmc_device(dev);
++=======
+                       if (part != mmc->part_num) {
+                               ret = mmc_switch_part(dev, part);
+                               if (!ret)
+                                       mmc->part_num = part;
++>>>>>>> 9a3aae22edf1eda6326cc51c28631ca5c23b7706
+                               printf("switch to partions #%d, %s\n",
+                                               part, (!ret) ? "OK" : "ERROR");
+                       }
+               }
+               curr_device = dev;
+               if (mmc->part_config == MMCPART_NOAVAILABLE)
+                       printf("mmc%d is current device\n", curr_device);
+               else
+                       printf("mmc%d(part %d) is current device\n",
+                               curr_device, mmc->part_num);
  
-                       int blk = simple_strtoul(argv[4], NULL, 16);
-                       if (!mmc)
-                               return 1;
+               return 0;
+       }
  
++<<<<<<< HEAD
 +#ifdef CONFIG_BOOT_PARTITION_ACCESS
 +                      printf("\nMMC write: dev # %d, block # %d, "
 +                              "count %d, partition # %d ... \n",
 +                              dev, blk, cnt, part);
 +#else
 +                      printf("\nMMC write: dev # %d, block # %d, "
 +                              "count %d ... \n",
 +                              dev, blk, cnt);
 +#endif
++=======
+       if (strcmp(argv[1], "read") == 0)
+               state = MMC_READ;
+       else if (strcmp(argv[1], "write") == 0)
+               state = MMC_WRITE;
+       else if (strcmp(argv[1], "erase") == 0)
+               state = MMC_ERASE;
+       else
+               state = MMC_INVALID;
+       if (state != MMC_INVALID) {
+               struct mmc *mmc = find_mmc_device(curr_device);
+               int idx = 2;
+               u32 blk, cnt, n;
+               void *addr;
+               if (state != MMC_ERASE) {
+                       addr = (void *)simple_strtoul(argv[idx], NULL, 16);
+                       ++idx;
+               } else
+                       addr = 0;
+               blk = simple_strtoul(argv[idx], NULL, 16);
+               cnt = simple_strtoul(argv[idx + 1], NULL, 16);
+               if (!mmc) {
+                       printf("no mmc device at slot %x\n", curr_device);
+                       return 1;
+               }
++>>>>>>> 9a3aae22edf1eda6326cc51c28631ca5c23b7706
  
-                       mmc_init(mmc);
+               printf("\nMMC %s: dev # %d, block # %d, count %d ... ",
+                               argv[1], curr_device, blk, cnt);
  
-                       printf("%d blocks written: %s\n",
-                               n, (n == cnt) ? "OK" : "ERROR");
-                       return (n == cnt) ? 0 : 1;
-               } else {
-                       printf("Usage:\n%s\n", cmdtp->usage);
-                       rc = 1;
++<<<<<<< HEAD
 +#ifdef CONFIG_BOOT_PARTITION_ACCESS
 +                      if (((mmc->boot_config &
 +                              EXT_CSD_BOOT_PARTITION_ACCESS_MASK) != part)
 +                              || IS_SD(mmc)) {
 +                              /*
 +                               * After mmc_init, we now know whether this is a
 +                               * eSD/eMMC which support boot partition
 +                               */
 +                              MMC_PARTITION_SWITCH(mmc, part, 1);
 +                      }
 +#endif
 +
 +                      n = mmc->block_dev.block_write(dev, blk, cnt, addr);
++=======
+               mmc_init(mmc);
++>>>>>>> 9a3aae22edf1eda6326cc51c28631ca5c23b7706
+               switch (state) {
+               case MMC_READ:
+                       n = mmc->block_dev.block_read(curr_device, blk,
+                                                     cnt, addr);
+                       /* flush cache after read */
+                       flush_cache((ulong)addr, cnt * 512); /* FIXME */
+                       break;
+               case MMC_WRITE:
+                       n = mmc->block_dev.block_write(curr_device, blk,
+                                                     cnt, addr);
+                       break;
+               case MMC_ERASE:
+                       n = mmc->block_dev.block_erase(curr_device, blk, cnt);
+                       break;
+               default:
+                       BUG();
                }
  
-               return rc;
+               printf("%d blocks %s: %s\n",
+                               n, argv[1], (n == cnt) ? "OK" : "ERROR");
+               return (n == cnt) ? 0 : 1;
        }
+       return cmd_usage(cmdtp);
  }
  
- #ifndef CONFIG_BOOT_PARTITION_ACCESS
  U_BOOT_CMD(
        mmc, 6, 1, do_mmcops,
        "MMC sub system",
++<<<<<<< HEAD
 +      "mmc read <device num> addr blk# cnt\n"
 +      "mmc write <device num> addr blk# cnt\n"
 +      "mmc rescan <device num>\n"
++=======
+       "read addr blk# cnt\n"
+       "mmc write addr blk# cnt\n"
+       "mmc erase blk# cnt\n"
+       "mmc rescan\n"
+       "mmc part - lists available partition on current mmc device\n"
+       "mmc dev [dev] [part] - show or set current mmc device [partition]\n"
++>>>>>>> 9a3aae22edf1eda6326cc51c28631ca5c23b7706
 +      "mmc list - lists available devices");
 +#else
 +U_BOOT_CMD(
 +      mmc, 7, 1, do_mmcops,
 +      "MMC sub system",
 +      "mmc read <device num> addr blk# cnt [partition]\n"
 +      "mmc write <device num> addr blk# cnt [partition]\n"
 +      "mmc rescan <device num>\n"
        "mmc list - lists available devices");
  #endif
- #endif
diff --combined common/cmd_sata.c
index cd21f2a9901d0ded0085abac61c169ecce607b82,f62c0cb4f289887b01deeab12f6967a8f9665f64..6a9282139ef7f228dec1cbe4bb7c983bb115b4aa
@@@ -1,7 -1,4 +1,7 @@@
  /*
 + * (C) Copyright 2008-2010 Freescale Semiconductor, Inc.
 + * Terry Lv <r65388@freescale.com>
 + *
   * Copyright (C) 2000-2005, DENX Software Engineering
   *            Wolfgang Denk <wd@denx.de>
   * Copyright (C) Procsys. All rights reserved.
@@@ -51,24 -48,23 +51,26 @@@ int __sata_initialize(void
                sata_dev_desc[i].block_write = sata_write;
  
                rc = init_sata(i);
 -              rc = scan_sata(i);
 -              if ((sata_dev_desc[i].lba > 0) && (sata_dev_desc[i].blksz > 0))
 -                      init_part(&sata_dev_desc[i]);
 +              if (!rc) {
 +                      rc = scan_sata(i);
 +                      if ((sata_dev_desc[i].lba > 0) &&
 +                              (sata_dev_desc[i].blksz > 0))
 +                              init_part(&sata_dev_desc[i]);
 +              }
        }
        sata_curr_device = 0;
        return rc;
  }
  int sata_initialize(void) __attribute__((weak,alias("__sata_initialize")));
  
+ #ifdef CONFIG_PARTITIONS
  block_dev_desc_t *sata_get_dev(int dev)
  {
        return (dev < CONFIG_SYS_SATA_MAX_DEVICE) ? &sata_dev_desc[dev] : NULL;
  }
+ #endif
  
- int do_sata(cmd_tbl_t *cmdtp, int flag, int argc, char *argv[])
+ int do_sata(cmd_tbl_t *cmdtp, int flag, int argc, char * const argv[])
  {
        int rc = 0;
  
@@@ -83,8 -79,7 +85,7 @@@
        switch (argc) {
        case 0:
        case 1:
-               cmd_usage(cmdtp);
-               return 1;
+               return cmd_usage(cmdtp);
        case 2:
                if (strncmp(argv[1],"inf", 3) == 0) {
                        int i;
                        }
                        return rc;
                }
-               cmd_usage(cmdtp);
-               return 1;
+               return cmd_usage(cmdtp);
        case 3:
                if (strncmp(argv[1], "dev", 3) == 0) {
                        int dev = (int)simple_strtoul(argv[2], NULL, 10);
                        }
                        return rc;
                }
-               cmd_usage(cmdtp);
-               return 1;
+               return cmd_usage(cmdtp);
  
        default: /* at least 4 args */
                if (strcmp(argv[1], "read") == 0) {
                                n, (n == cnt) ? "OK" : "ERROR");
                        return (n == cnt) ? 0 : 1;
                } else {
-                       cmd_usage(cmdtp);
-                       rc = 1;
+                       return cmd_usage(cmdtp);
                }
  
                return rc;
diff --combined disk/part.c
index 139a923cfa52e81ab7c4723e17f7b534a66c2839,f07a17feb8a0e5e03663d986754e346779efe0ad..1bd6259a1a57f143fc86725d72466b47c347f99f
@@@ -51,9 -51,6 +51,9 @@@ static const struct block_drvr block_dr
  #if defined(CONFIG_CMD_IDE)
        { .name = "ide", .get_dev = ide_get_dev, },
  #endif
 +#if defined(CONFIG_CMD_PATA)
 +      { .name = "pata", .get_dev = pata_get_dev, },
 +#endif
  #if defined(CONFIG_CMD_SATA)
        {.name = "sata", .get_dev = sata_get_dev, },
  #endif
@@@ -81,10 -78,20 +81,20 @@@ block_dev_desc_t *get_dev(char* ifname
  {
        const struct block_drvr *drvr = block_drvr;
        block_dev_desc_t* (*reloc_get_dev)(int dev);
+       char *name;
  
+       name = drvr->name;
+ #ifdef CONFIG_NEEDS_MANUAL_RELOC
+       name += gd->reloc_off;
+ #endif
        while (drvr->name) {
-               reloc_get_dev = drvr->get_dev + gd->reloc_off;
-               if (strncmp(ifname, drvr->name, strlen(drvr->name)) == 0)
+               name = drvr->name;
+               reloc_get_dev = drvr->get_dev;
+ #ifdef CONFIG_NEEDS_MANUAL_RELOC
+               name += gd->reloc_off;
+               reloc_get_dev += gd->reloc_off;
+ #endif
+               if (strncmp(ifname, name, strlen(name)) == 0)
                        return reloc_get_dev(dev);
                drvr++;
        }
@@@ -98,7 -105,6 +108,7 @@@ block_dev_desc_t *get_dev(char* ifname
  #endif
  
  #if (defined(CONFIG_CMD_IDE) || \
 +      defined(CONFIG_CMD_PATA) || \
       defined(CONFIG_CMD_MG_DISK) || \
       defined(CONFIG_CMD_SATA) || \
       defined(CONFIG_CMD_SCSI) || \
  /*
   * reports device info to the user
   */
- void dev_print (block_dev_desc_t *dev_desc)
- {
  #ifdef CONFIG_LBA48
-       uint64_t lba512; /* number of blocks if 512bytes block size */
+ typedef uint64_t lba512_t;
  #else
      lbaint_t lba512;
typedef lbaint_t lba512_t;
  #endif
  
+ /*
+  * Overflowless variant of (block_count * mul_by / div_by)
+  * when div_by > mul_by
+  */
+ static lba512_t lba512_muldiv (lba512_t block_count, lba512_t mul_by, lba512_t div_by)
+ {
+       lba512_t bc_quot, bc_rem;
+       /* x * m / d == x / d * m + (x % d) * m / d */
+       bc_quot = block_count / div_by;
+       bc_rem  = block_count - div_by * bc_quot;
+       return bc_quot * mul_by + (bc_rem * mul_by) / div_by;
+ }
+ void dev_print (block_dev_desc_t *dev_desc)
+ {
+       lba512_t lba512; /* number of blocks if 512bytes block size */
        if (dev_desc->type == DEV_TYPE_UNKNOWN) {
                puts ("not available\n");
                return;
                lba = dev_desc->lba;
  
                lba512 = (lba * (dev_desc->blksz/512));
-               mb = (10 * lba512) / 2048;      /* 2048 = (1024 * 1024) / 512 MB */
                /* round to 1 digit */
+               mb = lba512_muldiv(lba512, 10, 2048);   /* 2048 = (1024 * 1024) / 512 MB */
                mb_quot = mb / 10;
                mb_rem  = mb - (10 * mb_quot);
  
                if (dev_desc->lba48)
                        printf ("            Supports 48-bit addressing\n");
  #endif
- #if defined(CONFIG_SYS_64BIT_LBA) && defined(CONFIG_SYS_64BIT_VSPRINTF)
+ #if defined(CONFIG_SYS_64BIT_LBA)
                printf ("            Capacity: %ld.%ld MB = %ld.%ld GB (%Ld x %ld)\n",
                        mb_quot, mb_rem,
                        gb_quot, gb_rem,
  #endif
  
  #if (defined(CONFIG_CMD_IDE) || \
 +      defined(CONFIG_CMD_PATA) || \
       defined(CONFIG_CMD_MG_DISK) || \
       defined(CONFIG_CMD_SATA) || \
       defined(CONFIG_CMD_SCSI) || \
@@@ -348,6 -371,9 +376,9 @@@ static void print_part_header (const ch
        case IF_TYPE_DOC:
                puts ("DOC");
                break;
+       case IF_TYPE_MMC:
+               puts ("MMC");
+               break;
        default:
                puts ("UNKNOWN");
                break;
diff --combined drivers/block/Makefile
index 1ce481e557594fe44ac6ca6ef169260646e435bc,98560ef76f36c198d1614f5c5f8ab90114fb2015..b9c20475c26e86ee34e77eec96073c585292df62
  
  include $(TOPDIR)/config.mk
  
- LIB   := $(obj)libblock.a
+ LIB   := $(obj)libblock.o
  
+ COBJS-$(CONFIG_SCSI_AHCI) += ahci.o
  COBJS-$(CONFIG_ATA_PIIX) += ata_piix.o
- COBJS-$(CONFIG_CMD_MG_DISK) += mg_disk.o
 +COBJS-$(CONFIG_DWC_AHSATA) += dwc_ahsata.o
  COBJS-$(CONFIG_FSL_SATA) += fsl_sata.o
- COBJS-$(CONFIG_IDE_SIL680) += sil680.o
+ COBJS-$(CONFIG_IDE_FTIDE020) += ftide020.o
  COBJS-$(CONFIG_LIBATA) += libata.o
+ COBJS-$(CONFIG_CMD_MG_DISK) += mg_disk.o
+ COBJS-$(CONFIG_MVSATA_IDE) += mvsata_ide.o
+ COBJS-$(CONFIG_MX51_PATA) += mxc_ata.o
  COBJS-$(CONFIG_PATA_BFIN) += pata_bfin.o
  COBJS-$(CONFIG_SATA_DWC) += sata_dwc.o
  COBJS-$(CONFIG_SATA_SIL3114) += sata_sil3114.o
- COBJS-$(CONFIG_SCSI_AHCI) += ahci.o
+ COBJS-$(CONFIG_SATA_SIL) += sata_sil.o
+ COBJS-$(CONFIG_IDE_SIL680) += sil680.o
  COBJS-$(CONFIG_SCSI_SYM53C8XX) += sym53c8xx.o
  COBJS-$(CONFIG_SYSTEMACE) += systemace.o
- COBJS-$(CONFIG_MXC_ATA) += mxc_ata.o
  
  COBJS := $(COBJS-y)
  SRCS  := $(COBJS:.o=.c)
@@@ -46,7 -48,7 +49,7 @@@ OBJS  := $(addprefix $(obj),$(COBJS)
  all:  $(LIB)
  
  $(LIB):       $(obj).depend $(OBJS)
-       $(AR) $(ARFLAGS) $@ $(OBJS)
+       $(call cmd_link_o_target, $(OBJS))
  
  #########################################################################
  
diff --combined drivers/input/Makefile
index fcf96430ef7a9f7bd9f9d5586040139e3adf5ad9,1f4dad35b53dcd26892e5586d62781dc17fb0541..3b671f5f243946e947c008fe19739c28e25851ce
  
  include $(TOPDIR)/config.mk
  
- LIB   := $(obj)libinput.a
+ LIB   := $(obj)libinput.o
  
  COBJS-$(CONFIG_I8042_KBD) += i8042.o
  ifdef CONFIG_PS2KBD
  COBJS-y += keyboard.o pc_keyb.o
  COBJS-$(CONFIG_PS2MULT) += ps2mult.o ps2ser.o
  endif
 +COBJS-${CONFIG_MXC_KPD} += mxc_keyb.o
  
  COBJS := $(COBJS-y)
  SRCS  := $(COBJS:.o=.c)
@@@ -39,7 -38,7 +39,7 @@@ OBJS  := $(addprefix $(obj),$(COBJS)
  all:  $(LIB)
  
  $(LIB):       $(obj).depend $(OBJS)
-       $(AR) $(ARFLAGS) $@ $(OBJS)
+       $(call cmd_link_o_target, $(OBJS))
  
  #########################################################################
  
diff --combined drivers/misc/Makefile
index 448b9cb020a3d2efc89dc55ac5cb61e5141f9747,a70970784c2f5992d805d9b29241fcba0e4051ae..35b13e658ab8252f3429ef68a4d1c132594a68be
  
  include $(TOPDIR)/config.mk
  
- LIB   := $(obj)libmisc.a
+ LIB   := $(obj)libmisc.o
  
  COBJS-$(CONFIG_ALI152X) += ali512x.o
  COBJS-$(CONFIG_DS4510)  += ds4510.o
  COBJS-$(CONFIG_FSL_LAW) += fsl_law.o
 +COBJS-$(CONFIG_IMX_IIM) += imx_iim.o
+ COBJS-$(CONFIG_GPIO_LED) += gpio_led.o
+ COBJS-$(CONFIG_FSL_MC9SDZ60) += mc9sdz60.o
  COBJS-$(CONFIG_NS87308) += ns87308.o
+ COBJS-$(CONFIG_PDSP188x) += pdsp188x.o
  COBJS-$(CONFIG_STATUS_LED) += status_led.o
  COBJS-$(CONFIG_TWL4030_LED) += twl4030_led.o
+ COBJS-$(CONFIG_PMIC) += pmic_core.o
+ COBJS-$(CONFIG_PMIC_FSL) += pmic_fsl.o
+ COBJS-$(CONFIG_PMIC_I2C) += pmic_i2c.o
+ COBJS-$(CONFIG_PMIC_SPI) += pmic_spi.o
+ COBJS-$(CONFIG_PMIC_MAX8998) += pmic_max8998.o
  
  COBJS := $(COBJS-y)
  SRCS  := $(COBJS:.o=.c)
@@@ -40,7 -47,7 +48,7 @@@ OBJS  := $(addprefix $(obj),$(COBJS)
  all:  $(LIB)
  
  $(LIB):       $(obj).depend $(OBJS)
-       $(AR) $(ARFLAGS) $@ $(OBJS)
+       $(call cmd_link_o_target, $(OBJS))
  
  #########################################################################
  
index cd0b76dca6f1fcc17bbb00743106f52c42b18b04,998fc73497caf4ca33e125ffafbb7b1d08b7d615..8227d205a829d66a5250cb7359043fc2ed672cd3
  
  include $(TOPDIR)/config.mk
  
- LIB   := $(obj)libnand.a
+ LIB   := $(obj)libnand.o
  
  ifdef CONFIG_CMD_NAND
+ ifdef CONFIG_SPL_BUILD
+ ifdef CONFIG_SPL_NAND_SIMPLE
+ COBJS-y += nand_spl_simple.o
+ endif
+ ifdef CONFIG_SPL_NAND_LOAD
+ COBJS-y       += nand_spl_load.o
+ endif
+ else
  COBJS-y += nand.o
- COBJS-y += nand_base.o
  COBJS-y += nand_bbt.o
- COBJS-y += nand_ecc.o
  COBJS-y += nand_ids.o
  COBJS-y += nand_util.o
+ endif
+ COBJS-$(CONFIG_MTD_ECC_SOFT) += nand_ecc.o
+ COBJS-y += nand_base.o
+ COBJS-$(CONFIG_NAND_ECC_BCH) += nand_bch.o
  
  COBJS-$(CONFIG_NAND_ATMEL) += atmel_nand.o
  COBJS-$(CONFIG_DRIVER_NAND_BFIN) += bfin_nand.o
  COBJS-$(CONFIG_NAND_DAVINCI) += davinci_nand.o
  COBJS-$(CONFIG_NAND_FSL_ELBC) += fsl_elbc_nand.o
+ COBJS-$(CONFIG_NAND_FSL_IFC) += fsl_ifc_nand.o
  COBJS-$(CONFIG_NAND_FSL_UPM) += fsl_upm.o
+ COBJS-$(CONFIG_NAND_JZ4740) += jz4740_nand.o
+ COBJS-$(CONFIG_NAND_KB9202) += kb9202_nand.o
  COBJS-$(CONFIG_NAND_KIRKWOOD) += kirkwood_nand.o
+ COBJS-$(CONFIG_NAND_KMETER1) += kmeter1_nand.o
  COBJS-$(CONFIG_NAND_MPC5121_NFC) += mpc5121_nfc.o
+ COBJS-$(CONFIG_NAND_MXC) += mxc_nand.o
+ COBJS-$(CONFIG_NAND_MXS) += mxs_nand.o
  COBJS-$(CONFIG_NAND_NDFC) += ndfc.o
  COBJS-$(CONFIG_NAND_NOMADIK) += nomadik.o
  COBJS-$(CONFIG_NAND_S3C2410) += s3c2410_nand.o
  COBJS-$(CONFIG_NAND_S3C64XX) += s3c64xx.o
+ COBJS-$(CONFIG_NAND_SPEAR) += spr_nand.o
  COBJS-$(CONFIG_NAND_OMAP_GPMC) += omap_gpmc.o
  COBJS-$(CONFIG_NAND_PLAT) += nand_plat.o
 +COBJS-$(CONFIG_MX31_NAND) += mx31_nand.o
 +COBJS-$(CONFIG_MXC_NAND) += mxc_nand.o nand_device_info.o
 +COBJS-$(CONFIG_MXS_NAND) += mxs_gpmi.o
  endif
  
  COBJS := $(COBJS-y)
@@@ -58,7 -72,7 +75,7 @@@ OBJS  := $(addprefix $(obj),$(COBJS)
  all:  $(LIB)
  
  $(LIB):       $(obj).depend $(OBJS)
-       $(AR) $(ARFLAGS) $@ $(OBJS)
+       $(call cmd_link_o_target, $(OBJS))
  
  #########################################################################
  
diff --combined drivers/mtd/spi/Makefile
index 9d92bf5a79b71ddb8365c78175f41a5481451668,90f83924e2bf23b9ab4c621495ca236c14a19acd..b82da5014125e21f63ada9f832f464088d5bcf8e
  
  include $(TOPDIR)/config.mk
  
- LIB   := $(obj)libspi_flash.a
+ LIB   := $(obj)libspi_flash.o
+ ifdef CONFIG_SPL_BUILD
+ COBJS-$(CONFIG_SPL_SPI_LOAD)  += spi_spl_load.o
+ endif
  
  COBJS-$(CONFIG_SPI_FLASH)     += spi_flash.o
  COBJS-$(CONFIG_SPI_FLASH_ATMEL)       += atmel.o
+ COBJS-$(CONFIG_SPI_FLASH_EON) += eon.o
  COBJS-$(CONFIG_SPI_FLASH_MACRONIX)    += macronix.o
  COBJS-$(CONFIG_SPI_FLASH_SPANSION)    += spansion.o
  COBJS-$(CONFIG_SPI_FLASH_SST) += sst.o
  COBJS-$(CONFIG_SPI_FLASH_STMICRO)     += stmicro.o
+ COBJS-$(CONFIG_SPI_FLASH_WINBOND)     += winbond.o
+ COBJS-$(CONFIG_SPI_FRAM_RAMTRON)      += ramtron.o
  COBJS-$(CONFIG_SPI_M95XXX) += eeprom_m95xxx.o
 +COBJS-$(CONFIG_SPI_FLASH_IMX) += imx_spi_nor.o
 +COBJS-$(CONFIG_SPI_FLASH_IMX_SST)     += imx_spi_nor_sst.o
 +COBJS-$(CONFIG_SPI_FLASH_IMX_ATMEL)   += imx_spi_nor_atmel.o
  
  COBJS := $(COBJS-y)
  SRCS  := $(COBJS:.o=.c)
@@@ -43,7 -47,7 +50,7 @@@ OBJS  := $(addprefix $(obj),$(COBJS)
  all:  $(LIB)
  
  $(LIB): $(obj).depend $(OBJS)
-       $(AR) $(ARFLAGS) $@ $(OBJS)
+       $(call cmd_link_o_target, $(OBJS))
  
  #########################################################################
  
diff --combined drivers/net/smc911x.h
index 02c33b3fbbe565df6072e8bed74df18f28eaac4a,a290073bb8b42814c8129aba4f25647c3ea93b7f..ff7e4f1ff5697dd10ae3f83fd26bacb77f7ffe01
@@@ -30,8 -30,7 +30,8 @@@
  #define DRIVERNAME "smc911x"
  
  #if defined (CONFIG_SMC911X_32_BIT) && \
 -      defined (CONFIG_SMC911X_16_BIT)
 +      defined (CONFIG_SMC911X_16_BIT) && \
 +      defined(CONFIG_SMC911X_CPLD)
  #error "SMC911X: Only one of CONFIG_SMC911X_32_BIT and \
        CONFIG_SMC911X_16_BIT shall be set"
  #endif
@@@ -63,19 -62,6 +63,19 @@@ static inline void smc911x_reg_write(st
        *(volatile u16 *)(dev->iobase + offset) = (u16)val;
        *(volatile u16 *)(dev->iobase + offset + 2) = (u16)(val >> 16);
  }
 +#elif defined(CONFIG_SMC911X_CPLD)
 +#include <asm/arch/imx_spi_cpld.h>
 +static inline u32 smc911x_reg_read(struct eth_device *dev, u32 offset)
 +{
 +      return cpld_reg_xfer(offset, 0x0, 1) | \
 +              (cpld_reg_xfer(offset + 0x2, 0x0, 1) << 16);
 +}
 +static void smc911x_reg_write(struct eth_device *dev,
 +                      u32 offset, u32 val)
 +{
 +      cpld_reg_xfer(offset, val, 0);
 +      cpld_reg_xfer(offset + 0x2, (val >> 16), 0);
 +}
  #else
  #error "SMC911X: undefined bus width"
  #endif /* CONFIG_SMC911X_16_BIT */
  #define WUCSR_MPEN                    0x00000002
  
  /* Chip ID values */
+ #define CHIP_89218    0x218a
  #define CHIP_9115     0x115
  #define CHIP_9116     0x116
  #define CHIP_9117     0x117
@@@ -416,6 -403,7 +417,7 @@@ struct chip_id 
  };
  
  static const struct chip_id chip_ids[] =  {
+       { CHIP_89218, "LAN89218" },
        { CHIP_9115, "LAN9115" },
        { CHIP_9116, "LAN9116" },
        { CHIP_9117, "LAN9117" },
@@@ -483,8 -471,11 +485,11 @@@ static void smc911x_reset(struct eth_de
  {
        int timeout;
  
-       /* Take out of PM setting first */
-       if (smc911x_reg_read(dev, PMT_CTRL) & PMT_CTRL_READY) {
+       /*
+        *  Take out of PM setting first
+        *  Device is already wake up if PMT_CTRL_READY bit is set
+        */
+       if ((smc911x_reg_read(dev, PMT_CTRL) & PMT_CTRL_READY) == 0) {
                /* Write to the bytetest will take out of powerdown */
                smc911x_reg_write(dev, BYTE_TEST, 0x0);
  
diff --combined drivers/spi/Makefile
index d8a1675a3bd078293e6e9f47eba76d02fb2fe807,c967d87834a43e6b47ed8c6d9601e18766da1d03..7477fe9cce358a4f3f51de59679eed7bbbb32c24
  
  include $(TOPDIR)/config.mk
  
- LIB   := $(obj)libspi.a
+ LIB   := $(obj)libspi.o
  
+ COBJS-$(CONFIG_ALTERA_SPI) += altera_spi.o
+ COBJS-$(CONFIG_ANDES_SPI) += andes_spi.o
+ COBJS-$(CONFIG_ARMADA100_SPI) += armada100_spi.o
  COBJS-$(CONFIG_ATMEL_DATAFLASH_SPI) += atmel_dataflash_spi.o
  COBJS-$(CONFIG_ATMEL_SPI) += atmel_spi.o
  COBJS-$(CONFIG_BFIN_SPI) += bfin_spi.o
  COBJS-$(CONFIG_CF_SPI) += cf_spi.o
+ COBJS-$(CONFIG_DAVINCI_SPI) += davinci_spi.o
  COBJS-$(CONFIG_KIRKWOOD_SPI) += kirkwood_spi.o
  COBJS-$(CONFIG_MPC52XX_SPI) += mpc52xx_spi.o
  COBJS-$(CONFIG_MPC8XXX_SPI) += mpc8xxx_spi.o
  COBJS-$(CONFIG_MXC_SPI) += mxc_spi.o
+ COBJS-$(CONFIG_MXS_SPI) += mxs_spi.o
+ COBJS-$(CONFIG_OC_TINY_SPI) += oc_tiny_spi.o
+ COBJS-$(CONFIG_OMAP3_SPI) += omap3_spi.o
  COBJS-$(CONFIG_SOFT_SPI) += soft_spi.o
++<<<<<<< HEAD
 +COBJS-$(CONFIG_IMX_ECSPI) += imx_ecspi.o
 +COBJS-$(CONFIG_IMX_CSPI) += imx_cspi.o
 +COBJS-$(CONFIG_IMX_SPI_PMIC) += imx_spi_pmic.o
 +COBJS-$(CONFIG_IMX_SPI_CPLD) += imx_spi_cpld.o
++=======
+ COBJS-$(CONFIG_SH_SPI) += sh_spi.o
+ COBJS-$(CONFIG_FSL_ESPI) += fsl_espi.o
+ COBJS-$(CONFIG_TEGRA2_SPI) += tegra2_spi.o
++>>>>>>> 9a3aae22edf1eda6326cc51c28631ca5c23b7706
  
  COBJS := $(COBJS-y)
  SRCS  := $(COBJS:.o=.c)
@@@ -46,7 -52,7 +59,7 @@@ OBJS  := $(addprefix $(obj),$(COBJS)
  all:  $(LIB)
  
  $(LIB):       $(obj).depend $(OBJS)
-       $(AR) $(ARFLAGS) $@ $(OBJS)
+       $(call cmd_link_o_target, $(OBJS))
  
  #########################################################################
  
diff --combined include/ahci.h
index 12f653a58d8e898083b2c9d9a0d8f3770e92afd0,465ea7fcbbb020d6384342076e42153fa8cc6616..4ebccc02e886e6614b9b285b2cf8db0ff31ce9ab
@@@ -1,7 -1,4 +1,7 @@@
  /*
 + * (C) Copyright 2008-2010 Freescale Semiconductor, Inc.
 + * Terry Lv <r65388@freescale.com>
 + *
   * Copyright (C) Freescale Semiconductor, Inc. 2006.
   * Author: Jason Jin<Jason.jin@freescale.com>
   *         Zhang Wei<wei.zhang@freescale.com>
  
  #define AHCI_PCI_BAR          0x24
  #define AHCI_MAX_SG           56 /* hardware max is 64K */
 +#define AHCI_MAX_CMD_SLOT     32
  #define AHCI_CMD_SLOT_SZ      32
  #define AHCI_RX_FIS_SZ                256
  #define AHCI_CMD_TBL_HDR      0x80
  #define AHCI_CMD_TBL_CDB      0x40
 -#define AHCI_CMD_TBL_SZ               AHCI_CMD_TBL_HDR + (AHCI_MAX_SG * 16)
 -#define AHCI_PORT_PRIV_DMA_SZ AHCI_CMD_SLOT_SZ + AHCI_CMD_TBL_SZ      \
 -                              + AHCI_RX_FIS_SZ
 +#define AHCI_CMD_TBL_SZ               (AHCI_CMD_TBL_HDR + (AHCI_MAX_SG * 16))
 +#define AHCI_PORT_PRIV_DMA_SZ (AHCI_CMD_SLOT_SZ * AHCI_MAX_CMD_SLOT + \
 +                              AHCI_CMD_TBL_SZ + AHCI_RX_FIS_SZ)
  #define AHCI_CMD_ATAPI                (1 << 5)
  #define AHCI_CMD_WRITE                (1 << 6)
  #define AHCI_CMD_PREFETCH     (1 << 7)
@@@ -185,7 -181,7 +185,7 @@@ struct ahci_probe_ent 
        u32     host_flags;
        u32     host_set_flags;
        u32     mmio_base;
 -      u32     pio_mask;
 +      u32     pio_mask;
        u32     udma_mask;
        u32     flags;
        u32     cap;    /* cache of HOST_CAP register */
        u32     link_port_map; /*linkup port map*/
  };
  
+ int ahci_init(u32 base);
  #endif
diff --combined include/environment.h
index e0759aeb47d857f2fefdccddd3cd2d7dfbae8690,1ef44f3cc6d7076935aad1736bcf19f853a17491..8b263e4c903a72063e512600b728be7f323a642d
@@@ -22,7 -22,7 +22,7 @@@
   */
  
  #ifndef _ENVIRONMENT_H_
- #define _ENVIRONMENT_H_       1
+ #define _ENVIRONMENT_H_
  
  /**************************************************************************
   *
   */
  
  #if defined(CONFIG_ENV_IS_IN_FLASH)
- # ifndef  CONFIG_ENV_ADDR
- #  define CONFIG_ENV_ADDR     (CONFIG_SYS_FLASH_BASE + CONFIG_ENV_OFFSET)
+ # ifndef      CONFIG_ENV_ADDR
+ #  define     CONFIG_ENV_ADDR (CONFIG_SYS_FLASH_BASE + CONFIG_ENV_OFFSET)
  # endif
- # ifndef  CONFIG_ENV_OFFSET
- #  define CONFIG_ENV_OFFSET (CONFIG_ENV_ADDR - CONFIG_SYS_FLASH_BASE)
+ # ifndef      CONFIG_ENV_OFFSET
+ #  define     CONFIG_ENV_OFFSET (CONFIG_ENV_ADDR - CONFIG_SYS_FLASH_BASE)
  # endif
  # if !defined(CONFIG_ENV_ADDR_REDUND) && defined(CONFIG_ENV_OFFSET_REDUND)
- #  define CONFIG_ENV_ADDR_REDUND      (CONFIG_SYS_FLASH_BASE + CONFIG_ENV_OFFSET_REDUND)
+ #  define     CONFIG_ENV_ADDR_REDUND  \
+               (CONFIG_SYS_FLASH_BASE + CONFIG_ENV_OFFSET_REDUND)
  # endif
  # if defined(CONFIG_ENV_SECT_SIZE) || defined(CONFIG_ENV_SIZE)
- #  ifndef  CONFIG_ENV_SECT_SIZE
- #   define CONFIG_ENV_SECT_SIZE       CONFIG_ENV_SIZE
+ #  ifndef     CONFIG_ENV_SECT_SIZE
+ #   define    CONFIG_ENV_SECT_SIZE    CONFIG_ENV_SIZE
  #  endif
- #  ifndef  CONFIG_ENV_SIZE
- #   define CONFIG_ENV_SIZE    CONFIG_ENV_SECT_SIZE
+ #  ifndef     CONFIG_ENV_SIZE
+ #   define    CONFIG_ENV_SIZE CONFIG_ENV_SECT_SIZE
  #  endif
  # else
  #  error "Both CONFIG_ENV_SECT_SIZE and CONFIG_ENV_SIZE undefined"
  # if defined(CONFIG_ENV_ADDR_REDUND) && !defined(CONFIG_ENV_SIZE_REDUND)
  #  define CONFIG_ENV_SIZE_REDUND      CONFIG_ENV_SIZE
  # endif
- # if (CONFIG_ENV_ADDR >= CONFIG_SYS_MONITOR_BASE) && \
-      (CONFIG_ENV_ADDR+CONFIG_ENV_SIZE) <= (CONFIG_SYS_MONITOR_BASE + CONFIG_SYS_MONITOR_LEN)
- #  define ENV_IS_EMBEDDED     1
+ # if  (CONFIG_ENV_ADDR >= CONFIG_SYS_MONITOR_BASE) &&         \
+       (CONFIG_ENV_ADDR + CONFIG_ENV_SIZE) <=                  \
+       (CONFIG_SYS_MONITOR_BASE + CONFIG_SYS_MONITOR_LEN)
+ #  define ENV_IS_EMBEDDED
  # endif
  # if defined(CONFIG_ENV_ADDR_REDUND) || defined(CONFIG_ENV_OFFSET_REDUND)
- #  define CONFIG_SYS_REDUNDAND_ENVIRONMENT    1
+ #  define CONFIG_SYS_REDUNDAND_ENVIRONMENT
+ # endif
+ # ifdef CONFIG_ENV_IS_EMBEDDED
+ #  error "do not define CONFIG_ENV_IS_EMBEDDED in your board config"
+ #  error "it is calculated automatically for you"
  # endif
  #endif        /* CONFIG_ENV_IS_IN_FLASH */
  
  #if defined(CONFIG_ENV_IS_IN_NAND)
- # ifndef CONFIG_ENV_OFFSET
- #  error "Need to define CONFIG_ENV_OFFSET when using CONFIG_ENV_IS_IN_NAND"
- # endif
+ # if defined(CONFIG_ENV_OFFSET_OOB)
+ #  ifdef CONFIG_ENV_OFFSET_REDUND
+ #   error "CONFIG_ENV_OFFSET_REDUND is not supported when CONFIG_ENV_OFFSET_OOB"
+ #   error "is set"
+ #  endif
+ extern unsigned long nand_env_oob_offset;
+ #  define CONFIG_ENV_OFFSET nand_env_oob_offset
+ # else
+ #  ifndef CONFIG_ENV_OFFSET
+ #   error "Need to define CONFIG_ENV_OFFSET when using CONFIG_ENV_IS_IN_NAND"
+ #  endif
+ #  ifdef CONFIG_ENV_OFFSET_REDUND
+ #   define CONFIG_SYS_REDUNDAND_ENVIRONMENT
+ #  endif
+ # endif /* CONFIG_ENV_OFFSET_OOB */
  # ifndef CONFIG_ENV_SIZE
  #  error "Need to define CONFIG_ENV_SIZE when using CONFIG_ENV_IS_IN_NAND"
  # endif
- # ifdef CONFIG_ENV_OFFSET_REDUND
- #  define CONFIG_SYS_REDUNDAND_ENVIRONMENT
- # endif
- # ifdef CONFIG_ENV_IS_EMBEDDED
- #  define ENV_IS_EMBEDDED     1
- # endif
  #endif /* CONFIG_ENV_IS_IN_NAND */
  
  #if defined(CONFIG_ENV_IS_IN_MG_DISK)
  # ifndef CONFIG_ENV_SIZE
  #  error "Need to define CONFIG_ENV_SIZE when using CONFIG_ENV_IS_IN_MG_DISK"
  # endif
- # ifdef CONFIG_ENV_IS_EMBEDDED
- #  error "CONFIG_ENV_IS_EMBEDDED not supported when using CONFIG_ENV_IS_IN_MG_DISK"
- # endif
  #endif /* CONFIG_ENV_IS_IN_MG_DISK */
  
- #include "compiler.h"
- #ifdef USE_HOSTCC
- # include <stdint.h>
- #else
- # include <linux/types.h>
 +#if defined(CONFIG_ENV_IS_IN_MMC)
 +# ifndef CONFIG_ENV_OFFSET
 +#  error "Need to define CONFIG_ENV_OFFSET when using CONFIG_ENV_IS_IN_MMC"
 +# endif
 +# ifndef CONFIG_ENV_ADDR
 +#  define CONFIG_ENV_ADDR     (CONFIG_ENV_OFFSET)
 +# endif
 +# ifndef CONFIG_ENV_OFFSET
 +#  define CONFIG_ENV_OFFSET (CONFIG_ENV_ADDR)
 +# endif
 +# ifdef CONFIG_ENV_OFFSET_REDUND
 +#  define CONFIG_SYS_REDUNDAND_ENVIRONMENT
 +# endif
 +# ifdef CONFIG_ENV_IS_EMBEDDED
 +#  define ENV_IS_EMBEDDED     1
 +# endif
 +#endif /* CONFIG_ENV_IS_IN_MMC */
 +
+ /* Embedded env is only supported for some flash types */
+ #ifdef CONFIG_ENV_IS_EMBEDDED
+ # if  !defined(CONFIG_ENV_IS_IN_FLASH)        && \
+       !defined(CONFIG_ENV_IS_IN_NAND)         && \
+       !defined(CONFIG_ENV_IS_IN_ONENAND)      && \
+       !defined(CONFIG_ENV_IS_IN_SPI_FLASH)
+ #  error "CONFIG_ENV_IS_EMBEDDED not supported for your flash type"
+ # endif
  #endif
  
+ /*
+  * For the flash types where embedded env is supported, but it cannot be
+  * calculated automatically (i.e. NAND), take the board opt-in.
+  */
+ #if defined(CONFIG_ENV_IS_EMBEDDED) && !defined(ENV_IS_EMBEDDED)
+ # define ENV_IS_EMBEDDED
+ #endif
+ /* The build system likes to know if the env is embedded */
+ #ifdef DO_DEPS_ONLY
+ # ifdef ENV_IS_EMBEDDED
+ #  ifndef CONFIG_ENV_IS_EMBEDDED
+ #   define CONFIG_ENV_IS_EMBEDDED
+ #  endif
+ # endif
+ #endif
+ #include "compiler.h"
  #ifdef CONFIG_SYS_REDUNDAND_ENVIRONMENT
  # define ENV_HEADER_SIZE      (sizeof(uint32_t) + 1)
+ # define ACTIVE_FLAG   1
+ # define OBSOLETE_FLAG 0
  #else
  # define ENV_HEADER_SIZE      (sizeof(uint32_t))
  #endif
  
+ #if defined(CONFIG_CMD_SAVEENV) && !defined(CONFIG_ENV_IS_NOWHERE)
+ extern char *env_name_spec;
+ #endif
  
  #define ENV_SIZE (CONFIG_ENV_SIZE - ENV_HEADER_SIZE)
  
- typedef       struct environment_s {
+ typedef struct environment_s {
        uint32_t        crc;            /* CRC32 over data bytes        */
  #ifdef CONFIG_SYS_REDUNDAND_ENVIRONMENT
        unsigned char   flags;          /* active/obsolete flags        */
        unsigned char   data[ENV_SIZE]; /* Environment data             */
  } env_t;
  
+ #ifdef ENV_IS_EMBEDDED
+ extern env_t environment;
+ #endif /* ENV_IS_EMBEDDED */
+ extern const unsigned char default_environment[];
+ extern env_t *env_ptr;
+ extern void env_relocate_spec(void);
+ extern unsigned char env_get_char_spec(int);
+ #if defined(CONFIG_NEEDS_MANUAL_RELOC)
+ extern void env_reloc(void);
+ #endif
+ #ifndef DO_DEPS_ONLY
+ #include <search.h>
+ extern struct hsearch_data env_htab;
  /* Function that returns a character from the environment */
- unsigned char env_get_char (int);
+ unsigned char env_get_char(int);
  
  /* Function that returns a pointer to a value from the environment */
- unsigned char *env_get_addr(int);
- unsigned char env_get_char_memory (int index);
const unsigned char *env_get_addr(int);
+ unsigned char env_get_char_memory(int index);
  
  /* Function that updates CRC of the enironment */
- void env_crc_update (void);
+ void env_crc_update(void);
  
  /* [re]set to the default environment */
- void set_default_env(void);
+ void set_default_env(const char *s);
+ /* Import from binary representation into hash table */
+ int env_import(const char *buf, int check);
+ #endif /* DO_DEPS_ONLY */
  
- #endif        /* _ENVIRONMENT_H_ */
+ #endif /* _ENVIRONMENT_H_ */
diff --combined include/lcd.h
index 062e0246d6a7833a943e7fc6605e63332d658c74,d95feeb791d713355e997f95fe2c908a1fcfa8a4..e5430b6633ad458129492510791d38a349e73bb6
@@@ -1,6 -1,4 +1,6 @@@
  /*
 + * Copyright (C) 2004-2010 Freescale Semiconductor, Inc.
 + *
   * MPC823 and PXA LCD Controller
   *
   * Modeled after video interface by Paolo Scaffardi
@@@ -89,7 -87,8 +89,8 @@@ typedef struct vidinfo 
        u_char  vl_wbf;         /* Wait between frames */
  } vidinfo_t;
  
- #elif defined CONFIG_PXA250
+ #elif defined(CONFIG_CPU_PXA25X) || defined(CONFIG_CPU_PXA27X) || \
+       defined CONFIG_CPU_MONAHANS
  /*
   * PXA LCD DMA descriptor
   */
@@@ -161,14 -160,15 +162,15 @@@ typedef struct vidinfo 
  #elif defined(CONFIG_ATMEL_LCD)
  
  typedef struct vidinfo {
-       u_long vl_col;          /* Number of columns (i.e. 640) */
-       u_long vl_row;          /* Number of rows (i.e. 480) */
+       ushort vl_col;          /* Number of columns (i.e. 640) */
+       ushort vl_row;          /* Number of rows (i.e. 480) */
        u_long vl_clk;  /* pixel clock in ps    */
  
        /* LCD configuration register */
        u_long vl_sync;         /* Horizontal / vertical sync */
        u_long vl_bpix;         /* Bits per pixel, 0 = 1, 1 = 2, 2 = 4, 3 = 8, 4 = 16 */
        u_long vl_tft;          /* 0 = passive, 1 = TFT */
+       u_long vl_cont_pol_low; /* contrast polarity is low */
  
        /* Horizontal control register. */
        u_long vl_hsync_len;    /* Length of horizontal sync */
        u_long  mmio;           /* Memory mapped registers */
  } vidinfo_t;
  
 +#elif defined(CONFIG_MXC2_LCD)
 +
 +typedef struct vidinfo {
 +      u_long vl_refresh;      /* Refresh Rate Hz */
 +      u_long vl_row;          /* resolution in x */
 +      u_long vl_col;          /* resolution in y */
 +      u_long vl_pixclock;     /* pixel clock in picoseconds */
 +      u_long vl_left_margin;  /* Horizontal back porch */
 +      u_long vl_right_margin; /* Horizontal front porch */
 +      u_long vl_upper_margin; /* Vertical back porch */
 +      u_long vl_lower_margin; /* Vertical front porch */
 +      u_long vl_hsync;        /* Horizontal sync pulse length */
 +      u_long vl_vsync;        /* Vertical sync pulse length */
 +      u_long vl_sync;         /* Polarity on data enable */
 +      u_long vl_mode;         /* Video Mode */
 +      u_long vl_flag;
 +      u_char  vl_bpix;
 +      ushort  *cmap;
 +} vidinfo_t;
 +
 +#elif defined(CONFIG_MXC_EPDC)
 +
 +struct waveform_modes {
 +      int mode_init;
 +      int mode_du;
 +      int mode_gc4;
 +      int mode_gc8;
 +      int mode_gc16;
 +      int mode_gc32;
 +};
 +
 +struct epdc_data_struct {
 +      /* EPDC buffer pointers */
 +      u_long working_buf_addr;
 +      u_long waveform_buf_addr;
 +
 +      /* Waveform mode definitions */
 +      struct waveform_modes wv_modes;
 +};
 +
 +typedef struct vidinfo {
 +      u_long vl_refresh;      /* Refresh Rate Hz */
 +      u_long vl_row;          /* resolution in x */
 +      u_long vl_col;          /* resolution in y */
 +      u_long vl_pixclock;     /* pixel clock in picoseconds */
 +      u_long vl_left_margin;  /* Horizontal back porch */
 +      u_long vl_right_margin; /* Horizontal front porch */
 +      u_long vl_upper_margin; /* Vertical back porch */
 +      u_long vl_lower_margin; /* Vertical front porch */
 +      u_long vl_hsync;        /* Horizontal sync pulse length */
 +      u_long vl_vsync;        /* Vertical sync pulse length */
 +      u_long vl_sync;         /* Polarity on data enable */
 +      u_long vl_mode;         /* Video Mode */
 +      u_long vl_flag;
 +      u_char  vl_bpix;
 +      ushort  *cmap;
 +      struct epdc_data_struct epdc_data;
 +} vidinfo_t;
 +
  #else
  
  typedef struct vidinfo {
        void    *priv;          /* Pointer to driver-specific data */
  } vidinfo_t;
  
- #endif /* CONFIG_MPC823, CONFIG_PXA250 or CONFIG_MCC200 or CONFIG_ATMEL_LCD */
+ #endif /* CONFIG_MPC823, CONFIG_CPU_PXA25X, CONFIG_MCC200, CONFIG_ATMEL_LCD */
  
  extern vidinfo_t panel_info;
  
@@@ -270,6 -211,8 +272,8 @@@ void       lcd_disable     (void)
  void  lcd_putc        (const char c);
  void  lcd_puts        (const char *s);
  void  lcd_printf      (const char *fmt, ...);
+ void  lcd_clear(void);
+ int   lcd_display_bitmap(ulong bmp_image, int x, int y);
  
  /* Allow boards to customize the information displayed */
  void lcd_show_board_info(void);