aboutsummaryrefslogtreecommitdiffstats
path: root/recipes/u-boot
diff options
context:
space:
mode:
authorLeon Woestenberg <leon@sidebranch.com>2011-01-27 21:03:15 +0100
committerLeon Woestenberg <leon@sidebranch.com>2011-01-27 21:03:15 +0100
commit9b5df85143a13d43ea64ae2321f6bf388c1395bd (patch)
tree8a844fdb122dd02906192cf1e6a3dad95e008792 /recipes/u-boot
parent7298be1f35f88c4646a47a59e2ac96e5efa5b39a (diff)
downloadopenembedded-9b5df85143a13d43ea64ae2321f6bf388c1395bd.tar.gz
adb4000.conf: New machine, kernel and u-boot support.
STK ADB4000 is a development board with a SAM9G45 SODIMM CPU module. These patches are from the manufacturer (In-Circuit). Resulting kernel boots on the board. Signed-off-by: Leon Woestenberg <leon@sidebranch.com>
Diffstat (limited to 'recipes/u-boot')
-rw-r--r--recipes/u-boot/u-boot-2009.11/at91/100-icnova.patch6820
-rw-r--r--recipes/u-boot/u-boot_2009.11.bb34
2 files changed, 6839 insertions, 15 deletions
diff --git a/recipes/u-boot/u-boot-2009.11/at91/100-icnova.patch b/recipes/u-boot/u-boot-2009.11/at91/100-icnova.patch
new file mode 100644
index 0000000000..0fe4620094
--- /dev/null
+++ b/recipes/u-boot/u-boot-2009.11/at91/100-icnova.patch
@@ -0,0 +1,6820 @@
+diff -Naur u-boot-2009.11/board/in-circuit/icnova/ap7000_nand.c u-boot-2009.11.new/board/in-circuit/icnova/ap7000_nand.c
+--- u-boot-2009.11/board/in-circuit/icnova/ap7000_nand.c 1970-01-01 01:00:00.000000000 +0100
++++ u-boot-2009.11.new/board/in-circuit/icnova/ap7000_nand.c 2010-10-08 12:09:30.000000000 +0200
+@@ -0,0 +1,87 @@
++#include <common.h>
++#include <asm/arch/gpio.h>
++#include <asm/arch/hmatrix.h>
++#include <nand.h>
++#include <linux/mtd/mtd.h>
++#include "../../../cpu/at32ap/hsmc3.h"
++
++void nand_init(void) {
++ gpio_select_pio(CFG_NAND_CE, GPIOF_OUTPUT);
++ gpio_select_pir(CFG_NAND_RDY, GPIOF_PULLUP);
++}
++
++static void icnova_nand_hwctl(struct mtd_info *mtd, int cmd, unsigned int ctrl) {
++ struct nand_chip *this = mtd->priv;
++
++ //putc(0x20); putc(0x08); // SPACE BS
++ //putc(0x20); putc(0x08); // SPACE BS
++ if (ctrl & NAND_CTRL_CHANGE) {
++ if(ctrl & NAND_NCE) {
++ //printf("NAND_CE ");
++ gpio_set_value(GPIO_PIN_PE16, 1);
++ gpio_set_value(CFG_NAND_CE, 0);
++ } else {
++ //printf("NAND_NCE");
++ gpio_set_value(CFG_NAND_CE, 1);
++ gpio_set_value(GPIO_PIN_PE16, 0);
++ }
++ }
++
++ if(cmd == NAND_CMD_NONE) {
++ //printf("\n");
++ return;
++ }
++ //udelay(1000);
++
++ //printf("0x%x ", cmd);
++ if (ctrl & NAND_CLE) {
++ //printf("CLE\n");
++ writeb(cmd, uncached(this->IO_ADDR_W + (1 << CFG_NAND_CLE)));
++ } else {
++ //printf("ALE\n");
++ writeb(cmd, uncached(this->IO_ADDR_W + (1 << CFG_NAND_ALE)));
++ }
++
++ return;
++}
++
++static int icnova_nand_rdy(struct mtd_info *mtd) {
++ int ret;
++ //udelay(100);
++ ret = gpio_get_value(CFG_NAND_RDY);
++ //udelay(20);
++ return ret;
++}
++
++int board_nand_init(struct nand_chip *nand) {
++ /* Setup SMC-Timings */
++ //hsmc3_writel(CYCLE3, 0x00090009);
++ //hsmc3_writel(PULSE3, 0x04030403);
++ //hsmc3_writel(SETUP3, 0x00010001);
++ //hsmc3_writel(MODE3, 0x00020003);
++ hsmc3_writel(CYCLE3, 0x00090009);
++ hsmc3_writel(PULSE3, 0x07050705);
++ hsmc3_writel(SETUP3, 0x00020002);
++ hsmc3_writel(MODE3, 0x00020003);
++ // Enable NAND-Logic
++ hmatrix_slave_write(EBI, SFR,
++ hmatrix_slave_read(EBI, SFR) |
++ HMATRIX_BIT(EBI_NAND_ENABLE));
++
++
++ /* Setup GPIO-Lines */
++ gpio_select_pio(CFG_NAND_CE, GPIOF_OUTPUT);
++ gpio_select_pio(GPIO_PIN_PE16, GPIOF_OUTPUT);
++ gpio_set_value(CFG_NAND_CE, 1);
++ gpio_select_pio(CFG_NAND_RDY, GPIOF_PULLUP);
++
++ /* Setup NAND-Struct */
++ nand->chip_delay = 50;
++ nand->ecc.mode = NAND_ECC_SOFT;
++ nand->cmd_ctrl = icnova_nand_hwctl;
++ nand->dev_ready = icnova_nand_rdy;
++
++ return 0;
++
++}
++
+diff -Naur u-boot-2009.11/board/in-circuit/icnova/at91_nand.c u-boot-2009.11.new/board/in-circuit/icnova/at91_nand.c
+--- u-boot-2009.11/board/in-circuit/icnova/at91_nand.c 1970-01-01 01:00:00.000000000 +0100
++++ u-boot-2009.11.new/board/in-circuit/icnova/at91_nand.c 2010-10-08 12:09:30.000000000 +0200
+@@ -0,0 +1,123 @@
++/*
++ * (C) 2010
++ * Benjamin Tietz, In-Circuit <benjamin.tietz@in-circuit.de>
++ *
++ * (C) Copyright 2007-2008
++ * Stelian Pop <stelian.pop@leadtechdesign.com>
++ * Lead Tech Design <www.leadtechdesign.com>
++ *
++ * (C) Copyright 2006 ATMEL Rousset, Lacressonniere Nicolas
++ *
++ * 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 Foundation; 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
++ */
++
++#include <common.h>
++#include <asm/arch/at91sam9g45.h>
++#include <asm/arch/at91sam9_matrix.h>
++#include <asm/arch/at91sam9_smc.h>
++#include <asm/arch/at91_pmc.h>
++#include <asm/arch/io.h>
++#include <asm/arch/gpio.h>
++#include <asm/arch/at91_pio.h>
++
++#include <nand.h>
++
++/*
++ * hardware specific access to control-lines
++ */
++#define MASK_ALE (1 << CFG_NAND_ALE)
++#define MASK_CLE (1 << CFG_NAND_CLE)
++
++static void icnova_arm9_nand_hwcontrol(struct mtd_info *mtd,
++ int cmd, unsigned int ctrl)
++{
++ struct nand_chip *this = mtd->priv;
++
++ if (ctrl & NAND_CTRL_CHANGE) {
++ ulong IO_ADDR_W = (ulong) this->IO_ADDR_W;
++ IO_ADDR_W &= ~(MASK_ALE | MASK_CLE);
++
++ if (ctrl & NAND_CLE)
++ IO_ADDR_W |= MASK_CLE;
++ if (ctrl & NAND_ALE)
++ IO_ADDR_W |= MASK_ALE;
++
++ at91_set_gpio_value(CFG_NAND_CE, !(ctrl & NAND_NCE));
++ this->IO_ADDR_W = (void *) IO_ADDR_W;
++ }
++
++ if (cmd != NAND_CMD_NONE)
++ writeb(cmd, this->IO_ADDR_W);
++}
++
++static int icnova_arm9_nand_ready(struct mtd_info *mtd)
++{
++ return at91_get_gpio_value(CFG_NAND_RDY);
++}
++
++int board_nand_init(struct nand_chip *nand)
++{
++ nand->ecc.mode = NAND_ECC_SOFT;
++#ifdef CONFIG_SYS_NAND_DBW_16
++ nand->options = NAND_BUSWIDTH_16;
++#endif
++ nand->cmd_ctrl = icnova_arm9_nand_hwcontrol;
++ nand->dev_ready = icnova_arm9_nand_ready;
++ nand->chip_delay = 20;
++
++ return 0;
++}
++
++void icnova_nand_hw_init(void)
++{
++ unsigned long csa;
++
++ /* Enable CS3 */
++ csa = at91_sys_read(AT91_MATRIX_EBICSA);
++ at91_sys_write(AT91_MATRIX_EBICSA,
++ csa | AT91_MATRIX_EBI_CS3A_SMC_SMARTMEDIA);
++
++ /* Configure SMC CS3 for NAND/SmartMedia */
++ at91_sys_write(AT91_SMC_SETUP(3),
++ AT91_SMC_NWESETUP_(8) | AT91_SMC_NCS_WRSETUP_(0) |
++ AT91_SMC_NRDSETUP_(8) | AT91_SMC_NCS_RDSETUP_(0));
++ at91_sys_write(AT91_SMC_PULSE(3),
++ AT91_SMC_NWEPULSE_(28) | AT91_SMC_NCS_WRPULSE_(20) |
++ AT91_SMC_NRDPULSE_(28) | AT91_SMC_NCS_RDPULSE_(20));
++ at91_sys_write(AT91_SMC_CYCLE(3),
++ AT91_SMC_NWECYCLE_(36) | AT91_SMC_NRDCYCLE_(36));
++ at91_sys_write(AT91_SMC_MODE(3),
++ AT91_SMC_READMODE | AT91_SMC_WRITEMODE |
++ AT91_SMC_EXNWMODE_DISABLE |
++#ifdef CONFIG_SYS_NAND_DBW_16
++ AT91_SMC_DBW_16 |
++#else /* CONFIG_SYS_NAND_DBW_8 */
++ AT91_SMC_DBW_8 |
++#endif
++ AT91_SMC_TDF_(3));
++
++ at91_sys_write(AT91_PMC_PCER, 1 << AT91SAM9G45_ID_PIOC);
++
++ /* Configure RDY/BSY */
++ at91_set_gpio_input(CFG_NAND_RDY, 1);
++
++ /* Enable NandFlash */
++ at91_set_gpio_output(CFG_NAND_CE, 1);
++}
++
+diff -Naur u-boot-2009.11/board/in-circuit/icnova/config.mk u-boot-2009.11.new/board/in-circuit/icnova/config.mk
+--- u-boot-2009.11/board/in-circuit/icnova/config.mk 1970-01-01 01:00:00.000000000 +0100
++++ u-boot-2009.11.new/board/in-circuit/icnova/config.mk 2010-10-08 12:09:30.000000000 +0200
+@@ -0,0 +1,8 @@
++#PLATFORM_RELFLAGS += -ffunction-sections -fdata-sections
++#PLATFORM_LDFLAGS += --gc-sections
++#TEXT_BASE = 0x10000000
++#TEXT_BASE = 0x00000000
++TEXT_BASE = 0x73f00000
++#TEXT_BASE = 0x00300800
++#LDSCRIPT = $(obj)board/in-circuit/icnova/u-boot.lds
++#CONFIG_ATMEL_USART = y
+diff -Naur u-boot-2009.11/board/in-circuit/icnova/flash2x8.c u-boot-2009.11.new/board/in-circuit/icnova/flash2x8.c
+--- u-boot-2009.11/board/in-circuit/icnova/flash2x8.c 1970-01-01 01:00:00.000000000 +0100
++++ u-boot-2009.11.new/board/in-circuit/icnova/flash2x8.c 2010-10-08 12:09:30.000000000 +0200
+@@ -0,0 +1,241 @@
++/*
++ * Copyright (C) 2005-2006 Atmel Corporation
++ *
++ * 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 Foundation; 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
++ */
++#include <common.h>
++
++#ifndef CONFIG_ICNOVA_ARM9
++#include <asm/cacheflush.h>
++#include <asm/sections.h>
++#else
++#define dcache_flush_unlocked() while(0)
++#define sync_write_buffer() while(0)
++#define uncached(addr) addr
++#endif
++#include <asm/io.h>
++
++DECLARE_GLOBAL_DATA_PTR;
++
++flash_info_t flash_info[1];
++
++static void flash_identify(uint16_t *flash, flash_info_t *info)
++{
++ unsigned long flags;
++
++ flags = disable_interrupts();
++
++ dcache_flush_unlocked();
++
++ writew(0xaaaa, flash + 0x555);
++ writew(0x5555, flash + 0xaaa);
++ writew(0x9090, flash + 0x555);
++ info->flash_id = readl(flash);
++ writew(0xf0f0, flash);
++
++ readw(flash);
++
++ if (flags)
++ enable_interrupts();
++}
++
++#if CONFIG_SYS_FLASH_SECT > CONFIG_SYS_MAX_FLASH_SECT
++# error Flash has more sectors than allowed at max
++#endif
++
++unsigned long flash_init(void)
++{
++ unsigned long addr;
++ unsigned int i;
++
++ flash_info[0].size = CONFIG_SYS_FLASH_SIZE;
++ flash_info[0].sector_count = CONFIG_SYS_FLASH_SECT;
++
++ flash_identify(uncached((void *)CONFIG_SYS_FLASH_BASE), &flash_info[0]);
++
++ for (i=0, addr =0;
++ i < CONFIG_SYS_MAX_FLASH_SECT;
++ i++,addr+=(CONFIG_SYS_FLASH_SIZE/CONFIG_SYS_FLASH_SECT))
++ flash_info[0].start[i] = addr;
++
++ return CONFIG_SYS_FLASH_SIZE;
++}
++
++void flash_print_info(flash_info_t *info)
++{
++ int i;
++ printf("Flash: Vendor ID: 0x%02lx, Product ID: 0x%02lx\n",
++ info->flash_id >> 16, info->flash_id & 0xffff);
++ printf("Size: %ld MB in %d sectors\n",
++ info->size >> 10, info->sector_count);
++ for(i=0; i<CONFIG_SYS_FLASH_SECT; i++)
++ printf("\tSect %i @ 0x%08lx\n",i, flash_info[0].start[i]);
++}
++
++int flash_erase(flash_info_t *info, int s_first, int s_last)
++{
++ unsigned long flags;
++ unsigned long start_time;
++ uint16_t *fb, *sb;
++ unsigned int i;
++ int ret;
++ uint16_t status;
++
++ if ((s_first < 0) || (s_first > s_last)
++ || (s_last >= info->sector_count)) {
++ puts("Error: first and/or last sector out of range\n");
++ return ERR_INVAL;
++ }
++
++ for (i = s_first; i < s_last; i++)
++ if (info->protect[i]) {
++ printf("Error: sector %d is protected\n", i);
++ return ERR_PROTECTED;
++ }
++
++ fb = (uint16_t *)uncached(info->start[0]);
++
++ dcache_flush_unlocked();
++
++ for (i = s_first; (i <= s_last) && !ctrlc(); i++) {
++ printf("Erasing sector %3d...", i);
++
++ sb = (uint16_t *)uncached(info->start[i]);
++
++ flags = disable_interrupts();
++
++ start_time = get_timer(0);
++
++ /* Unlock sector */
++ writew(0xaaaa, fb + 0x555);
++ writew(0x7070, sb);
++
++ /* Erase sector */
++ writew(0xaaaa, fb + 0x555);
++ writew(0x5555, fb + 0xaaa);
++ writew(0x8080, fb + 0x555);
++ writew(0xaaaa, fb + 0x555);
++ writew(0x5555, fb + 0xaaa);
++ writew(0x3030, sb);
++
++ /* Wait for completion */
++ ret = ERR_OK;
++ do {
++ /* TODO: Timeout */
++ status = readw(sb);
++ } while ((status != 0xffff) /*&& !(status & 0x2828)*/);
++
++ writew(0xf0f0, fb);
++
++ /*
++ * Make sure the command actually makes it to the bus
++ * before we re-enable interrupts.
++ */
++ readw(fb);
++
++ if (flags)
++ enable_interrupts();
++
++ if (status != 0xffff) {
++ printf("Flash erase error at address 0x%p: 0x%02x\n",
++ sb, status);
++ ret = ERR_PROG_ERROR;
++ break;
++ }
++ }
++
++ if (ctrlc())
++ printf("User interrupt!\n");
++
++ return ERR_OK;
++}
++
++int write_buff(flash_info_t *info, uchar *src,
++ ulong addr, ulong count)
++{
++ unsigned long flags;
++ uint16_t *base, *p, *s, *end;
++ uint16_t word, status, status1;
++ int ret = ERR_OK;
++
++ if (addr < info->start[0]
++ || (addr + count) > (info->start[0] + info->size)
++ || (addr + count) < addr) {
++ puts("Error: invalid address range\n");
++ return ERR_INVAL;
++ }
++
++ if (addr & 1 || count & 1 || (unsigned int)src & 1) {
++ puts("Error: misaligned source, destination or count\n");
++ return ERR_ALIGN;
++ }
++
++ base = (uint16_t *)uncached(info->start[0]);
++ end = (uint16_t *)uncached(addr + count);
++
++ flags = disable_interrupts();
++
++ dcache_flush_unlocked();
++ sync_write_buffer();
++
++ for (p = (uint16_t *)uncached(addr), s = (uint16_t *)src;
++ p < end && !ctrlc(); p++, s++) {
++ word = *s;
++
++ writew(0xaaaa, base + 0x555);
++ writew(0x5555, base + 0xaaa);
++ writew(0xa0a0, base + 0x555);
++ writew(word, p);
++
++ sync_write_buffer();
++
++ /* Wait for completion */
++ status1 = readw(p);
++ do {
++ /* TODO: Timeout */
++ status = status1;
++ status1 = readw(p);
++ } while (((status ^ status1) & 0x4040) /* toggled */
++ /*&& !(status1 & 0x2828)*/); /* error bits */
++
++ /*
++ * We'll need to check once again for toggle bit
++ * because the toggle bit may stop toggling as I/O5
++ * changes to "1" (ref at49bv642.pdf p9)
++ */
++ status1 = readw(p);
++ status = readw(p);
++
++ //writew(0xf0f0, base);
++ //readw(base);
++
++ if ((status ^ status1) & 0x4040) {
++ printf("Flash write error at address 0x%p: "
++ "0x%02x != 0x%02x\n",
++ p, status,word);
++ ret = ERR_PROG_ERROR;
++ break;
++ }
++ }
++
++ if (flags)
++ enable_interrupts();
++
++ return ret;
++}
+diff -Naur u-boot-2009.11/board/in-circuit/icnova/flash.c u-boot-2009.11.new/board/in-circuit/icnova/flash.c
+--- u-boot-2009.11/board/in-circuit/icnova/flash.c 1970-01-01 01:00:00.000000000 +0100
++++ u-boot-2009.11.new/board/in-circuit/icnova/flash.c 2010-10-08 12:09:30.000000000 +0200
+@@ -0,0 +1,229 @@
++/*
++ * Copyright (C) 2005-2006 Atmel Corporation
++ *
++ * 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 Foundation; 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
++ */
++#include <common.h>
++
++#include <asm/cacheflush.h>
++#include <asm/io.h>
++#include <asm/sections.h>
++
++DECLARE_GLOBAL_DATA_PTR;
++
++flash_info_t flash_info[1];
++
++static void flash_identify(uint16_t *flash, flash_info_t *info)
++{
++ unsigned long flags;
++
++ flags = disable_interrupts();
++
++ dcache_flush_unlocked();
++
++ writew(0xaa, flash + 0x555);
++ writew(0x55, flash + 0xaaa);
++ writew(0x90, flash + 0x555);
++ info->flash_id = readl(flash);
++ writew(0xff, flash);
++
++ readw(flash);
++
++ if (flags)
++ enable_interrupts();
++}
++
++unsigned long flash_init(void)
++{
++ unsigned long addr;
++ unsigned int i;
++
++ flash_info[0].size = CONFIG_SYS_FLASH_SIZE;
++ flash_info[0].sector_count = 135;
++
++ flash_identify(uncached((void *)CONFIG_SYS_FLASH_BASE), &flash_info[0]);
++
++ for (i = 0, addr = 0; i < 8; i++, addr += 0x2000)
++ flash_info[0].start[i] = addr;
++ for (; i < flash_info[0].sector_count; i++, addr += 0x10000)
++ flash_info[0].start[i] = addr;
++
++ return CONFIG_SYS_FLASH_SIZE;
++}
++
++void flash_print_info(flash_info_t *info)
++{
++ printf("Flash: Vendor ID: 0x%02lx, Product ID: 0x%02lx\n",
++ info->flash_id >> 16, info->flash_id & 0xffff);
++ printf("Size: %ld MB in %d sectors\n",
++ info->size >> 10, info->sector_count);
++}
++
++int flash_erase(flash_info_t *info, int s_first, int s_last)
++{
++ unsigned long flags;
++ unsigned long start_time;
++ uint16_t *fb, *sb;
++ unsigned int i;
++ int ret;
++ uint16_t status;
++
++ if ((s_first < 0) || (s_first > s_last)
++ || (s_last >= info->sector_count)) {
++ puts("Error: first and/or last sector out of range\n");
++ return ERR_INVAL;
++ }
++
++ for (i = s_first; i < s_last; i++)
++ if (info->protect[i]) {
++ printf("Error: sector %d is protected\n", i);
++ return ERR_PROTECTED;
++ }
++
++ fb = (uint16_t *)uncached(info->start[0]);
++
++ dcache_flush_unlocked();
++
++ for (i = s_first; (i <= s_last) && !ctrlc(); i++) {
++ printf("Erasing sector %3d...", i);
++
++ sb = (uint16_t *)uncached(info->start[i]);
++
++ flags = disable_interrupts();
++
++ start_time = get_timer(0);
++
++ /* Unlock sector */
++ writew(0xaa, fb + 0x555);
++ writew(0x70, sb);
++
++ /* Erase sector */
++ writew(0xaa, fb + 0x555);
++ writew(0x55, fb + 0xaaa);
++ writew(0x80, fb + 0x555);
++ writew(0xaa, fb + 0x555);
++ writew(0x55, fb + 0xaaa);
++ writew(0x30, sb);
++
++ /* Wait for completion */
++ ret = ERR_OK;
++ do {
++ /* TODO: Timeout */
++ status = readw(sb);
++ } while ((status != 0xffff) && !(status & 0x28));
++
++ writew(0xf0, fb);
++
++ /*
++ * Make sure the command actually makes it to the bus
++ * before we re-enable interrupts.
++ */
++ readw(fb);
++
++ if (flags)
++ enable_interrupts();
++
++ if (status != 0xffff) {
++ printf("Flash erase error at address 0x%p: 0x%02x\n",
++ sb, status);
++ ret = ERR_PROG_ERROR;
++ break;
++ }
++ }
++
++ if (ctrlc())
++ printf("User interrupt!\n");
++
++ return ERR_OK;
++}
++
++int write_buff(flash_info_t *info, uchar *src,
++ ulong addr, ulong count)
++{
++ unsigned long flags;
++ uint16_t *base, *p, *s, *end;
++ uint16_t word, status, status1;
++ int ret = ERR_OK;
++
++ if (addr < info->start[0]
++ || (addr + count) > (info->start[0] + info->size)
++ || (addr + count) < addr) {
++ puts("Error: invalid address range\n");
++ return ERR_INVAL;
++ }
++
++ if (addr & 1 || count & 1 || (unsigned int)src & 1) {
++ puts("Error: misaligned source, destination or count\n");
++ return ERR_ALIGN;
++ }
++
++ base = (uint16_t *)uncached(info->start[0]);
++ end = (uint16_t *)uncached(addr + count);
++
++ flags = disable_interrupts();
++
++ dcache_flush_unlocked();
++ sync_write_buffer();
++
++ for (p = (uint16_t *)uncached(addr), s = (uint16_t *)src;
++ p < end && !ctrlc(); p++, s++) {
++ word = *s;
++
++ writew(0xaa, base + 0x555);
++ writew(0x55, base + 0xaaa);
++ writew(0xa0, base + 0x555);
++ writew(word, p);
++
++ sync_write_buffer();
++
++ /* Wait for completion */
++ status1 = readw(p);
++ do {
++ /* TODO: Timeout */
++ status = status1;
++ status1 = readw(p);
++ } while (((status ^ status1) & 0x40) /* toggled */
++ && !(status1 & 0x28)); /* error bits */
++
++ /*
++ * We'll need to check once again for toggle bit
++ * because the toggle bit may stop toggling as I/O5
++ * changes to "1" (ref at49bv642.pdf p9)
++ */
++ status1 = readw(p);
++ status = readw(p);
++ if ((status ^ status1) & 0x40) {
++ printf("Flash write error at address 0x%p: "
++ "0x%02x != 0x%02x\n",
++ p, status,word);
++ ret = ERR_PROG_ERROR;
++ writew(0xf0, base);
++ readw(base);
++ break;
++ }
++
++ writew(0xf0, base);
++ readw(base);
++ }
++
++ if (flags)
++ enable_interrupts();
++
++ return ret;
++}
+diff -Naur u-boot-2009.11/board/in-circuit/icnova/icnova_arm.c u-boot-2009.11.new/board/in-circuit/icnova/icnova_arm.c
+--- u-boot-2009.11/board/in-circuit/icnova/icnova_arm.c 1970-01-01 01:00:00.000000000 +0100
++++ u-boot-2009.11.new/board/in-circuit/icnova/icnova_arm.c 2010-10-08 12:09:30.000000000 +0200
+@@ -0,0 +1,294 @@
++/*
++ * (C) 2010 Benjamin Tietz, In-Circuit <benjamin.tietz@in-circuit.de>
++ *
++ * (C) Copyright 2007-2008
++ * Stelian Pop <stelian.pop@leadtechdesign.com>
++ * Lead Tech Design <www.leadtechdesign.com>
++ *
++ * 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 Foundation; 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
++ */
++
++#include <common.h>
++#include <asm/sizes.h>
++#include <asm/arch/at91sam9g45.h>
++#include <asm/arch/at91sam9_matrix.h>
++#include <asm/arch/at91sam9_smc.h>
++#include <asm/arch/at91_common.h>
++#include <asm/arch/at91_pmc.h>
++#include <asm/arch/at91_rstc.h>
++#include <asm/arch/clk.h>
++#include <asm/arch/gpio.h>
++#include <asm/arch/io.h>
++#include <asm/arch/hardware.h>
++#include <lcd.h>
++#include <atmel_lcdc.h>
++#if defined(CONFIG_RESET_PHY_R) && defined(CONFIG_MACB)
++#include <net.h>
++#endif
++#include <netdev.h>
++#include "nand.h"
++
++DECLARE_GLOBAL_DATA_PTR;
++
++/* ------------------------------------------------------------------------- */
++/*
++ * Miscelaneous platform dependent initialisations
++ */
++
++
++#ifdef CONFIG_MACB
++static void icnova_arm9_macb_hw_init(void)
++{
++ //unsigned long rstc;
++ /*
++ * Disable pull-up on:
++ * RXDV (PA15) => PHY normal mode (not Test mode)
++ * ERX0 (PA12) => PHY ADDR0
++ * ERX1 (PA13) => PHY ADDR1
++ * ERX2 (PA8) => PHY ADDR2
++ * ERX3 (PA9) => PHY ADDR3
++ * ECRS (PA29) => PHY ADDR4 => PHYADDR = 0x0
++ * ECOL (PA30) => full MII interface
++ * ERXER (PA16) => no repeater
++ * ETXCLK (PA17) => no isolate
++ */
++ unsigned long phy_mask = pin_to_mask(AT91_PIN_PA15) |
++ pin_to_mask(AT91_PIN_PA8) | pin_to_mask(AT91_PIN_PA9) |
++ pin_to_mask(AT91_PIN_PA12) | pin_to_mask(AT91_PIN_PA13) |
++ pin_to_mask(AT91_PIN_PA29) | pin_to_mask(AT91_PIN_PA30) |
++ pin_to_mask(AT91_PIN_PA16) | pin_to_mask(AT91_PIN_PA17);
++ /* Reset and pdwn-pins */
++ unsigned long rst = pin_to_mask(AT91_PIN_PA26);
++ unsigned long pdwn = pin_to_mask(AT91_PIN_PA25);
++ /* Enable clock */
++ at91_sys_write(AT91_PMC_PCER, 1 << AT91SAM9G45_ID_EMAC);
++
++ /*
++ * Set up Pins
++ */
++ writel(rst | pdwn | phy_mask,
++ pin_to_controller(AT91_PIN_PA0) + PIO_PER);
++ writel(rst | pdwn | phy_mask,
++ pin_to_controller(AT91_PIN_PA0) + PIO_OER);
++ writel(rst | pdwn | phy_mask,
++ pin_to_controller(AT91_PIN_PA0) + PIO_CODR);
++ udelay(1000);
++ writel(rst,
++ pin_to_controller(AT91_PIN_PA0) + PIO_SODR);
++ udelay(500000);
++ // phy-mask will be resetted by internal hardware
++
++#if 0
++ rstc = readl(AT91_BASE_SYS + AT91_RSTC_MR);
++
++ /* Need to reset PHY -> 500ms reset */
++ writel(AT91_BASE_SYS + AT91_RSTC_MR, AT91_RSTC_KEY |
++ (AT91_RSTC_ERSTL & (0x0D << 8)) |
++ AT91_RSTC_URSTEN);
++
++ writel(AT91_BASE_SYS + AT91_RSTC_CR, AT91_RSTC_KEY | AT91_RSTC_EXTRST);
++
++ /* Wait for end hardware reset */
++ while (!(readl(AT91_BASE_SYS + AT91_RSTC_SR) & AT91_RSTC_NRSTL))
++ asm("nop");
++
++ /* Restore NRST value */
++ writel(AT91_BASE_SYS + AT91_RSTC_MR, AT91_RSTC_KEY |
++ (rstc) |
++ AT91_RSTC_URSTEN);
++#endif
++
++ at91_macb_hw_init();
++}
++#endif
++
++#ifdef CONFIG_LCD
++
++vidinfo_t panel_info = {
++ vl_col: 480,
++ vl_row: 272,
++ vl_clk: 9000000,
++ vl_sync: ATMEL_LCDC_INVLINE_NORMAL |
++ ATMEL_LCDC_INVFRAME_NORMAL,
++ vl_bpix: 3,
++ vl_tft: 1,
++ vl_hsync_len: 45,
++ vl_left_margin: 1,
++ vl_right_margin:1,
++ vl_vsync_len: 1,
++ vl_upper_margin:40,
++ vl_lower_margin:1,
++ mmio: AT91SAM9G45_LCDC_BASE,
++};
++
++
++void lcd_enable(void)
++{
++ at91_set_A_periph(AT91_PIN_PE6, 1); /* power up */
++}
++
++void lcd_disable(void)
++{
++ at91_set_A_periph(AT91_PIN_PE6, 0); /* power down */
++}
++
++static void at91sam9m10g45ek_lcd_hw_init(void)
++{
++ at91_set_A_periph(AT91_PIN_PE0, 0); /* LCDDPWR */
++ at91_set_A_periph(AT91_PIN_PE2, 0); /* LCDCC */
++ at91_set_A_periph(AT91_PIN_PE3, 0); /* LCDVSYNC */
++ at91_set_A_periph(AT91_PIN_PE4, 0); /* LCDHSYNC */
++ at91_set_A_periph(AT91_PIN_PE5, 0); /* LCDDOTCK */
++
++ at91_set_A_periph(AT91_PIN_PE7, 0); /* LCDD0 */
++ at91_set_A_periph(AT91_PIN_PE8, 0); /* LCDD1 */
++ at91_set_A_periph(AT91_PIN_PE9, 0); /* LCDD2 */
++ at91_set_A_periph(AT91_PIN_PE10, 0); /* LCDD3 */
++ at91_set_A_periph(AT91_PIN_PE11, 0); /* LCDD4 */
++ at91_set_A_periph(AT91_PIN_PE12, 0); /* LCDD5 */
++ at91_set_A_periph(AT91_PIN_PE13, 0); /* LCDD6 */
++ at91_set_A_periph(AT91_PIN_PE14, 0); /* LCDD7 */
++ at91_set_A_periph(AT91_PIN_PE15, 0); /* LCDD8 */
++ at91_set_A_periph(AT91_PIN_PE16, 0); /* LCDD9 */
++ at91_set_A_periph(AT91_PIN_PE17, 0); /* LCDD10 */
++ at91_set_A_periph(AT91_PIN_PE18, 0); /* LCDD11 */
++ at91_set_A_periph(AT91_PIN_PE19, 0); /* LCDD12 */
++ at91_set_B_periph(AT91_PIN_PE20, 0); /* LCDD13 */
++ at91_set_A_periph(AT91_PIN_PE21, 0); /* LCDD14 */
++ at91_set_A_periph(AT91_PIN_PE22, 0); /* LCDD15 */
++ at91_set_A_periph(AT91_PIN_PE23, 0); /* LCDD16 */
++ at91_set_A_periph(AT91_PIN_PE24, 0); /* LCDD17 */
++ at91_set_A_periph(AT91_PIN_PE25, 0); /* LCDD18 */
++ at91_set_A_periph(AT91_PIN_PE26, 0); /* LCDD19 */
++ at91_set_A_periph(AT91_PIN_PE27, 0); /* LCDD20 */
++ at91_set_B_periph(AT91_PIN_PE28, 0); /* LCDD21 */
++ at91_set_A_periph(AT91_PIN_PE29, 0); /* LCDD22 */
++ at91_set_A_periph(AT91_PIN_PE30, 0); /* LCDD23 */
++
++ at91_sys_write(AT91_PMC_PCER, 1 << AT91SAM9G45_ID_LCDC);
++
++ gd->fb_base = CONFIG_AT91SAM9G45_LCD_BASE;
++}
++
++#ifdef CONFIG_LCD_INFO
++#include <nand.h>
++#include <version.h>
++
++void lcd_show_board_info(void)
++{
++ ulong dram_size, nand_size;
++ int i;
++ char temp[32];
++
++ lcd_printf ("%s\n", U_BOOT_VERSION);
++ lcd_printf ("(C) 2008 ATMEL Corp\n");
++ lcd_printf ("at91support@atmel.com\n");
++ lcd_printf ("%s CPU at %s MHz\n",
++ AT91_CPU_NAME,
++ strmhz(temp, get_cpu_clk_rate()));
++
++ dram_size = 0;
++ for (i = 0; i < CONFIG_NR_DRAM_BANKS; i++)
++ dram_size += gd->bd->bi_dram[i].size;
++ nand_size = 0;
++ for (i = 0; i < CONFIG_SYS_MAX_NAND_DEVICE; i++)
++ nand_size += nand_info[i].size;
++ lcd_printf (" %ld MB SDRAM, %ld MB NAND\n",
++ dram_size >> 20,
++ nand_size >> 20 );
++}
++#endif /* CONFIG_LCD_INFO */
++#endif
++
++#ifdef CONFIG_MMC
++static void icnova_arm9_mmc_init(void) {
++ at91_set_A_periph(AT91_PIN_PA0, 0);
++ at91_set_A_periph(AT91_PIN_PA1, 1);
++ at91_set_A_periph(AT91_PIN_PA2, 1);
++ at91_set_A_periph(AT91_PIN_PA3, 1);
++ at91_set_A_periph(AT91_PIN_PA4, 1);
++ at91_set_A_periph(AT91_PIN_PA5, 1);
++
++ at91_sys_write(AT91_PMC_PCER, 1<<AT91SAM9G45_ID_MCI0);
++}
++
++int board_mmc_init(bd_t *bd) {
++ icnova_arm9_mmc_init();
++ return atmel_mmc_init(bd);
++}
++#endif
++
++int board_init(void)
++{
++ /* Enable Ctrlc */
++ console_init_f();
++
++ /* arch number of AT91SAM9M10G45EK-Board */
++//#ifdef CONFIG_AT91SAM9M10G45EK
++// gd->bd->bi_arch_number = MACH_TYPE_AT91SAM9M10G45EK;
++//#elif defined CONFIG_AT91SAM9G45EKES
++ gd->bd->bi_arch_number = MACH_TYPE_AT91SAM9G45EKES;
++//#endif
++ /* adress of boot parameters */
++ gd->bd->bi_boot_params = PHYS_SDRAM + 0x100;
++
++ at91_serial_hw_init();
++#ifdef CONFIG_CMD_NAND
++ icnova_nand_hw_init();
++#endif
++#ifdef CONFIG_MACB
++ icnova_arm9_macb_hw_init();
++#endif
++
++#ifdef CONFIG_LCD
++ icnova_arm9_lcd_hw_init();
++#endif
++
++ return 0;
++}
++
++int dram_init(void)
++{
++ gd->bd->bi_dram[0].start = PHYS_SDRAM;
++ gd->bd->bi_dram[0].size = PHYS_SDRAM_SIZE;
++ return 0;
++}
++
++#ifdef CONFIG_RESET_PHY_R
++void reset_phy(void)
++{
++#ifdef CONFIG_MACB
++ /*
++ * Initialize ethernet HW addr prior to starting Linux,
++ * needed for nfsroot
++ */
++ eth_init(gd->bd);
++#endif
++}
++#endif
++
++int board_eth_init(bd_t *bis)
++{
++ int rc = 0;
++#ifdef CONFIG_MACB
++ rc = macb_eth_initialize(0, (void *)AT91SAM9G45_BASE_EMAC, 0x00);
++#endif
++ return rc;
++}
++
+diff -Naur u-boot-2009.11/board/in-circuit/icnova/icnova.c u-boot-2009.11.new/board/in-circuit/icnova/icnova.c
+--- u-boot-2009.11/board/in-circuit/icnova/icnova.c 1970-01-01 01:00:00.000000000 +0100
++++ u-boot-2009.11.new/board/in-circuit/icnova/icnova.c 2010-10-08 12:11:21.000000000 +0200
+@@ -0,0 +1,127 @@
++/*
++ * Copyright (C) 2005-2006 Atmel Corporation
++ *
++ * 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 Foundation; 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
++ */
++#include <common.h>
++
++#include <asm/io.h>
++#include <asm/sdram.h>
++#include <asm/arch/clk.h>
++#include <asm/arch/gpio.h>
++#include <asm/arch/hmatrix.h>
++#include <netdev.h>
++
++DECLARE_GLOBAL_DATA_PTR;
++
++static const struct sdram_config sdram_config = {
++ .data_bits = SDRAM_DATA_32BIT,
++ .row_bits = 13,
++ .col_bits = 9,
++ .bank_bits = 2,
++ .cas = 2,
++ .twr = 2,
++ .trc = 7,
++ .trp = 2,
++ .trcd = 2,
++ .tras = 4,
++ .txsr = 7,
++ /* 7.81 us */
++ .refresh_period = (781 * (SDRAMC_BUS_HZ / 1000)) / 100000,
++};
++
++int board_early_init_f(void)
++{
++ /* Enable SDRAM in the EBI mux */
++ hmatrix_slave_write(EBI, SFR, HMATRIX_BIT(EBI_SDRAM_ENABLE));
++
++ gpio_enable_ebi();
++#ifdef CONFIG_USART0
++ gpio_enable_usart0();
++#endif
++#ifdef CONFIG_USART1
++ gpio_enable_usart1();
++#endif
++#ifdef CONFIG_USART2
++ gpio_enable_usart2();
++#endif
++#ifdef CONFIG_USART3
++ gpio_enable_usart3();
++#endif
++#ifdef CONFIG_USART4
++ gpio_enable_usart4();
++#endif
++#ifdef CONFIG_MACB
++ gpio_select_pio(GPIO_PIN_PB30, GPIOF_OUTPUT);
++ gpio_set_value(GPIO_PIN_PB30, 0);
++ gpio_select_pio(GPIO_PIN_PB29, GPIOF_OUTPUT);
++ gpio_set_value(GPIO_PIN_PB29, 0);
++ udelay(100);
++ gpio_set_value(GPIO_PIN_PB29, 1);
++ gpio_enable_macb0();
++#endif
++#ifdef CONFIG_MACB2
++ gpio_enable_macb1();
++#endif
++#ifdef CONFIG_MMC
++ gpio_enable_mmci();
++#endif
++
++ return 0;
++}
++
++
++phys_size_t initdram(int board_type)
++{
++ unsigned long expected_size;
++ unsigned long actual_size;
++ void *sdram_base;
++
++ sdram_base = map_physmem(EBI_SDRAM_BASE, EBI_SDRAM_SIZE, MAP_NOCACHE);
++
++ expected_size = sdram_init(sdram_base, &sdram_config);
++ actual_size = get_ram_size(sdram_base, expected_size);
++
++ unmap_physmem(sdram_base, EBI_SDRAM_SIZE);
++
++ if (expected_size != actual_size)
++ printf("Warning: Only %lu of %lu MiB SDRAM is working\n",
++ actual_size >> 20, expected_size >> 20);
++
++ return actual_size;
++}
++
++void board_init_info(void)
++{
++ gd->bd->bi_phy_id[0] = 0x00;
++#ifdef CONFIG_MACB2
++ gd->bd->bi_phy_id[1] = 0x00;
++#endif
++}
++
++#ifdef CONFIG_CMD_NET
++int board_eth_init(bd_t *bi)
++{
++ macb_eth_initialize(0, (void *)MACB0_BASE, bi->bi_phy_id[0]);
++#ifdef CONFIG_MACB2
++ macb_eth_initialize(1, (void *)MACB1_BASE, bi->bi_phy_id[1]);
++#endif
++ return 0;
++}
++#endif
+diff -Naur u-boot-2009.11/board/in-circuit/icnova/Makefile u-boot-2009.11.new/board/in-circuit/icnova/Makefile
+--- u-boot-2009.11/board/in-circuit/icnova/Makefile 1970-01-01 01:00:00.000000000 +0100
++++ u-boot-2009.11.new/board/in-circuit/icnova/Makefile 2010-10-08 12:09:30.000000000 +0200
+@@ -0,0 +1,51 @@
++#
++# (C) Copyright 2001-2006
++# Wolfgang Denk, DENX Software Engineering, wd@denx.de.
++#
++# Copyright (C) 2005-2006 Atmel Corporation
++#
++# (C) 2008 - 2010 Benjamin Tietz, In-Circuit benjamin.tietz@in-circuit.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 Foundation; 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
++
++include $(TOPDIR)/config.mk
++include $(TOPDIR)/include/config.mk
++
++LIB := $(obj)lib$(BOARD).a
++
++COBJS := $(BOARD).o flash.o
++
++include Makefile.$(BNAME)
++
++COBJS-y += $(COBJS)
++SRCS := $(SOBJS:.o=.S) $(COBJS-y:.o=.c)
++OBJS := $(addprefix $(obj),$(SOBJS) $(COBJS-y))
++
++# $(obj).depend
++$(LIB): $(OBJS)
++ $(AR) $(ARFLAGS) $@ $(OBJS)
++
++#########################################################################
++
++# defines $(obj).depend target
++include $(SRCTREE)/rules.mk
++
++sinclude $(obj).depend
++
++#########################################################################
+diff -Naur u-boot-2009.11/board/in-circuit/icnova/Makefile.icnova_arm9oem u-boot-2009.11.new/board/in-circuit/icnova/Makefile.icnova_arm9oem
+--- u-boot-2009.11/board/in-circuit/icnova/Makefile.icnova_arm9oem 1970-01-01 01:00:00.000000000 +0100
++++ u-boot-2009.11.new/board/in-circuit/icnova/Makefile.icnova_arm9oem 2010-10-08 12:09:30.000000000 +0200
+@@ -0,0 +1,6 @@
++
++COBJS := $(BOARD)_$(ARCH).o flash2x8.o
++ifdef CONFIG_CMD_NAND
++COBJS += at91_nand.o
++endif
++
+diff -Naur u-boot-2009.11/board/in-circuit/icnova/Makefile.icnova_arm9oem_u4 u-boot-2009.11.new/board/in-circuit/icnova/Makefile.icnova_arm9oem_u4
+--- u-boot-2009.11/board/in-circuit/icnova/Makefile.icnova_arm9oem_u4 1970-01-01 01:00:00.000000000 +0100
++++ u-boot-2009.11.new/board/in-circuit/icnova/Makefile.icnova_arm9oem_u4 2010-10-08 13:02:52.000000000 +0200
+@@ -0,0 +1,6 @@
++
++COBJS := $(BOARD)_$(ARCH).o flash2x8.o
++ifdef CONFIG_CMD_NAND
++COBJS += at91_nand.o
++endif
++
+diff -Naur u-boot-2009.11/board/in-circuit/icnova/Makefile.icnova_oemplus u-boot-2009.11.new/board/in-circuit/icnova/Makefile.icnova_oemplus
+--- u-boot-2009.11/board/in-circuit/icnova/Makefile.icnova_oemplus 1970-01-01 01:00:00.000000000 +0100
++++ u-boot-2009.11.new/board/in-circuit/icnova/Makefile.icnova_oemplus 2010-10-08 12:09:30.000000000 +0200
+@@ -0,0 +1,2 @@
++
++COBJS := $(BOARD).o flash2x8.o avr32_nand.o
+diff -Naur u-boot-2009.11/board/in-circuit/icnova/nand.h u-boot-2009.11.new/board/in-circuit/icnova/nand.h
+--- u-boot-2009.11/board/in-circuit/icnova/nand.h 1970-01-01 01:00:00.000000000 +0100
++++ u-boot-2009.11.new/board/in-circuit/icnova/nand.h 2010-10-08 12:09:30.000000000 +0200
+@@ -0,0 +1,2 @@
++
++void icnova_nand_hw_init(void);
+diff -Naur u-boot-2009.11/board/in-circuit/icnova/u-boot.lds u-boot-2009.11.new/board/in-circuit/icnova/u-boot.lds
+--- u-boot-2009.11/board/in-circuit/icnova/u-boot.lds 1970-01-01 01:00:00.000000000 +0100
++++ u-boot-2009.11.new/board/in-circuit/icnova/u-boot.lds 2010-10-08 12:09:30.000000000 +0200
+@@ -0,0 +1,73 @@
++/* -*- Fundamental -*-
++ *
++ * Copyright (C) 2005-2006 Atmel Corporation
++ *
++ * 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 Foundation; 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
++ */
++OUTPUT_FORMAT("elf32-avr32", "elf32-avr32", "elf32-avr32")
++OUTPUT_ARCH(avr32)
++ENTRY(_start)
++
++SECTIONS
++{
++ . = 0;
++ _text = .;
++ .text : {
++ *(.exception.text)
++ *(.text)
++ *(.text.*)
++ }
++ _etext = .;
++
++ .rodata : {
++ *(.rodata)
++ *(.rodata.*)
++ }
++
++ . = ALIGN(8);
++ _data = .;
++ .data : {
++ *(.data)
++ *(.data.*)
++ }
++
++ . = ALIGN(4);
++ __u_boot_cmd_start = .;
++ .u_boot_cmd : {
++ KEEP(*(.u_boot_cmd))
++ }
++ __u_boot_cmd_end = .;
++
++ . = ALIGN(4);
++ _got = .;
++ .got : {
++ *(.got)
++ }
++ _egot = .;
++
++ . = ALIGN(8);
++ _edata = .;
++
++ .bss (NOLOAD) : {
++ *(.bss)
++ *(.bss.*)
++ }
++ . = ALIGN(8);
++ _end = .;
++}
+diff -Naur u-boot-2009.11/common/env_flash.c u-boot-2009.11.new/common/env_flash.c
+--- u-boot-2009.11/common/env_flash.c 2009-12-15 23:20:54.000000000 +0100
++++ u-boot-2009.11.new/common/env_flash.c 2010-10-08 12:09:30.000000000 +0200
+@@ -25,6 +25,7 @@
+ */
+
+ /* #define DEBUG */
++#define DEBUG
+
+ #include <common.h>
+ #include <command.h>
+@@ -313,6 +314,7 @@
+ return 1;
+
+ puts ("Writing to Flash... ");
++ debug(" %08lX + %08lX", (ulong) flash_sect_addr, len);
+ rc = flash_write((char *)env_buffer, flash_sect_addr, len);
+ if (rc != 0) {
+ flash_perror (rc);
+diff -Naur u-boot-2009.11/cpu/arm926ejs/at91/at91sam9m10g45_devices.c u-boot-2009.11.new/cpu/arm926ejs/at91/at91sam9m10g45_devices.c
+--- u-boot-2009.11/cpu/arm926ejs/at91/at91sam9m10g45_devices.c 2009-12-15 23:20:54.000000000 +0100
++++ u-boot-2009.11.new/cpu/arm926ejs/at91/at91sam9m10g45_devices.c 2010-10-08 12:11:21.000000000 +0200
+@@ -31,31 +31,38 @@
+ void at91_serial0_hw_init(void)
+ {
+ at91_set_A_periph(AT91_PIN_PB19, 1); /* TXD0 */
+- at91_set_A_periph(AT91_PIN_PB18, 0); /* RXD0 */
++ at91_set_A_periph(AT91_PIN_PB18, 1); /* RXD0 */
+ at91_sys_write(AT91_PMC_PCER, 1 << AT91SAM9G45_ID_US0);
+ }
+
+ void at91_serial1_hw_init(void)
+ {
+ at91_set_A_periph(AT91_PIN_PB4, 1); /* TXD1 */
+- at91_set_A_periph(AT91_PIN_PB5, 0); /* RXD1 */
++ at91_set_A_periph(AT91_PIN_PB5, 1); /* RXD1 */
+ at91_sys_write(AT91_PMC_PCER, 1 << AT91SAM9G45_ID_US1);
+ }
+
+ void at91_serial2_hw_init(void)
+ {
+- at91_set_A_periph(AT91_PIN_PD6, 1); /* TXD2 */
+- at91_set_A_periph(AT91_PIN_PD7, 0); /* RXD2 */
++ at91_set_A_periph(AT91_PIN_PB6, 1); /* TXD2 */
++ at91_set_A_periph(AT91_PIN_PB7, 1); /* RXD2 */
+ at91_sys_write(AT91_PMC_PCER, 1 << AT91SAM9G45_ID_US2);
+ }
+
+ void at91_serial3_hw_init(void)
+ {
+- at91_set_A_periph(AT91_PIN_PB12, 0); /* DRXD */
++ at91_set_A_periph(AT91_PIN_PB12, 1); /* DRXD */
+ at91_set_A_periph(AT91_PIN_PB13, 1); /* DTXD */
+ at91_sys_write(AT91_PMC_PCER, 1 << AT91_ID_SYS);;
+ }
+
++void at91_serial4_hw_init(void)
++{
++ at91_set_A_periph(AT91_PIN_PB8, 1); /* TXD3 */
++ at91_set_A_periph(AT91_PIN_PB9, 1); /* RXD3 */
++ at91_sys_write(AT91_PMC_PCER, 1 << AT91SAM9G45_ID_US3);
++}
++
+ void at91_serial_hw_init(void)
+ {
+ #ifdef CONFIG_USART0
+@@ -73,6 +80,10 @@
+ #ifdef CONFIG_USART3 /* DBGU */
+ at91_serial3_hw_init();
+ #endif
++
++#ifdef CONFIG_USART4
++ at91_serial4_hw_init();
++#endif
+ }
+
+ #ifdef CONFIG_ATMEL_SPI
+diff -Naur u-boot-2009.11/cpu/arm926ejs/at91/lowlevel_init.S u-boot-2009.11.new/cpu/arm926ejs/at91/lowlevel_init.S
+--- u-boot-2009.11/cpu/arm926ejs/at91/lowlevel_init.S 2009-12-15 23:20:54.000000000 +0100
++++ u-boot-2009.11.new/cpu/arm926ejs/at91/lowlevel_init.S 2010-10-08 12:09:30.000000000 +0200
+@@ -36,6 +36,9 @@
+ #include <asm/arch/at91sam9_matrix.h>
+ #include <asm/arch/at91sam9_sdramc.h>
+ #include <asm/arch/at91sam9_smc.h>
++#ifdef CONFIG_SYS_AT91_DDRAM
++#include <asm/arch/at91sam9g45_ddrsdram.h>
++#endif
+
+ _TEXT_BASE:
+ .word TEXT_BASE
+@@ -102,9 +105,36 @@
+ /* ----------------------------------------------------------------------------
+ * PMC Init Step 2.
+ * ----------------------------------------------------------------------------
++ * - Switch on the Main Oscillator
++ * ----------------------------------------------------------------------------
++ */
++ ldr r1, =(AT91_BASE_SYS + AT91_PMC_MCKR)
++
++ /* -Master Clock Controller register PMC_MCKR */
++ ldr r0, =CONFIG_SYS_MCKR1_VAL
++ str r0, [r1]
++
++ /* Reading the PMC Status to detect when the Master clock is ready */
++ mov r4, #AT91_PMC_MCKRDY
++MCKRDY_Loop:
++ ldr r3, [r2]
++ and r3, r4, r3
++ cmp r3, #AT91_PMC_MCKRDY
++ bne MCKRDY_Loop
++
++/* ----------------------------------------------------------------------------
++ * PMC Init Step 3.
++ * ----------------------------------------------------------------------------
+ * Setup PLLA
+ * ----------------------------------------------------------------------------
+ */
++#ifdef CONFIG_SYS_PLLICPR_VAL
++
++ ldr r1, =(AT91_BASE_SYS + AT91_PMC_PLLICPR)
++ ldr r0, =CONFIG_SYS_PLLICPR_VAL
++ str r0, [r1]
++
++#endif
+ ldr r1, =(AT91_BASE_SYS + AT91_CKGR_PLLAR)
+ ldr r0, =CONFIG_SYS_PLLAR_VAL
+ str r0, [r1]
+@@ -117,26 +147,14 @@
+ cmp r3, #AT91_PMC_LOCKA
+ bne MOSCS_Loop1
+
++
+ /* ----------------------------------------------------------------------------
+- * PMC Init Step 3.
++ * PMC Init Step 4.
+ * ----------------------------------------------------------------------------
+- * - Switch on the Main Oscillator
++ * - Switch on the Main Oscillator part 2
+ * ----------------------------------------------------------------------------
+ */
+ ldr r1, =(AT91_BASE_SYS + AT91_PMC_MCKR)
+-
+- /* -Master Clock Controller register PMC_MCKR */
+- ldr r0, =CONFIG_SYS_MCKR1_VAL
+- str r0, [r1]
+-
+- /* Reading the PMC Status to detect when the Master clock is ready */
+- mov r4, #AT91_PMC_MCKRDY
+-MCKRDY_Loop:
+- ldr r3, [r2]
+- and r3, r4, r3
+- cmp r3, #AT91_PMC_MCKRDY
+- bne MCKRDY_Loop
+-
+ ldr r0, =CONFIG_SYS_MCKR2_VAL
+ str r0, [r1]
+
+@@ -154,10 +172,14 @@
+ * - memory control configuration 2
+ * ----------------------------------------------------------------------------
+ */
++#ifdef CONFIG_SYS_AT91_DDRAM
++ ldr r0, =(AT91_BASE_SYS + AT91_DDRSDRAMC_RTR)
++#else
+ ldr r0, =(AT91_BASE_SYS + AT91_SDRAMC_TR)
++#endif
+ ldr r1, [r0]
+ cmp r1, #0
+- bne SDRAM_setup_end
++ //bne SDRAM_setup_end
+
+ ldr r0, =SMRDATA1
+ ldr r2, =SMRDATA2
+@@ -176,10 +198,89 @@
+ cmp r2, r0
+ bne 2b
+
++#ifdef CONFIG_SYS_AT91_DDRAM
++.macro AT91_DDR_CMD cmd, offset, timeout
++ ldr r1, =(AT91_BASE_SYS + AT91_DDRSDRAMC_MR)
++ ldr r0, =\cmd
++ str r0, [r1]
++ ldr r1, =(PHYS_SDRAM + \offset)
++ ldr r0, =0
++ str r0, [r1]
++ ldr r5, =\timeout
++ bl at91_sleep_ns
++.endm
++
++ mov r3, lr
++ AT91_DDR_CMD AT91_DDRSDRAMC_MODE_NOP, 0, 200000
++ /* Step 4: Another NOP to enable cke */
++ AT91_DDR_CMD AT91_DDRSDRAMC_MODE_NOP, 0, 400
++ /* Step 5: Set All Bank precharge*/
++ AT91_DDR_CMD AT91_DDRSDRAMC_MODE_PRECHARGE, 0, 400
++ /* Step 6: Set EMR operation EMRS2 */
++ AT91_DDR_CMD AT91_DDRSDRAMC_MODE_EXT_LMR, 0x04000000, 400
++ /* Step 7: Set EMR operation EMRS3 */
++ AT91_DDR_CMD AT91_DDRSDRAMC_MODE_EXT_LMR, 0x06000000, 400
++ /* Step 8: Set EMR operation EMRS1 */
++ AT91_DDR_CMD AT91_DDRSDRAMC_MODE_EXT_LMR, 0x02000000, 400
++ /* Step 9: Enable DLL-Reset */
++ ldr r1, =(AT91_BASE_SYS + AT91_DDRSDRAMC_CR)
++ ldr r0, [r1]
++ orr r0, r0, #AT91_DDRSDRAMC_DLL
++ str r0, [r1]
++ /* Step 10: reset DLL */
++ AT91_DDR_CMD AT91_DDRSDRAMC_MODE_LMR, 0x0, 400
++ /* Step 11: Set All Bank precharge*/
++ AT91_DDR_CMD AT91_DDRSDRAMC_MODE_PRECHARGE, 0, 400
++ /* Step 12: Enable auto-refresh */
++ AT91_DDR_CMD AT91_DDRSDRAMC_MODE_REFRESH, 0, 400
++ AT91_DDR_CMD AT91_DDRSDRAMC_MODE_REFRESH, 0, 400
++ /* Step 13: Disable DLL reset */
++ ldr r1, =(AT91_BASE_SYS + AT91_DDRSDRAMC_CR)
++ ldr r0, [r1]
++ bic r0, r0, #AT91_DDRSDRAMC_DLL
++ str r0, [r1]
++ /* Step 14: MRS cycle */
++ AT91_DDR_CMD AT91_DDRSDRAMC_MODE_LMR, 0, 400
++ /* Step 15: Program OCD int Config-reg */
++ ldr r1, =(AT91_BASE_SYS + AT91_DDRSDRAMC_CR)
++ ldr r0, [r1]
++ orr r0, r0, #AT91_DDRSDRAMC_OCD
++ str r0, [r1]
++ /* Step 16: Set EMR operation EMRS1 */
++ AT91_DDR_CMD AT91_DDRSDRAMC_MODE_EXT_LMR, 0x02000000, 400
++ /* Step 17: Program End OCD int Config-reg */
++ ldr r1, =(AT91_BASE_SYS + AT91_DDRSDRAMC_CR)
++ ldr r0, [r1]
++ bic r0, r0, #AT91_DDRSDRAMC_OCD
++ str r0, [r1]
++ /* Step 18: Set EMR operation EMRS1 */
++ AT91_DDR_CMD AT91_DDRSDRAMC_MODE_EXT_LMR, 0x02000000, 400
++ /* Step 19-21: End calibration and set up refresh */
++ AT91_DDR_CMD AT91_DDRSDRAMC_MODE_NORMAL, 0, 10
++ str r0, [r1]
++ ldr r1, =(AT91_BASE_SYS + AT91_DDRSDRAMC_RTR)
++ ldr r0, =CONFIG_SYS_SDRAM_REFRESH_VAL
++ str r0, [r1]
++ ldr r5, =2000
++ bl at91_sleep_ns
++ mov lr, r3
++#endif
++
+ SDRAM_setup_end:
+ /* everything is fine now */
+ mov pc, lr
+
++
++at91_sleep_ns:
++ lsl r5, r5, #3
++ /* 1ns */
++sl_inner:
++ sub r5, r5, #1
++ cmp r5, #0
++ bne sl_inner
++ /* Done */
++ mov pc, lr
++
+ .ltorg
+
+ SMRDATA:
+@@ -224,6 +325,20 @@
+ .word CONFIG_SYS_SMC0_SETUP0_VAL
+
+ SMRDATA1:
++#ifdef CONFIG_SYS_AT91_DDRAM
++ .word (AT91_BASE_SYS + AT91_PMC_SCER)
++ .word AT91CAP9_PMC_DDR
++ .word (AT91_BASE_SYS + AT91_DDRSDRAMC_MDR)
++ .word CONFIG_SYS_DDRC_MDR_VAL
++ .word (AT91_BASE_SYS + AT91_DDRSDRAMC_CR)
++ .word CONFIG_SYS_DDRC_CR0_VAL
++ .word (AT91_BASE_SYS + AT91_DDRSDRAMC_T0PR)
++ .word CONFIG_SYS_DDRC_T0PR_VAL
++ .word (AT91_BASE_SYS + AT91_DDRSDRAMC_T1PR)
++ .word CONFIG_SYS_DDRC_T1PR_VAL
++ .word (AT91_BASE_SYS + AT91_DDRSDRAMC_T2PR)
++ .word CONFIG_SYS_DDRC_T2PR_VAL
++#else
+ .word (AT91_BASE_SYS + AT91_SDRAMC_MR)
+ .word CONFIG_SYS_SDRC_MR_VAL1
+ .word (AT91_BASE_SYS + AT91_SDRAMC_TR)
+@@ -266,6 +381,7 @@
+ .word CONFIG_SYS_SDRC_TR_VAL2
+ .word AT91_SDRAM_BASE
+ .word CONFIG_SYS_SDRAM_VAL12
++#endif
+ /* User reset enable*/
+ .word (AT91_BASE_SYS + AT91_RSTC_MR)
+ .word CONFIG_SYS_RSTC_RMR_VAL
+diff -Naur u-boot-2009.11/cpu/arm926ejs/start.S u-boot-2009.11.new/cpu/arm926ejs/start.S
+--- u-boot-2009.11/cpu/arm926ejs/start.S 2009-12-15 23:20:54.000000000 +0100
++++ u-boot-2009.11.new/cpu/arm926ejs/start.S 2010-10-08 12:09:30.000000000 +0200
+@@ -184,8 +184,8 @@
+ cmp r0, r1
+ ble clbss_l
+
+- bl coloured_LED_init
+- bl red_LED_on
++// bl coloured_LED_init
++// bl red_LED_on
+
+ ldr pc, _start_armboot
+
+diff -Naur u-boot-2009.11/drivers/mmc/gen_atmel_mci.c u-boot-2009.11.new/drivers/mmc/gen_atmel_mci.c
+--- u-boot-2009.11/drivers/mmc/gen_atmel_mci.c 1970-01-01 01:00:00.000000000 +0100
++++ u-boot-2009.11.new/drivers/mmc/gen_atmel_mci.c 2010-10-08 12:09:30.000000000 +0200
+@@ -0,0 +1,329 @@
++/*
++ * Copyright 2010, Rob Emanuele <rob at emanuele.us>
++ *
++ * Original Driver:
++ * Copyright (C) 2004-2006 Atmel Corporation
++ *
++ * 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 Foundation; 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
++ */
++
++//#define GEN_ATMEL_MCI_DEBUG 1
++#include <config.h>
++#include <common.h>
++#include <command.h>
++#include <hwconfig.h>
++#include <mmc.h>
++#include <part.h>
++#include <malloc.h>
++#include <mmc.h>
++#include <asm/io.h>
++#include <asm/errno.h>
++#include <asm/byteorder.h>
++#include <asm/arch/clk.h>
++#include <asm/arch/memory-map.h>
++#include "atmel_mci.h"
++
++DECLARE_GLOBAL_DATA_PTR;
++
++#ifndef CONFIG_SYS_MMC_CLK_OD
++#define CONFIG_SYS_MMC_CLK_OD 150000
++#endif
++#define MMC_DEFAULT_BLKLEN 512
++
++void dump_cmd(uint cmdr, uint arg, uint status, const char* msg)
++{
++ printf("gen_atmel_mci: CMDR 0x%08x (%2u) ARGR 0x%08x (SR: 0x%08x) %s\n",
++ cmdr, cmdr&0x3F, arg, status, msg);
++}
++
++/* Setup for MCI Clock and Block Size */
++static void mci_set_mode(unsigned long hz, unsigned long blklen)
++{
++ unsigned long bus_hz;
++ unsigned long clkdiv;
++
++ if (hz > 0) {
++ bus_hz = get_mck_clk_rate();
++ clkdiv = (bus_hz / hz) / 2 - 1;
++ } else {
++ clkdiv = ~0UL;
++ }
++
++ //printf("mmc: setting clock %lu Hz, block size %lu\n", hz, blklen);
++
++ if (clkdiv & ~255UL) {
++ clkdiv = 255;
++ //printf("mmc: clock %lu too low; setting CLKDIV to 255\n", hz);
++ }
++
++ blklen &= 0xfffc;
++ /* On some platforms RDPROOF and WRPROOF are ignored */
++ mmci_writel(MR, (MMCI_BF(CLKDIV, clkdiv)
++ | MMCI_BF(BLKLEN, blklen)
++ | MMCI_BIT(RDPROOF)
++ | MMCI_BIT(WRPROOF)));
++}
++
++/* Return the CMDR with flags for a given command and data packet */
++static uint atmel_encode_cmd(struct mmc_cmd *cmd, struct mmc_data *data, uint* error_flags)
++{
++ uint cmdr = 0;
++ /* Default Flags for Errors */
++ *error_flags |= (MMCI_BIT(DTOE) | MMCI_BIT(RDIRE) | MMCI_BIT(RENDE) | MMCI_BIT(RINDE) | MMCI_BIT(RTOE));
++
++ /* Default Flags for the Command */
++ cmdr |= MMCI_BIT(MAXLAT);
++
++ if (data) {
++ cmdr |= MMCI_BF(TRCMD,1);
++
++ if (data->blocks > 1) {
++ cmdr |= MMCI_BF(TRTYP,1);
++ }
++
++ if (data->flags & MMC_DATA_READ)
++ cmdr |= MMCI_BIT(TRDIR);
++ }
++
++ if (cmd->resp_type & MMC_RSP_CRC)
++ *error_flags |= MMCI_BIT(RCRCE);
++
++ if (cmd->resp_type & MMC_RSP_136)
++ cmdr |= MMCI_BF(RSPTYP,2);
++ else if (cmd->resp_type & MMC_RSP_BUSY)
++ cmdr |= MMCI_BF(RSPTYP,3);
++ else if (cmd->resp_type & MMC_RSP_PRESENT)
++ cmdr |= MMCI_BF(RSPTYP,1);
++
++ return cmdr | MMCI_BF(CMDNB,cmd->cmdidx);
++}
++
++static uint atmel_data_read(uint* data, uint error_flags)
++{
++ uint status;
++ do {
++ status = mmci_readl(SR);
++ if (status & (error_flags | MMCI_BIT(OVRE)))
++ goto io_fail;
++ } while (!(status & MMCI_BIT(RXRDY)));
++
++ if (status & MMCI_BIT(RXRDY)) {
++ *data = mmci_readl(RDR);
++ status = 0;
++ }
++io_fail:
++ return status;
++}
++
++static uint atmel_data_write(uint* data, uint error_flags)
++{
++ uint status;
++ do {
++ status = mmci_readl(SR);
++ if (status & (error_flags | MMCI_BIT(UNRE)))
++ goto io_fail;
++ } while (!(status & MMCI_BIT(TXRDY)));
++
++ if (status & MMCI_BIT(TXRDY)) {
++ mmci_writel(TDR,*data);
++ status = 0;
++ }
++io_fail:
++ return status;
++}
++
++/*
++ * Sends a command out on the bus and deals with the block data.
++ * Takes the mmc pointer, a command pointer, and an optional data pointer.
++ */
++static int
++atmel_send_cmd(struct mmc *mmc, struct mmc_cmd *cmd, struct mmc_data *data)
++{
++ uint cmdr;
++ uint error_flags = 0;
++ uint status;
++
++ /* Figure out the transfer arguments */
++ cmdr = atmel_encode_cmd(cmd, data, &error_flags);
++
++ /* Send the command */
++ mmci_writel(ARGR,cmd->cmdarg);
++ mmci_writel(CMDR, cmdr);
++
++#if GEN_ATMEL_MCI_DEBUG
++ dump_cmd(cmdr, cmd->cmdarg, 0, "COMMAND Dbg Msg");
++#endif
++
++ /* Wait for the command to complete */
++ while (!((status = mmci_readl(SR)) & MMCI_BIT(CMDRDY)));
++
++ if (status & error_flags) {
++ //dump_cmd(cmdr, cmd->cmdarg, status, "COMMAND Failed");
++ return COMM_ERR;
++ }
++
++ /* Copy the response to the response buffer */
++ if (cmd->resp_type & MMC_RSP_136) {
++ cmd->response[0] = mmci_readl(RSPR);
++ cmd->response[1] = mmci_readl(RSPR1);
++ cmd->response[2] = mmci_readl(RSPR2);
++ cmd->response[3] = mmci_readl(RSPR3);
++ } else
++ cmd->response[0] = mmci_readl(RSPR);
++
++ /* transfer all of the blocks */
++ if (data) {
++ uint word_count, block_count;
++ uint* ioptr;
++ uint sys_blocksize, dummy, i;
++ uint (*atmel_data_op)(uint* data, uint error_flags);
++
++ if (data->flags & MMC_DATA_READ) {
++ atmel_data_op = atmel_data_read;
++ sys_blocksize = mmc->read_bl_len;
++ ioptr = (uint*)data->dest;
++ } else {
++ atmel_data_op = atmel_data_write;
++ sys_blocksize = mmc->write_bl_len;
++ ioptr = (uint*)data->src;
++ }
++
++ status = 0;
++ for(block_count = 0; block_count < data->blocks && !status; block_count++) {
++ word_count = 0;
++ do {
++ status = atmel_data_op(ioptr,error_flags);
++ word_count++;
++ ioptr++;
++ } while(!status && word_count < (data->blocksize / 4));
++#if GEN_ATMEL_MCI_DEBUG
++ if (data->flags & MMC_DATA_READ)
++ {
++ char *mem_args[3];
++ char mem_addr_str[16];
++ char mem_len_str[16];
++ printf("Command caused a block read for %u bytes (read %u bytes)\n", data->blocksize, word_count*4);
++ mem_args[0] = "md.l";
++ sprintf(mem_addr_str,"0x%08x",(uint)(data->dest));
++ mem_args[1] = mem_addr_str;
++ sprintf(mem_len_str,"0x%x",word_count);
++ mem_args[2] = mem_len_str;
++ printf("Dumping with: %s %s %s\n", mem_args[0], mem_args[1], mem_args[2]);
++ do_mem_md(NULL, 0, 3, mem_args);
++ }
++#endif
++#if GEN_ATMEL_MCI_DEBUG
++ if (!status && word_count < (sys_blocksize / 4))
++ printf("sponging....\n");
++#endif
++ /* sponge the rest of a full block */
++ while (!status && word_count < (sys_blocksize / 4)) {
++ status = atmel_data_op(&dummy,error_flags);
++ word_count++;
++ }
++ if (status) {
++ dump_cmd(cmdr, cmd->cmdarg, status, "XFER Failed");
++ return COMM_ERR;
++ }
++ }
++
++ /* Wait for Transfer End */
++ i = 0;
++ do {
++ status = mmci_readl(SR);
++
++ if (status & error_flags) {
++ dump_cmd(cmdr, cmd->cmdarg, status, "XFER DTIP Wait Failed");
++ return COMM_ERR;
++ }
++ i++;
++ } while ((status & MMCI_BIT(DTIP)) && i < 10000);
++ if (status & MMCI_BIT(DTIP)) {
++ dump_cmd(cmdr, cmd->cmdarg, status, "XFER DTIP never unset, ignoring");
++ }
++ }
++
++ return 0;
++}
++
++static void atmel_set_ios(struct mmc *mmc)
++{
++ /* Set the clock speed */
++ mci_set_mode(mmc->clock, MMC_DEFAULT_BLKLEN);
++
++ /* set the bus width and select slot A for this interface
++ * there is no capability for multiple slots on the same interface yet
++ */
++ /* Bitfield SCDBUS needs to be expanded to 2 bits for 8-bit buses
++ */
++ if (mmc->bus_width == 4)
++ mmci_writel(SDCR, MMCI_BF(SCDBUS,0x1)|MMCI_BF(SCDSEL,0x0));
++ else
++ mmci_writel(SDCR, MMCI_BF(SCDBUS,0x0)|MMCI_BF(SCDSEL,0x0));
++}
++
++static int atmel_init(struct mmc *mmc)
++{
++ /* Initialize controller */
++ mmci_writel(CR, MMCI_BIT(SWRST)); /* soft reset */
++ mmci_writel(CR, MMCI_BIT(PWSDIS)); /* disable power save */
++ mmci_writel(CR, MMCI_BIT(MCIEN)); /* enable mci */
++
++ /* Initial Time-outs */
++ mmci_writel(DTOR, 0x7f);
++ /* Disable Interrupts */
++ mmci_writel(IDR, ~0UL);
++
++ /* Set defualt clocks and blocklen */
++ mci_set_mode(CONFIG_SYS_MMC_CLK_OD, MMC_DEFAULT_BLKLEN);
++
++ return 0;
++}
++
++static int atmel_initialize(bd_t *bis)
++{
++ struct mmc *mmc;
++
++ mmc = malloc(sizeof(struct mmc));
++
++ sprintf(mmc->name, "Atmel MCI");
++ /* We set this but atmel_mci.h makes use of MMCI_BASE directly */
++ mmc->priv = (void *)MMCI_BASE;
++ mmc->send_cmd = atmel_send_cmd;
++ mmc->set_ios = atmel_set_ios;
++ mmc->init = atmel_init;
++
++ /* need to be able to pass these in on a baord by board basis */
++ mmc->voltages = MMC_VDD_32_33 | MMC_VDD_33_34;
++ mmc->host_caps = MMC_MODE_4BIT;
++
++ /* High Speed Support? */
++
++ mmc->f_min = get_mck_clk_rate() / (2*(0xFF+1));
++ mmc->f_max = get_mck_clk_rate() / (2);
++
++ mmc_register(mmc);
++
++ return 0;
++}
++
++int atmel_mmc_init(bd_t *bis)
++{
++ return atmel_initialize(bis);
++}
+diff -Naur u-boot-2009.11/drivers/mmc/Makefile u-boot-2009.11.new/drivers/mmc/Makefile
+--- u-boot-2009.11/drivers/mmc/Makefile 2009-12-15 23:20:54.000000000 +0100
++++ u-boot-2009.11.new/drivers/mmc/Makefile 2010-10-08 12:09:30.000000000 +0200
+@@ -26,6 +26,7 @@
+ LIB := $(obj)libmmc.a
+
+ COBJS-$(CONFIG_GENERIC_MMC) += mmc.o
++COBJS-$(CONFIG_GENERIC_ATMEL_MCI) += gen_atmel_mci.o
+ COBJS-$(CONFIG_ATMEL_MCI) += atmel_mci.o
+ COBJS-$(CONFIG_BFIN_SDH) += bfin_sdh.o
+ COBJS-$(CONFIG_OMAP3_MMC) += omap3_mmc.o
+diff -Naur u-boot-2009.11/drivers/mmc/mmc.c u-boot-2009.11.new/drivers/mmc/mmc.c
+--- u-boot-2009.11/drivers/mmc/mmc.c 2009-12-15 23:20:54.000000000 +0100
++++ u-boot-2009.11.new/drivers/mmc/mmc.c 2010-10-08 12:09:30.000000000 +0200
+@@ -36,6 +36,13 @@
+ static struct list_head mmc_devices;
+ static int cur_dev_num = -1;
+
++int __board_mmc_getcd(u8 *cd, struct mmc *mmc) {
++ return -1;
++}
++
++int board_mmc_getcd(u8 *cd, struct mmc *mmc)__attribute__((weak,
++ alias("__board_mmc_getcd")));
++
+ int mmc_send_cmd(struct mmc *mmc, struct mmc_cmd *cmd, struct mmc_data *data)
+ {
+ return mmc->send_cmd(mmc, cmd, data);
+@@ -172,7 +179,7 @@
+ err = mmc_set_blocklen(mmc, mmc->read_bl_len);
+
+ if (err)
+- return err;
++ goto free_buffer;
+
+ for (i = startblock; i <= endblock; i++) {
+ int segment_size;
+@@ -273,7 +280,15 @@
+
+ cmd.cmdidx = SD_CMD_APP_SEND_OP_COND;
+ cmd.resp_type = MMC_RSP_R3;
+- cmd.cmdarg = mmc->voltages;
++
++ /*
++ * Most cards do not answer if some reserved bits
++ * in the ocr are set. However, Some controller
++ * can set bit 7 (reserved for low voltages), but
++ * how to manage low voltages SD card is not yet
++ * specified.
++ */
++ cmd.cmdarg = mmc->voltages & 0xff8000;
+
+ if (mmc->version == SD_VERSION_2)
+ cmd.cmdarg |= OCR_HCS;
+diff -Naur u-boot-2009.11/drivers/serial/atmel_usart.c u-boot-2009.11.new/drivers/serial/atmel_usart.c
+--- u-boot-2009.11/drivers/serial/atmel_usart.c 2009-12-15 23:20:54.000000000 +0100
++++ u-boot-2009.11.new/drivers/serial/atmel_usart.c 2010-10-08 12:11:21.000000000 +0200
+@@ -34,6 +34,9 @@
+ #elif defined(CONFIG_USART3)
+ # define USART_ID 3
+ # define USART_BASE USART3_BASE
++#elif defined(CONFIG_USART4)
++# define USART_ID 4
++# define USART_BASE USART4_BASE
+ #endif
+
+ #include "atmel_usart.h"
+diff -Naur u-boot-2009.11/include/asm-arm/arch-at91/at91_pmc.h u-boot-2009.11.new/include/asm-arm/arch-at91/at91_pmc.h
+--- u-boot-2009.11/include/asm-arm/arch-at91/at91_pmc.h 2009-12-15 23:20:54.000000000 +0100
++++ u-boot-2009.11.new/include/asm-arm/arch-at91/at91_pmc.h 2010-10-08 12:09:30.000000000 +0200
+@@ -111,6 +111,8 @@
+ #define AT91_PMC_PCK2RDY (1 << 10) /* Programmable Clock 2 */
+ #define AT91_PMC_PCK3RDY (1 << 11) /* Programmable Clock 3 */
+ #define AT91_PMC_IMR (AT91_PMC + 0x6c) /* Interrupt Mask Register */
++#define AT91_PMC_PLLICPR (AT91_PMC + 0x80) /* Charge Pump Configuration register */
++#define AT91_PMC_ICPLLA (1 << 0)
+
+ #define AT91_PMC_PROT (AT91_PMC + 0xe4) /* Protect Register [AT91CAP9 revC only] */
+ #define AT91_PMC_PROTKEY 0x504d4301 /* Activation Code */
+diff -Naur u-boot-2009.11/include/asm-arm/arch-at91/at91sam9g45_ddrsdram.h u-boot-2009.11.new/include/asm-arm/arch-at91/at91sam9g45_ddrsdram.h
+--- u-boot-2009.11/include/asm-arm/arch-at91/at91sam9g45_ddrsdram.h 1970-01-01 01:00:00.000000000 +0100
++++ u-boot-2009.11.new/include/asm-arm/arch-at91/at91sam9g45_ddrsdram.h 2010-10-08 12:09:30.000000000 +0200
+@@ -0,0 +1,118 @@
++/*
++ * [origin: Linux kernel arch/arm/mach-at91/include/mach/at91_wdt.h]
++ *
++ * Copyright (C) 2009 Jean-Christophe PLAGNIOL-VILLARD <plagnioj@jcrosoft.com>
++ * Copyright (C) 2007 Andrew Victor
++ * Copyright (C) 2007 Atmel Corporation.
++ *
++ * DDRSDRAM Controllers (SDRAMC) - System peripherals registers.
++ * Based on AT91SAM9261 datasheet revision D.
++ *
++ * 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 Foundation; either version 2 of the License, or
++ * (at your option) any later version.
++ */
++
++#ifndef AT91SAM9_DDRSDRAMC_H
++#define AT91SAM9_DDRSDRAMC_H
++
++/* DDRSDRAM Controller (SDRAMC) registers */
++#define AT91_DDRSDRAMC_MR (AT91_SDRAMC + 0x00) /* SDRAM Controller Mode Register */
++#define AT91_DDRSDRAMC_MODE (0xf << 0) /* Command Mode */
++#define AT91_DDRSDRAMC_MODE_NORMAL 0
++#define AT91_DDRSDRAMC_MODE_NOP 1
++#define AT91_DDRSDRAMC_MODE_PRECHARGE 2
++#define AT91_DDRSDRAMC_MODE_LMR 3
++#define AT91_DDRSDRAMC_MODE_REFRESH 4
++#define AT91_DDRSDRAMC_MODE_EXT_LMR 5
++#define AT91_DDRSDRAMC_MODE_DEEP 6
++
++#define AT91_DDRSDRAMC_RTR (AT91_SDRAMC + 0x04) /* SDRAM Controller Refresh Timer Register */
++#define AT91_DDRSDRAMC_COUNT (0xfff << 0) /* Refresh Timer Counter */
++
++#define AT91_DDRSDRAMC_CR (AT91_SDRAMC + 0x08) /* SDRAM Controller Configuration Register */
++#define AT91_DDRSDRAMC_NC (3 << 0) /* Number of Column Bits */
++#define AT91_DDRSDRAMC_NC_8 (0 << 0)
++#define AT91_DDRSDRAMC_NC_9 (1 << 0)
++#define AT91_DDRSDRAMC_NC_10 (2 << 0)
++#define AT91_DDRSDRAMC_NC_11 (3 << 0)
++#define AT91_DDRSDRAMC_NC_DDR_9 (0 << 0)
++#define AT91_DDRSDRAMC_NC_DDR_10 (1 << 0)
++#define AT91_DDRSDRAMC_NC_DDR_11 (2 << 0)
++#define AT91_DDRSDRAMC_NC_DDR_12 (3 << 0)
++#define AT91_DDRSDRAMC_NR (3 << 2) /* Number of Row Bits */
++#define AT91_DDRSDRAMC_NR_11 (0 << 2)
++#define AT91_DDRSDRAMC_NR_12 (1 << 2)
++#define AT91_DDRSDRAMC_NR_13 (2 << 2)
++#define AT91_DDRSDRAMC_NR_14 (3 << 2)
++#define AT91_DDRSDRAMC_CAS (7 << 4) /* CAS Latency */
++#define AT91_DDRSDRAMC_CAS_1 (1 << 4)
++#define AT91_DDRSDRAMC_CAS_2 (2 << 4)
++#define AT91_DDRSDRAMC_CAS_3 (3 << 4)
++#define AT91_DDRSDRAMC_DLL (1 << 7)
++#define AT91_DDRSDRAMC_DIC (1 << 8) /* Weak Pullups*/
++#define AT91_DDRSDRAMC_DIS_DLL (1 << 9) /* Disable DLL*/
++#define AT91_DDRSDRAMC_OCD (0x7 << 12) /* Row Precharge Delay */
++#define AT91_DDRSDRAMC_DQMS (0x1 << 16) /* Mask Data shared */
++#define AT91_DDRSDRAMC_ACTBST (0x1 << 18) /* Active Boost to busrt stop*/
++
++#define AT91_DDRSDRAMC_T0PR (AT91_SDRAMC + 0x0C)
++#define AT91_DDRSDRAMC_TRAS(x) ((x)<<0)
++#define AT91_DDRSDRAMC_TRCD(x) ((x)<<4)
++#define AT91_DDRSDRAMC_TWR(x) ((x)<<8)
++#define AT91_DDRSDRAMC_TRC(x) ((x)<<12)
++#define AT91_DDRSDRAMC_TRP(x) ((x)<<16)
++#define AT91_DDRSDRAMC_TRRD(x) ((x)<<20)
++#define AT91_DDRSDRAMC_TWTR(x) ((x)<<24)
++#define AT91_DDRSDRAMC_rWRRD (1<<27)
++#define AT91_DDRSDRAMC_TMRD(x) ((x)<<28)
++#define AT91_DDRSDRAMC_T1PR (AT91_SDRAMC + 0x10)
++#define AT91_DDRSDRAMC_TRFC(x) (((x) & 0x1F)<<0)
++#define AT91_DDRSDRAMC_TXSNR(x) (((x) & 0x0FF)<<8)
++#define AT91_DDRSDRAMC_TXSRD(x) (((x) & 0x0FF)<<16)
++#define AT91_DDRSDRAMC_TXP(x) (((x) & 0x0F)<<24)
++#define AT91_DDRSDRAMC_T2PR (AT91_SDRAMC + 0x14)
++#define AT91_DDRSDRAMC_TXARD(x) (((x) & 0x0F)<<0)
++#define AT91_DDRSDRAMC_TXARDS(x) (((x) & 0x0F)<<4)
++#define AT91_DDRSDRAMC_TRPA(x) (((x) & 0x0F)<<8)
++#define AT91_DDRSDRAMC_TRTP(x) (((x) & 0x0F)<<12)
++#define AT91_DDRSDRAMC_LPR (AT91_SDRAMC + 0x1C) /* SDRAM Controller Low Power Register */
++#define AT91_DDRSDRAMC_LPCB (3 << 0) /* Low-power Configurations */
++#define AT91_DDRSDRAMC_LPCB_DISABLE 0
++#define AT91_DDRSDRAMC_LPCB_SELF_REFRESH 1
++#define AT91_DDRSDRAMC_LPCB_POWER_DOWN 2
++#define AT91_DDRSDRAMC_LPCB_DEEP_POWER_DOWN 3
++#define AT91_DDRSDRAMC_CLK_FR (1 << 2) /* Clock Frozen */
++#define AT91_DDRSDRAMC_PASR (7 << 4) /* Partial Array Self Refresh */
++#define AT91_DDRSDRAMC_TCSR (3 << 8) /* Temperature Compensated Self Refresh */
++#define AT91_DDRSDRAMC_DS (3 << 10) /* Drive Strength */
++#define AT91_DDRSDRAMC_TIMEOUT (3 << 12) /* Time to define when Low Power Mode is enabled */
++#define AT91_DDRSDRAMC_TIMEOUT_0_CLK_CYCLES (0 << 12)
++#define AT91_DDRSDRAMC_TIMEOUT_64_CLK_CYCLES (1 << 12)
++#define AT91_DDRSDRAMC_TIMEOUT_128_CLK_CYCLES (2 << 12)
++#define AT91_DDRSDRAMC_APDE (1 << 16) /* Active power Down Exit */
++
++#define AT91_DDRSDRAMC_MDR (AT91_SDRAMC + 0x20) /* SDRAM Memory Device Register */
++#define AT91_DDRSDRAMC_MD (7 << 0) /* Memory Device Type */
++#define AT91_DDRSDRAMC_MD_SDRAM 0
++#define AT91_DDRSDRAMC_MD_LOW_POWER_SDRAM 1
++#define AT91_DDRSDRAMC_MD_LOW_POWER_DDRSDRAM 3
++#define AT91_DDRSDRAMC_MD_DDR2SDRAM 6
++
++#define AT91_DDRSDRAMC_DBW (1 << 4) /* Data Bus Width 18 Bit*/
++
++#define AT91_DDRSDRAMC_HS (AT91_SDRAMC + 0x2C) /* High Speed Register */
++#define AT91_DDRSDRAMC_NO_OPTI (1 << 1) /* No Optimization */
++#define AT91_DDRSDRAMC_DIS_ANTICIP_READ (1 << 2) /* Disable anticip read */
++#define AT91_DDRSDRAMC_DELAY1 (AT91_SDRAMC + 0x30) /* Delay on I/O */
++#define AT91_DDRSDRAMC_DELAY2 (AT91_SDRAMC + 0x34) /* Delay on I/O */
++#define AT91_DDRSDRAMC_DELAY3 (AT91_SDRAMC + 0x38) /* Delay on I/O */
++#define AT91_DDRSDRAMC_DELAY4 (AT91_SDRAMC + 0x3c) /* Delay on I/O */
++#define AT91_DDRSDRAMC_DRIVESTRENGTH (AT91_SDRAMC + 0x50) /* Drive Strength */
++#define AT91_DDRSDRAMC_DSC (1<<0) /* Full drive */
++#define AT91_DDRSDRAMC_WPMR (AT91_SDRAMC + 0xE4) /* Write protect Mode */
++
++#define AT91_DDRSDRAMC_WPEN 0x44445201 /* Enable */
++#define AT91_DDRSDRAMC_WPDIS 0x44445200 /* Disable */
++#endif
+diff -Naur u-boot-2009.11/include/asm-arm/arch-at91/gpio.h u-boot-2009.11.new/include/asm-arm/arch-at91/gpio.h
+--- u-boot-2009.11/include/asm-arm/arch-at91/gpio.h 2009-12-15 23:20:54.000000000 +0100
++++ u-boot-2009.11.new/include/asm-arm/arch-at91/gpio.h 2010-10-08 12:09:30.000000000 +0200
+@@ -358,7 +358,7 @@
+ {
+ void *pio = pin_to_controller(pin);
+ unsigned mask = pin_to_mask(pin);
+- u32 pdsr;
++ __u32 pdsr;
+
+ pdsr = __raw_readl(pio + PIO_PDSR);
+ return (pdsr & mask) != 0;
+diff -Naur u-boot-2009.11/include/asm-arm/arch-at91/memory-map.h u-boot-2009.11.new/include/asm-arm/arch-at91/memory-map.h
+--- u-boot-2009.11/include/asm-arm/arch-at91/memory-map.h 2009-12-15 23:20:54.000000000 +0100
++++ u-boot-2009.11.new/include/asm-arm/arch-at91/memory-map.h 2010-10-08 12:11:21.000000000 +0200
+@@ -30,6 +30,7 @@
+ #define USART1_BASE AT91_USART1
+ #define USART2_BASE AT91_USART2
+ #define USART3_BASE (AT91_BASE_SYS + AT91_DBGU)
++#define USART4_BASE AT91_USART3
+ #define SPI0_BASE AT91_BASE_SPI
+
+ #endif /* __ASM_ARM_ARCH_MEMORYMAP_H__ */
+diff -Naur u-boot-2009.11/include/configs/icnova/arm400MHz.h u-boot-2009.11.new/include/configs/icnova/arm400MHz.h
+--- u-boot-2009.11/include/configs/icnova/arm400MHz.h 1970-01-01 01:00:00.000000000 +0100
++++ u-boot-2009.11.new/include/configs/icnova/arm400MHz.h 2010-10-08 12:09:30.000000000 +0200
+@@ -0,0 +1,8 @@
++/*
++ * Set up the PLL to run at 140 MHz, the CPU to run at the PLL
++ * frequency, the HSB and PBB at 1/2, and the PBA to run at 1/4 the
++ * PLL frequency.
++ * (CONFIG_SYS_OSC0_HZ * CONFIG_SYS_PLL0_MUL) / CONFIG_SYS_PLL0_DIV = PLL MHz
++ */
++#define AT91_MAIN_CLOCK 12000000 // 12MHz crystal
++#define CONFIG_ARCH_CPU_INIT
+diff -Naur u-boot-2009.11/include/configs/icnova/base_arm.h u-boot-2009.11.new/include/configs/icnova/base_arm.h
+--- u-boot-2009.11/include/configs/icnova/base_arm.h 1970-01-01 01:00:00.000000000 +0100
++++ u-boot-2009.11.new/include/configs/icnova/base_arm.h 2010-10-08 12:09:30.000000000 +0200
+@@ -0,0 +1,90 @@
++#define CONFIG_SKIP_LOWLEVEL_INIT
++#define CONFIG_SKIP_RELOCATE_UBOOT
++
++#ifndef CONFIG_SKIP_LOWLEVEL_INIT
++#define MASTER_PLL_MUL 200
++#define MASTER_PLL_DIV 3
++
++/* clocks */
++#define CONFIG_SYS_MOR_VAL \
++ (AT91_PMC_MOSCEN | \
++ (255 << 8)) /* Main Oscillator Start-up Time */
++
++#define CONFIG_SYS_PLLICPR_VAL 0 /* AT91_PMC_ICPLLA */
++#define CONFIG_SYS_PLLAR_VAL \
++ (AT91_PMC_PLLA_WR_ERRATA | /* Bit 29 must be 1 when prog */ \
++ AT91_PMC_PLLCOUNT | /* PLL Counter */ \
++ ((MASTER_PLL_MUL - 1) << 16) | (MASTER_PLL_DIV))
++
++/* PCK/2 = MCK Master Clock from PLLA */
++#define CONFIG_SYS_MCKR1_VAL \
++ (AT91_PMC_CSS_MAIN | \
++ AT91_PMC_PRES_1 | \
++ AT91SAM9_PMC_MDIV_3 | \
++ AT91_PMC_PDIV_1)
++/* PCK/2 = MCK Master Clock from PLLA */
++#define CONFIG_SYS_MCKR2_VAL \
++ (AT91_PMC_CSS_PLLA | \
++ AT91_PMC_PRES_1 | \
++ AT91SAM9_PMC_MDIV_3 | \
++ AT91_PMC_PDIV_2)
++
++/* define PDC[31:16] as DATA[31:16] */
++#define CONFIG_SYS_PIOD_PDR_VAL1 0xFFFF0000
++/* no pull-up for D[31:16] */
++#define CONFIG_SYS_PIOD_PPUDR_VAL 0xFFFF0000
++/* EBI0_CSA, CS3 NAND Flash, 3.3V memories */
++#define CONFIG_SYS_MATRIX_EBI0CSA_VAL \
++ (AT91_MATRIX_EBI0_DBPUC | AT91_MATRIX_EBI0_VDDIOMSEL_3_3V )
++#define CONFIG_SYS_MATRIX_EBICSA_VAL 0x00070008 // 3.3V EBI, NAND-En
++
++
++/* setup SMC0, CS0 (NOR Flash) - 16-bit, 15 WS */
++#define CONFIG_SYS_SMC0_SETUP0_VAL \
++ (AT91_SMC_NWESETUP_(8) | AT91_SMC_NCS_WRSETUP_(0) | \
++ AT91_SMC_NRDSETUP_(16) | AT91_SMC_NCS_RDSETUP_(0))
++#define CONFIG_SYS_SMC0_PULSE0_VAL \
++ (AT91_SMC_NWEPULSE_(0x3b) | AT91_SMC_NCS_WRPULSE_(0x34) | \
++ AT91_SMC_NRDPULSE_(0x38) | AT91_SMC_NCS_RDPULSE_(0x3b))
++#define CONFIG_SYS_SMC0_CYCLE0_VAL \
++ (AT91_SMC_NWECYCLE_(0x3b) | AT91_SMC_NRDCYCLE_(0x3b))
++#define CONFIG_SYS_SMC0_MODE0_VAL \
++ AT91_SMC_DBW_16
++
++/* user reset enable */
++#define CONFIG_SYS_RSTC_RMR_VAL \
++ (AT91_RSTC_KEY | \
++ AT91_RSTC_PROCRST | \
++ AT91_RSTC_RSTTYP_WAKEUP | \
++ AT91_RSTC_RSTTYP_WATCHDOG)
++
++/* Disable Watchdog */
++#define CONFIG_SYS_WDTC_WDMR_VAL \
++ (AT91_WDT_WDIDLEHLT | AT91_WDT_WDDBGHLT | \
++ AT91_WDT_WDV | \
++ AT91_WDT_WDDIS | \
++ AT91_WDT_WDD)
++
++/* DDR2-SDRAM */
++#define CONFIG_SYS_AT91_DDRAM
++
++#define AT91_SDRAMC (0xffffe600 - AT91_BASE_SYS)
++
++#define CONFIG_SYS_DDRC_MDR_VAL \
++ (AT91_DDRSDRAMC_DBW| AT91_DDRSDRAMC_MD_DDR2SDRAM)
++#define CONFIG_SYS_DDRC_CR0_VAL \
++ (AT91_DDRSDRAMC_NC_DDR_10 | AT91_DDRSDRAMC_NR_14 | AT91_DDRSDRAMC_CAS_3)
++#define CONFIG_SYS_DDRC_T0PR_VAL \
++ (AT91_DDRSDRAMC_TRAS(6) | AT91_DDRSDRAMC_TRCD(2) |\
++ AT91_DDRSDRAMC_TWR(2) | AT91_DDRSDRAMC_TRC(8) | \
++ AT91_DDRSDRAMC_TRP(2) | AT91_DDRSDRAMC_TRRD(1) | \
++ AT91_DDRSDRAMC_TWTR(1) | AT91_DDRSDRAMC_TMRD(2) )
++#define CONFIG_SYS_DDRC_T1PR_VAL \
++ (AT91_DDRSDRAMC_TRFC(14) | AT91_DDRSDRAMC_TXSNR(16) \
++ |AT91_DDRSDRAMC_TXSRD(200) | AT91_DDRSDRAMC_TXP(2))
++#define CONFIG_SYS_DDRC_T2PR_VAL \
++ (AT91_DDRSDRAMC_TXARD(2) | AT91_DDRSDRAMC_TXARDS(7) \
++ |AT91_DDRSDRAMC_TRPA(0) | AT91_DDRSDRAMC_TRTP(1))
++#define CONFIG_SYS_SDRAM_REFRESH_VAL 0x24B
++
++#endif
+diff -Naur u-boot-2009.11/include/configs/icnova/base.h u-boot-2009.11.new/include/configs/icnova/base.h
+--- u-boot-2009.11/include/configs/icnova/base.h 1970-01-01 01:00:00.000000000 +0100
++++ u-boot-2009.11.new/include/configs/icnova/base.h 2010-10-08 12:09:30.000000000 +0200
+@@ -0,0 +1,86 @@
++#ifdef CONFIG_ICNOVA_ARM9
++#define CONFIG_ARM926EJS 1
++#define CONFIG_AT91SAM9G45 1
++#else
++#define CONFIG_AVR32 1
++#define CONFIG_AT32AP 1
++#endif
++
++#include <asm/arch/memory-map.h>
++
++/*
++ * Timer clock frequency. We're using the CPU-internal COUNT register
++ * for this, so this is equivalent to the CPU core clock frequency
++ */
++#define CONFIG_SYS_HZ 1000
++
++#define CONFIG_CMDLINE_TAG 1
++#define CONFIG_SETUP_MEMORY_TAGS 1
++#define CONFIG_INITRD_TAG 1
++
++#include <config_cmd_default.h>
++#define CONFIG_CMD_ASKENV
++/*
++ * Only interrupt autoboot if <space> is pressed. Otherwise, garbage
++ * data on the serial line may interrupt the boot sequence.
++ */
++#define CONFIG_BOOTDELAY 3
++#if 0
++#define CONFIG_AUTOBOOT 1
++#define CONFIG_AUTOBOOT_KEYED 1
++#define CONFIG_AUTOBOOT_PROMPT \
++ "Press SPACE to abort autoboot in %d seconds\n", bootdelay
++#define CONFIG_AUTOBOOT_DELAY_STR "d"
++#define CONFIG_AUTOBOOT_STOP_STR " "
++#endif
++
++
++#ifdef CONFIG_ICNOVA_ARM9
++#define CONFIG_STACKSIZE (16*2048)
++
++#define PHYS_SDRAM 0x70000000
++#define PHYS_SDRAM_SIZE 0x08000000 // 128 MiB
++#define CONFIG_SYS_GBL_DATA_SIZE 128
++#define INTERNAL_SRAM_BASE 0x00300000
++#define INTERNAL_SRAM_SIZE 0x00010000
++#include <configs/icnova/base_arm.h>
++#else
++#define CONFIG_STACKSIZE (2048)
++
++#define CONFIG_SYS_DCACHE_LINESZ 32
++#define CONFIG_SYS_ICACHE_LINESZ 32
++
++#define CONFIG_PIO2 1
++#define CONFIG_SYS_NR_PIOS 5
++#define CONFIG_SYS_HSDRAMC 1
++#define PHYS_SDRAM EBI_SDRAM_BASE
++#define PHYS_SDRAM_SIZE 0x700000
++#endif
++
++#define CONFIG_SYS_MEMTEST_START PHYS_SDRAM
++#define CONFIG_SYS_MEMTEST_END (CONFIG_SYS_MEMTEST_START + PHYS_SDRAM_SIZE)
++
++#define CONFIG_NR_DRAM_BANKS 1
++
++#define CONFIG_SYS_INTRAM_BASE INTERNAL_SRAM_BASE
++#define CONFIG_SYS_INTRAM_SIZE INTERNAL_SRAM_SIZE
++#define CONFIG_SYS_SDRAM_BASE PHYS_SDRAM
++
++#define CONFIG_SYS_INIT_SP_ADDR (CONFIG_SYS_INTRAM_BASE + CONFIG_SYS_INTRAM_SIZE)
++
++#define CONFIG_SYS_MALLOC_LEN (256*1024)
++#define CONFIG_SYS_DMA_ALLOC_LEN (16384)
++
++/* Allow 4MB for the kernel run-time image */
++#define CONFIG_SYS_LOAD_ADDR (PHYS_SDRAM + 0x00400000)
++#define CONFIG_SYS_BOOTPARAMS_LEN (16 * 1024)
++
++#define CONFIG_SYS_PROMPT "ICnova> "
++#define CONFIG_SYS_CBSIZE 256
++#define CONFIG_SYS_MAXARGS 16
++#define CONFIG_SYS_PBSIZE (CONFIG_SYS_CBSIZE + sizeof(CONFIG_SYS_PROMPT) + 16)
++#define CONFIG_SYS_LONGHELP 1
++#define CONFIG_AUTO_COMPLETE
++#define CONFIG_SYS_HUSH_PARSER
++#define CONFIG_SYS_PROMPT_HUSH_PS2 "> "
++
+diff -Naur u-boot-2009.11/include/configs/icnova/cpu140MHz.h u-boot-2009.11.new/include/configs/icnova/cpu140MHz.h
+--- u-boot-2009.11/include/configs/icnova/cpu140MHz.h 1970-01-01 01:00:00.000000000 +0100
++++ u-boot-2009.11.new/include/configs/icnova/cpu140MHz.h 2010-10-08 12:09:30.000000000 +0200
+@@ -0,0 +1,42 @@
++
++/*
++ * Set up the PLL to run at 140 MHz, the CPU to run at the PLL
++ * frequency, the HSB and PBB at 1/2, and the PBA to run at 1/4 the
++ * PLL frequency.
++ * (CONFIG_SYS_OSC0_HZ * CONFIG_SYS_PLL0_MUL) / CONFIG_SYS_PLL0_DIV = PLL MHz
++ */
++#define CONFIG_PLL 1
++#define CONFIG_SYS_POWER_MANAGER 1
++#define CONFIG_SYS_OSC0_HZ 20000000
++#define CONFIG_SYS_PLL0_DIV 1
++#define CONFIG_SYS_PLL0_MUL 7
++#define CONFIG_SYS_PLL0_SUPPRESS_CYCLES 16
++/*
++ * Set the CPU running at:
++ * PLL / (2^CONFIG_SYS_CLKDIV_CPU) = CPU MHz
++ */
++#define CONFIG_SYS_CLKDIV_CPU 0
++/*
++ * Set the HSB running at:
++ * PLL / (2^CONFIG_SYS_CLKDIV_HSB) = HSB MHz
++ */
++#define CONFIG_SYS_CLKDIV_HSB 1
++/*
++ * Set the PBA running at:
++ * PLL / (2^CONFIG_SYS_CLKDIV_PBA) = PBA MHz
++ */
++#define CONFIG_SYS_CLKDIV_PBA 2
++/*
++ * Set the PBB running at:
++ * PLL / (2^CONFIG_SYS_CLKDIV_PBB) = PBB MHz
++ */
++#define CONFIG_SYS_CLKDIV_PBB 1
++
++/*
++ * The PLLOPT register controls the PLL like this:
++ * icp = PLLOPT<2>
++ * ivco = PLLOPT<1:0>
++ *
++ * We want icp=1 (default) and ivco=0 (80-160 MHz) or ivco=2 (150-240MHz).
++ */
++#define CONFIG_SYS_PLL0_OPT 0x04
+diff -Naur u-boot-2009.11/include/configs/icnova/flash2x8.h u-boot-2009.11.new/include/configs/icnova/flash2x8.h
+--- u-boot-2009.11/include/configs/icnova/flash2x8.h 1970-01-01 01:00:00.000000000 +0100
++++ u-boot-2009.11.new/include/configs/icnova/flash2x8.h 2010-10-08 12:09:30.000000000 +0200
+@@ -0,0 +1,19 @@
++#define CONFIG_CMD_JFFS2
++#define CONFIG_CMD_FLASH
++
++//#ifdef CONFIG_ICNOVA_ARM9
++//#define CONFIG_SYS_FLASH_BASE 0x10000000
++//#else
++#define CONFIG_SYS_FLASH_BASE 0x00000000
++//#endif
++#define CONFIG_SYS_FLASH_SIZE 0x00100000
++#define CONFIG_SYS_MAX_FLASH_BANKS 1
++#define CONFIG_SYS_FLASH_SECT 8
++#define CONFIG_SYS_MAX_FLASH_SECT (CONFIG_SYS_FLASH_SECT+1)
++
++#define CONFIG_SYS_MONITOR_BASE CONFIG_SYS_FLASH_BASE
++
++#define CONFIG_ENV_IS_IN_FLASH 1
++#define CONFIG_ENV_SIZE (CONFIG_SYS_FLASH_SIZE / CONFIG_SYS_FLASH_SECT)
++#define CONFIG_ENV_ADDR (CONFIG_SYS_FLASH_BASE + CONFIG_SYS_FLASH_SIZE - CONFIG_ENV_SIZE)
++
+diff -Naur u-boot-2009.11/include/configs/icnova/flash.h u-boot-2009.11.new/include/configs/icnova/flash.h
+--- u-boot-2009.11/include/configs/icnova/flash.h 1970-01-01 01:00:00.000000000 +0100
++++ u-boot-2009.11.new/include/configs/icnova/flash.h 2010-10-08 12:09:30.000000000 +0200
+@@ -0,0 +1,24 @@
++#define CONFIG_CMD_JFFS2
++#define CONFIG_JFFS2_CMDLINE
++#define CONFIG_CMD_FLASH
++
++#define CONFIG_SYS_FLASH_BASE 0x00000000
++#define CONFIG_SYS_FLASH_SIZE 0x800000
++#define CONFIG_SYS_MAX_FLASH_BANKS 1
++#define CONFIG_SYS_MAX_FLASH_SECT 135
++
++#define CONFIG_SYS_MONITOR_BASE CONFIG_SYS_FLASH_BASE
++
++#define CONFIG_ENV_IS_IN_FLASH 1
++#define CONFIG_ENV_SIZE 65536
++#define CONFIG_ENV_ADDR 0x20000
++
++#define MTDPARTS_DEFAULT "mtdparts=physmap-flash.0:128k(boot)ro,64k(env)ro,-(root)"
++#define MTDIDS_DEFAULT "nor0=physmap-flash.0"
++
++#undef CONFIG_BOOTARGS
++#undef CONFIG_BOOTCOMMAND
++
++#define CONFIG_BOOTARGS "root=1F02 rootfstype=jffs2"
++#define CONFIG_BOOTCOMMAND \
++ "mtdparts default; chpart nor0,2; fsload boot/uImage; bootm"
+diff -Naur u-boot-2009.11/include/configs/icnova/mmc.h u-boot-2009.11.new/include/configs/icnova/mmc.h
+--- u-boot-2009.11/include/configs/icnova/mmc.h 1970-01-01 01:00:00.000000000 +0100
++++ u-boot-2009.11.new/include/configs/icnova/mmc.h 2010-10-08 12:09:30.000000000 +0200
+@@ -0,0 +1,25 @@
++
++#define CONFIG_DOS_PARTITION 1
++
++#undef CONFIG_BOOTARGS
++#undef CONFIG_BOOTCOMMAND
++
++#define CONFIG_BOOTARGS \
++ "root=/dev/mmcblk0p1 rootwait=1"
++
++#define CONFIG_BOOTCOMMAND \
++ "mmc rescan 0; fsload; bootm"
++
++#define CONFIG_CMD_EXT2
++#define CONFIG_CMD_FAT
++#define CONFIG_CMD_MMC
++
++#define CONFIG_MMC 1
++#ifdef CONFIG_ICNOVA_ARM9
++#define CONFIG_GENERIC_MMC 1
++#define CONFIG_GENERIC_ATMEL_MCI 1
++/*change this for your cpu */
++#define MMCI_BASE 0xFFF80000
++#else
++#define CONFIG_ATMEL_MCI 1
++#endif
+diff -Naur u-boot-2009.11/include/configs/icnova/mmcupdate.h u-boot-2009.11.new/include/configs/icnova/mmcupdate.h
+--- u-boot-2009.11/include/configs/icnova/mmcupdate.h 1970-01-01 01:00:00.000000000 +0100
++++ u-boot-2009.11.new/include/configs/icnova/mmcupdate.h 2010-10-08 12:09:30.000000000 +0200
+@@ -0,0 +1,30 @@
++#ifdef CONFIG_ICNOVA_ARM9
++#define MMCUPDATE_UADDRESS "0x70400000"
++#define MMCUPDATE_IADDRESS "0x71000000"
++#define MMCUPDATE_BOOTVAR "$bootargs"
++#else
++#define MMCUPDATE_UADDRESS "0x10400000"
++#define MMCUPDATE_IADDRESS "0x11000000"
++#define MMCUPDATE_BOOTVAR "$(bootargs)"
++#endif
++
++//#define MMCUPDATE_BOOTARGS CONFIG_BOOTARGS
++//#define MMCUPDATE_BOOTCOMMAND CONFIG_BOOTCOMMAND
++#define MMCUPDATE_BOOTARGS "rootfstype=ubifs root=ubi0:root ubi.mtd=2"
++#define MMCUPDATE_BOOTCOMMAND "mtdparts default; nand read "MMCUPDATE_UADDRESS" nand0,0; bootm"
++
++#undef CONFIG_BOOTARGS
++#undef CONFIG_BOOTCOMMAND
++
++#ifdef MTDPARTS_DEFAULT
++#define CONFIG_BOOTARGS MTDPARTS_DEFAULT
++#else
++#define CONFIG_BOOTARGS ""
++#endif
++#define CONFIG_BOOTCOMMAND \
++ "mtdparts default; mmc rescan 0; " \
++ "fatload mmc 0 "MMCUPDATE_IADDRESS" ramImage; "\
++ "fatload mmc 0 "MMCUPDATE_UADDRESS" uImage; " \
++ "bootm "MMCUPDATE_UADDRESS " " MMCUPDATE_IADDRESS"; "\
++ "setenv bootargs "MMCUPDATE_BOOTVAR" "MMCUPDATE_BOOTARGS"; "\
++ MMCUPDATE_BOOTCOMMAND
+diff -Naur u-boot-2009.11/include/configs/icnova/nand_arm9.h u-boot-2009.11.new/include/configs/icnova/nand_arm9.h
+--- u-boot-2009.11/include/configs/icnova/nand_arm9.h 1970-01-01 01:00:00.000000000 +0100
++++ u-boot-2009.11.new/include/configs/icnova/nand_arm9.h 2010-10-08 12:09:30.000000000 +0200
+@@ -0,0 +1,16 @@
++#include <configs/icnova/nand_base.h>
++#define CONFIG_BOOTCOMMAND \
++ "mtdparts default; nand read 0x71000000 nand0,0; bootm"
++
++#define CONFIG_SYS_NAND_BASE 0x40000000
++
++#ifndef __ASSEMBLY__
++#include <asm/arch/gpio.h>
++
++#define CFG_NAND_ALE 21
++#define CFG_NAND_CLE 22
++
++#define CFG_NAND_CE AT91_PIN_PC8
++#define CFG_NAND_RDY AT91_PIN_PC11
++
++#endif
+diff -Naur u-boot-2009.11/include/configs/icnova/nand_base.h u-boot-2009.11.new/include/configs/icnova/nand_base.h
+--- u-boot-2009.11/include/configs/icnova/nand_base.h 1970-01-01 01:00:00.000000000 +0100
++++ u-boot-2009.11.new/include/configs/icnova/nand_base.h 2010-10-08 12:09:30.000000000 +0200
+@@ -0,0 +1,32 @@
++
++#ifndef NULL
++#define NULL ((void *) 0)
++#endif
++
++#define CONFIG_CMD_NAND
++#define CONFIG_CMD_MTDPARTS
++#define CONFIG_MTD_DEVICE
++#define CONFIG_MTD_PARTITIONS
++#define CONFIG_MTD_NAND_ECC_JFFS2
++//#define CONFIG_CMD_UBIFS
++#define CONFIG_JFFS2_CMDLINE
++#define CONFIG_JFFS2_NAND
++#define CONFIG_SYS_MAX_NAND_DEVICE 1
++#define CONFIG_SYS_NAND_MAX_CHIPS 1
++#define NAND_MAX_FLOORS 1
++#define NAND_ChipID_UNKNOWN 0x00
++#define SECTORSIZE 2048
++#define ADDR_COLUMN 1
++#define ADDR_PAGE 2
++#define ADDR_COLUMN_PAGE 3
++//#define NAND_PAGE_SIZE 2048
++
++
++#define MTDIDS_DEFAULT "nand0=nand.0"
++#define MTDPARTS_DEFAULT "mtdparts=nand.0:2M(kernel),16M(root),-(Data)"
++
++
++#undef CONFIG_BOOTARGS
++#undef CONFIG_BOOTCOMMAND
++
++#define CONFIG_BOOTARGS "root=1F01 rootfstype=jffs2"
+diff -Naur u-boot-2009.11/include/configs/icnova/nand.h u-boot-2009.11.new/include/configs/icnova/nand.h
+--- u-boot-2009.11/include/configs/icnova/nand.h 1970-01-01 01:00:00.000000000 +0100
++++ u-boot-2009.11.new/include/configs/icnova/nand.h 2010-10-08 12:09:30.000000000 +0200
+@@ -0,0 +1,16 @@
++#include <configs/icnova/nand_base.h>
++#define CONFIG_BOOTCOMMAND \
++ "mtdparts default; nand read $(fileaddr) nand0,0; bootm"
++
++#define CONFIG_SYS_NAND_BASE 0x0C000000
++
++#ifndef __ASSEMBLY__
++#include <asm/arch/gpio.h>
++
++#define CFG_NAND_ALE 21
++#define CFG_NAND_CLE 22
++
++#define CFG_NAND_CE GPIO_PIN_PE19
++#define CFG_NAND_RDY GPIO_PIN_PE23
++
++#endif
+diff -Naur u-boot-2009.11/include/configs/icnova/net.h u-boot-2009.11.new/include/configs/icnova/net.h
+--- u-boot-2009.11/include/configs/icnova/net.h 1970-01-01 01:00:00.000000000 +0100
++++ u-boot-2009.11.new/include/configs/icnova/net.h 2010-10-08 12:09:30.000000000 +0200
+@@ -0,0 +1,22 @@
++
++/*
++ * After booting the board for the first time, new ethernet addresses
++ * should be generated and assigned to the environment variables
++ * "ethaddr" and "eth1addr". This is normally done during production.
++ */
++#define CONFIG_OVERWRITE_ETHADDR_ONCE 1
++#define CONFIG_NET_MULTI 1
++#define CONFIG_MACB 1
++#ifndef CONFIG_ICNOVA_ARM9
++#define AT32AP700x_CHIP_HAS_MACB 1
++#endif
++
++/*
++ * BOOTP options
++ */
++#define CONFIG_BOOTP_SUBNETMASK
++#define CONFIG_BOOTP_GATEWAY
++
++#define CONFIG_CMD_NET
++#define CONFIG_CMD_NFS
++#define CONFIG_CMD_DHCP
+diff -Naur u-boot-2009.11/include/configs/icnova/usart0.h u-boot-2009.11.new/include/configs/icnova/usart0.h
+--- u-boot-2009.11/include/configs/icnova/usart0.h 1970-01-01 01:00:00.000000000 +0100
++++ u-boot-2009.11.new/include/configs/icnova/usart0.h 2010-10-08 12:09:30.000000000 +0200
+@@ -0,0 +1,9 @@
++
++#define CONFIG_ATMEL_USART y
++#define CONFIG_BAUDRATE 115200
++#define CONFIG_SYS_BAUDRATE_TABLE { 115200, 38400, 19200, 9600, 2400 }
++
++#define CONFIG_USART0
++#undef CONFIG_USART1
++#undef CONFIG_USART2
++#undef CONFIG_USART3
+diff -Naur u-boot-2009.11/include/configs/icnova/usart1.h u-boot-2009.11.new/include/configs/icnova/usart1.h
+--- u-boot-2009.11/include/configs/icnova/usart1.h 1970-01-01 01:00:00.000000000 +0100
++++ u-boot-2009.11.new/include/configs/icnova/usart1.h 2010-10-08 12:09:30.000000000 +0200
+@@ -0,0 +1,9 @@
++
++#define CONFIG_ATMEL_USART y
++#define CONFIG_BAUDRATE 115200
++#define CONFIG_SYS_BAUDRATE_TABLE { 115200, 38400, 19200, 9600, 2400 }
++
++#undef CONFIG_USART0
++#define CONFIG_USART1
++#undef CONFIG_USART2
++#undef CONFIG_USART3
+diff -Naur u-boot-2009.11/include/configs/icnova/usart2.h u-boot-2009.11.new/include/configs/icnova/usart2.h
+--- u-boot-2009.11/include/configs/icnova/usart2.h 1970-01-01 01:00:00.000000000 +0100
++++ u-boot-2009.11.new/include/configs/icnova/usart2.h 2010-10-08 12:11:21.000000000 +0200
+@@ -0,0 +1,9 @@
++
++#define CONFIG_ATMEL_USART 1
++#define CONFIG_BAUDRATE 115200
++#define CONFIG_SYS_BAUDRATE_TABLE { 115200, 38400, 19200, 9600, 2400 }
++
++#undef CONFIG_USART0
++#undef CONFIG_USART1
++#define CONFIG_USART2 1
++#undef CONFIG_USART3
+diff -Naur u-boot-2009.11/include/configs/icnova/usart3.h u-boot-2009.11.new/include/configs/icnova/usart3.h
+--- u-boot-2009.11/include/configs/icnova/usart3.h 1970-01-01 01:00:00.000000000 +0100
++++ u-boot-2009.11.new/include/configs/icnova/usart3.h 2010-10-08 12:09:30.000000000 +0200
+@@ -0,0 +1,9 @@
++
++#define CONFIG_ATMEL_USART 1
++#define CONFIG_BAUDRATE 115200
++#define CONFIG_SYS_BAUDRATE_TABLE { 115200, 38400, 19200, 9600, 2400 }
++
++#undef CONFIG_USART0
++#undef CONFIG_USART1
++#undef CONFIG_USART2
++#define CONFIG_USART3 1
+diff -Naur u-boot-2009.11/include/configs/icnova/usart4.h u-boot-2009.11.new/include/configs/icnova/usart4.h
+--- u-boot-2009.11/include/configs/icnova/usart4.h 1970-01-01 01:00:00.000000000 +0100
++++ u-boot-2009.11.new/include/configs/icnova/usart4.h 2010-10-08 12:11:21.000000000 +0200
+@@ -0,0 +1,9 @@
++#define CONFIG_ATMEL_USART 1
++#define CONFIG_BAUDRATE 115200
++#define CONFIG_SYS_BAUDRATE_TABLE { 115200, 38400, 19200, 9600, 2400 }
++
++#undef CONFIG_USART0
++#undef CONFIG_USART1
++#undef CONFIG_USART2
++#undef CONFIG_USART3
++#define CONFIG_USART4 1
+diff -Naur u-boot-2009.11/include/configs/icnova_arm9oem.h u-boot-2009.11.new/include/configs/icnova_arm9oem.h
+--- u-boot-2009.11/include/configs/icnova_arm9oem.h 1970-01-01 01:00:00.000000000 +0100
++++ u-boot-2009.11.new/include/configs/icnova_arm9oem.h 2010-10-08 12:11:21.000000000 +0200
+@@ -0,0 +1,17 @@
++#ifndef __CONFIG_H
++#define __CONFIG_H
++
++#define CONFIG_ICNOVA_ARM9
++#include <configs/icnova/base.h>
++#include <configs/icnova/arm400MHz.h>
++#include <configs/icnova/mmc.h>
++#include <configs/icnova/flash2x8.h>
++#include <configs/icnova/nand_arm9.h>
++#include <configs/icnova/net.h>
++#define CONFIG_MACB_SEARCH_PHY
++#include <configs/icnova/usart3.h> // DBGU
++#include <configs/icnova/mmcupdate.h>
++//#include <configs/icnova/lcd320_240.h>
++//#include <configs/icnova/usb.h>
++
++#endif
+diff -Naur u-boot-2009.11/include/configs/icnova_arm9oem.h.orig u-boot-2009.11.new/include/configs/icnova_arm9oem.h.orig
+--- u-boot-2009.11/include/configs/icnova_arm9oem.h.orig 1970-01-01 01:00:00.000000000 +0100
++++ u-boot-2009.11.new/include/configs/icnova_arm9oem.h.orig 2010-10-08 12:09:30.000000000 +0200
+@@ -0,0 +1,17 @@
++#ifndef __CONFIG_H
++#define __CONFIG_H
++
++#define CONFIG_ICNOVA_ARM9
++#include <configs/icnova/base.h>
++#include <configs/icnova/arm400MHz.h>
++#include <configs/icnova/mmc.h>
++#include <configs/icnova/flash2x8.h>
++#include <configs/icnova/nand_arm9.h>
++#include <configs/icnova/net.h>
++#define CONFIG_MACB_SEARCH_PHY
++#include <configs/icnova/usart3.h> // DBGU
++#include <configs/icnova/mmcupdate.h>
++//#include <configs/icnova/lcd320_240.h>
++//#include <configs/icnova/usb.h>
++
++#endif
+diff -Naur u-boot-2009.11/include/configs/icnova_arm9oem_u4.h u-boot-2009.11.new/include/configs/icnova_arm9oem_u4.h
+--- u-boot-2009.11/include/configs/icnova_arm9oem_u4.h 1970-01-01 01:00:00.000000000 +0100
++++ u-boot-2009.11.new/include/configs/icnova_arm9oem_u4.h 2010-10-08 12:13:16.000000000 +0200
+@@ -0,0 +1,17 @@
++#ifndef __CONFIG_H
++#define __CONFIG_H
++
++#define CONFIG_ICNOVA_ARM9
++#include <configs/icnova/base.h>
++#include <configs/icnova/arm400MHz.h>
++#include <configs/icnova/mmc.h>
++#include <configs/icnova/flash2x8.h>
++#include <configs/icnova/nand_arm9.h>
++#include <configs/icnova/net.h>
++#define CONFIG_MACB_SEARCH_PHY
++#include <configs/icnova/usart4.h>
++#include <configs/icnova/mmcupdate.h>
++//#include <configs/icnova/lcd320_240.h>
++//#include <configs/icnova/usb.h>
++
++#endif
+diff -Naur u-boot-2009.11/include/configs/icnova_base.h u-boot-2009.11.new/include/configs/icnova_base.h
+--- u-boot-2009.11/include/configs/icnova_base.h 1970-01-01 01:00:00.000000000 +0100
++++ u-boot-2009.11.new/include/configs/icnova_base.h 2010-10-08 12:09:30.000000000 +0200
+@@ -0,0 +1,10 @@
++#ifndef __CONFIG_H
++#define __CONFIG_H
++
++#include <configs/icnova/base.h>
++#include <configs/icnova/cpu140MHz.h>
++#include <configs/icnova/flash.h>
++#include <configs/icnova/net.h>
++#include <configs/icnova/usart1.h>
++
++#endif
+diff -Naur u-boot-2009.11/include/configs/icnova_oem.h u-boot-2009.11.new/include/configs/icnova_oem.h
+--- u-boot-2009.11/include/configs/icnova_oem.h 1970-01-01 01:00:00.000000000 +0100
++++ u-boot-2009.11.new/include/configs/icnova_oem.h 2010-10-08 12:09:30.000000000 +0200
+@@ -0,0 +1,11 @@
++#ifndef __CONFIG_H
++#define __CONFIG_H
++
++#include <configs/icnova/base.h>
++#include <configs/icnova/cpu140MHz.h>
++#include <configs/icnova/mmc.h>
++#include <configs/icnova/flash.h>
++#include <configs/icnova/net.h>
++#include <configs/icnova/usart0.h>
++
++#endif
+diff -Naur u-boot-2009.11/include/configs/icnova_oemplus.h u-boot-2009.11.new/include/configs/icnova_oemplus.h
+--- u-boot-2009.11/include/configs/icnova_oemplus.h 1970-01-01 01:00:00.000000000 +0100
++++ u-boot-2009.11.new/include/configs/icnova_oemplus.h 2010-10-08 12:09:30.000000000 +0200
+@@ -0,0 +1,12 @@
++#ifndef __CONFIG_H
++#define __CONFIG_H
++
++#include <configs/icnova/base.h>
++#include <configs/icnova/cpu140MHz.h>
++#include <configs/icnova/mmc.h>
++#include <configs/icnova/flash2x8.h>
++#include <configs/icnova/nand.h>
++#include <configs/icnova/net.h>
++#include <configs/icnova/usart0.h>
++
++#endif
+diff -Naur u-boot-2009.11/include/configs/icnova_old.h u-boot-2009.11.new/include/configs/icnova_old.h
+--- u-boot-2009.11/include/configs/icnova_old.h 1970-01-01 01:00:00.000000000 +0100
++++ u-boot-2009.11.new/include/configs/icnova_old.h 2010-10-08 12:09:30.000000000 +0200
+@@ -0,0 +1,11 @@
++#ifndef __CONFIG_H
++#define __CONFIG_H
++
++#include <configs/icnova/base.h>
++#include <configs/icnova/cpu140MHz.h>
++#include <configs/icnova/flash.h>
++#include <configs/icnova/mmc.h>
++#include <configs/icnova/net.h>
++#include <configs/icnova/usart0.h>
++
++#endif
+diff -Naur u-boot-2009.11/include/mmc.h u-boot-2009.11.new/include/mmc.h
+--- u-boot-2009.11/include/mmc.h 2009-12-15 23:20:54.000000000 +0100
++++ u-boot-2009.11.new/include/mmc.h 2010-10-08 12:09:30.000000000 +0200
+@@ -272,6 +272,7 @@
+ int mmc_read(struct mmc *mmc, u64 src, uchar *dst, int size);
+ struct mmc *find_mmc_device(int dev_num);
+ void print_mmc_devices(char separator);
++int board_mmc_getcd(u8 *cd, struct mmc *mmc);
+
+ #ifndef CONFIG_GENERIC_MMC
+ int mmc_legacy_init(int verbose);
+diff -Naur u-boot-2009.11/lib_arm/board.c u-boot-2009.11.new/lib_arm/board.c
+--- u-boot-2009.11/lib_arm/board.c 2009-12-15 23:20:54.000000000 +0100
++++ u-boot-2009.11.new/lib_arm/board.c 2010-10-08 12:09:30.000000000 +0200
+@@ -356,8 +356,10 @@
+ serial_initialize();
+ #endif
+
++#ifdef CONFIG_CMD_NET
+ /* IP Address */
+ gd->bd->bi_ip_addr = getenv_IPaddr ("ipaddr");
++#endif
+
+ stdio_init (); /* get the devices list going. */
+
+diff -Naur u-boot-2009.11/Makefile u-boot-2009.11.new/Makefile
+--- u-boot-2009.11/Makefile 2009-12-15 23:20:54.000000000 +0100
++++ u-boot-2009.11.new/Makefile 2010-10-08 12:15:00.000000000 +0200
+@@ -3586,6 +3586,15 @@
+ mimc200_config : unconfig
+ @$(MKCONFIG) $(@:_config=) avr32 at32ap mimc200 mimc at32ap700x
+
++ICNOVA_BOARDS = oem oemplus base old
++$(ICNOVA_BOARDS:%=icnova_%_config): unconfig
++ @$(MKCONFIG) $(@:_config=) avr32 at32ap icnova in-circuit at32ap700x
++
++ICNOVA_ARM_BOARDS = arm9oem arm9oem_u4
++$(ICNOVA_ARM_BOARDS:%=icnova_%_config): unconfig
++ @$(MKCONFIG) $(@:_config=) arm arm926ejs icnova in-circuit at91
++
++
+ #========================================================================
+ # SH3 (SuperH)
+ #========================================================================
+diff -Naur u-boot-2009.11/Makefile.orig u-boot-2009.11.new/Makefile.orig
+--- u-boot-2009.11/Makefile.orig 1970-01-01 01:00:00.000000000 +0100
++++ u-boot-2009.11.new/Makefile.orig 2009-12-15 23:20:54.000000000 +0100
+@@ -0,0 +1,3775 @@
++#
++# (C) Copyright 2000-2009
++# 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 = 2009
++PATCHLEVEL = 11
++SUBLEVEL =
++EXTRAVERSION =
++ifneq "$(SUBLEVEL)" ""
++U_BOOT_VERSION = $(VERSION).$(PATCHLEVEL).$(SUBLEVEL)$(EXTRAVERSION)
++else
++U_BOOT_VERSION = $(VERSION).$(PATCHLEVEL)$(EXTRAVERSION)
++endif
++TIMESTAMP_FILE = $(obj)include/timestamp_autogenerated.h
++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/')
++
++# Set shell to bash if possible, otherwise fall back to sh
++SHELL := $(shell if [ -x "$$BASH" ]; then echo $$BASH; \
++ else if [ -x /bin/bash ]; then echo /bin/bash; \
++ else echo sh; fi; fi)
++
++export HOSTARCH HOSTOS SHELL
++
++# 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
++
++# The "tools" are needed early, so put this first
++# Don't include stuff already done in $(LIBS)
++SUBDIRS = tools \
++ examples/standalone \
++ examples/api
++
++.PHONY : $(SUBDIRS)
++
++ifeq ($(obj)include/config.mk,$(wildcard $(obj)include/config.mk))
++
++# Include autoconf.mk before config.mk so that the config options are available
++# to all top level build files. We need the dummy all: target to prevent the
++# dependency target in autoconf.mk.dep from being the default.
++all:
++sinclude $(obj)include/autoconf.mk.dep
++sinclude $(obj)include/autoconf.mk
++
++# load ARCH, BOARD, and CPU configuration
++include $(obj)include/config.mk
++export ARCH CPU BOARD VENDOR SOC
++
++# set default to nothing for native builds
++ifeq ($(HOSTARCH),$(ARCH))
++CROSS_COMPILE ?=
++endif
++
++# 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)/resetvec.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 += lib_generic/lzo/liblzo.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 \
++ fs/ubifs/libubifs.a
++LIBS += net/libnet.a
++LIBS += disk/libdisk.a
++LIBS += drivers/bios_emulator/libatibiosemu.a
++LIBS += drivers/block/libblock.a
++LIBS += drivers/dma/libdma.a
++LIBS += drivers/fpga/libfpga.a
++LIBS += drivers/gpio/libgpio.a
++LIBS += drivers/hwmon/libhwmon.a
++LIBS += drivers/i2c/libi2c.a
++LIBS += drivers/input/libinput.a
++LIBS += drivers/misc/libmisc.a
++LIBS += drivers/mmc/libmmc.a
++LIBS += drivers/mtd/libmtd.a
++LIBS += drivers/mtd/nand/libnand.a
++LIBS += drivers/mtd/onenand/libonenand.a
++LIBS += drivers/mtd/ubi/libubi.a
++LIBS += drivers/mtd/spi/libspi_flash.a
++LIBS += drivers/net/libnet.a
++LIBS += drivers/net/phy/libphy.a
++LIBS += drivers/net/sk98lin/libsk98lin.a
++LIBS += drivers/pci/libpci.a
++LIBS += drivers/pcmcia/libpcmcia.a
++LIBS += drivers/power/libpower.a
++LIBS += drivers/spi/libspi.a
++ifeq ($(CPU),mpc83xx)
++LIBS += drivers/qe/qe.a
++endif
++ifeq ($(CPU),mpc85xx)
++LIBS += drivers/qe/qe.a
++LIBS += cpu/mpc8xxx/ddr/libddr.a
++LIBS += cpu/mpc8xxx/lib8xxx.a
++TAG_SUBDIRS += cpu/mpc8xxx
++endif
++ifeq ($(CPU),mpc86xx)
++LIBS += cpu/mpc8xxx/ddr/libddr.a
++LIBS += cpu/mpc8xxx/lib8xxx.a
++TAG_SUBDIRS += cpu/mpc8xxx
++endif
++LIBS += drivers/rtc/librtc.a
++LIBS += drivers/serial/libserial.a
++LIBS += drivers/twserial/libtws.a
++LIBS += drivers/usb/gadget/libusb_gadget.a
++LIBS += drivers/usb/host/libusb_host.a
++LIBS += drivers/usb/musb/libusb_musb.a
++LIBS += drivers/video/libvideo.a
++LIBS += drivers/watchdog/libwatchdog.a
++LIBS += common/libcommon.a
++LIBS += libfdt/libfdt.a
++LIBS += api/libapi.a
++LIBS += post/libpost.a
++
++LIBS := $(addprefix $(obj),$(LIBS))
++.PHONY : $(LIBS) $(TIMESTAMP_FILE) $(VERSION_FILE)
++
++LIBBOARD = board/$(BOARDDIR)/lib$(BOARD).a
++LIBBOARD := $(addprefix $(obj),$(LIBBOARD))
++
++# Add GCC lib
++ifdef USE_PRIVATE_LIBGCC
++ifeq ("$(USE_PRIVATE_LIBGCC)", "yes")
++PLATFORM_LIBGCC = -L $(OBJTREE)/lib_$(ARCH) -lgcc
++else
++PLATFORM_LIBGCC = -L $(USE_PRIVATE_LIBGCC) -lgcc
++endif
++else
++PLATFORM_LIBGCC = -L $(shell dirname `$(CC) $(CFLAGS) -print-libgcc-file-name`) -lgcc
++endif
++PLATFORM_LIBS += $(PLATFORM_LIBGCC)
++export PLATFORM_LIBS
++
++# Special flags for CPP when processing the linker script.
++# Pass the version down so we can handle backwards compatibility
++# on the fly.
++LDPPFLAGS += \
++ -include $(TOPDIR)/include/u-boot/u-boot.lds.h \
++ $(shell $(LD) --version | \
++ sed -ne 's/GNU ld version \([0-9][0-9]*\)\.\([0-9][0-9]*\).*/-DLD_MAJOR=\1 -DLD_MINOR=\2/p')
++
++ifeq ($(CONFIG_NAND_U_BOOT),y)
++NAND_SPL = nand_spl
++U_BOOT_NAND = $(obj)u-boot-nand.bin
++endif
++
++ifeq ($(CONFIG_ONENAND_U_BOOT),y)
++ONENAND_IPL = onenand_ipl
++U_BOOT_ONENAND = $(obj)u-boot-onenand.bin
++ONENAND_BIN ?= $(obj)onenand_ipl/onenand-ipl-2k.bin
++endif
++
++__OBJS := $(subst $(obj),,$(OBJS))
++__LIBS := $(subst $(obj),,$(LIBS)) $(subst $(obj),,$(LIBBOARD))
++
++#########################################################################
++#########################################################################
++
++# Always append ALL so that arch config.mk's can add custom ones
++ALL += $(obj)u-boot.srec $(obj)u-boot.bin $(obj)System.map $(U_BOOT_NAND) $(U_BOOT_ONENAND)
++
++all: $(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
++ $(obj)tools/envcrc --binary > $(obj)env-ldr.o
++ $(LDR) -T $(CONFIG_BFIN_CPU) -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.kwb: $(obj)u-boot.bin
++ $(obj)tools/mkimage -n $(KWD_CONFIG) -T kwbimage \
++ -a $(TEXT_BASE) -e $(TEXT_BASE) -d $< $@
++
++$(obj)u-boot.sha1: $(obj)u-boot.bin
++ $(obj)tools/ubsha1 $(obj)u-boot.bin
++
++$(obj)u-boot.dis: $(obj)u-boot
++ $(OBJDUMP) -d $< > $@
++
++GEN_UBOOT = \
++ UNDEF_SYM=`$(OBJDUMP) -x $(LIBBOARD) $(LIBS) | \
++ sed -n -e 's/.*\($(SYM_PREFIX)__u_boot_cmd_.*\)/-u\1/p'|sort|uniq`;\
++ cd $(LNDIR) && $(LD) $(LDFLAGS) $$UNDEF_SYM $(__OBJS) \
++ --start-group $(__LIBS) --end-group $(PLATFORM_LIBS) \
++ -Map u-boot.map -o u-boot
++$(obj)u-boot: depend $(SUBDIRS) $(OBJS) $(LIBBOARD) $(LIBS) $(LDSCRIPT) $(obj)u-boot.lds
++ $(GEN_UBOOT)
++ifeq ($(CONFIG_KALLSYMS),y)
++ smap=`$(call SYSTEM_MAP,u-boot) | \
++ awk '$$2 ~ /[tTwW]/ {printf $$1 $$3 "\\\\000"}'` ; \
++ $(CC) $(CFLAGS) -DSYSTEM_MAP="\"$${smap}\"" \
++ -c common/system_map.c -o $(obj)common/system_map.o
++ $(GEN_UBOOT) $(obj)common/system_map.o
++endif
++
++$(OBJS): depend
++ $(MAKE) -C cpu/$(CPU) $(if $(REMOTE_BUILD),$@,$(notdir $@))
++
++$(LIBS): depend $(SUBDIRS)
++ $(MAKE) -C $(dir $(subst $(obj),,$@))
++
++$(LIBBOARD): depend $(LIBS)
++ $(MAKE) -C $(dir $(subst $(obj),,$@))
++
++$(SUBDIRS): depend
++ $(MAKE) -C $@ all
++
++$(LDSCRIPT): depend
++ $(MAKE) -C $(dir $@) $(notdir $@)
++
++$(obj)u-boot.lds: $(LDSCRIPT)
++ $(CPP) $(CPPFLAGS) $(LDPPFLAGS) -ansi -D__ASSEMBLY__ -P - <$^ >$@
++
++$(NAND_SPL): $(TIMESTAMP_FILE) $(VERSION_FILE) $(obj)include/autoconf.mk
++ $(MAKE) -C nand_spl/board/$(BOARDDIR) all
++
++$(U_BOOT_NAND): $(NAND_SPL) $(obj)u-boot.bin
++ cat $(obj)nand_spl/u-boot-spl-16k.bin $(obj)u-boot.bin > $(obj)u-boot-nand.bin
++
++$(ONENAND_IPL): $(TIMESTAMP_FILE) $(VERSION_FILE) $(obj)include/autoconf.mk
++ $(MAKE) -C onenand_ipl/board/$(BOARDDIR) all
++
++$(U_BOOT_ONENAND): $(ONENAND_IPL) $(obj)u-boot.bin
++ cat $(ONENAND_BIN) $(obj)u-boot.bin > $(obj)u-boot-onenand.bin
++
++$(VERSION_FILE):
++ @( printf '#define U_BOOT_VERSION "U-Boot %s%s"\n' "$(U_BOOT_VERSION)" \
++ '$(shell $(TOPDIR)/tools/setlocalversion $(TOPDIR))' ) > $@.tmp
++ @cmp -s $@ $@.tmp && rm -f $@.tmp || mv -f $@.tmp $@
++
++$(TIMESTAMP_FILE):
++ @date +'#define U_BOOT_DATE "%b %d %C%y"' > $@
++ @date +'#define U_BOOT_TIME "%T"' >> $@
++
++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: $(TIMESTAMP_FILE) $(VERSION_FILE) $(obj)include/autoconf.mk
++ 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/gpio
++TAG_SUBDIRS += drivers/hwmon
++TAG_SUBDIRS += drivers/i2c
++TAG_SUBDIRS += drivers/input
++TAG_SUBDIRS += drivers/misc
++TAG_SUBDIRS += drivers/mmc
++TAG_SUBDIRS += drivers/mtd
++TAG_SUBDIRS += drivers/mtd/nand
++TAG_SUBDIRS += drivers/mtd/onenand
++TAG_SUBDIRS += drivers/mtd/spi
++TAG_SUBDIRS += drivers/net
++TAG_SUBDIRS += drivers/net/sk98lin
++TAG_SUBDIRS += drivers/pci
++TAG_SUBDIRS += drivers/pcmcia
++TAG_SUBDIRS += drivers/qe
++TAG_SUBDIRS += drivers/rtc
++TAG_SUBDIRS += drivers/serial
++TAG_SUBDIRS += drivers/spi
++TAG_SUBDIRS += drivers/usb
++TAG_SUBDIRS += drivers/video
++
++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
++
++SYSTEM_MAP = \
++ $(NM) $1 | \
++ grep -v '\(compiled\)\|\(\.o$$\)\|\( [aUw] \)\|\(\.\.ng$$\)\|\(LASH[RL]DI\)' | \
++ LC_ALL=C sort
++$(obj)System.map: $(obj)u-boot
++ @$(call SYSTEM_MAP,$<) > $(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 $(HOSTCFLAGS) $(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 > $@.tmp && \
++ mv $@.tmp $@
++
++#########################################################################
++else # !config.mk
++all $(obj)u-boot.hex $(obj)u-boot.srec $(obj)u-boot.bin \
++$(obj)u-boot.img $(obj)u-boot.dis $(obj)u-boot \
++$(SUBDIRS) $(TIMESTAMP_FILE) $(VERSION_FILE) gdbtools updater env depend \
++dep tags ctags etags cscope $(obj)System.map:
++ @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
++
++%: %_config
++ $(MAKE)
++
++#========================================================================
++# 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
++
++digsy_mtc_config \
++digsy_mtc_LOWBOOT_config \
++digsy_mtc_RAMBOOT_config: unconfig
++ @mkdir -p $(obj)include
++ @mkdir -p $(obj)board/digsy_mtc
++ @ >$(obj)include/config.h
++ @[ -z "$(findstring LOWBOOT_,$@)" ] || \
++ { echo "TEXT_BASE = 0xFF000000" >$(obj)board/digsy_mtc/config.tmp ; \
++ echo "... with LOWBOOT configuration" ; \
++ }
++ @[ -z "$(findstring RAMBOOT_,$@)" ] || \
++ { echo "TEXT_BASE = 0x00100000" >$(obj)board/digsy_mtc/config.tmp ; \
++ echo "... with RAMBOOT configuration" ; \
++ }
++ @$(MKCONFIG) -a digsy_mtc ppc mpc5xxx digsy_mtc
++
++galaxy5200_LOWBOOT_config \
++galaxy5200_config: unconfig
++ @mkdir -p $(obj)include
++ @echo "#define CONFIG_$(@:_config=) 1" >$(obj)include/config.h
++ @$(MKCONFIG) -a galaxy5200 ppc mpc5xxx galaxy5200
++
++hmi1001_config: unconfig
++ @$(MKCONFIG) hmi1001 ppc mpc5xxx hmi1001
++
++Lite5200_config \
++Lite5200_LOWBOOT_config \
++Lite5200_LOWBOOT08_config \
++icecube_5200_config \
++icecube_5200_LOWBOOT_config \
++icecube_5200_LOWBOOT08_config \
++icecube_5200_DDR_config \
++icecube_5200_DDR_LOWBOOT_config \
++icecube_5200_DDR_LOWBOOT08_config \
++icecube_5100_config: unconfig
++ @mkdir -p $(obj)include
++ @mkdir -p $(obj)board/icecube
++ @[ -z "$(findstring LOWBOOT_,$@)" ] || \
++ { if [ "$(findstring DDR,$@)" ] ; \
++ then echo "TEXT_BASE = 0xFF800000" >$(obj)board/icecube/config.tmp ; \
++ else echo "TEXT_BASE = 0xFF000000" >$(obj)board/icecube/config.tmp ; \
++ fi ; \
++ $(XECHO) "... with LOWBOOT configuration" ; \
++ }
++ @[ -z "$(findstring LOWBOOT08,$@)" ] || \
++ { echo "TEXT_BASE = 0xFF800000" >$(obj)board/icecube/config.tmp ; \
++ echo "... with 8 MB flash only" ; \
++ $(XECHO) "... with LOWBOOT configuration" ; \
++ }
++ @[ -z "$(findstring DDR,$@)" ] || \
++ { echo "#define CONFIG_MPC5200_DDR" >>$(obj)include/config.h ; \
++ $(XECHO) "... DDR memory revision" ; \
++ }
++ @[ -z "$(findstring 5200,$@)" ] || \
++ { echo "#define CONFIG_MPC5200" >>$(obj)include/config.h ; \
++ $(XECHO) "... with MPC5200 processor" ; \
++ }
++ @[ -z "$(findstring 5100,$@)" ] || \
++ { echo "#define CONFIG_MGT5100" >>$(obj)include/config.h ; \
++ $(XECHO) "... with MGT5100 processor" ; \
++ }
++ @$(MKCONFIG) -a IceCube ppc mpc5xxx icecube
++
++jupiter_config: unconfig
++ @$(MKCONFIG) jupiter ppc mpc5xxx jupiter
++
++inka4x0_config: unconfig
++ @$(MKCONFIG) inka4x0 ppc mpc5xxx inka4x0
++
++lite5200b_config \
++lite5200b_PM_config \
++lite5200b_LOWBOOT_config: unconfig
++ @mkdir -p $(obj)include
++ @mkdir -p $(obj)board/icecube
++ @ echo "#define CONFIG_MPC5200_DDR" >>$(obj)include/config.h
++ @ $(XECHO) "... DDR memory revision"
++ @ echo "#define CONFIG_MPC5200" >>$(obj)include/config.h
++ @ echo "#define CONFIG_LITE5200B" >>$(obj)include/config.h
++ @[ -z "$(findstring _PM_,$@)" ] || \
++ { echo "#define CONFIG_LITE5200B_PM" >>$(obj)include/config.h ; \
++ $(XECHO) "... with power management (low-power mode) support" ; \
++ }
++ @[ -z "$(findstring LOWBOOT_,$@)" ] || \
++ { echo "TEXT_BASE = 0xFF000000" >$(obj)board/icecube/config.tmp ; \
++ $(XECHO) "... with LOWBOOT configuration" ; \
++ }
++ @ $(XECHO) "... with MPC5200B processor"
++ @$(MKCONFIG) -a IceCube ppc mpc5xxx icecube
++
++mcc200_config \
++mcc200_SDRAM_config \
++mcc200_highboot_config \
++mcc200_COM12_config \
++mcc200_COM12_SDRAM_config \
++mcc200_COM12_highboot_config \
++mcc200_COM12_highboot_SDRAM_config \
++mcc200_highboot_SDRAM_config \
++prs200_config \
++prs200_DDR_config \
++prs200_highboot_config \
++prs200_highboot_DDR_config: unconfig
++ @mkdir -p $(obj)include
++ @mkdir -p $(obj)board/mcc200
++ @[ -n "$(findstring highboot,$@)" ] || \
++ { $(XECHO) "... with lowboot configuration" ; \
++ }
++ @[ -z "$(findstring highboot,$@)" ] || \
++ { echo "TEXT_BASE = 0xFFF00000" >$(obj)board/mcc200/config.tmp ; \
++ $(XECHO) "... with highboot configuration" ; \
++ }
++ @[ -n "$(findstring _SDRAM,$@)" ] || \
++ { if [ -n "$(findstring mcc200,$@)" ]; \
++ then \
++ $(XECHO) "... with DDR" ; \
++ else \
++ if [ -n "$(findstring _DDR,$@)" ];\
++ then \
++ $(XECHO) "... with DDR" ; \
++ else \
++ echo "#define CONFIG_MCC200_SDRAM" >>$(obj)include/config.h ;\
++ $(XECHO) "... with SDRAM" ; \
++ fi; \
++ fi; \
++ }
++ @[ -z "$(findstring _SDRAM,$@)" ] || \
++ { echo "#define CONFIG_MCC200_SDRAM" >>$(obj)include/config.h ; \
++ $(XECHO) "... with SDRAM" ; \
++ }
++ @[ -z "$(findstring COM12,$@)" ] || \
++ { echo "#define CONFIG_CONSOLE_COM12" >>$(obj)include/config.h ; \
++ $(XECHO) "... with console on COM12" ; \
++ }
++ @[ -z "$(findstring prs200,$@)" ] || \
++ { echo "#define CONFIG_PRS200" >>$(obj)include/config.h ;\
++ }
++ @$(MKCONFIG) -n $@ -a mcc200 ppc mpc5xxx mcc200
++
++mecp5200_config: unconfig
++ @$(MKCONFIG) mecp5200 ppc mpc5xxx mecp5200 esd
++
++motionpro_config: unconfig
++ @$(MKCONFIG) motionpro ppc mpc5xxx motionpro
++
++mucmc52_config: unconfig
++ @$(MKCONFIG) mucmc52 ppc mpc5xxx mucmc52
++
++munices_config: unconfig
++ @$(MKCONFIG) munices ppc mpc5xxx munices
++
++MVBC_P_config: unconfig
++ @mkdir -p $(obj)include
++ @mkdir -p $(obj)board/mvbc_p
++ @ >$(obj)include/config.h
++ @[ -z "$(findstring MVBC_P,$@)" ] || \
++ { echo "#define CONFIG_MVBC_P" >>$(obj)include/config.h; }
++ @$(MKCONFIG) -n $@ -a MVBC_P ppc mpc5xxx mvbc_p matrix_vision
++
++o2dnt_config: unconfig
++ @$(MKCONFIG) o2dnt ppc mpc5xxx o2dnt
++
++pcm030_config \
++pcm030_LOWBOOT_config: unconfig
++ @mkdir -p $(obj)include $(obj)board/phytec/pcm030
++ @ >$(obj)include/config.h
++ @[ -z "$(findstring LOWBOOT_,$@)" ] || \
++ { echo "TEXT_BASE = 0xFF000000" >$(obj)board/phytec/pcm030/config.tmp ; \
++ echo "... with LOWBOOT configuration" ; \
++ }
++ @$(MKCONFIG) -a pcm030 ppc mpc5xxx pcm030 phytec
++
++pf5200_config: unconfig
++ @$(MKCONFIG) pf5200 ppc mpc5xxx pf5200 esd
++
++PM520_config \
++PM520_DDR_config \
++PM520_ROMBOOT_config \
++PM520_ROMBOOT_DDR_config: unconfig
++ @mkdir -p $(obj)include
++ @[ -z "$(findstring DDR,$@)" ] || \
++ { echo "#define CONFIG_MPC5200_DDR" >>$(obj)include/config.h ; \
++ $(XECHO) "... DDR memory revision" ; \
++ }
++ @[ -z "$(findstring ROMBOOT,$@)" ] || \
++ { echo "#define CONFIG_BOOT_ROM" >>$(obj)include/config.h ; \
++ $(XECHO) "... booting from 8-bit flash" ; \
++ }
++ @$(MKCONFIG) -a PM520 ppc mpc5xxx pm520
++
++smmaco4_config: unconfig
++ @$(MKCONFIG) -a smmaco4 ppc mpc5xxx tqm5200 tqc
++
++spieval_config: unconfig
++ @$(MKCONFIG) -a spieval ppc mpc5xxx tqm5200 tqc
++
++TB5200_B_config \
++TB5200_config: unconfig
++ @mkdir -p $(obj)include
++ @[ -z "$(findstring _B,$@)" ] || \
++ { echo "#define CONFIG_TQM5200_B" >>$(obj)include/config.h ; \
++ $(XECHO) "... with MPC5200B processor" ; \
++ }
++ @$(MKCONFIG) -n $@ -a TB5200 ppc mpc5xxx tqm5200 tqc
++
++MINI5200_config \
++EVAL5200_config \
++TOP5200_config: unconfig
++ @mkdir -p $(obj)include
++ @ echo "#define CONFIG_$(@:_config=) 1" >$(obj)include/config.h
++ @$(MKCONFIG) -n $@ -a TOP5200 ppc mpc5xxx top5200 emk
++
++Total5100_config \
++Total5200_config \
++Total5200_lowboot_config \
++Total5200_Rev2_config \
++Total5200_Rev2_lowboot_config: unconfig
++ @mkdir -p $(obj)include
++ @mkdir -p $(obj)board/total5200
++ @[ -z "$(findstring 5100,$@)" ] || \
++ { echo "#define CONFIG_MGT5100" >>$(obj)include/config.h ; \
++ $(XECHO) "... with MGT5100 processor" ; \
++ }
++ @[ -z "$(findstring 5200,$@)" ] || \
++ { echo "#define CONFIG_MPC5200" >>$(obj)include/config.h ; \
++ $(XECHO) "... with MPC5200 processor" ; \
++ }
++ @[ -n "$(findstring Rev,$@)" ] || \
++ { echo "#define CONFIG_TOTAL5200_REV 1" >>$(obj)include/config.h ; \
++ $(XECHO) "... revision 1 board" ; \
++ }
++ @[ -z "$(findstring Rev2_,$@)" ] || \
++ { echo "#define CONFIG_TOTAL5200_REV 2" >>$(obj)include/config.h ; \
++ $(XECHO) "... revision 2 board" ; \
++ }
++ @[ -z "$(findstring lowboot_,$@)" ] || \
++ { echo "TEXT_BASE = 0xFE000000" >$(obj)board/total5200/config.tmp ; \
++ $(XECHO) "... with lowboot configuration" ; \
++ }
++ @$(MKCONFIG) -a Total5200 ppc mpc5xxx total5200
++
++cam5200_config \
++cam5200_niosflash_config \
++fo300_config \
++MiniFAP_config \
++TQM5200S_config \
++TQM5200S_HIGHBOOT_config \
++TQM5200_B_config \
++TQM5200_B_HIGHBOOT_config \
++TQM5200_config \
++TQM5200_STK100_config: unconfig
++ @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
++#########################################################################
++
++aria_config: unconfig
++ @$(MKCONFIG) -a aria ppc mpc512x aria davedenx
++
++mecp5123_config: unconfig
++ @$(MKCONFIG) -a mecp5123 ppc mpc512x mecp5123 esd
++
++mpc5121ads_config \
++mpc5121ads_rev2_config \
++ : unconfig
++ @mkdir -p $(obj)include
++ @if [ "$(findstring rev2,$@)" ] ; then \
++ echo "#define CONFIG_ADS5121_REV2 1" > $(obj)include/config.h; \
++ fi
++ @$(MKCONFIG) -a mpc5121ads ppc mpc512x mpc5121ads freescale
++
++#########################################################################
++## MPC8xx Systems
++#########################################################################
++
++Adder_config \
++Adder87x_config \
++AdderII_config \
++ : unconfig
++ @mkdir -p $(obj)include
++ $(if $(findstring AdderII,$@), \
++ @echo "#define CONFIG_MPC852T" > $(obj)include/config.h)
++ @$(MKCONFIG) -a Adder ppc mpc8xx adder
++
++AdderUSB_config: unconfig
++ @$(MKCONFIG) -a AdderUSB ppc mpc8xx adder
++
++ADS860_config \
++FADS823_config \
++FADS850SAR_config \
++MPC86xADS_config \
++MPC885ADS_config \
++FADS860T_config: unconfig
++ @$(MKCONFIG) $(@:_config=) ppc mpc8xx fads
++
++AMX860_config : unconfig
++ @$(MKCONFIG) $(@:_config=) ppc mpc8xx amx860 westel
++
++c2mon_config: unconfig
++ @$(MKCONFIG) $(@:_config=) ppc mpc8xx c2mon
++
++CCM_config: unconfig
++ @$(MKCONFIG) $(@:_config=) ppc mpc8xx CCM siemens
++
++cogent_mpc8xx_config: unconfig
++ @$(MKCONFIG) $(@:_config=) ppc mpc8xx cogent
++
++ELPT860_config: unconfig
++ @$(MKCONFIG) $(@:_config=) ppc mpc8xx elpt860 LEOX
++
++EP88x_config: unconfig
++ @$(MKCONFIG) $(@:_config=) ppc mpc8xx ep88x
++
++ESTEEM192E_config: unconfig
++ @$(MKCONFIG) $(@:_config=) ppc mpc8xx esteem192e
++
++ETX094_config : unconfig
++ @$(MKCONFIG) $(@:_config=) ppc mpc8xx etx094
++
++FLAGADM_config: unconfig
++ @$(MKCONFIG) $(@:_config=) ppc mpc8xx flagadm
++
++xtract_GEN860T = $(subst _SC,,$(subst _config,,$1))
++
++GEN860T_SC_config \
++GEN860T_config: unconfig
++ @mkdir -p $(obj)include
++ @[ -z "$(findstring _SC,$@)" ] || \
++ { echo "#define CONFIG_SC" >>$(obj)include/config.h ; \
++ $(XECHO) "With reduced H/W feature set (SC)..." ; \
++ }
++ @$(MKCONFIG) -a $(call xtract_GEN860T,$@) ppc mpc8xx gen860t
++
++GENIETV_config: unconfig
++ @$(MKCONFIG) $(@:_config=) ppc mpc8xx genietv
++
++GTH_config: unconfig
++ @$(MKCONFIG) $(@:_config=) ppc mpc8xx gth
++
++hermes_config : unconfig
++ @$(MKCONFIG) $(@:_config=) ppc mpc8xx hermes
++
++HMI10_config : unconfig
++ @$(MKCONFIG) $(@:_config=) ppc mpc8xx tqm8xx tqc
++
++IAD210_config: unconfig
++ @$(MKCONFIG) $(@:_config=) ppc mpc8xx IAD210 siemens
++
++xtract_ICU862 = $(subst _100MHz,,$(subst _config,,$1))
++
++ICU862_100MHz_config \
++ICU862_config: unconfig
++ @mkdir -p $(obj)include
++ @[ -z "$(findstring _100MHz,$@)" ] || \
++ { echo "#define CONFIG_100MHz" >>$(obj)include/config.h ; \
++ $(XECHO) "... with 100MHz system clock" ; \
++ }
++ @$(MKCONFIG) -a $(call xtract_ICU862,$@) ppc mpc8xx icu862
++
++IP860_config : unconfig
++ @$(MKCONFIG) $(@:_config=) ppc mpc8xx ip860
++
++IVML24_256_config \
++IVML24_128_config \
++IVML24_config: unconfig
++ @mkdir -p $(obj)include
++ @[ -z "$(findstring IVML24_config,$@)" ] || \
++ { echo "#define CONFIG_IVML24_16M" >>$(obj)include/config.h ; \
++ }
++ @[ -z "$(findstring IVML24_128_config,$@)" ] || \
++ { echo "#define CONFIG_IVML24_32M" >>$(obj)include/config.h ; \
++ }
++ @[ -z "$(findstring IVML24_256_config,$@)" ] || \
++ { echo "#define CONFIG_IVML24_64M" >>$(obj)include/config.h ; \
++ }
++ @$(MKCONFIG) -a IVML24 ppc mpc8xx ivm
++
++IVMS8_256_config \
++IVMS8_128_config \
++IVMS8_config: unconfig
++ @mkdir -p $(obj)include
++ @[ -z "$(findstring IVMS8_config,$@)" ] || \
++ { echo "#define CONFIG_IVMS8_16M" >>$(obj)include/config.h ; \
++ }
++ @[ -z "$(findstring IVMS8_128_config,$@)" ] || \
++ { echo "#define CONFIG_IVMS8_32M" >>$(obj)include/config.h ; \
++ }
++ @[ -z "$(findstring IVMS8_256_config,$@)" ] || \
++ { echo "#define CONFIG_IVMS8_64M" >>$(obj)include/config.h ; \
++ }
++ @$(MKCONFIG) -a IVMS8 ppc mpc8xx ivm
++
++kmsupx4_config: unconfig
++ @$(MKCONFIG) $(@:_config=) ppc mpc8xx km8xx keymile
++
++KUP4K_config : unconfig
++ @$(MKCONFIG) $(@:_config=) ppc mpc8xx kup4k kup
++
++KUP4X_config : unconfig
++ @$(MKCONFIG) $(@:_config=) ppc mpc8xx kup4x kup
++
++LANTEC_config : unconfig
++ @$(MKCONFIG) $(@:_config=) ppc mpc8xx lantec
++
++lwmon_config: unconfig
++ @$(MKCONFIG) $(@:_config=) ppc mpc8xx lwmon
++
++MBX_config \
++MBX860T_config: unconfig
++ @$(MKCONFIG) $(@:_config=) ppc mpc8xx mbx8xx
++
++mgsuvd_config: unconfig
++ @$(MKCONFIG) $(@:_config=) ppc mpc8xx km8xx keymile
++
++MHPC_config: unconfig
++ @$(MKCONFIG) $(@:_config=) ppc mpc8xx mhpc eltec
++
++xtract_NETVIA = $(subst _V2,,$(subst _config,,$1))
++
++NETVIA_V2_config \
++NETVIA_config: unconfig
++ @mkdir -p $(obj)include
++ @[ -z "$(findstring NETVIA_config,$@)" ] || \
++ { echo "#define CONFIG_NETVIA_VERSION 1" >>$(obj)include/config.h ; \
++ $(XECHO) "... Version 1" ; \
++ }
++ @[ -z "$(findstring NETVIA_V2_config,$@)" ] || \
++ { echo "#define CONFIG_NETVIA_VERSION 2" >>$(obj)include/config.h ; \
++ $(XECHO) "... Version 2" ; \
++ }
++ @$(MKCONFIG) -a $(call xtract_NETVIA,$@) ppc mpc8xx netvia
++
++xtract_NETPHONE = $(subst _V2,,$(subst _config,,$1))
++
++NETPHONE_V2_config \
++NETPHONE_config: unconfig
++ @mkdir -p $(obj)include
++ @[ -z "$(findstring NETPHONE_config,$@)" ] || \
++ { echo "#define CONFIG_NETPHONE_VERSION 1" >>$(obj)include/config.h ; \
++ }
++ @[ -z "$(findstring NETPHONE_V2_config,$@)" ] || \
++ { echo "#define CONFIG_NETPHONE_VERSION 2" >>$(obj)include/config.h ; \
++ }
++ @$(MKCONFIG) -a $(call xtract_NETPHONE,$@) ppc mpc8xx netphone
++
++xtract_NETTA = $(subst _SWAPHOOK,,$(subst _6412,,$(subst _ISDN,,$(subst _config,,$1))))
++
++NETTA_ISDN_6412_SWAPHOOK_config \
++NETTA_ISDN_SWAPHOOK_config \
++NETTA_6412_SWAPHOOK_config \
++NETTA_SWAPHOOK_config \
++NETTA_ISDN_6412_config \
++NETTA_ISDN_config \
++NETTA_6412_config \
++NETTA_config: unconfig
++ @mkdir -p $(obj)include
++ @[ -z "$(findstring ISDN_,$@)" ] || \
++ { echo "#define CONFIG_NETTA_ISDN 1" >>$(obj)include/config.h ; \
++ }
++ @[ -n "$(findstring ISDN_,$@)" ] || \
++ { echo "#undef CONFIG_NETTA_ISDN" >>$(obj)include/config.h ; \
++ }
++ @[ -z "$(findstring 6412_,$@)" ] || \
++ { echo "#define CONFIG_NETTA_6412 1" >>$(obj)include/config.h ; \
++ }
++ @[ -n "$(findstring 6412_,$@)" ] || \
++ { echo "#undef CONFIG_NETTA_6412" >>$(obj)include/config.h ; \
++ }
++ @[ -z "$(findstring SWAPHOOK_,$@)" ] || \
++ { echo "#define CONFIG_NETTA_SWAPHOOK 1" >>$(obj)include/config.h ; \
++ }
++ @[ -n "$(findstring SWAPHOOK_,$@)" ] || \
++ { echo "#undef CONFIG_NETTA_SWAPHOOK" >>$(obj)include/config.h ; \
++ }
++ @$(MKCONFIG) -a $(call xtract_NETTA,$@) ppc mpc8xx netta
++
++xtract_NETTA2 = $(subst _V2,,$(subst _config,,$1))
++
++NETTA2_V2_config \
++NETTA2_config: unconfig
++ @mkdir -p $(obj)include
++ @[ -z "$(findstring NETTA2_config,$@)" ] || \
++ { echo "#define CONFIG_NETTA2_VERSION 1" >>$(obj)include/config.h ; \
++ }
++ @[ -z "$(findstring NETTA2_V2_config,$@)" ] || \
++ { echo "#define CONFIG_NETTA2_VERSION 2" >>$(obj)include/config.h ; \
++ }
++ @$(MKCONFIG) -a $(call xtract_NETTA2,$@) ppc mpc8xx netta2
++
++NC650_Rev1_config \
++NC650_Rev2_config \
++CP850_config: unconfig
++ @mkdir -p $(obj)include
++ @[ -z "$(findstring CP850,$@)" ] || \
++ { echo "#define CONFIG_CP850 1" >>$(obj)include/config.h ; \
++ echo "#define CONFIG_IDS852_REV2 1" >>$(obj)include/config.h ; \
++ }
++ @[ -z "$(findstring Rev1,$@)" ] || \
++ { echo "#define CONFIG_IDS852_REV1 1" >>$(obj)include/config.h ; \
++ }
++ @[ -z "$(findstring Rev2,$@)" ] || \
++ { echo "#define CONFIG_IDS852_REV2 1" >>$(obj)include/config.h ; \
++ }
++ @$(MKCONFIG) -a NC650 ppc mpc8xx nc650
++
++NX823_config: unconfig
++ @$(MKCONFIG) $(@:_config=) ppc mpc8xx nx823
++
++pcu_e_config: unconfig
++ @$(MKCONFIG) $(@:_config=) ppc mpc8xx pcu_e siemens
++
++QS850_config: unconfig
++ @$(MKCONFIG) $(@:_config=) ppc mpc8xx qs850 snmc
++
++QS823_config: unconfig
++ @$(MKCONFIG) $(@:_config=) ppc mpc8xx qs850 snmc
++
++QS860T_config: unconfig
++ @$(MKCONFIG) $(@:_config=) ppc mpc8xx qs860t snmc
++
++quantum_config: unconfig
++ @$(MKCONFIG) $(@:_config=) ppc mpc8xx quantum
++
++R360MPI_config: unconfig
++ @$(MKCONFIG) $(@:_config=) ppc mpc8xx r360mpi
++
++RBC823_config: unconfig
++ @$(MKCONFIG) $(@:_config=) ppc mpc8xx rbc823
++
++RPXClassic_config: unconfig
++ @$(MKCONFIG) $(@:_config=) ppc mpc8xx RPXClassic
++
++RPXlite_config: unconfig
++ @$(MKCONFIG) $(@:_config=) ppc mpc8xx RPXlite
++
++RPXlite_DW_64_config \
++RPXlite_DW_LCD_config \
++RPXlite_DW_64_LCD_config \
++RPXlite_DW_NVRAM_config \
++RPXlite_DW_NVRAM_64_config \
++RPXlite_DW_NVRAM_LCD_config \
++RPXlite_DW_NVRAM_64_LCD_config \
++RPXlite_DW_config: unconfig
++ @mkdir -p $(obj)include
++ @[ -z "$(findstring _64,$@)" ] || \
++ { echo "#define RPXlite_64MHz" >>$(obj)include/config.h ; \
++ $(XECHO) "... with 64MHz system clock ..."; \
++ }
++ @[ -z "$(findstring _LCD,$@)" ] || \
++ { echo "#define CONFIG_LCD" >>$(obj)include/config.h ; \
++ echo "#define CONFIG_NEC_NL6448BC20" >>$(obj)include/config.h ; \
++ $(XECHO) "... with LCD display ..."; \
++ }
++ @[ -z "$(findstring _NVRAM,$@)" ] || \
++ { echo "#define CONFIG_ENV_IS_IN_NVRAM" >>$(obj)include/config.h ; \
++ $(XECHO) "... with ENV in NVRAM ..."; \
++ }
++ @$(MKCONFIG) -a RPXlite_DW ppc mpc8xx RPXlite_dw
++
++rmu_config: unconfig
++ @$(MKCONFIG) $(@:_config=) ppc mpc8xx rmu
++
++RRvision_config: unconfig
++ @$(MKCONFIG) $(@:_config=) ppc mpc8xx RRvision
++
++RRvision_LCD_config: unconfig
++ @mkdir -p $(obj)include
++ @echo "#define CONFIG_LCD" >$(obj)include/config.h
++ @echo "#define CONFIG_SHARP_LQ104V7DS01" >>$(obj)include/config.h
++ @$(MKCONFIG) -a RRvision ppc mpc8xx RRvision
++
++SM850_config : unconfig
++ @$(MKCONFIG) $(@:_config=) ppc mpc8xx tqm8xx tqc
++
++spc1920_config: unconfig
++ @$(MKCONFIG) $(@:_config=) ppc mpc8xx spc1920
++
++SPD823TS_config: unconfig
++ @$(MKCONFIG) $(@:_config=) ppc mpc8xx spd8xx
++
++stxxtc_config: unconfig
++ @$(MKCONFIG) $(@:_config=) ppc mpc8xx stxxtc stx
++
++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
++
++# Arches, Canyonlands & Glacier use different U-Boot images
++arches_config \
++canyonlands_config \
++glacier_config: unconfig
++ @mkdir -p $(obj)include
++ @echo "#define CONFIG_$$(echo $(subst ,,$(@:_config=)) | \
++ tr '[:lower:]' '[:upper:]')" >$(obj)include/config.h
++ @$(MKCONFIG) -n $@ -a canyonlands ppc ppc4xx canyonlands amcc
++
++canyonlands_nand_config \
++glacier_nand_config: unconfig
++ @mkdir -p $(obj)include $(obj)board/amcc/canyonlands
++ @mkdir -p $(obj)nand_spl/board/amcc/canyonlands
++ @echo "#define CONFIG_NAND_U_BOOT" > $(obj)include/config.h
++ @echo "#define CONFIG_$$(echo $(subst ,,$(@:_nand_config=)) | \
++ tr '[:lower:]' '[:upper:]')" >> $(obj)include/config.h
++ @$(MKCONFIG) -n $@ -a canyonlands ppc ppc4xx canyonlands amcc
++ @echo "TEXT_BASE = 0x01000000" > $(obj)board/amcc/canyonlands/config.tmp
++ @echo "CONFIG_NAND_U_BOOT = y" >> $(obj)include/config.mk
++
++CATcenter_config \
++CATcenter_25_config \
++CATcenter_33_config: unconfig
++ @mkdir -p $(obj)include
++ @ echo "/* CATcenter uses PPChameleon Model ME */" > $(obj)include/config.h
++ @ echo "#define CONFIG_PPCHAMELEON_MODULE_MODEL 1" >> $(obj)include/config.h
++ @[ -z "$(findstring _25,$@)" ] || \
++ { echo "#define CONFIG_PPCHAMELEON_CLK_25" >> $(obj)include/config.h ; \
++ $(XECHO) "SysClk = 25MHz" ; \
++ }
++ @[ -z "$(findstring _33,$@)" ] || \
++ { echo "#define CONFIG_PPCHAMELEON_CLK_33" >> $(obj)include/config.h ; \
++ $(XECHO) "SysClk = 33MHz" ; \
++ }
++ @$(MKCONFIG) -a $(call xtract_4xx,$@) ppc ppc4xx PPChameleonEVB dave
++
++CMS700_config: unconfig
++ @$(MKCONFIG) $(@:_config=) ppc ppc4xx cms700 esd
++
++CPCI2DP_config: unconfig
++ @$(MKCONFIG) $(@:_config=) ppc ppc4xx cpci2dp esd
++
++CPCI405_config \
++CPCI4052_config \
++CPCI405DT_config \
++CPCI405AB_config: unconfig
++ @mkdir -p $(obj)board/esd/cpci405
++ @$(MKCONFIG) $(@:_config=) ppc ppc4xx cpci405 esd
++
++CPCIISER4_config: unconfig
++ @$(MKCONFIG) $(@:_config=) ppc ppc4xx cpciiser4 esd
++
++CRAYL1_config: unconfig
++ @$(MKCONFIG) $(@:_config=) ppc ppc4xx L1 cray
++
++csb272_config: unconfig
++ @$(MKCONFIG) $(@:_config=) ppc ppc4xx csb272
++
++csb472_config: unconfig
++ @$(MKCONFIG) $(@:_config=) ppc ppc4xx csb472
++
++DASA_SIM_config: unconfig
++ @$(MKCONFIG) $(@:_config=) ppc ppc4xx dasa_sim esd
++
++dlvision_config: unconfig
++ @$(MKCONFIG) $(@:_config=) ppc ppc4xx dlvision gdsys
++
++DP405_config: unconfig
++ @$(MKCONFIG) $(@:_config=) ppc ppc4xx dp405 esd
++
++DU405_config: unconfig
++ @$(MKCONFIG) $(@:_config=) ppc ppc4xx du405 esd
++
++DU440_config: unconfig
++ @$(MKCONFIG) $(@:_config=) ppc ppc4xx du440 esd
++
++ebony_config: unconfig
++ @$(MKCONFIG) $(@:_config=) ppc ppc4xx ebony amcc
++
++ERIC_config: unconfig
++ @$(MKCONFIG) $(@:_config=) ppc ppc4xx eric
++
++EXBITGEN_config: unconfig
++ @$(MKCONFIG) $(@:_config=) ppc ppc4xx exbitgen
++
++fx12mm_flash_config: unconfig
++ @mkdir -p $(obj)include $(obj)board/xilinx/ppc405-generic
++ @mkdir -p $(obj)include $(obj)board/avnet/fx12mm
++ @echo "LDSCRIPT:=$(SRCTREE)/board/xilinx/ppc405-generic/u-boot-rom.lds"\
++ > $(obj)board/avnet/fx12mm/config.tmp
++ @echo "TEXT_BASE := 0xFFCB0000" \
++ >> $(obj)board/avnet/fx12mm/config.tmp
++ @$(MKCONFIG) fx12mm ppc ppc4xx fx12mm avnet
++
++fx12mm_config: unconfig
++ @mkdir -p $(obj)include $(obj)board/xilinx/ppc405-generic
++ @mkdir -p $(obj)include $(obj)board/avnet/fx12mm
++ @echo "LDSCRIPT:=$(SRCTREE)/board/xilinx/ppc405-generic/u-boot-ram.lds"\
++ > $(obj)board/avnet/fx12mm/config.tmp
++ @echo "TEXT_BASE := 0x03000000" \
++ >> $(obj)board/avnet/fx12mm/config.tmp
++ @$(MKCONFIG) fx12mm ppc ppc4xx fx12mm avnet
++
++G2000_config: unconfig
++ @$(MKCONFIG) $(@:_config=) ppc ppc4xx g2000
++
++gdppc440etx_config: unconfig
++ @$(MKCONFIG) $(@:_config=) ppc ppc4xx gdppc440etx gdsys
++
++hcu4_config: unconfig
++ @mkdir -p $(obj)board/netstal/common
++ @$(MKCONFIG) $(@:_config=) ppc ppc4xx hcu4 netstal
++
++hcu5_config: unconfig
++ @mkdir -p $(obj)board/netstal/common
++ @$(MKCONFIG) $(@:_config=) ppc ppc4xx hcu5 netstal
++
++HH405_config: unconfig
++ @$(MKCONFIG) $(@:_config=) ppc ppc4xx hh405 esd
++
++HUB405_config: unconfig
++ @$(MKCONFIG) $(@:_config=) ppc ppc4xx hub405 esd
++
++# Compact-Center(codename intip) & DevCon-Center use different U-Boot images
++intip_config \
++devconcenter_config: unconfig
++ @mkdir -p $(obj)include
++ @echo "#define CONFIG_$$(echo $(subst ,,$(@:_config=)) | \
++ tr '[:lower:]' '[:upper:]')" >$(obj)include/config.h
++ @$(MKCONFIG) -n $@ -a intip ppc ppc4xx intip gdsys
++
++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
++
++neo_config: unconfig
++ @$(MKCONFIG) $(@:_config=) ppc ppc4xx neo gdsys
++
++ocotea_config: unconfig
++ @$(MKCONFIG) $(@:_config=) ppc ppc4xx ocotea amcc
++
++OCRTC_config \
++ORSG_config: unconfig
++ @$(MKCONFIG) $(@:_config=) ppc ppc4xx ocrtc esd
++
++p3p440_config: unconfig
++ @$(MKCONFIG) $(@:_config=) ppc ppc4xx p3p440 prodrive
++
++PCI405_config: unconfig
++ @$(MKCONFIG) $(@:_config=) ppc ppc4xx pci405 esd
++
++pcs440ep_config: unconfig
++ @$(MKCONFIG) $(@:_config=) ppc ppc4xx pcs440ep
++
++PIP405_config: unconfig
++ @$(MKCONFIG) $(@:_config=) ppc ppc4xx pip405 mpl
++
++PLU405_config: unconfig
++ @$(MKCONFIG) $(@:_config=) ppc ppc4xx plu405 esd
++
++PMC405_config: unconfig
++ @$(MKCONFIG) $(@:_config=) ppc ppc4xx pmc405 esd
++
++PMC405DE_config: unconfig
++ @$(MKCONFIG) $(@:_config=) ppc ppc4xx pmc405de esd
++
++PMC440_config: unconfig
++ @$(MKCONFIG) $(@:_config=) ppc ppc4xx pmc440 esd
++
++PPChameleonEVB_config \
++PPChameleonEVB_BA_25_config \
++PPChameleonEVB_ME_25_config \
++PPChameleonEVB_HI_25_config \
++PPChameleonEVB_BA_33_config \
++PPChameleonEVB_ME_33_config \
++PPChameleonEVB_HI_33_config: unconfig
++ @mkdir -p $(obj)include
++ @[ -z "$(findstring EVB_BA,$@)" ] || \
++ { echo "#define CONFIG_PPCHAMELEON_MODULE_MODEL 0" >>$(obj)include/config.h ; \
++ $(XECHO) "... BASIC model" ; \
++ }
++ @[ -z "$(findstring EVB_ME,$@)" ] || \
++ { echo "#define CONFIG_PPCHAMELEON_MODULE_MODEL 1" >>$(obj)include/config.h ; \
++ $(XECHO) "... MEDIUM model" ; \
++ }
++ @[ -z "$(findstring EVB_HI,$@)" ] || \
++ { echo "#define CONFIG_PPCHAMELEON_MODULE_MODEL 2" >>$(obj)include/config.h ; \
++ $(XECHO) "... HIGH-END model" ; \
++ }
++ @[ -z "$(findstring _25,$@)" ] || \
++ { echo "#define CONFIG_PPCHAMELEON_CLK_25" >>$(obj)include/config.h ; \
++ $(XECHO) "SysClk = 25MHz" ; \
++ }
++ @[ -z "$(findstring _33,$@)" ] || \
++ { echo "#define CONFIG_PPCHAMELEON_CLK_33" >>$(obj)include/config.h ; \
++ $(XECHO) "SysClk = 33MHz" ; \
++ }
++ @$(MKCONFIG) -a $(call xtract_4xx,$@) ppc ppc4xx PPChameleonEVB dave
++
++quad100hd_config: unconfig
++ @$(MKCONFIG) $(@:_config=) ppc ppc4xx quad100hd
++
++redwood_config: unconfig
++ @$(MKCONFIG) $(@:_config=) ppc ppc4xx redwood amcc
++
++sbc405_config: unconfig
++ @$(MKCONFIG) $(@:_config=) ppc ppc4xx sbc405
++
++sc3_config:unconfig
++ @$(MKCONFIG) $(@:_config=) ppc ppc4xx sc3
++
++sequoia_config \
++rainier_config: unconfig
++ @mkdir -p $(obj)include
++ @echo "#define CONFIG_$$(echo $(subst ,,$(@:_config=)) | \
++ tr '[:lower:]' '[:upper:]')" >$(obj)include/config.h
++ @$(MKCONFIG) -n $@ -a sequoia ppc ppc4xx sequoia amcc
++
++sequoia_nand_config \
++rainier_nand_config: unconfig
++ @mkdir -p $(obj)include $(obj)board/amcc/sequoia
++ @mkdir -p $(obj)nand_spl/board/amcc/sequoia
++ @echo "#define CONFIG_NAND_U_BOOT" > $(obj)include/config.h
++ @echo "#define CONFIG_$$(echo $(subst ,,$(@:_config=)) | \
++ tr '[:lower:]' '[:upper:]')" >> $(obj)include/config.h
++ @$(MKCONFIG) -n $@ -a sequoia ppc ppc4xx sequoia amcc
++ @echo "TEXT_BASE = 0x01000000" > $(obj)board/amcc/sequoia/config.tmp
++ @echo "CONFIG_NAND_U_BOOT = y" >> $(obj)include/config.mk
++
++sequoia_ramboot_config \
++rainier_ramboot_config: unconfig
++ @mkdir -p $(obj)include $(obj)board/amcc/sequoia
++ @echo "#define CONFIG_SYS_RAMBOOT" > $(obj)include/config.h
++ @echo "#define CONFIG_$$(echo $(subst ,,$(@:_config=)) | \
++ tr '[:lower:]' '[:upper:]')" >> $(obj)include/config.h
++ @$(MKCONFIG) -n $@ -a sequoia ppc ppc4xx sequoia amcc
++ @echo "TEXT_BASE = 0x01000000" > $(obj)board/amcc/sequoia/config.tmp
++ @echo "LDSCRIPT = board/amcc/sequoia/u-boot-ram.lds" >> \
++ $(obj)board/amcc/sequoia/config.tmp
++
++taihu_config: unconfig
++ @$(MKCONFIG) $(@:_config=) ppc ppc4xx taihu amcc
++
++taishan_config: unconfig
++ @$(MKCONFIG) $(@:_config=) ppc ppc4xx taishan amcc
++
++v5fx30teval_config: unconfig
++ @mkdir -p $(obj)include $(obj)board/xilinx/ppc440-generic
++ @mkdir -p $(obj)include $(obj)board/avnet/v5fx30teval
++ @echo "LDSCRIPT:=$(SRCTREE)/board/xilinx/ppc440-generic/u-boot-ram.lds"\
++ > $(obj)board/avnet/v5fx30teval/config.tmp
++ @echo "TEXT_BASE := 0x03000000" \
++ >> $(obj)board/avnet/v5fx30teval/config.tmp
++ @$(MKCONFIG) v5fx30teval ppc ppc4xx v5fx30teval avnet
++
++v5fx30teval_flash_config: unconfig
++ @mkdir -p $(obj)include $(obj)board/xilinx/ppc440-generic
++ @mkdir -p $(obj)include $(obj)board/avnet/v5fx30teval
++ @echo "LDSCRIPT:=$(SRCTREE)/board/xilinx/ppc440-generic/u-boot-rom.lds"\
++ > $(obj)board/avnet/v5fx30teval/config.tmp
++ @echo "TEXT_BASE := 0xFF1C0000" \
++ >> $(obj)board/avnet/v5fx30teval/config.tmp
++ @$(MKCONFIG) v5fx30teval ppc ppc4xx v5fx30teval avnet
++
++VOH405_config: unconfig
++ @$(MKCONFIG) $(@:_config=) ppc ppc4xx voh405 esd
++
++VOM405_config: unconfig
++ @$(MKCONFIG) $(@:_config=) ppc ppc4xx vom405 esd
++
++W7OLMC_config \
++W7OLMG_config: unconfig
++ @$(MKCONFIG) $(@:_config=) ppc ppc4xx w7o
++
++# Walnut & Sycamore images are identical (recognized via PVR)
++walnut_config \
++sycamore_config: unconfig
++ @$(MKCONFIG) -n $@ -a walnut ppc ppc4xx walnut amcc
++
++WUH405_config: unconfig
++ @$(MKCONFIG) $(@:_config=) ppc ppc4xx wuh405 esd
++
++xilinx-ppc405-generic_flash_config: unconfig
++ @mkdir -p $(obj)include $(obj)board/xilinx/ppc405-generic
++ @echo "LDSCRIPT:=$(SRCTREE)/board/xilinx/ppc405-generic/u-boot-rom.lds"\
++ > $(obj)board/xilinx/ppc405-generic/config.tmp
++ @echo "TEXT_BASE := 0xFE360000" \
++ >> $(obj)board/xilinx/ppc405-generic/config.tmp
++ @$(MKCONFIG) xilinx-ppc405-generic ppc ppc4xx ppc405-generic xilinx
++
++xilinx-ppc405-generic_config: unconfig
++ @mkdir -p $(obj)include $(obj)board/xilinx/ppc405-generic
++ @echo "LDSCRIPT:=$(SRCTREE)/board/xilinx/ppc405-generic/u-boot-ram.lds"\
++ > $(obj)board/xilinx/ppc405-generic/config.tmp
++ @echo "TEXT_BASE := 0x04000000" \
++ >> $(obj)board/xilinx/ppc405-generic/config.tmp
++ @$(MKCONFIG) xilinx-ppc405-generic ppc ppc4xx ppc405-generic xilinx
++
++xilinx-ppc440-generic_flash_config: unconfig
++ @mkdir -p $(obj)include $(obj)board/xilinx/ppc440-generic
++ @echo "LDSCRIPT:=$(SRCTREE)/board/xilinx/ppc440-generic/u-boot-rom.lds"\
++ > $(obj)board/xilinx/ppc440-generic/config.tmp
++ @echo "TEXT_BASE := 0xFE360000" \
++ >> $(obj)board/xilinx/ppc440-generic/config.tmp
++ @$(MKCONFIG) xilinx-ppc440-generic ppc ppc4xx ppc440-generic xilinx
++
++xilinx-ppc440-generic_config: unconfig
++ @mkdir -p $(obj)include $(obj)board/xilinx/ppc440-generic
++ @echo "LDSCRIPT:=$(SRCTREE)/board/xilinx/ppc440-generic/u-boot-ram.lds"\
++ > $(obj)board/xilinx/ppc440-generic/config.tmp
++ @echo "TEXT_BASE := 0x04000000" \
++ >> $(obj)board/xilinx/ppc440-generic/config.tmp
++ @$(MKCONFIG) xilinx-ppc440-generic ppc ppc4xx ppc440-generic xilinx
++
++XPEDITE1000_config: unconfig
++ @$(MKCONFIG) $(@:_config=) ppc ppc4xx xpedite1000 xes
++
++yosemite_config \
++yellowstone_config: unconfig
++ @mkdir -p $(obj)include
++ @echo "#define CONFIG_$$(echo $(subst ,,$(@:_config=)) | \
++ tr '[:lower:]' '[:upper:]')" >$(obj)include/config.h
++ @$(MKCONFIG) -n $@ -a yosemite ppc ppc4xx yosemite amcc
++
++yucca_config: unconfig
++ @$(MKCONFIG) $(@:_config=) ppc ppc4xx yucca amcc
++
++zeus_config: unconfig
++ @$(MKCONFIG) $(@:_config=) ppc ppc4xx zeus
++
++#########################################################################
++## MPC8220 Systems
++#########################################################################
++
++Alaska8220_config \
++Yukon8220_config: unconfig
++ @$(MKCONFIG) $(@:_config=) ppc mpc8220 alaska
++
++sorcery_config: unconfig
++ @$(MKCONFIG) $(@:_config=) ppc mpc8220 sorcery
++
++#########################################################################
++## MPC824x Systems
++#########################################################################
++xtract_82xx = $(subst _BIGFLASH,,$(subst _ROMBOOT,,$(subst _L2,,$(subst _266MHz,,$(subst _300MHz,,$(subst _config,,$1))))))
++
++A3000_config: unconfig
++ @$(MKCONFIG) $(@:_config=) ppc mpc824x a3000
++
++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 CONFIG_SYS_REV_B" > $(obj)include/config.h ; \
++ fi
++ @$(MKCONFIG) -a ISPAN ppc mpc8260 ispan
++
++mgcoge_config : unconfig
++ @$(MKCONFIG) mgcoge ppc mpc8260 mgcoge keymile
++
++MPC8260ADS_config \
++MPC8260ADS_lowboot_config \
++MPC8260ADS_33MHz_config \
++MPC8260ADS_33MHz_lowboot_config \
++MPC8260ADS_40MHz_config \
++MPC8260ADS_40MHz_lowboot_config \
++MPC8272ADS_config \
++MPC8272ADS_lowboot_config \
++PQ2FADS_config \
++PQ2FADS_lowboot_config \
++PQ2FADS-VR_config \
++PQ2FADS-VR_lowboot_config \
++PQ2FADS-ZU_config \
++PQ2FADS-ZU_lowboot_config \
++PQ2FADS-ZU_66MHz_config \
++PQ2FADS-ZU_66MHz_lowboot_config \
++ : unconfig
++ @mkdir -p $(obj)include
++ @mkdir -p $(obj)board/freescale/mpc8260ads
++ $(if $(findstring PQ2FADS,$@), \
++ @echo "#define CONFIG_ADSTYPE CONFIG_SYS_PQ2FADS" > $(obj)include/config.h, \
++ @echo "#define CONFIG_ADSTYPE CONFIG_SYS_"$(subst MPC,,$(word 1,$(subst _, ,$@))) > $(obj)include/config.h)
++ $(if $(findstring MHz,$@), \
++ @echo "#define CONFIG_8260_CLKIN" $(subst MHz,,$(word 2,$(subst _, ,$@)))"000000" >> $(obj)include/config.h, \
++ $(if $(findstring VR,$@), \
++ @echo "#define CONFIG_8260_CLKIN 66000000" >> $(obj)include/config.h))
++ @[ -z "$(findstring lowboot_,$@)" ] || \
++ { echo "TEXT_BASE = 0xFF800000" >$(obj)board/freescale/mpc8260ads/config.tmp ; \
++ $(XECHO) "... with lowboot configuration" ; \
++ }
++ @$(MKCONFIG) -a MPC8260ADS ppc mpc8260 mpc8260ads freescale
++
++MPC8266ADS_config: unconfig
++ @$(MKCONFIG) $(@:_config=) ppc mpc8260 mpc8266ads freescale
++
++muas3001_dev_config \
++muas3001_config : unconfig
++ @mkdir -p $(obj)include
++ @mkdir -p $(obj)board/muas3001
++ @if [ "$(findstring dev,$@)" ] ; then \
++ echo "#define CONFIG_MUAS_DEV_BOARD" > $(obj)include/config.h ; \
++ fi
++ @$(MKCONFIG) -a muas3001 ppc mpc8260 muas3001
++
++# PM825/PM826 default configuration: small (= 8 MB) Flash / boot from 64-bit flash
++PM825_config \
++PM825_ROMBOOT_config \
++PM825_BIGFLASH_config \
++PM825_ROMBOOT_BIGFLASH_config \
++PM826_config \
++PM826_ROMBOOT_config \
++PM826_BIGFLASH_config \
++PM826_ROMBOOT_BIGFLASH_config: unconfig
++ @mkdir -p $(obj)include
++ @mkdir -p $(obj)board/pm826
++ @if [ "$(findstring PM825_,$@)" ] ; then \
++ echo "#define CONFIG_PCI" >$(obj)include/config.h ; \
++ else \
++ >$(obj)include/config.h ; \
++ fi
++ @if [ "$(findstring _ROMBOOT_,$@)" ] ; then \
++ $(XECHO) "... booting from 8-bit flash" ; \
++ echo "#define CONFIG_BOOT_ROM" >>$(obj)include/config.h ; \
++ echo "TEXT_BASE = 0xFF800000" >$(obj)board/pm826/config.tmp ; \
++ if [ "$(findstring _BIGFLASH_,$@)" ] ; then \
++ $(XECHO) "... with 32 MB Flash" ; \
++ echo "#define CONFIG_FLASH_32MB" >>$(obj)include/config.h ; \
++ fi; \
++ else \
++ $(XECHO) "... booting from 64-bit flash" ; \
++ if [ "$(findstring _BIGFLASH_,$@)" ] ; then \
++ $(XECHO) "... with 32 MB Flash" ; \
++ echo "#define CONFIG_FLASH_32MB" >>$(obj)include/config.h ; \
++ echo "TEXT_BASE = 0x40000000" >$(obj)board/pm826/config.tmp ; \
++ else \
++ echo "TEXT_BASE = 0xFF000000" >$(obj)board/pm826/config.tmp ; \
++ fi; \
++ fi
++ @$(MKCONFIG) -a PM826 ppc mpc8260 pm826
++
++PM828_config \
++PM828_PCI_config \
++PM828_ROMBOOT_config \
++PM828_ROMBOOT_PCI_config: unconfig
++ @mkdir -p $(obj)include
++ @mkdir -p $(obj)board/pm826
++ @if [ "$(findstring _PCI_,$@)" ] ; then \
++ echo "#define CONFIG_PCI" >>$(obj)include/config.h ; \
++ $(XECHO) "... with PCI enabled" ; \
++ fi
++ @if [ "$(findstring _ROMBOOT_,$@)" ] ; then \
++ $(XECHO) "... booting from 8-bit flash" ; \
++ echo "#define CONFIG_BOOT_ROM" >>$(obj)include/config.h ; \
++ echo "TEXT_BASE = 0xFF800000" >$(obj)board/pm826/config.tmp ; \
++ fi
++ @$(MKCONFIG) -a PM828 ppc mpc8260 pm828
++
++ppmc8260_config: unconfig
++ @$(MKCONFIG) $(@:_config=) ppc mpc8260 ppmc8260
++
++Rattler8248_config \
++Rattler_config: unconfig
++ @mkdir -p $(obj)include
++ $(if $(findstring 8248,$@), \
++ @echo "#define CONFIG_MPC8248" > $(obj)include/config.h)
++ @$(MKCONFIG) -a Rattler ppc mpc8260 rattler
++
++RPXsuper_config: unconfig
++ @$(MKCONFIG) $(@:_config=) ppc mpc8260 rpxsuper
++
++rsdproto_config: unconfig
++ @$(MKCONFIG) $(@:_config=) ppc mpc8260 rsdproto
++
++sacsng_config: unconfig
++ @$(MKCONFIG) $(@:_config=) ppc mpc8260 sacsng
++
++sbc8260_config: unconfig
++ @$(MKCONFIG) $(@:_config=) ppc mpc8260 sbc8260
++
++SCM_config: unconfig
++ @$(MKCONFIG) $(@:_config=) ppc mpc8260 SCM siemens
++
++TQM8255_AA_config \
++TQM8260_AA_config \
++TQM8260_AB_config \
++TQM8260_AC_config \
++TQM8260_AD_config \
++TQM8260_AE_config \
++TQM8260_AF_config \
++TQM8260_AG_config \
++TQM8260_AH_config \
++TQM8260_AI_config \
++TQM8265_AA_config: unconfig
++ @mkdir -p $(obj)include
++ @case "$@" in \
++ TQM8255_AA_config) CTYPE=MPC8255; CFREQ=300; CACHE=no; BMODE=8260;; \
++ TQM8260_AA_config) CTYPE=MPC8260; CFREQ=200; CACHE=no; BMODE=8260;; \
++ TQM8260_AB_config) CTYPE=MPC8260; CFREQ=200; CACHE=yes; BMODE=60x;; \
++ TQM8260_AC_config) CTYPE=MPC8260; CFREQ=200; CACHE=yes; BMODE=60x;; \
++ TQM8260_AD_config) CTYPE=MPC8260; CFREQ=300; CACHE=no; BMODE=60x;; \
++ TQM8260_AE_config) CTYPE=MPC8260; CFREQ=266; CACHE=no; BMODE=8260;; \
++ TQM8260_AF_config) CTYPE=MPC8260; CFREQ=300; CACHE=no; BMODE=60x;; \
++ TQM8260_AG_config) CTYPE=MPC8260; CFREQ=300; CACHE=no; BMODE=8260;; \
++ TQM8260_AH_config) CTYPE=MPC8260; CFREQ=300; CACHE=yes; BMODE=60x;; \
++ TQM8260_AI_config) CTYPE=MPC8260; CFREQ=300; CACHE=no; BMODE=60x;; \
++ TQM8265_AA_config) CTYPE=MPC8265; CFREQ=300; CACHE=no; BMODE=60x;; \
++ esac; \
++ if [ "$${CTYPE}" != "MPC8260" ] ; then \
++ echo "#define CONFIG_$${CTYPE}" >>$(obj)include/config.h ; \
++ fi; \
++ echo "#define CONFIG_$${CFREQ}MHz" >>$(obj)include/config.h ; \
++ echo "... with $${CFREQ}MHz system clock" ; \
++ if [ "$${CACHE}" = "yes" ] ; then \
++ echo "#define CONFIG_L2_CACHE" >>$(obj)include/config.h ; \
++ $(XECHO) "... with L2 Cache support" ; \
++ else \
++ echo "#undef CONFIG_L2_CACHE" >>$(obj)include/config.h ; \
++ $(XECHO) "... without L2 Cache support" ; \
++ fi; \
++ if [ "$${BMODE}" = "60x" ] ; then \
++ echo "#define CONFIG_BUSMODE_60x" >>$(obj)include/config.h ; \
++ $(XECHO) "... with 60x Bus Mode" ; \
++ else \
++ echo "#undef CONFIG_BUSMODE_60x" >>$(obj)include/config.h ; \
++ $(XECHO) "... without 60x Bus Mode" ; \
++ fi
++ @$(MKCONFIG) -a TQM8260 ppc mpc8260 tqm8260 tqc
++
++TQM8272_config: unconfig
++ @$(MKCONFIG) TQM8272 ppc mpc8260 tqm8272 tqc
++
++VoVPN-GW_66MHz_config \
++VoVPN-GW_100MHz_config: unconfig
++ @mkdir -p $(obj)include
++ @echo "#define CONFIG_CLKIN_$(word 2,$(subst _, ,$@))" > $(obj)include/config.h
++ @$(MKCONFIG) -a VoVPN-GW ppc mpc8260 vovpn-gw funkwerk
++
++ZPC1900_config: unconfig
++ @$(MKCONFIG) $(@:_config=) ppc mpc8260 zpc1900
++
++#########################################################################
++## Coldfire
++#########################################################################
++
++M5208EVBE_config : unconfig
++ @$(MKCONFIG) $(@:_config=) m68k mcf52x2 m5208evbe freescale
++
++M52277EVB_config \
++M52277EVB_spansion_config \
++M52277EVB_stmicro_config : unconfig
++ @case "$@" in \
++ M52277EVB_config) FLASH=SPANSION;; \
++ M52277EVB_spansion_config) FLASH=SPANSION;; \
++ M52277EVB_stmicro_config) FLASH=STMICRO;; \
++ esac; \
++ if [ "$${FLASH}" = "SPANSION" ] ; then \
++ echo "#define CONFIG_SYS_SPANSION_BOOT" >> $(obj)include/config.h ; \
++ echo "TEXT_BASE = 0x00000000" > $(obj)board/freescale/m52277evb/config.tmp ; \
++ cp $(obj)board/freescale/m52277evb/u-boot.spa $(obj)board/freescale/m52277evb/u-boot.lds ; \
++ $(XECHO) "... with SPANSION boot..." ; \
++ fi; \
++ if [ "$${FLASH}" = "STMICRO" ] ; then \
++ echo "#define CONFIG_CF_SBF" >> $(obj)include/config.h ; \
++ echo "#define CONFIG_SYS_STMICRO_BOOT" >> $(obj)include/config.h ; \
++ echo "TEXT_BASE = 0x43E00000" > $(obj)board/freescale/m52277evb/config.tmp ; \
++ cp $(obj)board/freescale/m52277evb/u-boot.stm $(obj)board/freescale/m52277evb/u-boot.lds ; \
++ $(XECHO) "... with ST Micro boot..." ; \
++ fi
++ @$(MKCONFIG) -a M52277EVB m68k mcf5227x m52277evb freescale
++
++M5235EVB_config \
++M5235EVB_Flash16_config \
++M5235EVB_Flash32_config: unconfig
++ @case "$@" in \
++ M5235EVB_config) FLASH=16;; \
++ M5235EVB_Flash16_config) FLASH=16;; \
++ M5235EVB_Flash32_config) FLASH=32;; \
++ esac; \
++ if [ "$${FLASH}" != "16" ] ; then \
++ echo "#define NORFLASH_PS32BIT 1" >> $(obj)include/config.h ; \
++ echo "TEXT_BASE = 0xFFC00000" > $(obj)board/freescale/m5235evb/config.tmp ; \
++ cp $(obj)board/freescale/m5235evb/u-boot.32 $(obj)board/freescale/m5235evb/u-boot.lds ; \
++ else \
++ echo "TEXT_BASE = 0xFFE00000" > $(obj)board/freescale/m5235evb/config.tmp ; \
++ cp $(obj)board/freescale/m5235evb/u-boot.16 $(obj)board/freescale/m5235evb/u-boot.lds ; \
++ fi
++ @$(MKCONFIG) -a M5235EVB m68k mcf523x m5235evb freescale
++
++M5249EVB_config : unconfig
++ @$(MKCONFIG) $(@:_config=) m68k mcf52x2 m5249evb freescale
++
++M5253DEMO_config : unconfig
++ @$(MKCONFIG) $(@:_config=) m68k mcf52x2 m5253demo freescale
++
++M5253EVBE_config : unconfig
++ @$(MKCONFIG) $(@:_config=) m68k mcf52x2 m5253evbe freescale
++
++cobra5272_config : unconfig
++ @$(MKCONFIG) $(@:_config=) m68k mcf52x2 cobra5272
++
++EB+MCF-EV123_config : unconfig
++ @mkdir -p $(obj)include
++ @mkdir -p $(obj)board/BuS/EB+MCF-EV123
++ @echo "TEXT_BASE = 0xFFE00000"|tee $(obj)board/BuS/EB+MCF-EV123/textbase.mk
++ @$(MKCONFIG) EB+MCF-EV123 m68k mcf52x2 EB+MCF-EV123 BuS
++
++EB+MCF-EV123_internal_config : unconfig
++ @mkdir -p $(obj)include
++ @mkdir -p $(obj)board/BuS/EB+MCF-EV123
++ @echo "TEXT_BASE = 0xF0000000"|tee $(obj)board/BuS/EB+MCF-EV123/textbase.mk
++ @$(MKCONFIG) EB+MCF-EV123 m68k mcf52x2 EB+MCF-EV123 BuS
++
++idmr_config : unconfig
++ @$(MKCONFIG) $(@:_config=) m68k mcf52x2 idmr
++
++M5271EVB_config : unconfig
++ @$(MKCONFIG) $(@:_config=) m68k mcf52x2 m5271evb freescale
++
++M5272C3_config : unconfig
++ @$(MKCONFIG) $(@:_config=) m68k mcf52x2 m5272c3 freescale
++
++M5275EVB_config : unconfig
++ @$(MKCONFIG) $(@:_config=) m68k mcf52x2 m5275evb freescale
++
++M5282EVB_config : unconfig
++ @$(MKCONFIG) $(@:_config=) m68k mcf52x2 m5282evb freescale
++
++M53017EVB_config : unconfig
++ @$(MKCONFIG) $(@:_config=) m68k mcf532x m53017evb freescale
++
++M5329AFEE_config \
++M5329BFEE_config : unconfig
++ @case "$@" in \
++ M5329AFEE_config) NAND=0;; \
++ M5329BFEE_config) NAND=16;; \
++ esac; \
++ if [ "$${NAND}" != "0" ] ; then \
++ echo "#define NANDFLASH_SIZE $${NAND}" > $(obj)include/config.h ; \
++ fi
++ @$(MKCONFIG) -a M5329EVB m68k mcf532x m5329evb freescale
++
++M5373EVB_config : unconfig
++ @case "$@" in \
++ M5373EVB_config) NAND=16;; \
++ esac; \
++ if [ "$${NAND}" != "0" ] ; then \
++ echo "#define NANDFLASH_SIZE $${NAND}" > $(obj)include/config.h ; \
++ fi
++ @$(MKCONFIG) -a M5373EVB m68k mcf532x m5373evb freescale
++
++M54451EVB_config \
++M54451EVB_stmicro_config : unconfig
++ @case "$@" in \
++ M54451EVB_config) FLASH=NOR;; \
++ M54451EVB_stmicro_config) FLASH=STMICRO;; \
++ esac; \
++ if [ "$${FLASH}" = "NOR" ] ; then \
++ echo "TEXT_BASE = 0x00000000" > $(obj)board/freescale/m54451evb/config.tmp ; \
++ cp $(obj)board/freescale/m54451evb/u-boot.spa $(obj)board/freescale/m54451evb/u-boot.lds ; \
++ $(XECHO) "... with NOR boot..." ; \
++ fi; \
++ if [ "$${FLASH}" = "STMICRO" ] ; then \
++ echo "#define CONFIG_CF_SBF" >> $(obj)include/config.h ; \
++ echo "#define CONFIG_SYS_STMICRO_BOOT" >> $(obj)include/config.h ; \
++ echo "TEXT_BASE = 0x47E00000" > $(obj)board/freescale/m54451evb/config.tmp ; \
++ cp $(obj)board/freescale/m54451evb/u-boot.stm $(obj)board/freescale/m54451evb/u-boot.lds ; \
++ $(XECHO) "... with ST Micro boot..." ; \
++ fi; \
++ echo "#define CONFIG_SYS_INPUT_CLKSRC 24000000" >> $(obj)include/config.h ;
++ @$(MKCONFIG) -a M54451EVB m68k mcf5445x m54451evb freescale
++
++M54455EVB_config \
++M54455EVB_atmel_config \
++M54455EVB_intel_config \
++M54455EVB_a33_config \
++M54455EVB_a66_config \
++M54455EVB_i33_config \
++M54455EVB_i66_config \
++M54455EVB_stm33_config : unconfig
++ @case "$@" in \
++ M54455EVB_config) FLASH=ATMEL; FREQ=33333333;; \
++ M54455EVB_atmel_config) FLASH=ATMEL; FREQ=33333333;; \
++ M54455EVB_intel_config) FLASH=INTEL; FREQ=33333333;; \
++ M54455EVB_a33_config) FLASH=ATMEL; FREQ=33333333;; \
++ M54455EVB_a66_config) FLASH=ATMEL; FREQ=66666666;; \
++ M54455EVB_i33_config) FLASH=INTEL; FREQ=33333333;; \
++ M54455EVB_i66_config) FLASH=INTEL; FREQ=66666666;; \
++ M54455EVB_stm33_config) FLASH=STMICRO; FREQ=33333333;; \
++ esac; \
++ if [ "$${FLASH}" = "INTEL" ] ; then \
++ echo "#define CONFIG_SYS_INTEL_BOOT" >> $(obj)include/config.h ; \
++ echo "TEXT_BASE = 0x00000000" > $(obj)board/freescale/m54455evb/config.tmp ; \
++ cp $(obj)board/freescale/m54455evb/u-boot.int $(obj)board/freescale/m54455evb/u-boot.lds ; \
++ $(XECHO) "... with INTEL boot..." ; \
++ fi; \
++ if [ "$${FLASH}" = "ATMEL" ] ; then \
++ echo "#define CONFIG_SYS_ATMEL_BOOT" >> $(obj)include/config.h ; \
++ echo "TEXT_BASE = 0x04000000" > $(obj)board/freescale/m54455evb/config.tmp ; \
++ cp $(obj)board/freescale/m54455evb/u-boot.atm $(obj)board/freescale/m54455evb/u-boot.lds ; \
++ $(XECHO) "... with ATMEL boot..." ; \
++ fi; \
++ if [ "$${FLASH}" = "STMICRO" ] ; then \
++ echo "#define CONFIG_CF_SBF" >> $(obj)include/config.h ; \
++ echo "#define CONFIG_SYS_STMICRO_BOOT" >> $(obj)include/config.h ; \
++ echo "TEXT_BASE = 0x4FE00000" > $(obj)board/freescale/m54455evb/config.tmp ; \
++ cp $(obj)board/freescale/m54455evb/u-boot.stm $(obj)board/freescale/m54455evb/u-boot.lds ; \
++ $(XECHO) "... with ST Micro boot..." ; \
++ fi; \
++ echo "#define CONFIG_SYS_INPUT_CLKSRC $${FREQ}" >> $(obj)include/config.h ; \
++ $(XECHO) "... with $${FREQ}Hz input clock"
++ @$(MKCONFIG) -a M54455EVB m68k mcf5445x m54455evb freescale
++
++M5475AFE_config \
++M5475BFE_config \
++M5475CFE_config \
++M5475DFE_config \
++M5475EFE_config \
++M5475FFE_config \
++M5475GFE_config : unconfig
++ @case "$@" in \
++ M5475AFE_config) BOOT=2;CODE=0;VID=0;USB=0;RAM=64;RAM1=0;; \
++ M5475BFE_config) BOOT=2;CODE=16;VID=0;USB=0;RAM=64;RAM1=0;; \
++ M5475CFE_config) BOOT=2;CODE=16;VID=1;USB=1;RAM=64;RAM1=0;; \
++ M5475DFE_config) BOOT=2;CODE=0;VID=0;USB=1;RAM=64;RAM1=0;; \
++ M5475EFE_config) BOOT=2;CODE=0;VID=1;USB=1;RAM=64;RAM1=0;; \
++ M5475FFE_config) BOOT=2;CODE=32;VID=1;USB=1;RAM=64;RAM1=64;; \
++ M5475GFE_config) BOOT=4;CODE=0;VID=0;USB=0;RAM=64;RAM1=0;; \
++ esac; \
++ echo "#define CONFIG_SYS_BUSCLK 133333333" > $(obj)include/config.h ; \
++ echo "#define CONFIG_SYS_BOOTSZ $${BOOT}" >> $(obj)include/config.h ; \
++ echo "#define CONFIG_SYS_DRAMSZ $${RAM}" >> $(obj)include/config.h ; \
++ if [ "$${RAM1}" != "0" ] ; then \
++ echo "#define CONFIG_SYS_DRAMSZ1 $${RAM1}" >> $(obj)include/config.h ; \
++ fi; \
++ if [ "$${CODE}" != "0" ] ; then \
++ echo "#define CONFIG_SYS_NOR1SZ $${CODE}" >> $(obj)include/config.h ; \
++ fi; \
++ if [ "$${VID}" == "1" ] ; then \
++ echo "#define CONFIG_SYS_VIDEO" >> $(obj)include/config.h ; \
++ fi; \
++ if [ "$${USB}" == "1" ] ; then \
++ echo "#define CONFIG_SYS_USBCTRL" >> $(obj)include/config.h ; \
++ fi
++ @$(MKCONFIG) -a M5475EVB m68k mcf547x_8x m547xevb freescale
++
++M5485AFE_config \
++M5485BFE_config \
++M5485CFE_config \
++M5485DFE_config \
++M5485EFE_config \
++M5485FFE_config \
++M5485GFE_config \
++M5485HFE_config : unconfig
++ @case "$@" in \
++ M5485AFE_config) BOOT=2;CODE=0;VID=0;USB=0;RAM=64;RAM1=0;; \
++ M5485BFE_config) BOOT=2;CODE=16;VID=0;USB=0;RAM=64;RAM1=0;; \
++ M5485CFE_config) BOOT=2;CODE=16;VID=1;USB=1;RAM=64;RAM1=0;; \
++ M5485DFE_config) BOOT=2;CODE=0;VID=0;USB=1;RAM=64;RAM1=0;; \
++ M5485EFE_config) BOOT=2;CODE=0;VID=1;USB=1;RAM=64;RAM1=0;; \
++ M5485FFE_config) BOOT=2;CODE=32;VID=1;USB=1;RAM=64;RAM1=64;; \
++ M5485GFE_config) BOOT=4;CODE=0;VID=0;USB=0;RAM=64;RAM1=0;; \
++ M5485HFE_config) BOOT=2;CODE=16;VID=1;USB=0;RAM=64;RAM1=0;; \
++ esac; \
++ echo "#define CONFIG_SYS_BUSCLK 100000000" > $(obj)include/config.h ; \
++ echo "#define CONFIG_SYS_BOOTSZ $${BOOT}" >> $(obj)include/config.h ; \
++ echo "#define CONFIG_SYS_DRAMSZ $${RAM}" >> $(obj)include/config.h ; \
++ if [ "$${RAM1}" != "0" ] ; then \
++ echo "#define CONFIG_SYS_DRAMSZ1 $${RAM1}" >> $(obj)include/config.h ; \
++ fi; \
++ if [ "$${CODE}" != "0" ] ; then \
++ echo "#define CONFIG_SYS_NOR1SZ $${CODE}" >> $(obj)include/config.h ; \
++ fi; \
++ if [ "$${VID}" == "1" ] ; then \
++ echo "#define CONFIG_SYS_VIDEO" >> $(obj)include/config.h ; \
++ fi; \
++ if [ "$${USB}" == "1" ] ; then \
++ echo "#define CONFIG_SYS_USBCTRL" >> $(obj)include/config.h ; \
++ fi
++ @$(MKCONFIG) -a M5485EVB m68k mcf547x_8x m548xevb freescale
++
++TASREG_config : unconfig
++ @$(MKCONFIG) $(@:_config=) m68k mcf52x2 tasreg esd
++
++#########################################################################
++## MPC83xx Systems
++#########################################################################
++
++kmeter1_config: unconfig
++ @$(MKCONFIG) kmeter1 ppc mpc83xx kmeter1 keymile
++
++MPC8313ERDB_33_config \
++MPC8313ERDB_66_config \
++MPC8313ERDB_NAND_33_config \
++MPC8313ERDB_NAND_66_config: unconfig
++ @mkdir -p $(obj)include
++ @mkdir -p $(obj)board/freescale/mpc8313erdb
++ @if [ "$(findstring _33_,$@)" ] ; then \
++ $(XECHO) -n "...33M ..." ; \
++ echo "#define CONFIG_SYS_33MHZ" >>$(obj)include/config.h ; \
++ fi ; \
++ if [ "$(findstring _66_,$@)" ] ; then \
++ $(XECHO) -n "...66M..." ; \
++ echo "#define CONFIG_SYS_66MHZ" >>$(obj)include/config.h ; \
++ fi ; \
++ if [ "$(findstring _NAND_,$@)" ] ; then \
++ $(XECHO) -n "...NAND..." ; \
++ echo "TEXT_BASE = 0x00100000" > $(obj)board/freescale/mpc8313erdb/config.tmp ; \
++ echo "#define CONFIG_NAND_U_BOOT" >>$(obj)include/config.h ; \
++ fi ;
++ @$(MKCONFIG) -a MPC8313ERDB ppc mpc83xx mpc8313erdb freescale
++ @if [ "$(findstring _NAND_,$@)" ] ; then \
++ echo "CONFIG_NAND_U_BOOT = y" >> $(obj)include/config.mk ; \
++ fi ;
++
++MPC8315ERDB_config: unconfig
++ @$(MKCONFIG) -a MPC8315ERDB ppc mpc83xx mpc8315erdb freescale
++
++MPC8323ERDB_config: unconfig
++ @$(MKCONFIG) -a MPC8323ERDB ppc mpc83xx mpc8323erdb freescale
++
++MPC832XEMDS_config \
++MPC832XEMDS_HOST_33_config \
++MPC832XEMDS_HOST_66_config \
++MPC832XEMDS_SLAVE_config \
++MPC832XEMDS_ATM_config: unconfig
++ @mkdir -p $(obj)include
++ @if [ "$(findstring _HOST_,$@)" ] ; then \
++ $(XECHO) -n "... PCI HOST " ; \
++ echo "#define CONFIG_PCI" >>$(obj)include/config.h ; \
++ fi ; \
++ if [ "$(findstring _SLAVE_,$@)" ] ; then \
++ $(XECHO) "...PCI SLAVE 66M" ; \
++ echo "#define CONFIG_PCI" >>$(obj)include/config.h ; \
++ echo "#define CONFIG_PCISLAVE" >>$(obj)include/config.h ; \
++ fi ; \
++ if [ "$(findstring _33_,$@)" ] ; then \
++ $(XECHO) -n "...33M ..." ; \
++ echo "#define PCI_33M" >>$(obj)include/config.h ; \
++ echo "#define CONFIG_PQ_MDS_PIB 1" >>$(obj)include/config.h ; \
++ fi ; \
++ if [ "$(findstring _66_,$@)" ] ; then \
++ $(XECHO) -n "...66M..." ; \
++ echo "#define PCI_66M" >>$(obj)include/config.h ; \
++ echo "#define CONFIG_PQ_MDS_PIB 1" >>$(obj)include/config.h ; \
++ fi ; \
++ if [ "$(findstring _ATM_,$@)" ] ; then \
++ $(XECHO) -n "...ATM..." ; \
++ echo "#define CONFIG_PQ_MDS_PIB 1" >>$(obj)include/config.h ; \
++ echo "#define CONFIG_PQ_MDS_PIB_ATM 1" >>$(obj)include/config.h ; \
++ fi ;
++ @$(MKCONFIG) -a MPC832XEMDS ppc mpc83xx mpc832xemds freescale
++
++MPC8349EMDS_config: unconfig
++ @$(MKCONFIG) $(@:_config=) ppc mpc83xx mpc8349emds freescale
++
++MPC8349ITX_config \
++MPC8349ITX_LOWBOOT_config \
++MPC8349ITXGP_config: unconfig
++ @mkdir -p $(obj)include
++ @mkdir -p $(obj)board/freescale/mpc8349itx
++ @echo "#define CONFIG_$(subst _LOWBOOT,,$(@:_config=))" >> $(obj)include/config.h
++ @if [ "$(findstring GP,$@)" ] ; then \
++ echo "TEXT_BASE = 0xFE000000" >$(obj)board/freescale/mpc8349itx/config.tmp ; \
++ fi
++ @if [ "$(findstring LOWBOOT,$@)" ] ; then \
++ echo "TEXT_BASE = 0xFE000000" >$(obj)board/freescale/mpc8349itx/config.tmp ; \
++ fi
++ @$(MKCONFIG) -a -n $(@:_config=) MPC8349ITX ppc mpc83xx mpc8349itx freescale
++
++MPC8360EMDS_config \
++MPC8360EMDS_HOST_33_config \
++MPC8360EMDS_HOST_66_config \
++MPC8360EMDS_SLAVE_config \
++MPC8360EMDS_ATM_config: unconfig
++ @mkdir -p $(obj)include
++ @if [ "$(findstring _HOST_,$@)" ] ; then \
++ $(XECHO) -n "... PCI HOST " ; \
++ echo "#define CONFIG_PCI" >>$(obj)include/config.h ; \
++ fi ; \
++ if [ "$(findstring _SLAVE_,$@)" ] ; then \
++ $(XECHO) "...PCI SLAVE 66M" ; \
++ echo "#define CONFIG_PCI" >>$(obj)include/config.h ; \
++ echo "#define CONFIG_PCISLAVE" >>$(obj)include/config.h ; \
++ fi ; \
++ if [ "$(findstring _33_,$@)" ] ; then \
++ $(XECHO) -n "...33M ..." ; \
++ echo "#define PCI_33M" >>$(obj)include/config.h ; \
++ echo "#define CONFIG_PQ_MDS_PIB 1" >>$(obj)include/config.h ; \
++ fi ; \
++ if [ "$(findstring _66_,$@)" ] ; then \
++ $(XECHO) -n "...66M..." ; \
++ echo "#define PCI_66M" >>$(obj)include/config.h ; \
++ echo "#define CONFIG_PQ_MDS_PIB 1" >>$(obj)include/config.h ; \
++ fi ; \
++ if [ "$(findstring _ATM_,$@)" ] ; then \
++ $(XECHO) -n "...ATM..." ; \
++ echo "#define CONFIG_PQ_MDS_PIB 1" >>$(obj)include/config.h ; \
++ echo "#define CONFIG_PQ_MDS_PIB_ATM 1" >>$(obj)include/config.h ; \
++ fi ;
++ @$(MKCONFIG) -a MPC8360EMDS ppc mpc83xx mpc8360emds freescale
++
++MPC8360ERDK_33_config \
++MPC8360ERDK_66_config \
++MPC8360ERDK_config: unconfig
++ @mkdir -p $(obj)include
++ @if [ "$(findstring _33_,$@)" ] ; then \
++ $(XECHO) -n "... CLKIN 33MHz " ; \
++ echo "#define CONFIG_CLKIN_33MHZ" >>$(obj)include/config.h ;\
++ fi ;
++ @$(MKCONFIG) -a MPC8360ERDK ppc mpc83xx mpc8360erdk freescale
++
++MPC837XEMDS_config \
++MPC837XEMDS_HOST_config: unconfig
++ @mkdir -p $(obj)include
++ @if [ "$(findstring _HOST_,$@)" ] ; then \
++ $(XECHO) -n "... PCI HOST " ; \
++ echo "#define CONFIG_PCI" >>$(obj)include/config.h ; \
++ fi ;
++ @$(MKCONFIG) -a MPC837XEMDS ppc mpc83xx mpc837xemds freescale
++
++MPC837XERDB_config: unconfig
++ @$(MKCONFIG) -a MPC837XERDB ppc mpc83xx mpc837xerdb freescale
++
++MVBLM7_config: unconfig
++ @$(MKCONFIG) $(@:_config=) ppc mpc83xx mvblm7 matrix_vision
++
++sbc8349_config \
++sbc8349_PCI_33_config \
++sbc8349_PCI_66_config: unconfig
++ @$(MKCONFIG) -t $(@:_config=) sbc8349 ppc mpc83xx sbc8349
++
++SIMPC8313_LP_config \
++SIMPC8313_SP_config: unconfig
++ @mkdir -p $(obj)include
++ @mkdir -p $(obj)board/sheldon/simpc8313
++ @if [ "$(findstring _LP_,$@)" ] ; then \
++ $(XECHO) -n "...Large Page NAND..." ; \
++ echo "#define CONFIG_NAND_LP" >> $(obj)include/config.h ; \
++ fi ; \
++ if [ "$(findstring _SP_,$@)" ] ; then \
++ $(XECHO) -n "...Small Page NAND..." ; \
++ echo "#define CONFIG_NAND_SP" >> $(obj)include/config.h ; \
++ fi ;
++ @$(MKCONFIG) -a SIMPC8313 ppc mpc83xx simpc8313 sheldon
++ @echo "CONFIG_NAND_U_BOOT = y" >> $(obj)include/config.mk
++
++TQM834x_config: unconfig
++ @$(MKCONFIG) $(@:_config=) ppc mpc83xx tqm834x tqc
++
++vme8349_config: unconfig
++ @$(MKCONFIG) $(@:_config=) ppc mpc83xx vme8349 esd
++
++#########################################################################
++## MPC85xx Systems
++#########################################################################
++
++ATUM8548_config: unconfig
++ @$(MKCONFIG) $(@:_config=) ppc mpc85xx atum8548
++
++MPC8536DS_NAND_config \
++MPC8536DS_SDCARD_config \
++MPC8536DS_SPIFLASH_config \
++MPC8536DS_36BIT_config \
++MPC8536DS_config: unconfig
++ @$(MKCONFIG) -t $(@:_config=) MPC8536DS ppc mpc85xx mpc8536ds freescale
++
++MPC8540ADS_config: unconfig
++ @$(MKCONFIG) $(@:_config=) ppc mpc85xx mpc8540ads freescale
++
++MPC8540EVAL_config \
++MPC8540EVAL_33_config \
++MPC8540EVAL_66_config \
++MPC8540EVAL_33_slave_config \
++MPC8540EVAL_66_slave_config: unconfig
++ @mkdir -p $(obj)include
++ @if [ "$(findstring _33_,$@)" ] ; then \
++ $(XECHO) "... 33 MHz PCI" ; \
++ else \
++ echo "#define CONFIG_SYSCLK_66M" >>$(obj)include/config.h ; \
++ $(XECHO) "... 66 MHz PCI" ; \
++ fi ; \
++ if [ "$(findstring _slave_,$@)" ] ; then \
++ echo "#define CONFIG_PCI_SLAVE" >>$(obj)include/config.h ; \
++ $(XECHO) " slave" ; \
++ else \
++ $(XECHO) " host" ; \
++ fi
++ @$(MKCONFIG) -a MPC8540EVAL ppc mpc85xx mpc8540eval
++
++MPC8560ADS_config: unconfig
++ @$(MKCONFIG) $(@:_config=) ppc mpc85xx mpc8560ads freescale
++
++MPC8541CDS_legacy_config \
++MPC8541CDS_config: unconfig
++ @mkdir -p $(obj)include
++ @if [ "$(findstring _legacy_,$@)" ] ; then \
++ echo "#define CONFIG_LEGACY" >>$(obj)include/config.h ; \
++ $(XECHO) "... legacy" ; \
++ fi
++ @$(MKCONFIG) -a MPC8541CDS ppc mpc85xx mpc8541cds freescale
++
++MPC8544DS_config: unconfig
++ @$(MKCONFIG) $(@:_config=) ppc mpc85xx mpc8544ds freescale
++
++MPC8548CDS_legacy_config \
++MPC8548CDS_config: unconfig
++ @mkdir -p $(obj)include
++ @if [ "$(findstring _legacy_,$@)" ] ; then \
++ echo "#define CONFIG_LEGACY" >>$(obj)include/config.h ; \
++ $(XECHO) "... legacy" ; \
++ fi
++ @$(MKCONFIG) -a MPC8548CDS ppc mpc85xx mpc8548cds freescale
++
++MPC8555CDS_legacy_config \
++MPC8555CDS_config: unconfig
++ @mkdir -p $(obj)include
++ @if [ "$(findstring _legacy_,$@)" ] ; then \
++ echo "#define CONFIG_LEGACY" >>$(obj)include/config.h ; \
++ $(XECHO) "... legacy" ; \
++ fi
++ @$(MKCONFIG) -a MPC8555CDS ppc mpc85xx mpc8555cds freescale
++
++MPC8568MDS_config: unconfig
++ @$(MKCONFIG) $(@:_config=) ppc mpc85xx mpc8568mds freescale
++
++MPC8569MDS_config: unconfig
++ @$(MKCONFIG) $(@:_config=) ppc mpc85xx mpc8569mds freescale
++
++MPC8572DS_36BIT_config \
++MPC8572DS_config: unconfig
++ @$(MKCONFIG) -t $(@:_config=) MPC8572DS ppc mpc85xx mpc8572ds freescale
++
++P2020DS_36BIT_config \
++P2020DS_config: unconfig
++ @$(MKCONFIG) -t $(@:_config=) P2020DS ppc mpc85xx p2020ds freescale
++
++P1011RDB_config \
++P1011RDB_NAND_config \
++P1011RDB_SDCARD_config \
++P1011RDB_SPIFLASH_config \
++P1020RDB_config \
++P1020RDB_NAND_config \
++P1020RDB_SDCARD_config \
++P1020RDB_SPIFLASH_config \
++P2010RDB_config \
++P2010RDB_NAND_config \
++P2010RDB_SDCARD_config \
++P2010RDB_SPIFLASH_config \
++P2020RDB_config \
++P2020RDB_NAND_config \
++P2020RDB_SDCARD_config \
++P2020RDB_SPIFLASH_config: unconfig
++ @$(MKCONFIG) -t $(@:_config=) P1_P2_RDB ppc mpc85xx p1_p2_rdb 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
++ @$(MKCONFIG) -t $(@:_config=) SBC8540 ppc mpc85xx sbc8560
++
++sbc8548_config \
++sbc8548_PCI_33_config \
++sbc8548_PCI_66_config \
++sbc8548_PCI_33_PCIE_config \
++sbc8548_PCI_66_PCIE_config: unconfig
++ @$(MKCONFIG) -t $(@:_config=) sbc8548 ppc mpc85xx sbc8548
++
++sbc8560_config \
++sbc8560_33_config \
++sbc8560_66_config: unconfig
++ @$(MKCONFIG) -t $(@:_config=) sbc8560 ppc mpc85xx sbc8560
++
++socrates_config: unconfig
++ @$(MKCONFIG) $(@:_config=) ppc mpc85xx socrates
++
++stxgp3_config: unconfig
++ @$(MKCONFIG) $(@:_config=) ppc mpc85xx stxgp3 stx
++
++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 stx
++
++TQM8540_config \
++TQM8541_config \
++TQM8548_config \
++TQM8548_AG_config \
++TQM8548_BE_config \
++TQM8555_config \
++TQM8560_config: unconfig
++ @mkdir -p $(obj)include
++ @BTYPE=$(@:_config=); \
++ CTYPE=$(subst TQM,,$(subst _AG,,$(subst _BE,,$(@:_config=)))); \
++ $(XECHO) "... "$${BTYPE}" (MPC"$${CTYPE}")"; \
++ echo "#define CONFIG_MPC$${CTYPE}">>$(obj)include/config.h; \
++ echo "#define CONFIG_$${BTYPE}">>$(obj)include/config.h; \
++ echo "#define CONFIG_HOSTNAME tqm$${CTYPE}">>$(obj)include/config.h; \
++ echo "#define CONFIG_BOARDNAME \"$${BTYPE}\"">>$(obj)include/config.h;
++ @$(MKCONFIG) -a TQM85xx ppc mpc85xx tqm85xx tqc
++ @echo "CONFIG_$(@:_config=) = y">>$(obj)include/config.mk;
++
++XPEDITE5200_config: unconfig
++ @$(MKCONFIG) $(@:_config=) ppc mpc85xx xpedite5200 xes
++
++XPEDITE5370_config: unconfig
++ @$(MKCONFIG) $(@:_config=) ppc mpc85xx xpedite5370 xes
++
++#########################################################################
++## MPC86xx Systems
++#########################################################################
++
++MPC8610HPCD_config: unconfig
++ @$(MKCONFIG) $(@:_config=) ppc mpc86xx mpc8610hpcd freescale
++
++MPC8641HPCN_36BIT_config \
++MPC8641HPCN_config: unconfig
++ @mkdir -p $(obj)include
++ @if [ "$(findstring _36BIT_,$@)" ] ; then \
++ echo "#define CONFIG_PHYS_64BIT" >>$(obj)include/config.h ; \
++ $(XECHO) "... enabling 36-bit physical addressing." ; \
++ fi
++ @$(MKCONFIG) -a MPC8641HPCN ppc mpc86xx mpc8641hpcn freescale
++
++sbc8641d_config: unconfig
++ @$(MKCONFIG) $(@:_config=) ppc mpc86xx sbc8641d
++
++XPEDITE5170_config: unconfig
++ @$(MKCONFIG) $(@:_config=) ppc mpc86xx xpedite5170 xes
++
++#########################################################################
++## 74xx/7xx Systems
++#########################################################################
++
++AmigaOneG3SE_config: unconfig
++ @$(MKCONFIG) $(@:_config=) ppc 74xx_7xx AmigaOneG3SE MAI
++
++BAB7xx_config: unconfig
++ @$(MKCONFIG) $(@:_config=) ppc 74xx_7xx bab7xx eltec
++
++CPCI750_config: unconfig
++ @$(MKCONFIG) CPCI750 ppc 74xx_7xx cpci750 esd
++
++DB64360_config: unconfig
++ @$(MKCONFIG) DB64360 ppc 74xx_7xx db64360 Marvell
++
++DB64460_config: unconfig
++ @$(MKCONFIG) DB64460 ppc 74xx_7xx db64460 Marvell
++
++ELPPC_config: unconfig
++ @$(MKCONFIG) $(@:_config=) ppc 74xx_7xx elppc eltec
++
++EVB64260_config \
++EVB64260_750CX_config: unconfig
++ @$(MKCONFIG) EVB64260 ppc 74xx_7xx evb64260
++
++mpc7448hpc2_config: unconfig
++ @$(MKCONFIG) $(@:_config=) ppc 74xx_7xx mpc7448hpc2 freescale
++
++P3G4_config: unconfig
++ @$(MKCONFIG) $(@:_config=) ppc 74xx_7xx evb64260
++
++p3m750_config \
++p3m7448_config: unconfig
++ @mkdir -p $(obj)include
++ @if [ "$(findstring 750_,$@)" ] ; then \
++ echo "#define CONFIG_P3M750" >>$(obj)include/config.h ; \
++ else \
++ echo "#define CONFIG_P3M7448" >>$(obj)include/config.h ; \
++ fi
++ @$(MKCONFIG) -a p3mx ppc 74xx_7xx p3mx prodrive
++
++PCIPPC2_config \
++PCIPPC6_config: unconfig
++ @$(MKCONFIG) $(@:_config=) ppc 74xx_7xx pcippc2
++
++ppmc7xx_config: unconfig
++ @$(MKCONFIG) $(@:_config=) ppc 74xx_7xx ppmc7xx
++
++ZUMA_config: unconfig
++ @$(MKCONFIG) $(@:_config=) ppc 74xx_7xx evb64260
++
++#========================================================================
++# ARM
++#========================================================================
++#########################################################################
++## StrongARM Systems
++#########################################################################
++
++assabet_config : unconfig
++ @$(MKCONFIG) $(@:_config=) arm sa1100 assabet
++
++dnp1110_config : unconfig
++ @$(MKCONFIG) $(@:_config=) arm sa1100 dnp1110
++
++gcplus_config : unconfig
++ @$(MKCONFIG) $(@:_config=) arm sa1100 gcplus
++
++lart_config : unconfig
++ @$(MKCONFIG) $(@:_config=) arm sa1100 lart
++
++shannon_config : unconfig
++ @$(MKCONFIG) $(@:_config=) arm sa1100 shannon
++
++#########################################################################
++## ARM92xT Systems
++#########################################################################
++
++#########################################################################
++## Atmel AT91RM9200 Systems
++#########################################################################
++
++at91rm9200dk_config : unconfig
++ @$(MKCONFIG) $(@:_config=) arm arm920t at91rm9200dk atmel at91rm9200
++
++at91rm9200ek_config : unconfig
++ @$(MKCONFIG) $(@:_config=) arm arm920t at91rm9200ek atmel at91rm9200
++
++cmc_pu2_config : unconfig
++ @$(MKCONFIG) $(@:_config=) arm arm920t cmc_pu2 NULL at91rm9200
++
++CPUAT91_RAM_config \
++CPUAT91_config : unconfig
++ @mkdir -p $(obj)include
++ @echo "#define CONFIG_$(@:_config=) 1" >$(obj)include/config.h
++ @$(MKCONFIG) -a cpuat91 arm arm920t cpuat91 eukrea at91rm9200
++
++csb637_config : unconfig
++ @$(MKCONFIG) $(@:_config=) arm arm920t csb637 NULL at91rm9200
++
++kb9202_config : unconfig
++ @$(MKCONFIG) $(@:_config=) arm arm920t kb9202 NULL at91rm9200
++
++m501sk_config : unconfig
++ @$(MKCONFIG) $(@:_config=) arm arm920t m501sk NULL at91rm9200
++
++mp2usb_config : unconfig
++ @$(MKCONFIG) $(@:_config=) arm arm920t mp2usb NULL at91rm9200
++
++#########################################################################
++## Atmel ARM926EJ-S Systems
++#########################################################################
++
++afeb9260_config: unconfig
++ @$(MKCONFIG) $(@:_config=) arm arm926ejs afeb9260 NULL at91
++
++at91cap9adk_config : unconfig
++ @$(MKCONFIG) $(@:_config=) arm arm926ejs at91cap9adk atmel at91
++
++at91sam9260ek_nandflash_config \
++at91sam9260ek_dataflash_cs0_config \
++at91sam9260ek_dataflash_cs1_config \
++at91sam9260ek_config \
++at91sam9g20ek_nandflash_config \
++at91sam9g20ek_dataflash_cs0_config \
++at91sam9g20ek_dataflash_cs1_config \
++at91sam9g20ek_config : unconfig
++ @mkdir -p $(obj)include
++ @if [ "$(findstring 9g20,$@)" ] ; then \
++ echo "#define CONFIG_AT91SAM9G20EK 1" >>$(obj)include/config.h ; \
++ $(XECHO) "... 9G20 Variant" ; \
++ else \
++ echo "#define CONFIG_AT91SAM9260EK 1" >>$(obj)include/config.h ; \
++ fi;
++ @if [ "$(findstring _nandflash,$@)" ] ; then \
++ echo "#define CONFIG_SYS_USE_NANDFLASH 1" >>$(obj)include/config.h ; \
++ $(XECHO) "... with environment variable in NAND FLASH" ; \
++ elif [ "$(findstring dataflash_cs0,$@)" ] ; then \
++ echo "#define CONFIG_SYS_USE_DATAFLASH_CS0 1" >>$(obj)include/config.h ; \
++ $(XECHO) "... with environment variable in SPI DATAFLASH CS0" ; \
++ else \
++ echo "#define CONFIG_SYS_USE_DATAFLASH_CS1 1" >>$(obj)include/config.h ; \
++ $(XECHO) "... with environment variable in SPI DATAFLASH CS1" ; \
++ fi;
++ @$(MKCONFIG) -a at91sam9260ek arm arm926ejs at91sam9260ek atmel at91
++
++at91sam9xeek_nandflash_config \
++at91sam9xeek_dataflash_cs0_config \
++at91sam9xeek_dataflash_cs1_config \
++at91sam9xeek_config : unconfig
++ @mkdir -p $(obj)include
++ @if [ "$(findstring _nandflash,$@)" ] ; then \
++ echo "#define CONFIG_SYS_USE_NANDFLASH 1" >>$(obj)include/config.h ; \
++ $(XECHO) "... with environment variable in NAND FLASH" ; \
++ elif [ "$(findstring dataflash_cs0,$@)" ] ; then \
++ echo "#define CONFIG_SYS_USE_DATAFLASH_CS0 1" >>$(obj)include/config.h ; \
++ $(XECHO) "... with environment variable in SPI DATAFLASH CS0" ; \
++ else \
++ echo "#define CONFIG_SYS_USE_DATAFLASH_CS1 1" >>$(obj)include/config.h ; \
++ $(XECHO) "... with environment variable in SPI DATAFLASH CS1" ; \
++ fi;
++ @$(MKCONFIG) -n at91sam9xeek -a at91sam9260ek arm arm926ejs at91sam9260ek atmel at91
++
++at91sam9261ek_nandflash_config \
++at91sam9261ek_dataflash_cs0_config \
++at91sam9261ek_dataflash_cs3_config \
++at91sam9261ek_config \
++at91sam9g10ek_nandflash_config \
++at91sam9g10ek_dataflash_cs0_config \
++at91sam9g10ek_dataflash_cs3_config \
++at91sam9g10ek_config : unconfig
++ @mkdir -p $(obj)include
++ @if [ "$(findstring 9g10,$@)" ] ; then \
++ echo "#define CONFIG_AT91SAM9G10EK 1" >>$(obj)include/config.h ; \
++ $(XECHO) "... 9G10 Variant" ; \
++ else \
++ echo "#define CONFIG_AT91SAM9261EK 1" >>$(obj)include/config.h ; \
++ fi;
++ @if [ "$(findstring _nandflash,$@)" ] ; then \
++ echo "#define CONFIG_SYS_USE_NANDFLASH 1" >>$(obj)include/config.h ; \
++ $(XECHO) "... with environment variable in NAND FLASH" ; \
++ elif [ "$(findstring dataflash_cs0,$@)" ] ; then \
++ echo "#define CONFIG_SYS_USE_DATAFLASH_CS3 1" >>$(obj)include/config.h ; \
++ $(XECHO) "... with environment variable in SPI DATAFLASH CS3" ; \
++ else \
++ echo "#define CONFIG_SYS_USE_DATAFLASH_CS0 1" >>$(obj)include/config.h ; \
++ $(XECHO) "... with environment variable in SPI DATAFLASH CS0" ; \
++ fi;
++ @$(MKCONFIG) -a at91sam9261ek arm arm926ejs at91sam9261ek atmel at91
++
++at91sam9263ek_norflash_config \
++at91sam9263ek_norflash_boot_config \
++at91sam9263ek_nandflash_config \
++at91sam9263ek_dataflash_config \
++at91sam9263ek_dataflash_cs0_config \
++at91sam9263ek_config : unconfig
++ @mkdir -p $(obj)include
++ @if [ "$(findstring _nandflash,$@)" ] ; then \
++ echo "#define CONFIG_SYS_USE_NANDFLASH 1" >>$(obj)include/config.h ; \
++ $(XECHO) "... with environment variable in NAND FLASH" ; \
++ elif [ "$(findstring norflash,$@)" ] ; then \
++ echo "#define CONFIG_SYS_USE_NORFLASH 1" >>$(obj)include/config.h ; \
++ $(XECHO) "... with environment variable in NOR FLASH" ; \
++ else \
++ echo "#define CONFIG_SYS_USE_DATAFLASH 1" >>$(obj)include/config.h ; \
++ $(XECHO) "... with environment variable in SPI DATAFLASH CS0" ; \
++ fi;
++ @if [ "$(findstring norflash_boot,$@)" ] ; then \
++ echo "#define CONFIG_SYS_USE_BOOT_NORFLASH 1" >>$(obj)include/config.h ; \
++ $(XECHO) "... and boot from NOR FLASH" ; \
++ fi;
++ @$(MKCONFIG) -a at91sam9263ek arm arm926ejs at91sam9263ek atmel at91
++
++at91sam9rlek_nandflash_config \
++at91sam9rlek_dataflash_config \
++at91sam9rlek_dataflash_cs0_config \
++at91sam9rlek_config : unconfig
++ @mkdir -p $(obj)include
++ @if [ "$(findstring _nandflash,$@)" ] ; then \
++ echo "#define CONFIG_SYS_USE_NANDFLASH 1" >>$(obj)include/config.h ; \
++ $(XECHO) "... with environment variable in NAND FLASH" ; \
++ else \
++ echo "#define CONFIG_SYS_USE_DATAFLASH 1" >>$(obj)include/config.h ; \
++ $(XECHO) "... with environment variable in SPI DATAFLASH CS0" ; \
++ fi;
++ @$(MKCONFIG) -a at91sam9rlek arm arm926ejs at91sam9rlek atmel at91
++
++CPU9G20_128M_config \
++CPU9G20_config \
++CPU9260_128M_config \
++CPU9260_config : unconfig
++ @mkdir -p $(obj)include
++ @echo "#define CONFIG_$(@:_config=) 1" >$(obj)include/config.h
++ @$(MKCONFIG) -a cpu9260 arm arm926ejs cpu9260 eukrea at91
++
++meesc_config : unconfig
++ @$(MKCONFIG) $(@:_config=) arm arm926ejs meesc esd at91
++
++pm9261_config : unconfig
++ @$(MKCONFIG) $(@:_config=) arm arm926ejs pm9261 ronetix at91
++
++at91sam9m10g45ek_nandflash_config \
++at91sam9m10g45ek_dataflash_config \
++at91sam9m10g45ek_dataflash_cs0_config \
++at91sam9m10g45ek_config \
++at91sam9g45ekes_nandflash_config \
++at91sam9g45ekes_dataflash_config \
++at91sam9g45ekes_dataflash_cs0_config \
++at91sam9g45ekes_config : unconfig
++ @mkdir -p $(obj)include
++ @if [ "$(findstring 9m10,$@)" ] ; then \
++ echo "#define CONFIG_AT91SAM9M10G45EK 1" >>$(obj)include/config.h ; \
++ $(XECHO) "... 9M10G45 Variant" ; \
++ else \
++ echo "#define CONFIG_AT91SAM9G45EKES 1" >>$(obj)include/config.h ; \
++ fi;
++
++ @if [ "$(findstring _nandflash,$@)" ] ; then \
++ echo "#define CONFIG_SYS_USE_NANDFLASH 1" >>$(obj)include/config.h ; \
++ $(XECHO) "... with environment variable in NAND FLASH" ; \
++ else \
++ echo "#define CONFIG_ATMEL_SPI 1" >>$(obj)include/config.h ; \
++ $(XECHO) "... with environment variable in SPI DATAFLASH CS0" ; \
++ fi;
++ @$(MKCONFIG) -a at91sam9m10g45ek arm arm926ejs at91sam9m10g45ek atmel at91
++
++pm9263_config : unconfig
++ @$(MKCONFIG) $(@:_config=) arm arm926ejs pm9263 ronetix at91
++
++SBC35_A9G20_NANDFLASH_config \
++SBC35_A9G20_EEPROM_config \
++SBC35_A9G20_config : unconfig
++ @mkdir -p $(obj)include
++ @echo "#define CONFIG_$(@:_config=) 1" >$(obj)include/config.h
++ @$(MKCONFIG) -a sbc35_a9g20 arm arm926ejs sbc35_a9g20 calao at91
++
++TNY_A9G20_NANDFLASH_config \
++TNY_A9G20_EEPROM_config \
++TNY_A9G20_config \
++TNY_A9260_NANDFLASH_config \
++TNY_A9260_EEPROM_config \
++TNY_A9260_config : unconfig
++ @mkdir -p $(obj)include
++ @echo "#define CONFIG_$(@:_config=) 1" >$(obj)include/config.h
++ @$(MKCONFIG) -a tny_a9260 arm arm926ejs tny_a9260 calao at91
++
++########################################################################
++## ARM Integrator boards - see doc/README-integrator for more info.
++integratorap_config \
++ap_config \
++ap966_config \
++ap922_config \
++ap922_XA10_config \
++ap7_config \
++ap720t_config \
++ap920t_config \
++ap926ejs_config \
++ap946es_config: unconfig
++ @board/armltd/integrator/split_by_variant.sh ap $@
++
++integratorcp_config \
++cp_config \
++cp920t_config \
++cp926ejs_config \
++cp946es_config \
++cp1136_config \
++cp966_config \
++cp922_config \
++cp922_XA10_config \
++cp1026_config: unconfig
++ @board/armltd/integrator/split_by_variant.sh cp $@
++
++davinci_dvevm_config : unconfig
++ @$(MKCONFIG) $(@:_config=) arm arm926ejs dvevm davinci davinci
++
++davinci_schmoogie_config : unconfig
++ @$(MKCONFIG) $(@:_config=) arm arm926ejs schmoogie davinci davinci
++
++davinci_sffsdr_config : unconfig
++ @$(MKCONFIG) $(@:_config=) arm arm926ejs sffsdr davinci davinci
++
++davinci_sonata_config : unconfig
++ @$(MKCONFIG) $(@:_config=) arm arm926ejs sonata davinci davinci
++
++davinci_dm355evm_config : unconfig
++ @$(MKCONFIG) $(@:_config=) arm arm926ejs dm355evm davinci davinci
++
++davinci_dm355leopard_config : unconfig
++ @$(MKCONFIG) $(@:_config=) arm arm926ejs dm355leopard davinci davinci
++
++davinci_dm365evm_config : unconfig
++ @$(MKCONFIG) $(@:_config=) arm arm926ejs dm365evm davinci davinci
++
++davinci_dm6467evm_config : unconfig
++ @$(MKCONFIG) $(@:_config=) arm arm926ejs dm6467evm davinci davinci
++
++imx27lite_config: unconfig
++ @$(MKCONFIG) $(@:_config=) arm arm926ejs imx27lite logicpd mx27
++
++lpd7a400_config \
++lpd7a404_config: unconfig
++ @$(MKCONFIG) $(@:_config=) arm lh7a40x lpd7a40x
++
++mv88f6281gtw_ge_config: unconfig
++ @$(MKCONFIG) $(@:_config=) arm arm926ejs $(@:_config=) Marvell kirkwood
++
++mx1ads_config : unconfig
++ @$(MKCONFIG) $(@:_config=) arm arm920t mx1ads NULL imx
++
++mx1fs2_config : unconfig
++ @$(MKCONFIG) $(@:_config=) arm arm920t mx1fs2 NULL imx
++
++netstar_config: unconfig
++ @$(MKCONFIG) $(@:_config=) arm arm925t netstar
++
++nhk8815_config \
++nhk8815_onenand_config: unconfig
++ @mkdir -p $(obj)include
++ @ > $(obj)include/config.h
++ @if [ "$(findstring _onenand, $@)" ] ; then \
++ echo "#define CONFIG_BOOT_ONENAND" >> $(obj)include/config.h; \
++ $(XECHO) "... configured to boot from OneNand Flash"; \
++ else \
++ $(XECHO) "... configured to boot from Nand Flash"; \
++ fi
++ @$(MKCONFIG) -a nhk8815 arm arm926ejs nhk8815 st nomadik
++
++omap1510inn_config : unconfig
++ @$(MKCONFIG) $(@:_config=) arm arm925t omap1510inn ti
++
++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 ti omap
++
++omap5912osk_config : unconfig
++ @$(MKCONFIG) $(@:_config=) arm arm926ejs omap5912osk ti omap
++
++openrd_base_config: unconfig
++ @$(MKCONFIG) $(@:_config=) arm arm926ejs $(@:_config=) Marvell kirkwood
++
++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 ti omap
++
++rd6281a_config: unconfig
++ @$(MKCONFIG) $(@:_config=) arm arm926ejs $(@:_config=) Marvell kirkwood
++
++sbc2410x_config: unconfig
++ @$(MKCONFIG) $(@:_config=) arm arm920t sbc2410x NULL s3c24x0
++
++scb9328_config : unconfig
++ @$(MKCONFIG) $(@:_config=) arm arm920t scb9328 NULL imx
++
++sheevaplug_config: unconfig
++ @$(MKCONFIG) $(@:_config=) arm arm926ejs $(@:_config=) Marvell kirkwood
++
++smdk2400_config : unconfig
++ @$(MKCONFIG) $(@:_config=) arm arm920t smdk2400 samsung s3c24x0
++
++smdk2410_config : unconfig
++ @$(MKCONFIG) $(@:_config=) arm arm920t smdk2410 samsung s3c24x0
++
++SX1_stdout_serial_config \
++SX1_config: unconfig
++ @mkdir -p $(obj)include
++ @if [ "$(findstring _stdout_serial_, $@)" ] ; then \
++ echo "#undef CONFIG_STDOUT_USBTTY" >> $(obj)include/config.h ; \
++ $(XECHO) "... configured for stdout serial"; \
++ else \
++ echo "#define CONFIG_STDOUT_USBTTY" >> $(obj)include/config.h ; \
++ $(XECHO) "... configured for stdout usbtty"; \
++ fi;
++ @$(MKCONFIG) SX1 arm arm925t sx1
++
++# TRAB default configuration: 8 MB Flash, 32 MB RAM
++xtract_trab = $(subst _bigram,,$(subst _bigflash,,$(subst _old,,$(subst _config,,$1))))
++
++trab_config \
++trab_bigram_config \
++trab_bigflash_config \
++trab_old_config: unconfig
++ @mkdir -p $(obj)include
++ @mkdir -p $(obj)board/trab
++ @[ -z "$(findstring _bigram,$@)" ] || \
++ { echo "#define CONFIG_FLASH_8MB" >>$(obj)include/config.h ; \
++ echo "#define CONFIG_RAM_32MB" >>$(obj)include/config.h ; \
++ $(XECHO) "... with 8 MB Flash, 32 MB RAM" ; \
++ }
++ @[ -z "$(findstring _bigflash,$@)" ] || \
++ { echo "#define CONFIG_FLASH_16MB" >>$(obj)include/config.h ; \
++ echo "#define CONFIG_RAM_16MB" >>$(obj)include/config.h ; \
++ $(XECHO) "... with 16 MB Flash, 16 MB RAM" ; \
++ echo "TEXT_BASE = 0x0CF40000" >$(obj)board/trab/config.tmp ; \
++ }
++ @[ -z "$(findstring _old,$@)" ] || \
++ { echo "#define CONFIG_FLASH_8MB" >>$(obj)include/config.h ; \
++ echo "#define CONFIG_RAM_16MB" >>$(obj)include/config.h ; \
++ $(XECHO) "... with 8 MB Flash, 16 MB RAM" ; \
++ echo "TEXT_BASE = 0x0CF40000" >$(obj)board/trab/config.tmp ; \
++ }
++ @$(MKCONFIG) -a $(call xtract_trab,$@) arm arm920t trab NULL s3c24x0
++
++VCMA9_config : unconfig
++ @$(MKCONFIG) $(@:_config=) arm arm920t vcma9 mpl s3c24x0
++
++#########################################################################
++# ARM supplied Versatile development boards
++#########################################################################
++
++cm4008_config : unconfig
++ @$(MKCONFIG) $(@:_config=) arm arm920t cm4008 NULL ks8695
++
++cm41xx_config : unconfig
++ @$(MKCONFIG) $(@:_config=) arm arm920t cm41xx NULL ks8695
++
++versatile_config \
++versatileab_config \
++versatilepb_config : unconfig
++ @board/armltd/versatile/split_by_variant.sh $@
++
++voiceblue_config: unconfig
++ @$(MKCONFIG) $(@:_config=) arm arm925t voiceblue
++
++#########################################################################
++## S3C44B0 Systems
++#########################################################################
++
++B2_config : unconfig
++ @$(MKCONFIG) $(@:_config=) arm s3c44b0 B2 dave
++
++#########################################################################
++## ARM720T Systems
++#########################################################################
++
++armadillo_config: unconfig
++ @$(MKCONFIG) $(@:_config=) arm arm720t armadillo
++
++ep7312_config : unconfig
++ @$(MKCONFIG) $(@:_config=) arm arm720t ep7312
++
++impa7_config : unconfig
++ @$(MKCONFIG) $(@:_config=) arm arm720t impa7
++
++modnet50_config : unconfig
++ @$(MKCONFIG) $(@:_config=) arm arm720t modnet50
++
++evb4510_config : unconfig
++ @$(MKCONFIG) $(@:_config=) arm arm720t evb4510 NULL s3c4510b
++
++lpc2292sodimm_config: unconfig
++ @$(MKCONFIG) $(@:_config=) arm arm720t lpc2292sodimm NULL lpc2292
++
++SMN42_config : unconfig
++ @$(MKCONFIG) $(@:_config=) arm arm720t SMN42 siemens lpc2292
++
++#########################################################################
++## ARM CORTEX Systems
++#########################################################################
++
++devkit8000_config : unconfig
++ @$(MKCONFIG) $(@:_config=) arm arm_cortexa8 devkit8000 timll omap3
++
++omap3_beagle_config : unconfig
++ @$(MKCONFIG) $(@:_config=) arm arm_cortexa8 beagle ti omap3
++
++omap3_overo_config : unconfig
++ @$(MKCONFIG) $(@:_config=) arm arm_cortexa8 overo NULL omap3
++
++omap3_evm_config : unconfig
++ @$(MKCONFIG) $(@:_config=) arm arm_cortexa8 evm ti omap3
++
++omap3_pandora_config : unconfig
++ @$(MKCONFIG) $(@:_config=) arm arm_cortexa8 pandora NULL omap3
++
++omap3_sdp3430_config : unconfig
++ @$(MKCONFIG) $(@:_config=) arm arm_cortexa8 sdp3430 ti omap3
++
++omap3_zoom1_config : unconfig
++ @$(MKCONFIG) $(@:_config=) arm arm_cortexa8 zoom1 logicpd omap3
++
++omap3_zoom2_config : unconfig
++ @$(MKCONFIG) $(@:_config=) arm arm_cortexa8 zoom2 logicpd omap3
++
++smdkc100_config: unconfig
++ @$(MKCONFIG) $(@:_config=) arm arm_cortexa8 smdkc100 samsung s5pc1xx
++
++#########################################################################
++## XScale Systems
++#########################################################################
++
++actux1_config : unconfig
++ @$(MKCONFIG) $(@:_config=) arm ixp actux1
++
++actux2_config : unconfig
++ @$(MKCONFIG) $(@:_config=) arm ixp actux2
++
++actux3_config : unconfig
++ @$(MKCONFIG) $(@:_config=) arm ixp actux3
++
++actux4_config : unconfig
++ @$(MKCONFIG) $(@:_config=) arm ixp actux4
++
++cerf250_config : unconfig
++ @$(MKCONFIG) $(@:_config=) arm pxa cerf250
++
++cradle_config : unconfig
++ @$(MKCONFIG) $(@:_config=) arm pxa cradle
++
++csb226_config : unconfig
++ @$(MKCONFIG) $(@:_config=) arm pxa csb226
++
++delta_config : unconfig
++ @$(MKCONFIG) $(@:_config=) arm pxa delta
++
++innokom_config : unconfig
++ @$(MKCONFIG) $(@:_config=) arm pxa innokom
++
++ixdp425_config : unconfig
++ @$(MKCONFIG) $(@:_config=) arm ixp ixdp425
++
++ixdpg425_config : unconfig
++ @$(MKCONFIG) $(@:_config=) arm ixp ixdp425
++
++lubbock_config : unconfig
++ @$(MKCONFIG) $(@:_config=) arm pxa lubbock
++
++pleb2_config : unconfig
++ @$(MKCONFIG) $(@:_config=) arm pxa pleb2
++
++logodl_config : unconfig
++ @$(MKCONFIG) $(@:_config=) arm pxa logodl
++
++pdnb3_config \
++scpu_config: unconfig
++ @mkdir -p $(obj)include
++ @if [ "$(findstring scpu_,$@)" ] ; then \
++ echo "#define CONFIG_SCPU" >>$(obj)include/config.h ; \
++ $(XECHO) "... on SCPU board variant" ; \
++ fi
++ @$(MKCONFIG) -a pdnb3 arm ixp pdnb3 prodrive
++
++pxa255_idp_config: unconfig
++ @$(MKCONFIG) $(@:_config=) arm pxa pxa255_idp
++
++polaris_config \
++trizepsiv_config : unconfig
++ @mkdir -p $(obj)include
++ @if [ "$(findstring polaris,$@)" ] ; then \
++ echo "#define CONFIG_POLARIS 1" >>$(obj)include/config.h ; \
++ fi;
++ @$(MKCONFIG) -a trizepsiv arm pxa trizepsiv
++
++wepep250_config : unconfig
++ @$(MKCONFIG) $(@:_config=) arm pxa wepep250
++
++xaeniax_config : unconfig
++ @$(MKCONFIG) $(@:_config=) arm pxa xaeniax
++
++xm250_config : unconfig
++ @$(MKCONFIG) $(@:_config=) arm pxa xm250
++
++xsengine_config : unconfig
++ @$(MKCONFIG) $(@:_config=) arm pxa xsengine
++
++zylonite_config :
++ @$(MKCONFIG) $(@:_config=) arm pxa zylonite
++
++#########################################################################
++## ARM1136 Systems
++#########################################################################
++
++apollon_config : unconfig
++ @mkdir -p $(obj)include
++ @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 logicpd mx31
++
++imx31_phycore_eet_config \
++imx31_phycore_config : unconfig
++ @mkdir -p $(obj)include
++ @if [ -n "$(findstring _eet_,$@)" ]; then \
++ echo "#define CONFIG_IMX31_PHYCORE_EET" >> $(obj)include/config.h; \
++ fi
++ @$(MKCONFIG) -a imx31_phycore arm arm1136 imx31_phycore NULL mx31
++
++mx31ads_config : unconfig
++ @$(MKCONFIG) $(@:_config=) arm arm1136 mx31ads freescale mx31
++
++mx31pdk_config \
++mx31pdk_nand_config : unconfig
++ @mkdir -p $(obj)include
++ @if [ -n "$(findstring _nand_,$@)" ]; then \
++ echo "#define CONFIG_NAND_U_BOOT" >> $(obj)include/config.h; \
++ else \
++ echo "#define CONFIG_SKIP_LOWLEVEL_INIT" >> $(obj)include/config.h; \
++ echo "#define CONFIG_SKIP_RELOCATE_UBOOT" >> $(obj)include/config.h; \
++ fi
++ @$(MKCONFIG) -a mx31pdk arm arm1136 mx31pdk freescale mx31
++
++omap2420h4_config : unconfig
++ @$(MKCONFIG) $(@:_config=) arm arm1136 omap2420h4 ti omap24xx
++
++qong_config : unconfig
++ @$(MKCONFIG) $(@:_config=) arm arm1136 qong davedenx mx31
++
++#########################################################################
++## ARM1176 Systems
++#########################################################################
++smdk6400_noUSB_config \
++smdk6400_config : unconfig
++ @mkdir -p $(obj)include $(obj)board/samsung/smdk6400
++ @mkdir -p $(obj)nand_spl/board/samsung/smdk6400
++ @echo "#define CONFIG_NAND_U_BOOT" > $(obj)include/config.h
++ @if [ -z "$(findstring smdk6400_noUSB_config,$@)" ]; then \
++ echo "RAM_TEXT = 0x57e00000" >> $(obj)board/samsung/smdk6400/config.tmp;\
++ $(MKCONFIG) $(@:_config=) arm arm1176 smdk6400 samsung s3c64xx; \
++ else \
++ echo "RAM_TEXT = 0xc7e00000" >> $(obj)board/samsung/smdk6400/config.tmp;\
++ $(MKCONFIG) $(@:_noUSB_config=) arm arm1176 smdk6400 samsung s3c64xx; \
++ fi
++ @echo "CONFIG_NAND_U_BOOT = y" >> $(obj)include/config.mk
++
++#========================================================================
++# i386
++#========================================================================
++#########################################################################
++## AMD SC520 CDP
++#########################################################################
++eNET_config : unconfig
++ @$(MKCONFIG) $(@:_config=) i386 i386 eNET NULL sc520
++
++sc520_cdp_config : unconfig
++ @$(MKCONFIG) $(@:_config=) i386 i386 sc520_cdp NULL sc520
++
++sc520_spunk_config : unconfig
++ @$(MKCONFIG) $(@:_config=) i386 i386 sc520_spunk NULL sc520
++
++sc520_spunk_rel_config : unconfig
++ @$(MKCONFIG) $(@:_config=) i386 i386 sc520_spunk NULL sc520
++
++#========================================================================
++# MIPS
++#========================================================================
++#########################################################################
++## MIPS32 4Kc
++#########################################################################
++
++xtract_incaip = $(subst _100MHz,,$(subst _133MHz,,$(subst _150MHz,,$(subst _config,,$1))))
++
++incaip_100MHz_config \
++incaip_133MHz_config \
++incaip_150MHz_config \
++incaip_config: unconfig
++ @mkdir -p $(obj)include
++ @[ -z "$(findstring _100MHz,$@)" ] || \
++ { echo "#define CPU_CLOCK_RATE 100000000" >>$(obj)include/config.h ; \
++ $(XECHO) "... with 100MHz system clock" ; \
++ }
++ @[ -z "$(findstring _133MHz,$@)" ] || \
++ { echo "#define CPU_CLOCK_RATE 133000000" >>$(obj)include/config.h ; \
++ $(XECHO) "... with 133MHz system clock" ; \
++ }
++ @[ -z "$(findstring _150MHz,$@)" ] || \
++ { echo "#define CPU_CLOCK_RATE 150000000" >>$(obj)include/config.h ; \
++ $(XECHO) "... with 150MHz system clock" ; \
++ }
++ @$(MKCONFIG) -a $(call xtract_incaip,$@) mips mips incaip
++
++tb0229_config: unconfig
++ @$(MKCONFIG) $(@:_config=) mips mips tb0229
++
++vct_premium_config \
++vct_premium_small_config \
++vct_premium_onenand_config \
++vct_premium_onenand_small_config \
++vct_platinum_config \
++vct_platinum_small_config \
++vct_platinum_onenand_config \
++vct_platinum_onenand_small_config \
++vct_platinumavc_config \
++vct_platinumavc_small_config \
++vct_platinumavc_onenand_config \
++vct_platinumavc_onenand_small_config: unconfig
++ @mkdir -p $(obj)include
++ @if [ "$(findstring _premium,$@)" ] ; then \
++ echo "#define CONFIG_VCT_PREMIUM" > $(obj)include/config.h ; \
++ $(XECHO) "... on Premium board variant" ; \
++ fi
++ @if [ "$(findstring _platinum_,$@)" ] ; then \
++ echo "#define CONFIG_VCT_PLATINUM" > $(obj)include/config.h ; \
++ $(XECHO) "... on Platinum board variant" ; \
++ fi
++ @if [ "$(findstring _platinumavc,$@)" ] ; then \
++ echo "#define CONFIG_VCT_PLATINUMAVC" > $(obj)include/config.h ; \
++ $(XECHO) "... on PlatinumAVC board variant" ; \
++ fi
++ @if [ "$(findstring _onenand,$@)" ] ; then \
++ echo "#define CONFIG_VCT_ONENAND" >> $(obj)include/config.h ; \
++ $(XECHO) "... on OneNAND board variant" ; \
++ fi
++ @if [ "$(findstring _small,$@)" ] ; then \
++ echo "#define CONFIG_VCT_SMALL_IMAGE" >> $(obj)include/config.h ; \
++ $(XECHO) "... stripped down image variant" ; \
++ fi
++ @$(MKCONFIG) -a vct mips mips vct micronas
++
++#########################################################################
++## MIPS32 AU1X00
++#########################################################################
++
++dbau1000_config : unconfig
++ @mkdir -p $(obj)include
++ @echo "#define CONFIG_DBAU1000 1" >$(obj)include/config.h
++ @$(MKCONFIG) -a dbau1x00 mips mips dbau1x00
++
++dbau1100_config : unconfig
++ @mkdir -p $(obj)include
++ @echo "#define CONFIG_DBAU1100 1" >$(obj)include/config.h
++ @$(MKCONFIG) -a dbau1x00 mips mips dbau1x00
++
++dbau1500_config : unconfig
++ @mkdir -p $(obj)include
++ @echo "#define CONFIG_DBAU1500 1" >$(obj)include/config.h
++ @$(MKCONFIG) -a dbau1x00 mips mips dbau1x00
++
++dbau1550_config : unconfig
++ @mkdir -p $(obj)include
++ @echo "#define CONFIG_DBAU1550 1" >$(obj)include/config.h
++ @$(MKCONFIG) -a dbau1x00 mips mips dbau1x00
++
++dbau1550_el_config : unconfig
++ @mkdir -p $(obj)include
++ @echo "#define CONFIG_DBAU1550 1" >$(obj)include/config.h
++ @$(MKCONFIG) -a dbau1x00 mips mips dbau1x00
++
++gth2_config : unconfig
++ @mkdir -p $(obj)include
++ @echo "#define CONFIG_GTH2 1" >$(obj)include/config.h
++ @$(MKCONFIG) -a gth2 mips mips gth2
++
++pb1000_config : unconfig
++ @mkdir -p $(obj)include
++ @echo "#define CONFIG_PB1000 1" >$(obj)include/config.h
++ @$(MKCONFIG) -a pb1x00 mips mips pb1x00
++
++qemu_mips_config : unconfig
++ @mkdir -p $(obj)include
++ @echo "#define CONFIG_QEMU_MIPS 1" >$(obj)include/config.h
++ @$(MKCONFIG) -a qemu-mips mips mips qemu-mips
++
++#########################################################################
++## MIPS64 5Kc
++#########################################################################
++
++purple_config : unconfig
++ @$(MKCONFIG) $(@:_config=) mips mips purple
++
++#========================================================================
++# Nios
++#========================================================================
++#########################################################################
++## Nios32
++#########################################################################
++
++ADNPESC1_DNPEVA2_base_32_config \
++ADNPESC1_base_32_config \
++ADNPESC1_config: unconfig
++ @mkdir -p $(obj)include
++ @[ -z "$(findstring _DNPEVA2,$@)" ] || \
++ { echo "#define CONFIG_DNPEVA2 1" >>$(obj)include/config.h ; \
++ $(XECHO) "... DNP/EVA2 configuration" ; \
++ }
++ @[ -z "$(findstring _base_32,$@)" ] || \
++ { echo "#define CONFIG_NIOS_BASE_32 1" >>$(obj)include/config.h ; \
++ $(XECHO) "... NIOS 'base_32' configuration" ; \
++ }
++ @[ -z "$(findstring ADNPESC1_config,$@)" ] || \
++ { echo "#define CONFIG_NIOS_BASE_32 1" >>$(obj)include/config.h ; \
++ $(XECHO) "... NIOS 'base_32' configuration (DEFAULT)" ; \
++ }
++ @$(MKCONFIG) -a ADNPESC1 nios nios adnpesc1 ssv
++
++DK1C20_safe_32_config \
++DK1C20_standard_32_config \
++DK1C20_config: unconfig
++ @mkdir -p $(obj)include
++ @[ -z "$(findstring _safe_32,$@)" ] || \
++ { echo "#define CONFIG_NIOS_SAFE_32 1" >>$(obj)include/config.h ; \
++ $(XECHO) "... NIOS 'safe_32' configuration" ; \
++ }
++ @[ -z "$(findstring _standard_32,$@)" ] || \
++ { echo "#define CONFIG_NIOS_STANDARD_32 1" >>$(obj)include/config.h ; \
++ $(XECHO) "... NIOS 'standard_32' configuration" ; \
++ }
++ @[ -z "$(findstring DK1C20_config,$@)" ] || \
++ { echo "#define CONFIG_NIOS_STANDARD_32 1" >>$(obj)include/config.h ; \
++ $(XECHO) "... NIOS 'standard_32' configuration (DEFAULT)" ; \
++ }
++ @$(MKCONFIG) -a DK1C20 nios nios dk1c20 altera
++
++DK1S10_safe_32_config \
++DK1S10_standard_32_config \
++DK1S10_mtx_ldk_20_config \
++DK1S10_config: unconfig
++ @mkdir -p $(obj)include
++ @[ -z "$(findstring _safe_32,$@)" ] || \
++ { echo "#define CONFIG_NIOS_SAFE_32 1" >>$(obj)include/config.h ; \
++ $(XECHO) "... NIOS 'safe_32' configuration" ; \
++ }
++ @[ -z "$(findstring _standard_32,$@)" ] || \
++ { echo "#define CONFIG_NIOS_STANDARD_32 1" >>$(obj)include/config.h ; \
++ $(XECHO) "... NIOS 'standard_32' configuration" ; \
++ }
++ @[ -z "$(findstring _mtx_ldk_20,$@)" ] || \
++ { echo "#define CONFIG_NIOS_MTX_LDK_20 1" >>$(obj)include/config.h ; \
++ $(XECHO) "... NIOS 'mtx_ldk_20' configuration" ; \
++ }
++ @[ -z "$(findstring DK1S10_config,$@)" ] || \
++ { echo "#define CONFIG_NIOS_STANDARD_32 1" >>$(obj)include/config.h ; \
++ $(XECHO) "... NIOS 'standard_32' configuration (DEFAULT)" ; \
++ }
++ @$(MKCONFIG) -a DK1S10 nios nios dk1s10 altera
++
++#########################################################################
++## Nios-II
++#########################################################################
++
++EP1C20_config : unconfig
++ @$(MKCONFIG) EP1C20 nios2 nios2 ep1c20 altera
++
++EP1S10_config : unconfig
++ @$(MKCONFIG) EP1S10 nios2 nios2 ep1s10 altera
++
++EP1S40_config : unconfig
++ @$(MKCONFIG) EP1S40 nios2 nios2 ep1s40 altera
++
++PK1C20_config : unconfig
++ @$(MKCONFIG) PK1C20 nios2 nios2 pk1c20 psyent
++
++PCI5441_config : unconfig
++ @$(MKCONFIG) PCI5441 nios2 nios2 pci5441 psyent
++
++#========================================================================
++## Microblaze
++#========================================================================
++
++microblaze-generic_config: unconfig
++ @mkdir -p $(obj)include
++ @$(MKCONFIG) -a $(@:_config=) microblaze microblaze microblaze-generic xilinx
++
++#========================================================================
++# Blackfin
++#========================================================================
++
++# Analog Devices boards
++BFIN_BOARDS = bf518f-ezbrd bf526-ezbrd bf527-ezkit bf533-ezkit bf533-stamp \
++ bf537-pnav bf537-stamp bf538f-ezkit bf548-ezkit bf561-ezkit
++
++# Bluetechnix tinyboards
++BFIN_BOARDS += cm-bf527 cm-bf533 cm-bf537e cm-bf537u cm-bf548 cm-bf561 tcm-bf537
++
++# Misc third party boards
++BFIN_BOARDS += bf537-minotaur bf537-srv1 blackstamp
++
++# I-SYST Micromodule
++BFIN_BOARDS += ibf-dsp561
++
++$(BFIN_BOARDS:%=%_config) : unconfig
++ @$(MKCONFIG) $(@:_config=) blackfin blackfin $(@:_config=)
++
++#========================================================================
++# AVR32
++#========================================================================
++
++atngw100_config : unconfig
++ @$(MKCONFIG) $(@:_config=) avr32 at32ap atngw100 atmel at32ap700x
++
++atstk1002_config : unconfig
++ @$(MKCONFIG) $(@:_config=) avr32 at32ap atstk1000 atmel at32ap700x
++
++atstk1003_config : unconfig
++ @$(MKCONFIG) $(@:_config=) avr32 at32ap atstk1000 atmel at32ap700x
++
++atstk1004_config : unconfig
++ @$(MKCONFIG) $(@:_config=) avr32 at32ap atstk1000 atmel at32ap700x
++
++atstk1006_config : unconfig
++ @$(MKCONFIG) $(@:_config=) avr32 at32ap atstk1000 atmel at32ap700x
++
++favr-32-ezkit_config : unconfig
++ @$(MKCONFIG) $(@:_config=) avr32 at32ap favr-32-ezkit earthlcd at32ap700x
++
++hammerhead_config : unconfig
++ @$(MKCONFIG) $(@:_config=) avr32 at32ap hammerhead miromico at32ap700x
++
++mimc200_config : unconfig
++ @$(MKCONFIG) $(@:_config=) avr32 at32ap mimc200 mimc at32ap700x
++
++#========================================================================
++# SH3 (SuperH)
++#========================================================================
++
++#########################################################################
++## sh2 (Renesas SuperH)
++#########################################################################
++rsk7203_config: unconfig
++ @mkdir -p $(obj)include
++ @echo "#define CONFIG_RSK7203 1" > $(obj)include/config.h
++ @$(MKCONFIG) -a $(@:_config=) sh sh2 rsk7203 renesas
++
++#########################################################################
++## sh3 (Renesas SuperH)
++#########################################################################
++
++mpr2_config: unconfig
++ @mkdir -p $(obj)include
++ @echo "#define CONFIG_MPR2 1" > $(obj)include/config.h
++ @$(MKCONFIG) -a $(@:_config=) sh sh3 mpr2
++
++ms7720se_config: unconfig
++ @mkdir -p $(obj)include
++ @echo "#define CONFIG_MS7720SE 1" > $(obj)include/config.h
++ @$(MKCONFIG) -a $(@:_config=) sh sh3 ms7720se
++
++#########################################################################
++## sh4 (Renesas SuperH)
++#########################################################################
++
++MigoR_config : unconfig
++ @mkdir -p $(obj)include
++ @echo "#define CONFIG_MIGO_R 1" > $(obj)include/config.h
++ @$(MKCONFIG) -a $(@:_config=) sh sh4 MigoR renesas
++
++ms7750se_config: unconfig
++ @mkdir -p $(obj)include
++ @echo "#define CONFIG_MS7750SE 1" > $(obj)include/config.h
++ @$(MKCONFIG) -a $(@:_config=) sh sh4 ms7750se
++
++ms7722se_config : unconfig
++ @mkdir -p $(obj)include
++ @echo "#define CONFIG_MS7722SE 1" > $(obj)include/config.h
++ @$(MKCONFIG) -a $(@:_config=) sh sh4 ms7722se
++
++r2dplus_config : unconfig
++ @mkdir -p $(obj)include
++ @echo "#define CONFIG_R2DPLUS 1" > $(obj)include/config.h
++ @$(MKCONFIG) -a $(@:_config=) sh sh4 r2dplus renesas
++
++r7780mp_config: unconfig
++ @mkdir -p $(obj)include
++ @echo "#define CONFIG_R7780MP 1" > $(obj)include/config.h
++ @$(MKCONFIG) -a $(@:_config=) sh sh4 r7780mp renesas
++
++sh7763rdp_config : unconfig
++ @mkdir -p $(obj)include
++ @echo "#define CONFIG_SH7763RDP 1" > $(obj)include/config.h
++ @$(MKCONFIG) -a $(@:_config=) sh sh4 sh7763rdp renesas
++
++xtract_sh7785lcr = $(subst _32bit,,$(subst _config,,$1))
++sh7785lcr_32bit_config \
++sh7785lcr_config : unconfig
++ @mkdir -p $(obj)include
++ @mkdir -p $(obj)board/renesas/sh7785lcr
++ @echo "#define CONFIG_SH7785LCR 1" > $(obj)include/config.h
++ @if [ "$(findstring 32bit, $@)" ] ; then \
++ echo "#define CONFIG_SH_32BIT 1" >> $(obj)include/config.h ; \
++ echo "TEXT_BASE = 0x8ff80000" > \
++ $(obj)board/renesas/sh7785lcr/config.tmp ; \
++ $(XECHO) " ... enable 32-Bit Address Extended Mode" ; \
++ fi
++ @$(MKCONFIG) -a $(call xtract_sh7785lcr,$@) sh sh4 sh7785lcr renesas
++
++ap325rxa_config : unconfig
++ @mkdir -p $(obj)include
++ @echo "#define CONFIG_AP325RXA 1" > $(obj)include/config.h
++ @$(MKCONFIG) -a $(@:_config=) sh sh4 ap325rxa renesas
++
++espt_config : unconfig
++ @mkdir -p $(obj)include
++ @echo "#define CONFIG_ESPT 1" > $(obj)include/config.h
++ @$(MKCONFIG) -a $(@:_config=) sh sh4 espt
++
++#========================================================================
++# SPARC
++#========================================================================
++
++#########################################################################
++## LEON3
++#########################################################################
++
++# Gaisler GR-XC3S-1500 board
++gr_xc3s_1500_config : unconfig
++ @$(MKCONFIG) $(@:_config=) sparc leon3 gr_xc3s_1500 gaisler
++
++# Gaisler GR-CPCI-AX2000 board, a General purpose FPGA-AX system
++gr_cpci_ax2000_config : unconfig
++ @$(MKCONFIG) $(@:_config=) sparc leon3 gr_cpci_ax2000 gaisler
++
++# Gaisler GRLIB template design (GPL SPARC/LEON3) for Altera NIOS
++# Development board Stratix II edition, FPGA Device EP2S60.
++gr_ep2s60_config: unconfig
++ @$(MKCONFIG) $(@:_config=) sparc leon3 gr_ep2s60 gaisler
++
++# Gaisler LEON3 GRSIM simulator
++grsim_config : unconfig
++ @$(MKCONFIG) $(@:_config=) sparc leon3 grsim gaisler
++
++#########################################################################
++## LEON2
++#########################################################################
++
++# Gaisler LEON2 GRSIM simulator
++grsim_leon2_config : unconfig
++ @$(MKCONFIG) $(@:_config=) sparc leon2 grsim_leon2 gaisler
++
++#########################################################################
++#########################################################################
++#########################################################################
++
++clean:
++ @rm -f $(obj)examples/standalone/82559_eeprom \
++ $(obj)examples/standalone/atmel_df_pow2 \
++ $(obj)examples/standalone/eepro100_eeprom \
++ $(obj)examples/standalone/hello_world \
++ $(obj)examples/standalone/interrupt \
++ $(obj)examples/standalone/mem_to_mem_idma2intr \
++ $(obj)examples/standalone/sched \
++ $(obj)examples/standalone/smc91111_eeprom \
++ $(obj)examples/standalone/test_burst \
++ $(obj)examples/standalone/timer
++ @rm -f $(obj)examples/api/demo{,.bin}
++ @rm -f $(obj)tools/bmp_logo $(obj)tools/easylogo/easylogo \
++ $(obj)tools/env/{fw_printenv,fw_setenv} \
++ $(obj)tools/envcrc \
++ $(obj)tools/gdb/{astest,gdbcont,gdbsend} \
++ $(obj)tools/gen_eth_addr $(obj)tools/img2srec \
++ $(obj)tools/mkimage $(obj)tools/mpc86x_clk \
++ $(obj)tools/ncb $(obj)tools/ubsha1
++ @rm -f $(obj)board/cray/L1/{bootscript.c,bootscript.image} \
++ $(obj)board/netstar/{eeprom,crcek,crcit,*.srec,*.bin} \
++ $(obj)board/trab/trab_fkt $(obj)board/voiceblue/eeprom \
++ $(obj)board/armltd/{integratorap,integratorcp}/u-boot.lds \
++ $(obj)lib_blackfin/u-boot.lds \
++ $(obj)u-boot.lds \
++ $(obj)cpu/blackfin/bootrom-asm-offsets.[chs]
++ @rm -f $(obj)include/bmp_logo.h
++ @rm -f $(obj)nand_spl/{u-boot.lds,u-boot-spl,u-boot-spl.map,System.map}
++ @rm -f $(obj)onenand_ipl/onenand-{ipl,ipl.bin,ipl.map}
++ @rm -f $(ONENAND_BIN)
++ @rm -f $(obj)onenand_ipl/u-boot.lds
++ @rm -f $(TIMESTAMP_FILE) $(VERSION_FILE)
++ @find $(OBJTREE) -type f \
++ \( -name 'core' -o -name '*.bak' -o -name '*~' \
++ -o -name '*.o' -o -name '*.a' -o -name '*.exe' \) -print \
++ | xargs rm -f
++
++clobber: clean
++ @find $(OBJTREE) -type f \( -name .depend \
++ -o -name '*.srec' -o -name '*.bin' -o -name u-boot.img \) \
++ -print0 \
++ | xargs -0 rm -f
++ @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)u-boot.kwb
++ @rm -f $(obj)tools/{env/crc32.c,inca-swap-bytes}
++ @rm -f $(obj)cpu/mpc824x/bedbug_603e.c
++ @rm -f $(obj)include/asm/proc $(obj)include/asm/arch $(obj)include/asm
++ @[ ! -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
++
++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
++
++#########################################################################
+diff -Naur u-boot-2009.11/mkconfig u-boot-2009.11.new/mkconfig
+--- u-boot-2009.11/mkconfig 2009-12-15 23:20:54.000000000 +0100
++++ u-boot-2009.11.new/mkconfig 2010-10-08 12:09:30.000000000 +0200
+@@ -74,6 +74,7 @@
+ echo "ARCH = $2" > config.mk
+ echo "CPU = $3" >> config.mk
+ echo "BOARD = $4" >> config.mk
++echo "BNAME = $1" >> config.mk
+
+ [ "$5" ] && [ "$5" != "NULL" ] && echo "VENDOR = $5" >> config.mk
+
+diff -Naur u-boot-2009.11.orig/board/in-circuit/icnova/icnova_arm.c u-boot-2009.11/board/in-circuit/icnova/icnova_arm.c
+--- u-boot-2009.11.orig/board/in-circuit/icnova/icnova_arm.c 2010-10-12 17:00:03.000000000 +0200
++++ u-boot-2009.11/board/in-circuit/icnova/icnova_arm.c 2011-01-04 12:01:10.000000000 +0100
+@@ -68,14 +68,19 @@
+ * ERXER (PA16) => no repeater
+ * ETXCLK (PA17) => no isolate
+ */
+- unsigned long phy_mask = pin_to_mask(AT91_PIN_PA15) |
++ unsigned long phy_mask = 0;
++ /* Reset and pdwn-pins */
++ unsigned long rst = pin_to_mask(AT91_PIN_PA27);
++ unsigned long pdwn = 0;
++#ifndef CONFIG_ICNOVA_SODIMM
++ phy_mask = pin_to_mask(AT91_PIN_PA15) |
+ pin_to_mask(AT91_PIN_PA8) | pin_to_mask(AT91_PIN_PA9) |
+ pin_to_mask(AT91_PIN_PA12) | pin_to_mask(AT91_PIN_PA13) |
+ pin_to_mask(AT91_PIN_PA29) | pin_to_mask(AT91_PIN_PA30) |
+ pin_to_mask(AT91_PIN_PA16) | pin_to_mask(AT91_PIN_PA17);
+- /* Reset and pdwn-pins */
+- unsigned long rst = pin_to_mask(AT91_PIN_PA26);
+- unsigned long pdwn = pin_to_mask(AT91_PIN_PA25);
++ rst = pin_to_mask(AT91_PIN_PA26);
++ pdwn = pin_to_mask(AT91_PIN_PA25);
++#endif
+ /* Enable clock */
+ at91_sys_write(AT91_PMC_PCER, 1 << AT91SAM9G45_ID_EMAC);
+
+@@ -218,14 +223,25 @@
+
+ #ifdef CONFIG_MMC
+ static void icnova_arm9_mmc_init(void) {
++#ifdef CONFIG_USE_MMC1
++ at91_set_A_periph(AT91_PIN_PA31, 0);
++ at91_set_A_periph(AT91_PIN_PA22, 1);
++ at91_set_A_periph(AT91_PIN_PA23, 1);
++ at91_set_A_periph(AT91_PIN_PA24, 1);
++ at91_set_A_periph(AT91_PIN_PA25, 1);
++ at91_set_A_periph(AT91_PIN_PA26, 1);
++#define MMC_ID AT91SAM9G45_ID_MCI1
++#else
+ at91_set_A_periph(AT91_PIN_PA0, 0);
+ at91_set_A_periph(AT91_PIN_PA1, 1);
+ at91_set_A_periph(AT91_PIN_PA2, 1);
+ at91_set_A_periph(AT91_PIN_PA3, 1);
+ at91_set_A_periph(AT91_PIN_PA4, 1);
+ at91_set_A_periph(AT91_PIN_PA5, 1);
++#define MMC_ID AT91SAM9G45_ID_MCI0
++#endif
+
+- at91_sys_write(AT91_PMC_PCER, 1<<AT91SAM9G45_ID_MCI0);
++ at91_sys_write(AT91_PMC_PCER, 1<<MMC_ID);
+ }
+
+ int board_mmc_init(bd_t *bd) {
+diff -Naur u-boot-2009.11.orig/cpu/arm926ejs/at91/at91sam9m10g45_devices.c u-boot-2009.11/cpu/arm926ejs/at91/at91sam9m10g45_devices.c
+--- u-boot-2009.11.orig/cpu/arm926ejs/at91/at91sam9m10g45_devices.c 2010-10-12 17:00:03.000000000 +0200
++++ u-boot-2009.11/cpu/arm926ejs/at91/at91sam9m10g45_devices.c 2011-01-04 11:57:33.000000000 +0100
+@@ -180,7 +180,9 @@
+ at91_set_B_periph(AT91_PIN_PA28, 0); /* ERXCK */
+ at91_set_B_periph(AT91_PIN_PA6, 0); /* ETX2 */
+ at91_set_B_periph(AT91_PIN_PA7, 0); /* ETX3 */
++#ifndef CONFIG_ICNOVA_SODIMM
+ at91_set_B_periph(AT91_PIN_PA27, 0); /* ETXER */
+ #endif
++#endif
+ }
+ #endif
+diff -Naur u-boot-2009.11.orig/drivers/net/macb.c u-boot-2009.11/drivers/net/macb.c
+--- u-boot-2009.11.orig/drivers/net/macb.c 2009-12-15 23:20:54.000000000 +0100
++++ u-boot-2009.11/drivers/net/macb.c 2010-10-18 13:56:31.000000000 +0200
+@@ -334,7 +334,7 @@
+ }
+
+ /* PHY isn't up to snuff */
+- printf("%s: PHY not found", macb->netdev.name);
++ printf("%s: PHY not found\n", macb->netdev.name);
+
+ return 0;
+ }
+diff -Naur u-boot-2009.11.orig/include/configs/icnova/mmc.h u-boot-2009.11/include/configs/icnova/mmc.h
+--- u-boot-2009.11.orig/include/configs/icnova/mmc.h 2010-10-12 17:00:04.000000000 +0200
++++ u-boot-2009.11/include/configs/icnova/mmc.h 2010-12-17 13:34:17.000000000 +0100
+@@ -19,7 +19,11 @@
+ #define CONFIG_GENERIC_MMC 1
+ #define CONFIG_GENERIC_ATMEL_MCI 1
+ /*change this for your cpu */
++#ifdef CONFIG_USE_MMC1
++#define MMCI_BASE 0xFFFD0000
++#else
+ #define MMCI_BASE 0xFFF80000
++#endif
+ #else
+ #define CONFIG_ATMEL_MCI 1
+ #endif
+diff -Naur u-boot-2009.11.orig/include/configs/icnova/mmcupdate.h u-boot-2009.11/include/configs/icnova/mmcupdate.h
+--- u-boot-2009.11.orig/include/configs/icnova/mmcupdate.h 2010-10-12 17:00:04.000000000 +0200
++++ u-boot-2009.11/include/configs/icnova/mmcupdate.h 2011-01-04 11:55:50.000000000 +0100
+@@ -10,7 +10,11 @@
+
+ //#define MMCUPDATE_BOOTARGS CONFIG_BOOTARGS
+ //#define MMCUPDATE_BOOTCOMMAND CONFIG_BOOTCOMMAND
+-#define MMCUPDATE_BOOTARGS "rootfstype=ubifs root=ubi0:root ubi.mtd=2"
++#ifndef CONFIG_ICNOVA_UBI_MTD
++#define CONFIG_ICNOVA_UBI_MTD "2"
++#endif
++
++#define MMCUPDATE_BOOTARGS "rootfstype=ubifs root=ubi0:root ubi.mtd=" CONFIG_ICNOVA_UBI_MTD
+ #define MMCUPDATE_BOOTCOMMAND "mtdparts default; nand read "MMCUPDATE_UADDRESS" nand0,0; bootm"
+
+ #undef CONFIG_BOOTARGS
+diff -Naur u-boot-2009.11.orig/include/configs/icnova/nand_arm9.h u-boot-2009.11/include/configs/icnova/nand_arm9.h
+--- u-boot-2009.11.orig/include/configs/icnova/nand_arm9.h 2010-10-12 17:00:04.000000000 +0200
++++ u-boot-2009.11/include/configs/icnova/nand_arm9.h 2011-01-04 11:53:18.000000000 +0100
+@@ -10,7 +10,12 @@
+ #define CFG_NAND_ALE 21
+ #define CFG_NAND_CLE 22
+
++#ifdef CONFIG_ICNOVA_SODIMM
++#define CFG_NAND_CE AT91_PIN_PC14
++#define CFG_NAND_RDY AT91_PIN_PC8
++#else
+ #define CFG_NAND_CE AT91_PIN_PC8
+ #define CFG_NAND_RDY AT91_PIN_PC11
++#endif
+
+ #endif
+diff -Naur u-boot-2009.11.orig/include/configs/icnova_arm9sodimm.h u-boot-2009.11/include/configs/icnova_arm9sodimm.h
+--- u-boot-2009.11.orig/include/configs/icnova_arm9sodimm.h 1970-01-01 01:00:00.000000000 +0100
++++ u-boot-2009.11/include/configs/icnova_arm9sodimm.h 2011-01-04 11:53:10.000000000 +0100
+@@ -0,0 +1,24 @@
++#ifndef __CONFIG_H
++#define __CONFIG_H
++
++#define CONFIG_ICNOVA_ARM9
++#define CONFIG_ICNOVA_SODIMM
++#define CONFIG_USE_MMC1
++#define CONFIG_ICNOVA_UBI_MTD "1"
++
++#include <configs/icnova/base.h>
++#include <configs/icnova/arm400MHz.h>
++#include <configs/icnova/mmc.h>
++#include <configs/icnova/flash2x8.h>
++#include <configs/icnova/nand_arm9.h>
++#include <configs/icnova/net.h>
++#define CONFIG_MACB_SEARCH_PHY
++#include <configs/icnova/usart3.h> // DBGU
++#include <configs/icnova/mmcupdate.h>
++//#include <configs/icnova/lcd320_240.h>
++//#include <configs/icnova/usb.h>
++
++#undef MTDPARTS_DEFAULT
++#define MTDPARTS_DEFAULT "mtdparts=nand.0:4M(kernel),-(root)"
++
++#endif
+diff -Naur u-boot-2009.11.orig/Makefile u-boot-2009.11/Makefile
+--- u-boot-2009.11.orig/Makefile 2010-10-12 17:00:04.000000000 +0200
++++ u-boot-2009.11/Makefile 2011-01-04 11:49:12.000000000 +0100
+@@ -3590,7 +3590,7 @@
+ $(ICNOVA_BOARDS:%=icnova_%_config): unconfig
+ @$(MKCONFIG) $(@:_config=) avr32 at32ap icnova in-circuit at32ap700x
+
+-ICNOVA_ARM_BOARDS = arm9oem arm9oem_u4
++ICNOVA_ARM_BOARDS = arm9oem arm9oem_u4 arm9sodimm
+ $(ICNOVA_ARM_BOARDS:%=icnova_%_config): unconfig
+ @$(MKCONFIG) $(@:_config=) arm arm926ejs icnova in-circuit at91
+
+diff -Naur u-boot-2009.11.orig/board/in-circuit/icnova/Makefile.icnova_arm9sodimm u-boot-2009.11/board/in-circuit/icnova/Makefile.icnova_arm9sodimm
+--- u-boot-2009.11.orig/board/in-circuit/icnova/Makefile.icnova_arm9sodimm 1970-01-01 01:00:00.000000000 +0100
++++ u-boot-2009.11/board/in-circuit/icnova/Makefile.icnova_arm9sodimm 2011-01-04 12:47:26.000000000 +0100
+@@ -0,0 +1,6 @@
++
++COBJS := $(BOARD)_$(ARCH).o flash2x8.o
++ifdef CONFIG_CMD_NAND
++COBJS += at91_nand.o
++endif
++
diff --git a/recipes/u-boot/u-boot_2009.11.bb b/recipes/u-boot/u-boot_2009.11.bb
index fd88679d50..90a9089270 100644
--- a/recipes/u-boot/u-boot_2009.11.bb
+++ b/recipes/u-boot/u-boot_2009.11.bb
@@ -8,26 +8,30 @@ DEFAULT_PREFERENCE_at91sam9g45ek = "2"
DEFAULT_PREFERENCE_at91sam9m10ekes = "2"
DEFAULT_PREFERENCE_at91sam9m10g45ek = "2"
DEFAULT_PREFERENCE_at91sam9g45ek = "2"
-DEFAULT_PREFERENCE_at91sam9g45ekes = "2"
+DEFAULT_PREFERENCE_adb4000 = "2"
SRC_URI = "ftp://ftp.denx.de/pub/u-boot/u-boot-${PV}.tar.bz2 "
SRC_URI_append_at91 = "\
- file://at91/0002-Support-running-ATSAM9G45-M10-from-dataflash.patch;patch=1 \
- file://at91/0003-Update-SAM9M10-G45-config-for-dataflash-support.patch;patch=1 \
- file://at91/0004-Support-selecting-SPI-mode-in-dataflash-driver.patch;patch=1 \
- file://at91/0005-mux-replace-verbose-dataflash_mmc_mux-command.patch;patch=1 \
- file://at91/0006-libarm-board.c-Gets-overwritten-workaround.patch;patch=1 \
- file://at91/0007-fat.c-Add-DEBUG-currently-disabled.patch;patch=1 \
- file://at91/0008-env_dataflash.c-More-robust-handling.patch;patch=1 \
- file://at91/0009-cmd_debug.c-Add-a-generic-function-for-debug-vars.patch;patch=1 \
- file://at91/0010-debug.h-Add-header-for-debug-variables.patch;patch=1 \
- file://at91/0011-common-Makefile-Add-cmd_debug.c-to-build.patch;patch=1 \
- file://at91/0012-cmd_mci.c-Support-writing-out-AT91-mci-config.patch;patch=1 \
- file://at91/0013-atmel_dataflash.c-Status-printout-depend-on-DEBUG.patch;patch=1 \
- file://at91/0014-AT91-MCI-Add-support-for-SD-Card.patch;patch=1 \
- file://at91/0015-sam9m10g45ek-Add-configuration-file.patch;patch=1 \
+ file://at91/0002-Support-running-ATSAM9G45-M10-from-dataflash.patch \
+ file://at91/0003-Update-SAM9M10-G45-config-for-dataflash-support.patch \
+ file://at91/0004-Support-selecting-SPI-mode-in-dataflash-driver.patch \
+ file://at91/0005-mux-replace-verbose-dataflash_mmc_mux-command.patch \
+ file://at91/0006-libarm-board.c-Gets-overwritten-workaround.patch \
+ file://at91/0007-fat.c-Add-DEBUG-currently-disabled.patch \
+ file://at91/0008-env_dataflash.c-More-robust-handling.patch \
+ file://at91/0009-cmd_debug.c-Add-a-generic-function-for-debug-vars.patch \
+ file://at91/0010-debug.h-Add-header-for-debug-variables.patch \
+ file://at91/0011-common-Makefile-Add-cmd_debug.c-to-build.patch \
+ file://at91/0012-cmd_mci.c-Support-writing-out-AT91-mci-config.patch \
+ file://at91/0013-atmel_dataflash.c-Status-printout-depend-on-DEBUG.patch \
+ file://at91/0014-AT91-MCI-Add-support-for-SD-Card.patch \
+ file://at91/0015-sam9m10g45ek-Add-configuration-file.patch \
+ "
+
+SRC_URI_append_adb4000 = "\
+ file://at91/100-icnova.patch \
"
TARGET_LDFLAGS = ""