#
# (C) Copyright 2000-2008
# Wolfgang Denk, DENX Software Engineering, wd@denx.de.
#
# See file CREDITS for list of people who contributed to this
# project.
#
# This program is free software; you can redistribute it and/or
# modify it under the terms of the GNU General Public License as
# published by the Free Software Foundatio; either version 2 of
# the License, or (at your option) any later version.
#
# This program is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.	See the
# GNU General Public License for more details.
#
# You should have received a copy of the GNU General Public License
# along with this program; if not, write to the Free Software
# Foundation, Inc., 59 Temple Place, Suite 330, Boston,
# MA 02111-1307 USA
#

VERSION = 2008
PATCHLEVEL = 10
SUBLEVEL =
EXTRAVERSION = -rc2
ifneq "$(SUBLEVEL)" ""
U_BOOT_VERSION = $(VERSION).$(PATCHLEVEL).$(SUBLEVEL)$(EXTRAVERSION)
else
U_BOOT_VERSION = $(VERSION).$(PATCHLEVEL)$(EXTRAVERSION)
endif
VERSION_FILE = $(obj)include/version_autogenerated.h

HOSTARCH := $(shell uname -m | \
	sed -e s/i.86/i386/ \
	    -e s/sun4u/sparc64/ \
	    -e s/arm.*/arm/ \
	    -e s/sa110/arm/ \
	    -e s/powerpc/ppc/ \
	    -e s/ppc64/ppc/ \
	    -e s/macppc/ppc/)

HOSTOS := $(shell uname -s | tr '[:upper:]' '[:lower:]' | \
	    sed -e 's/\(cygwin\).*/cygwin/')

export	HOSTARCH HOSTOS

# Deal with colliding definitions from tcsh etc.
VENDOR=

#########################################################################
# Allow for silent builds
ifeq (,$(findstring s,$(MAKEFLAGS)))
XECHO = echo
else
XECHO = :
endif

#########################################################################
#
# U-boot build supports producing a object files to the separate external
# directory. Two use cases are supported:
#
# 1) Add O= to the make command line
# 'make O=/tmp/build all'
#
# 2) Set environement variable BUILD_DIR to point to the desired location
# 'export BUILD_DIR=/tmp/build'
# 'make'
#
# The second approach can also be used with a MAKEALL script
# 'export BUILD_DIR=/tmp/build'
# './MAKEALL'
#
# Command line 'O=' setting overrides BUILD_DIR environent variable.
#
# When none of the above methods is used the local build is performed and
# the object files are placed in the source directory.
#

ifdef O
ifeq ("$(origin O)", "command line")
BUILD_DIR := $(O)
endif
endif

ifneq ($(BUILD_DIR),)
saved-output := $(BUILD_DIR)

# Attempt to create a output directory.
$(shell [ -d ${BUILD_DIR} ] || mkdir -p ${BUILD_DIR})

# Verify if it was successful.
BUILD_DIR := $(shell cd $(BUILD_DIR) && /bin/pwd)
$(if $(BUILD_DIR),,$(error output directory "$(saved-output)" does not exist))
endif # ifneq ($(BUILD_DIR),)

OBJTREE		:= $(if $(BUILD_DIR),$(BUILD_DIR),$(CURDIR))
SRCTREE		:= $(CURDIR)
TOPDIR		:= $(SRCTREE)
LNDIR		:= $(OBJTREE)
export	TOPDIR SRCTREE OBJTREE

MKCONFIG	:= $(SRCTREE)/mkconfig
export MKCONFIG

ifneq ($(OBJTREE),$(SRCTREE))
REMOTE_BUILD	:= 1
export REMOTE_BUILD
endif

# $(obj) and (src) are defined in config.mk but here in main Makefile
# we also need them before config.mk is included which is the case for
# some targets like unconfig, clean, clobber, distclean, etc.
ifneq ($(OBJTREE),$(SRCTREE))
obj := $(OBJTREE)/
src := $(SRCTREE)/
else
obj :=
src :=
endif
export obj src

# Make sure CDPATH settings don't interfere
unexport CDPATH

#########################################################################

ifeq ($(ARCH),powerpc)
ARCH = ppc
endif

ifeq ($(obj)include/config.mk,$(wildcard $(obj)include/config.mk))

# load ARCH, BOARD, and CPU configuration
include $(obj)include/config.mk
export	ARCH CPU BOARD VENDOR SOC

ifndef CROSS_COMPILE
ifeq ($(HOSTARCH),$(ARCH))
CROSS_COMPILE =
else
ifeq ($(ARCH),ppc)
CROSS_COMPILE = ppc_8xx-
endif
ifeq ($(ARCH),arm)
CROSS_COMPILE = arm-linux-
endif
ifeq ($(ARCH),i386)
CROSS_COMPILE = i386-linux-
endif
ifeq ($(ARCH),mips)
CROSS_COMPILE = mips_4KC-
endif
ifeq ($(ARCH),nios)
CROSS_COMPILE = nios-elf-
endif
ifeq ($(ARCH),nios2)
CROSS_COMPILE = nios2-elf-
endif
ifeq ($(ARCH),m68k)
CROSS_COMPILE = m68k-elf-
endif
ifeq ($(ARCH),microblaze)
CROSS_COMPILE = mb-
endif
ifeq ($(ARCH),blackfin)
CROSS_COMPILE = bfin-uclinux-
endif
ifeq ($(ARCH),avr32)
CROSS_COMPILE = avr32-linux-
endif
ifeq ($(ARCH),sh)
CROSS_COMPILE = sh4-linux-
endif
ifeq ($(ARCH),sparc)
CROSS_COMPILE = sparc-elf-
endif	# sparc
endif	# HOSTARCH,ARCH
endif	# CROSS_COMPILE

export	CROSS_COMPILE

# load other configuration
include $(TOPDIR)/config.mk

#########################################################################
# 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)/reset.o
endif
ifeq ($(CPU),ppc4xx)
OBJS += cpu/$(CPU)/resetvec.o
endif
ifeq ($(CPU),mpc85xx)
OBJS += cpu/$(CPU)/resetvec.o
endif

OBJS := $(addprefix $(obj),$(OBJS))

LIBS  = lib_generic/libgeneric.a
LIBS += lib_generic/lzma/liblzma.a
LIBS += $(shell if [ -f board/$(VENDOR)/common/Makefile ]; then echo \
	"board/$(VENDOR)/common/lib$(VENDOR).a"; fi)
LIBS += cpu/$(CPU)/lib$(CPU).a
ifdef SOC
LIBS += cpu/$(CPU)/$(SOC)/lib$(SOC).a
endif
ifeq ($(CPU),ixp)
LIBS += cpu/ixp/npe/libnpe.a
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
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/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/nand_legacy/libnand_legacy.a
LIBS += drivers/mtd/onenand/libonenand.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/spi/libspi.a
ifeq ($(CPU),mpc83xx)
LIBS += drivers/qe/qe.a
endif
ifeq ($(CPU),mpc85xx)
LIBS += drivers/qe/qe.a
LIBS += cpu/mpc8xxx/ddr/libddr.a
endif
ifeq ($(CPU),mpc86xx)
LIBS += cpu/mpc8xxx/ddr/libddr.a
endif
LIBS += drivers/rtc/librtc.a
LIBS += drivers/serial/libserial.a
LIBS += drivers/usb/libusb.a
LIBS += drivers/video/libvideo.a
LIBS += common/libcommon.a
LIBS += libfdt/libfdt.a
LIBS += api/libapi.a
LIBS += post/libpost.a

LIBS := $(addprefix $(obj),$(LIBS))
.PHONY : $(LIBS) $(VERSION_FILE)

LIBBOARD = board/$(BOARDDIR)/lib$(BOARD).a
LIBBOARD := $(addprefix $(obj),$(LIBBOARD))

# Add GCC lib
PLATFORM_LIBS += -L $(shell dirname `$(CC) $(CFLAGS) -print-libgcc-file-name`) -lgcc

# The "tools" are needed early, so put this first
# Don't include stuff already done in $(LIBS)
SUBDIRS	= tools \
	  examples \
	  api_examples

.PHONY : $(SUBDIRS)

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))

#########################################################################
#########################################################################

ALL += $(obj)u-boot.srec $(obj)u-boot.bin $(obj)System.map $(U_BOOT_NAND) $(U_BOOT_ONENAND)
ifeq ($(ARCH),blackfin)
ALL += $(obj)u-boot.ldr
endif

all:		$(ALL)

$(obj)u-boot.hex:	$(obj)u-boot
		$(OBJCOPY) ${OBJCFLAGS} -O ihex $< $@

$(obj)u-boot.srec:	$(obj)u-boot
		$(OBJCOPY) -O srec $< $@

$(obj)u-boot.bin:	$(obj)u-boot
		$(OBJCOPY) ${OBJCFLAGS} -O binary $< $@

$(obj)u-boot.ldr:	$(obj)u-boot
		$(LDR) -T $(CONFIG_BFIN_CPU) -f -c $@ $< $(LDR_FLAGS)

$(obj)u-boot.ldr.hex:	$(obj)u-boot.ldr
		$(OBJCOPY) ${OBJCFLAGS} -O ihex $< $@ -I binary

$(obj)u-boot.ldr.srec:	$(obj)u-boot.ldr
		$(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 \
		-n $(shell sed -n -e 's/.*U_BOOT_VERSION//p' $(VERSION_FILE) | \
			sed -e 's/"[	 ]*$$/ for $(BOARD) board"/') \
		-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:		depend $(SUBDIRS) $(OBJS) $(LIBBOARD) $(LIBS) $(LDSCRIPT)
		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) \
			--start-group $(__LIBS) --end-group $(PLATFORM_LIBS) \
			-Map u-boot.map -o u-boot

$(OBJS):	depend $(obj)include/autoconf.mk
		$(MAKE) -C cpu/$(CPU) $(if $(REMOTE_BUILD),$@,$(notdir $@))

$(LIBS):	depend $(obj)include/autoconf.mk
		$(MAKE) -C $(dir $(subst $(obj),,$@))

$(LIBBOARD):	depend $(LIBS) $(obj)include/autoconf.mk
		$(MAKE) -C $(dir $(subst $(obj),,$@))

$(SUBDIRS):	depend $(obj)include/autoconf.mk
		$(MAKE) -C $@ all

$(LDSCRIPT):	depend $(obj)include/autoconf.mk
		$(MAKE) -C $(dir $@) $(notdir $@)

$(NAND_SPL):	$(VERSION_FILE)	$(obj)include/autoconf.mk
		$(MAKE) -C nand_spl/board/$(BOARDDIR) all

$(U_BOOT_NAND):	$(NAND_SPL) $(obj)u-boot.bin $(obj)include/autoconf.mk
		cat $(obj)nand_spl/u-boot-spl-16k.bin $(obj)u-boot.bin > $(obj)u-boot-nand.bin

$(ONENAND_IPL):	$(VERSION_FILE)	$(obj)include/autoconf.mk
		$(MAKE) -C onenand_ipl/board/$(BOARDDIR) all

$(U_BOOT_ONENAND):	$(ONENAND_IPL) $(obj)u-boot.bin $(obj)include/autoconf.mk
		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

$(VERSION_FILE):
		@( printf '#define U_BOOT_VERSION "U-Boot %s%s"\n' "$(U_BOOT_VERSION)" \
		 '$(shell $(CONFIG_SHELL) $(TOPDIR)/tools/setlocalversion $(TOPDIR))' \
		 ) > $@.tmp
		@cmp -s $@ $@.tmp && rm -f $@.tmp || mv -f $@.tmp $@

gdbtools:
		$(MAKE) -C tools/gdb all || exit 1

updater:
		$(MAKE) -C tools/updater all || exit 1

env:
		$(MAKE) -C tools/env all MTD_VERSION=${MTD_VERSION} || exit 1

depend dep:	$(VERSION_FILE)
		for dir in $(SUBDIRS) ; do $(MAKE) -C $$dir _depend ; done

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/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/nand_legacy
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

tags ctags:
		ctags -w -o $(obj)ctags `find $(SUBDIRS) $(TAG_SUBDIRS) \
						-name '*.[ch]' -print`

etags:
		etags -a -o $(obj)etags `find $(SUBDIRS) $(TAG_SUBDIRS) \
						-name '*.[ch]' -print`
cscope:
		find $(SUBDIRS) $(TAG_SUBDIRS) -name '*.[ch]' -print \
						> cscope.files
		cscope -b -q -k

$(obj)System.map:	$(obj)u-boot
		@$(NM) $< | \
		grep -v '\(compiled\)\|\(\.o$$\)\|\( [aUw] \)\|\(\.\.ng$$\)\|\(LASH[RL]DI\)' | \
		sort > $(obj)System.map

#
# Auto-generate the autoconf.mk file (which is included by all makefiles)
#
# This target actually generates 2 files; autoconf.mk and autoconf.mk.dep.
# the dep file is only include in this top level makefile to determine when
# to regenerate the autoconf.mk file.
$(obj)include/autoconf.mk.dep: $(obj)include/config.h include/common.h
	@$(XECHO) Generating $@ ; \
	set -e ; \
	: Generate the dependancies ; \
	$(CC) -x c -DDO_DEPS_ONLY -M $(HOST_CFLAGS) $(CPPFLAGS) \
		-MQ $(obj)include/autoconf.mk include/common.h > $@

$(obj)include/autoconf.mk: $(obj)include/config.h
	@$(XECHO) Generating $@ ; \
	set -e ; \
	: Extract the config macros ; \
	$(CPP) $(CFLAGS) -DDO_DEPS_ONLY -dM include/common.h | \
		sed -n -f tools/scripts/define2mk.sed > $@

sinclude $(obj)include/autoconf.mk.dep

#########################################################################
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) $(VERSION_FILE) gdbtools updater env depend \
dep tags ctags etags cscope $(obj)System.map:
	@echo "System not configured - see README" >&2
	@ exit 1
endif	# config.mk

.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
#########################################################################

unconfig:
	@rm -f $(obj)include/config.h $(obj)include/config.mk \
		$(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

PATI_config:		unconfig
	@$(MKCONFIG) $(@:_config=) ppc mpc5xx pati mpl

#########################################################################
## 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

cpci5200_config:  unconfig
	@$(MKCONFIG) -a cpci5200  ppc mpc5xxx cpci5200 esd

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

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
	@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

#########################################################################
## MPC512x Systems
#########################################################################

ads5121_config \
ads5121_rev2_config	\
	: unconfig
	@mkdir -p $(obj)include
	@if [ "$(findstring rev2,$@)" ] ; then \
		echo "#define CONFIG_ADS5121_REV2 1" > $(obj)include/config.h; \
	fi
	@$(MKCONFIG) -a ads5121 ppc mpc512x ads5121


#########################################################################
## 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

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 mgsuvd

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

#########################################################################
## PPC4xx 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

# Canyonlands & Glacier use different U-Boot images
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

CPCI2DP_config:	unconfig
	@$(MKCONFIG) $(@:_config=) ppc ppc4xx cpci2dp esd

CPCI405_config:		unconfig
	@$(MKCONFIG) $(@:_config=) ppc ppc4xx cpci405 esd

CPCI4052_config		\
CPCI405DT_config	\
CPCI405AB_config:	unconfig
	@mkdir -p $(obj)board/esd/cpci405
	@echo "TEXT_BASE = 0xFFFC0000" > $(obj)board/esd/cpci405/config.tmp
	@$(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

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

G2000_config:	unconfig
	@$(MKCONFIG) $(@:_config=) ppc ppc4xx g2000

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
	@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

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

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
	@echo "CONFIG_NAND_U_BOOT = y" >> $(obj)include/config.mk

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-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

XPEDITE1K_config:	unconfig
	@$(MKCONFIG) $(@:_config=) ppc ppc4xx xpedite1k

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

barco_config: unconfig
	@$(MKCONFIG) $(@:_config=) ppc mpc824x barco

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 CFG_REV_B" > $(obj)include/config.h ; \
	fi
	@$(MKCONFIG) -a ISPAN ppc mpc8260 ispan

mgcoge_config	:	unconfig
	@$(MKCONFIG) mgcoge ppc mpc8260 mgcoge

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 CFG_PQ2FADS" > $(obj)include/config.h, \
	@echo "#define CONFIG_ADSTYPE CFG_"$(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
#########################################################################

M52277EVB_config:	unconfig
	@$(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

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_spansion_config \
M54451EVB_stmicro_config :	unconfig
	@case "$@" in \
	M54451EVB_config)		FLASH=SPANSION;; \
	M54451EVB_spansion_config)	FLASH=SPANSION;; \
	M54451EVB_stmicro_config)	FLASH=STMICRO;; \
	esac; \
	if [ "$${FLASH}" = "SPANSION" ] ; then \
		echo "#define CFG_SPANSION_BOOT"	>> $(obj)include/config.h ; \
		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 SPANSION boot..." ; \
	fi; \
	if [ "$${FLASH}" = "STMICRO" ] ; then \
		echo "#define CONFIG_CF_SBF"	>> $(obj)include/config.h ; \
		echo "#define CFG_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 CFG_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 CFG_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 CFG_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 CFG_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 CFG_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 CFG_BUSCLK	133333333" > $(obj)include/config.h ; \
	echo "#define CFG_BOOTSZ	$${BOOT}" >> $(obj)include/config.h ; \
	echo "#define CFG_DRAMSZ	$${RAM}" >> $(obj)include/config.h ; \
	if [ "$${RAM1}" != "0" ] ; then \
		echo "#define CFG_DRAMSZ1	$${RAM1}" >> $(obj)include/config.h ; \
	fi; \
	if [ "$${CODE}" != "0" ] ; then \
		echo "#define CFG_NOR1SZ	$${CODE}" >> $(obj)include/config.h ; \
	fi; \
	if [ "$${VID}" == "1" ] ; then \
		echo "#define CFG_VIDEO" >> $(obj)include/config.h ; \
	fi; \
	if [ "$${USB}" == "1" ] ; then \
		echo "#define CFG_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 CFG_BUSCLK	100000000" > $(obj)include/config.h ; \
	echo "#define CFG_BOOTSZ	$${BOOT}" >> $(obj)include/config.h ; \
	echo "#define CFG_DRAMSZ	$${RAM}" >> $(obj)include/config.h ; \
	if [ "$${RAM1}" != "0" ] ; then \
		echo "#define CFG_DRAMSZ1	$${RAM1}" >> $(obj)include/config.h ; \
	fi; \
	if [ "$${CODE}" != "0" ] ; then \
		echo "#define CFG_NOR1SZ	$${CODE}" >> $(obj)include/config.h ; \
	fi; \
	if [ "$${VID}" == "1" ] ; then \
		echo "#define CFG_VIDEO" >> $(obj)include/config.h ; \
	fi; \
	if [ "$${USB}" == "1" ] ; then \
		echo "#define CFG_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
#########################################################################

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 CFG_33MHZ" >>$(obj)include/config.h ; \
	fi ; \
	if [ "$(findstring _66_,$@)" ] ; then \
		$(XECHO) -n "...66M..." ; \
		echo "#define CFG_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:		unconfig
	@$(MKCONFIG) $(@:_config=) ppc mpc83xx sbc8349

TQM834x_config:	unconfig
	@$(MKCONFIG) $(@:_config=) ppc mpc83xx tqm834x tqc


#########################################################################
## 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

MPC8572DS_config:       unconfig
	@$(MKCONFIG) $(@:_config=) ppc mpc85xx mpc8572ds 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		\
TQM8555_config		\
TQM8560_config:		unconfig
	@mkdir -p $(obj)include
	@CTYPE=$(subst TQM,,$(@:_config=)); \
	$(XECHO) "... TQM"$${CTYPE}; \
	echo "#define CONFIG_MPC$${CTYPE}">>$(obj)include/config.h; \
	echo "#define CONFIG_TQM$${CTYPE}">>$(obj)include/config.h; \
	echo "#define CONFIG_HOSTNAME tqm$${CTYPE}">>$(obj)include/config.h; \
	echo "#define CONFIG_BOARDNAME \"TQM$${CTYPE}\"">>$(obj)include/config.h;
	@$(MKCONFIG) -a TQM85xx ppc mpc85xx tqm85xx tqc

#########################################################################
## MPC86xx Systems
#########################################################################

MPC8610HPCD_config:	unconfig
	@$(MKCONFIG) $(@:_config=) ppc mpc86xx mpc8610hpcd freescale

MPC8641HPCN_config:    unconfig
	@$(MKCONFIG) $(@:_config=) ppc mpc86xx mpc8641hpcn freescale

sbc8641d_config:	unconfig
	@$(MKCONFIG) $(@:_config=) ppc mpc86xx sbc8641d

#########################################################################
## 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

at91sam9261ek_config	:	unconfig
	@$(MKCONFIG) $(@:_config=) arm arm926ejs at91sam9261ek atmel at91

at91sam9263ek_config	:	unconfig
	@$(MKCONFIG) $(@:_config=) arm arm926ejs at91sam9263ek atmel at91

at91sam9rlek_config	:	unconfig
	@$(MKCONFIG) $(@:_config=) arm arm926ejs at91sam9rlek atmel at91

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
#########################################################################

at91cap9adk_config	:	unconfig
	@$(MKCONFIG) $(@:_config=) arm arm926ejs at91cap9adk atmel at91

at91sam9260ek_config	:	unconfig
	@$(MKCONFIG) $(@:_config=) arm arm926ejs at91sam9260ek atmel 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/integratorap/split_by_variant.sh $@

integratorcp_config	\
cp_config		\
cp920t_config		\
cp926ejs_config		\
cp946es_config		\
cp1136_config		\
cp966_config		\
cp922_config		\
cp922_XA10_config	\
cp1026_config: unconfig
	@board/integratorcp/split_by_variant.sh $@

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

lpd7a400_config \
lpd7a404_config:	unconfig
	@$(MKCONFIG) $(@:_config=) arm lh7a40x lpd7a40x

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

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

sbc2410x_config: unconfig
	@$(MKCONFIG) $(@:_config=) arm arm920t sbc2410x NULL s3c24x0

scb9328_config	:	unconfig
	@$(MKCONFIG) $(@:_config=) arm arm920t scb9328 NULL imx

smdk2400_config	:	unconfig
	@$(MKCONFIG) $(@:_config=) arm arm920t smdk2400 NULL s3c24x0

smdk2410_config	:	unconfig
	@$(MKCONFIG) $(@:_config=) arm arm920t smdk2410 NULL s3c24x0

SX1_config :		unconfig
	@$(MKCONFIG) $(@:_config=) 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/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

lpc2292sodimm_config:	unconfig
	@$(MKCONFIG) $(@:_config=) arm arm720t lpc2292sodimm NULL lpc2292

SMN42_config	:	unconfig
	@$(MKCONFIG) $(@:_config=) arm arm720t SMN42 siemens lpc2292

#########################################################################
## 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

trizepsiv_config	:	unconfig
	@$(MKCONFIG) $(@:_config=) 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

imx31_litekit_config	: unconfig
	@$(MKCONFIG) $(@:_config=) arm arm1136 imx31_litekit NULL mx31

imx31_phycore_config	: unconfig
	@$(MKCONFIG) $(@:_config=) arm arm1136 imx31_phycore NULL mx31

mx31ads_config		: unconfig
	@$(MKCONFIG) $(@:_config=) arm arm1136 mx31ads freescale mx31

omap2420h4_config	: unconfig
	@$(MKCONFIG) $(@:_config=) arm arm1136 omap2420h4 NULL omap24xx

#########################################################################
## 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
#########################################################################
sc520_cdp_config	:	unconfig
	@$(MKCONFIG) $(@:_config=) i386 i386 sc520_cdp

sc520_spunk_config	:	unconfig
	@$(MKCONFIG) $(@:_config=) i386 i386 sc520_spunk

sc520_spunk_rel_config	:	unconfig
	@$(MKCONFIG) $(@:_config=) i386 i386 sc520_spunk

#========================================================================
# 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

#########################################################################
## 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
#========================================================================

ml401_config:	unconfig
	@mkdir -p $(obj)include
	@echo "#define CONFIG_ML401 1" > $(obj)include/config.h
	@$(MKCONFIG) -a $(@:_config=) microblaze microblaze ml401 xilinx

suzaku_config:	unconfig
	@mkdir -p $(obj)include
	@echo "#define CONFIG_SUZAKU 1" > $(obj)include/config.h
	@$(MKCONFIG) -a $(@:_config=) microblaze microblaze suzaku AtmarkTechno

xupv2p_config:	unconfig
	@mkdir -p $(obj)include
	@echo "#define CONFIG_XUPV2P 1" > $(obj)include/config.h
	@$(MKCONFIG) -a $(@:_config=) microblaze microblaze xupv2p xilinx

#========================================================================
# Blackfin
#========================================================================

# Analog Devices boards
BFIN_BOARDS = bf533-ezkit bf533-stamp bf537-stamp bf561-ezkit

$(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
	@ >include/config.h
	@echo "#define CONFIG_RSK7203 1" >> include/config.h
	@./mkconfig -a $(@:_config=) sh sh2 rsk7203

#########################################################################
## 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

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

r7780mp_config: unconfig
	@mkdir -p $(obj)include
	@echo "#define CONFIG_R7780MP 1" > $(obj)include/config.h
	@$(MKCONFIG) -a $(@:_config=) sh sh4 r7780mp

sh7763rdp_config  :   unconfig
	@mkdir -p $(obj)include
	@echo "#define CONFIG_SH7763RDP 1" > $(obj)include/config.h
	@$(MKCONFIG) -a $(@:_config=) sh sh4 sh7763rdp

sh7785lcr_config  :   unconfig
	@ >include/config.h
	@echo "#define CONFIG_SH7785LCR 1" >> include/config.h
	@$(MKCONFIG) -a $(@:_config=) sh sh4 sh7785lcr

ap325rxa_config  :   unconfig
	@mkdir -p $(obj)include
	@echo "#define CONFIG_AP325RXA 1" > $(obj)include/config.h
	@$(MKCONFIG) -a $(@:_config=) sh sh4 ap325rxa

#========================================================================
# 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/82559_eeprom $(obj)examples/eepro100_eeprom \
	       $(obj)examples/hello_world  $(obj)examples/interrupt	  \
	       $(obj)examples/mem_to_mem_idma2intr			  \
	       $(obj)examples/sched	   $(obj)examples/smc91111_eeprom \
	       $(obj)examples/test_burst   $(obj)examples/timer
	@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/{integratorap,integratorcp}/u-boot.lds	  \
	       $(obj)board/{bf533-ezkit,bf533-stamp,bf537-stamp,bf561-ezkit}/u-boot.lds \
	       $(obj)cpu/blackfin/bootrom-asm-offsets.[chs]
	@rm -f $(obj)include/bmp_logo.h
	@rm -f $(obj)nand_spl/{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)api_examples/demo $(VERSION_FILE)
	@find $(OBJTREE) -type f \
		\( -name 'core' -o -name '*.bak' -o -name '*~' \
		-o -name '*.o'	-o -name '*.a'	\) -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
	@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/{crc32.c,env_embedded.c,env/crc32.c,md5.c,sha1.c,inca-swap-bytes}
	@rm -f $(obj)tools/{image.c,fdt.c,fdt_ro.c,fdt_rw.c,fdt_strerror.c,zlib.h}
	@rm -f $(obj)tools/{fdt_wip.c,libfdt_internal.h}
	@rm -f $(obj)cpu/mpc824x/bedbug_603e.c
	@rm -f $(obj)include/asm/proc $(obj)include/asm/arch $(obj)include/asm
	@[ ! -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)api_examples ] || find $(obj)api_examples -name "*" -type l -print | xargs rm -f

ifeq ($(OBJTREE),$(SRCTREE))
mrproper \
distclean:	clobber unconfig
else
mrproper \
distclean:	clobber unconfig
	rm -rf $(obj)*
endif

backup:
	F=`basename $(TOPDIR)` ; cd .. ; \
	gtar --force-local -zcvf `date "+$$F-%Y-%m-%d-%T.tar.gz"` $$F

#########################################################################
