summaryrefslogtreecommitdiff
path: root/recipes/u-boot/files
diff options
context:
space:
mode:
Diffstat (limited to 'recipes/u-boot/files')
-rw-r--r--recipes/u-boot/files/Makefile-fix.patch25
-rw-r--r--recipes/u-boot/files/arm_flags.patch13
-rw-r--r--recipes/u-boot/files/boot-menu-gfx-fix-openmoko-bug-1140.patch29
-rw-r--r--recipes/u-boot/files/fix-arm920t-eabi.patch9
-rw-r--r--recipes/u-boot/files/fix-data-abort-from-sd-ombug799.patch11
-rw-r--r--recipes/u-boot/files/makefile-no-dirafter.patch17
-rw-r--r--recipes/u-boot/files/neuros-osd2/default-env.ascr53
-rw-r--r--recipes/u-boot/files/sffsdr-u-boot.patch830
-rw-r--r--recipes/u-boot/files/u-boot-20061030-ext2load_hex.patch14
-rw-r--r--recipes/u-boot/files/uboot-20070311-tools_makefile_ln_sf.patch26
-rw-r--r--recipes/u-boot/files/uboot-eabi-fix-HACK.patch197
11 files changed, 1224 insertions, 0 deletions
diff --git a/recipes/u-boot/files/Makefile-fix.patch b/recipes/u-boot/files/Makefile-fix.patch
new file mode 100644
index 0000000000..fccf19c63d
--- /dev/null
+++ b/recipes/u-boot/files/Makefile-fix.patch
@@ -0,0 +1,25 @@
+--- /tmp/Makefile 2008-07-07 20:48:41.000000000 +0200
++++ git/Makefile 2008-07-07 20:49:22.000000000 +0200
+@@ -21,10 +21,6 @@
+ # MA 02111-1307 USA
+ #
+
+-ifndef PRJROOT
+-$(error You must first source the BSP environment: "source neuros-env")
+-endif
+-
+ VERSION = 1
+ PATCHLEVEL = 3
+ SUBLEVEL = 2
+@@ -417,11 +413,6 @@
+ grep -v '\(compiled\)\|\(\.o$$\)\|\( [aUw] \)\|\(\.\.ng$$\)\|\(LASH[RL]DI\)' | \
+ sort > $(obj)System.map
+
+-install: u-boot.bin u-boot
+- @install -p u-boot.bin $(PRJROOT)/images/ > /dev/null
+- @install -p u-boot $(PRJROOT)/images/ > /dev/null
+- @install uboot_desc $(PRJROOT)/images/ > /dev/null
+-
+ #
+ # Auto-generate the autoconf.mk file (which is included by all makefiles)
+ #
diff --git a/recipes/u-boot/files/arm_flags.patch b/recipes/u-boot/files/arm_flags.patch
new file mode 100644
index 0000000000..84b8cada39
--- /dev/null
+++ b/recipes/u-boot/files/arm_flags.patch
@@ -0,0 +1,13 @@
+Index: u-boot/cpu/pxa/config.mk
+===================================================================
+--- u-boot.orig/cpu/pxa/config.mk 2005-01-09 16:28:17.000000000 -0500
++++ u-boot/cpu/pxa/config.mk 2005-02-25 16:38:23.789788636 -0500
+@@ -23,7 +23,7 @@
+ #
+
+ PLATFORM_RELFLAGS += -fno-strict-aliasing -fno-common -ffixed-r8 \
+- -mshort-load-bytes -msoft-float
++ -msoft-float
+
+ #PLATFORM_CPPFLAGS += -mapcs-32 -march=armv4 -mtune=strongarm1100
+ PLATFORM_CPPFLAGS += -mapcs-32 -march=armv5 -mtune=xscale
diff --git a/recipes/u-boot/files/boot-menu-gfx-fix-openmoko-bug-1140.patch b/recipes/u-boot/files/boot-menu-gfx-fix-openmoko-bug-1140.patch
new file mode 100644
index 0000000000..c97880a01c
--- /dev/null
+++ b/recipes/u-boot/files/boot-menu-gfx-fix-openmoko-bug-1140.patch
@@ -0,0 +1,29 @@
+--- git.orig/drivers/video/cfb_console.c 2007-12-27 00:59:35.000000000 -0800
++++ git/drivers/video/cfb_console.c 2007-12-27 08:23:42.000000000 -0800
+@@ -141,6 +141,14 @@
+ #endif
+
+ /*****************************************************************************/
++/* Defines for the S3C2410 driver */
++/*****************************************************************************/
++#ifdef CONFIG_VIDEO_S3C2410
++/* it actually is little-endian, but the host CPU, too ! */
++//#define VIDEO_FB_LITTLE_ENDIAN
++#endif
++
++/*****************************************************************************/
+ /* Include video_fb.h after definitions of VIDEO_HW_RECTFILL etc */
+ /*****************************************************************************/
+ #include <video_fb.h>
+@@ -309,6 +317,11 @@
+ #define SHORTSWAP32(x) (x)
+ #endif
+
++#ifdef CONFIG_VIDEO_S3C2410
++#undef SHORTSWAP32
++#define SHORTSWAP32(x) ((((x) & 0xffff) << 16) | (((x) >> 16) & 0xffff))
++#endif
++
+ #if defined(DEBUG) || defined(DEBUG_CFB_CONSOLE)
+ #define PRINTD(x) printf(x)
+ #else
diff --git a/recipes/u-boot/files/fix-arm920t-eabi.patch b/recipes/u-boot/files/fix-arm920t-eabi.patch
new file mode 100644
index 0000000000..9896388c8f
--- /dev/null
+++ b/recipes/u-boot/files/fix-arm920t-eabi.patch
@@ -0,0 +1,9 @@
+--- /tmp/config.mk 2007-02-14 17:23:15.000000000 +0100
++++ git/cpu/arm920t/config.mk 2007-02-14 17:23:38.475251000 +0100
+@@ -30,5 +30,5 @@
+ # Supply options according to compiler version
+ #
+ # =========================================================================
+-PLATFORM_CPPFLAGS +=$(call cc-option,-mapcs-32,-mabi=apcs-gnu)
++PLATFORM_CPPFLAGS +=$(call cc-option)
+ PLATFORM_RELFLAGS +=$(call cc-option,-mshort-load-bytes,$(call cc-option,-malignment-traps,))
diff --git a/recipes/u-boot/files/fix-data-abort-from-sd-ombug799.patch b/recipes/u-boot/files/fix-data-abort-from-sd-ombug799.patch
new file mode 100644
index 0000000000..98b84430ad
--- /dev/null
+++ b/recipes/u-boot/files/fix-data-abort-from-sd-ombug799.patch
@@ -0,0 +1,11 @@
+--- git.orig/fs/ext2/ext2fs.c 2007-12-13 23:16:13.000000000 -0800
++++ git/fs/ext2/ext2fs.c 2007-12-13 23:16:41.000000000 -0800
+@@ -472,7 +472,7 @@
+ return (0);
+ }
+ if (dirent.namelen != 0) {
+- char filename[dirent.namelen + 1];
++ char filename[256];
+ ext2fs_node_t fdiro;
+ int type = FILETYPE_UNKNOWN;
+
diff --git a/recipes/u-boot/files/makefile-no-dirafter.patch b/recipes/u-boot/files/makefile-no-dirafter.patch
new file mode 100644
index 0000000000..2ed26c3127
--- /dev/null
+++ b/recipes/u-boot/files/makefile-no-dirafter.patch
@@ -0,0 +1,17 @@
+Index: git/tools/Makefile
+===================================================================
+--- git.orig/tools/Makefile 2007-10-03 16:51:38.000000000 +0100
++++ git/tools/Makefile 2007-10-03 16:52:03.000000000 +0100
+@@ -114,9 +114,9 @@
+ #
+ # Use native tools and options
+ #
+-CPPFLAGS = -idirafter $(SRCTREE)/include \
+- -idirafter $(OBJTREE)/include2 \
+- -idirafter $(OBJTREE)/include \
++CPPFLAGS = -I$(SRCTREE)/include \
++ -I$(OBJTREE)/include2 \
++ -I$(OBJTREE)/include \
+ -DTEXT_BASE=$(TEXT_BASE) -DUSE_HOSTCC
+ CFLAGS = $(HOST_CFLAGS) $(CPPFLAGS) -O
+ AFLAGS = -D__ASSEMBLY__ $(CPPFLAGS)
diff --git a/recipes/u-boot/files/neuros-osd2/default-env.ascr b/recipes/u-boot/files/neuros-osd2/default-env.ascr
new file mode 100644
index 0000000000..d8453a7c41
--- /dev/null
+++ b/recipes/u-boot/files/neuros-osd2/default-env.ascr
@@ -0,0 +1,53 @@
+setenv loadaddr 0x82000000
+setenv ubootaddr 0x82000800
+setenv tftp_root /images
+setenv nfs_root /home/user/rootfs/fs
+setenv bootfile uImage
+
+setenv defenv_fname default_env.img
+setenv defenv_loc /images/default_env.img
+setenv defenv_loc_cmd setenv defenv_loc \$(tftp_root)/\$(defenv_fname)
+
+setenv uboot_fname u-boot.bin
+setenv uboot_loc /images/u-boot.bin
+setenv uboot_loc_cmd setenv uboot_loc \$(tftp_root)/\$(uboot_fname)\;setenv uboot_desc \$(tftp_root)/uboot_desc
+
+setenv kernel_fname uImage
+setenv kernel_loc /images/uImage
+setenv kernel_loc_cmd setenv kernel_loc \$(tftp_root)/\$(kernel_fname)
+
+setenv jffs2_fname uImage.jffs2
+setenv jffs2_loc /images/uImage.jffs2
+setenv jffs2_loc_cmd setenv jffs2_loc \$(tftp_root)/\$(jffs2_fname)
+
+setenv rootfs_fname rootfs.yaffs2
+setenv rootfs_loc /images/rootfs.yaffs2
+setenv rootfs_loc_cmd setenv rootfs_loc \$(tftp_root)/\$(rootfs_fname)
+
+setenv rootfs_nfs_loc /rootfs/fs
+setenv rootfs_nfs_loc_cmd setenv rootfs_nfs_loc \$(nfs_root)
+
+setenv console console=ttyS0,115200n8
+
+setenv mem_reserve mem=200M
+
+setenv ip ip=\192.168.1.100:\192.168.1.1:\192.168.1.1:\255.255.255.0:\neuros::off
+
+setenv nfs_mount_params udp,v3,rsize=4096,wsize=4096
+setenv nfs_cmd setenv bootargs \$(console) root=/dev/nfs rw nfsroot=\$(serverip):\$(rootfs_nfs_loc),\$(nfs_mount_params) \$(ip) \$(mem_reserve) \$(video_params)
+setenv yaffs_cmd setenv bootargs \$(console) root=/dev/mtdblock4 rw \$(ip) \$(mem_reserve) \$(video_params)
+
+setenv update-locs run uboot_loc_cmd\;run kernel_loc_cmd\;run jffs2_loc_cmd\;run defenv_loc_cmd\;run rootfs_nfs_loc_cmd\;saveenv
+setenv update-defenv run defenv_loc_cmd\;tftp \$(loadaddr) \$(defenv_loc)\;setenv filesize\;autoscr \$(loadaddr)\;run update-locs
+setenv update-uboot run uboot_loc_cmd\;tftp \$(loadaddr) \$(uboot_desc)\;tftp \$(ubootaddr) \$(uboot_loc)\;setenv filesize\;nand erase c0000 c0000\;nand write \$(loadaddr) c0000 c0000
+setenv update-kernel run jffs2_loc_cmd\;tftp \$(loadaddr) \$(jffs2_loc)\;setenv filesize\;nand erase 1c0000 500000\;nand write.jffs2 \$(loadaddr) 1c0000 500000
+setenv update-rootfs run rootfs_loc_cmd\;tftp \$(loadaddr) \$(rootfs_loc)\;nand erase 6c0000\;nand write.yaffs \$(loadaddr) 6c0000 \$(filesize)\;setenv filesize
+
+setenv update-ipdhcp setenv ip ip=::::\$(hostname)::dhcp\;saveenv
+setenv update-ipstatic setenv ip ip=\$(ipaddr):\$(serverip):\$(gatewayip):\$(netmask):\$(hostname)::off\;saveenv
+
+setenv devboot tftp \$(loadaddr) \$(uboot_loc)\;setenv filesize\;go \$(loadaddr)
+setenv devkernel run nfs_cmd\;tftp \$(loadaddr) \$(kernel_loc)\;setenv filesize\;bootm \$(loadaddr)
+setenv yaffs_boot run yaffs_cmd\;fsload \$(loadaddr) \$(bootfile)\;bootm \$(loadaddr)
+
+setenv bootcmd run yaffs_boot
diff --git a/recipes/u-boot/files/sffsdr-u-boot.patch b/recipes/u-boot/files/sffsdr-u-boot.patch
new file mode 100644
index 0000000000..dcb34e2c51
--- /dev/null
+++ b/recipes/u-boot/files/sffsdr-u-boot.patch
@@ -0,0 +1,830 @@
+X-Mozilla-Status: 0001
+X-Mozilla-Status2: 00000000
+X-Mozilla-Keys:
+Return-Path: <u-boot-users-bounces@lists.sourceforge.net>
+Received: from mail5.zoneedit.com (mail5.zoneedit.com [69.64.89.63])
+ by www.balister.org (8.13.8/8.13.5) with ESMTP id m56KcqTB024438
+ for <balister@www.balister.org>; Fri, 6 Jun 2008 16:38:53 -0400
+Received: from lists-outbound.sourceforge.net (lists-outbound.sourceforge.net [66.35.250.225])
+ by mail5.zoneedit.com (Postfix) with ESMTP id BD2E51594778
+ for <philip@balister.org>; Fri, 6 Jun 2008 13:26:54 -0700 (PDT)
+Received: from sc8-sf-list1-new.sourceforge.net (sc8-sf-list1-new-b.sourceforge.net [10.3.1.93])
+ by sc8-sf-spam2.sourceforge.net (Postfix) with ESMTP
+ id 4C55A12A74; Fri, 6 Jun 2008 13:38:52 -0700 (PDT)
+Received: from sc8-sf-mx1-b.sourceforge.net ([10.3.1.91]
+ helo=mail.sourceforge.net)
+ by sc8-sf-list1-new.sourceforge.net with esmtp (Exim 4.43)
+ id 1K4ii2-00059t-CF
+ for u-boot-users@lists.sourceforge.net; Fri, 06 Jun 2008 13:38:50 -0700
+Received: from 201-217-static-ppp.3menatwork.com ([64.235.217.201]
+ helo=server.hugovil.com)
+ by mail.sourceforge.net with esmtp (Exim 4.44) id 1K4ihy-0003RQ-Od
+ for u-boot-users@lists.sourceforge.net; Fri, 06 Jun 2008 13:38:50 -0700
+Received: from localhost.localdomain (mail.lyrtech.com [204.101.172.90])
+ by server.hugovil.com (8.13.6/8.13.6) with ESMTP id m56KcjQC031450;
+ Fri, 6 Jun 2008 16:38:46 -0400
+From: Hugo Villeneuve <hugo.villeneuve@lyrtech.com>
+To: u-boot-users@lists.sourceforge.net
+Date: Fri, 6 Jun 2008 16:39:10 -0400
+Message-Id: <1212784750-10682-1-git-send-email-hugo.villeneuve@lyrtech.com>
+X-Mailer: git-send-email 1.5.4.5
+X-Greylist: Default is to whitelist mail, not delayed by milter-greylist-3.0
+ (server.hugovil.com [64.235.217.201]);
+ Fri, 06 Jun 2008 16:38:46 -0400 (EDT)
+X-Spam-Score: 1.2 (+)
+X-Spam-Report: Spam Filtering performed by sourceforge.net.
+ See http://spamassassin.org/tag/ for more details.
+ Report problems to
+ http://sf.net/tracker/?func=add&group_id=1&atid=200001
+ 1.0 FORGED_RCVD_HELO Received: contains a forged HELO
+ 0.2 UPPERCASE_25_50 message body is 25-50% uppercase
+ 0.0 DRUGS_SLEEP Refers to a sleep aid drug
+Cc: "Philip Balister, OpenSDR" <philip@opensdr.com>
+Subject: [U-Boot-Users] [PATCH V8] ARM: Add support for Lyrtech SFF-SDR
+ board (ARM926EJS)
+X-BeenThere: u-boot-users@lists.sourceforge.net
+X-Mailman-Version: 2.1.8
+Precedence: list
+List-Id: Universal Boot Loader general discussion
+ <u-boot-users.lists.sourceforge.net>
+List-Unsubscribe: <https://lists.sourceforge.net/lists/listinfo/u-boot-users>,
+ <mailto:u-boot-users-request@lists.sourceforge.net?subject=unsubscribe>
+List-Archive: <http://sourceforge.net/mailarchive/forum.php?forum_name=u-boot-users>
+List-Post: <mailto:u-boot-users@lists.sourceforge.net>
+List-Help: <mailto:u-boot-users-request@lists.sourceforge.net?subject=help>
+List-Subscribe: <https://lists.sourceforge.net/lists/listinfo/u-boot-users>,
+ <mailto:u-boot-users-request@lists.sourceforge.net?subject=subscribe>
+MIME-Version: 1.0
+Content-Type: text/plain; charset="us-ascii"
+Content-Transfer-Encoding: 7bit
+Sender: u-boot-users-bounces@lists.sourceforge.net
+Errors-To: u-boot-users-bounces@lists.sourceforge.net
+
+ARM: This patch adds support for the Lyrtech SFF-SDR
+board, based on the TI DaVinci architecture (ARM926EJS).
+
+Signed-off-by: Hugo Villeneuve <hugo.villeneuve@lyrtech.com>
+Signed-off-by: Philip Balister, OpenSDR <philip@opensdr.com>
+
+---
+
+ CREDITS | 5 +
+ MAKEALL | 1 +
+ Makefile | 3 +
+ board/davinci/sffsdr/Makefile | 51 ++++++
+ board/davinci/sffsdr/board_init.S | 32 ++++
+ board/davinci/sffsdr/config.mk | 42 +++++
+ board/davinci/sffsdr/sffsdr.c | 306 +++++++++++++++++++++++++++++++++++++
+ board/davinci/sffsdr/u-boot.lds | 52 +++++++
+ include/asm-arm/mach-types.h | 13 ++
+ include/configs/davinci_sffsdr.h | 148 ++++++++++++++++++
+ 10 files changed, 653 insertions(+), 0 deletions(-)
+
+diff --git a/CREDITS b/CREDITS
+index e84ef38..b855904 100644
+--- a/CREDITS
++++ b/CREDITS
+@@ -533,3 +533,8 @@ N: Timo Tuunainen
+ E: timo.tuunainen@sysart.fi
+ D: Support for Artila M-501 starter kit
+ W: http://www.sysart.fi/
++
++N: Philip Balister
++E: philip@opensdr.com
++D: Port to Lyrtech SFFSDR development board.
++W: www.opensdr.com
+diff --git a/MAKEALL b/MAKEALL
+index 37b4334..f53ceec 100755
+--- a/MAKEALL
++++ b/MAKEALL
+@@ -496,6 +496,7 @@ LIST_ARM9=" \
+ voiceblue \
+ davinci_dvevm \
+ davinci_schmoogie \
++ davinci_sffsdr \
+ davinci_sonata \
+ "
+
+diff --git a/Makefile b/Makefile
+index 6548f8e..05d90aa 100644
+--- a/Makefile
++++ b/Makefile
+@@ -2408,6 +2408,9 @@ davinci_dvevm_config : unconfig
+ 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
+
+diff --git a/board/davinci/sffsdr/Makefile b/board/davinci/sffsdr/Makefile
+new file mode 100644
+index 0000000..4413b33
+--- /dev/null
++++ b/board/davinci/sffsdr/Makefile
+@@ -0,0 +1,51 @@
++#
++# (C) Copyright 2000, 2001, 2002
++# Wolfgang Denk, DENX Software Engineering, wd@denx.de.
++#
++# Copyright (C) 2007 Sergey Kubushyn <ksi@koi8.net>
++#
++# 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
++
++LIB = $(obj)lib$(BOARD).a
++
++COBJS := $(BOARD).o
++SOBJS := board_init.o
++
++SRCS := $(SOBJS:.o=.S) $(COBJS:.o=.c)
++OBJS := $(addprefix $(obj),$(COBJS))
++SOBJS := $(addprefix $(obj),$(SOBJS))
++
++$(LIB): $(obj).depend $(OBJS) $(SOBJS)
++ $(AR) $(ARFLAGS) $@ $(OBJS) $(SOBJS)
++
++clean:
++ rm -f $(SOBJS) $(OBJS)
++
++distclean: clean
++ rm -f $(LIB) core *.bak *~ .depend
++
++#########################################################################
++# This is for $(obj).depend target
++include $(SRCTREE)/rules.mk
++
++sinclude $(obj).depend
++
++#########################################################################
+diff --git a/board/davinci/sffsdr/board_init.S b/board/davinci/sffsdr/board_init.S
+new file mode 100644
+index 0000000..84ecd96
+--- /dev/null
++++ b/board/davinci/sffsdr/board_init.S
+@@ -0,0 +1,32 @@
++/*
++ * Board-specific low level initialization code. Called at the very end
++ * of cpu/arm926ejs/davinci/lowlevel_init.S. Just returns if there is no
++ * initialization required.
++ *
++ * Copyright (C) 2007 Sergey Kubushyn <ksi@koi8.net>
++ *
++ * 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 <config.h>
++
++.globl dv_board_init
++dv_board_init:
++
++ mov pc, lr
+diff --git a/board/davinci/sffsdr/config.mk b/board/davinci/sffsdr/config.mk
+new file mode 100644
+index 0000000..b1c4ead
+--- /dev/null
++++ b/board/davinci/sffsdr/config.mk
+@@ -0,0 +1,42 @@
++#
++# Lyrtech SFF SDR board (ARM926EJS) cpu
++#
++# (C) Copyright 2002
++# Gary Jennejohn, DENX Software Engineering, <gj@denx.de>
++# David Mueller, ELSOFT AG, <d.mueller@elsoft.ch>
++#
++# Copyright (C) 2008 Lyrtech <www.lyrtech.com>
++# Copyright (C) 2008 Philip Balister, OpenSDR <philip@opensdr.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
++
++#
++# SFF SDR board has 1 bank of 128 MB DDR RAM
++# Physical Address:
++# 8000'0000 to 87FF'FFFF
++#
++# Linux-Kernel is expected to be at 8000'8000, entry 8000'8000
++# (mem base + reserved)
++#
++# Integrity kernel is expected to be at 8000'0000, entry 8000'00D0,
++# up to 81FF'FFFF (uses up to 32 MB of memory for text, heap, etc).
++#
++# we load ourself to 8400'0000 to provide at least 32MB spacing
++# between us and the Integrity kernel image
++TEXT_BASE = 0x84000000
+diff --git a/board/davinci/sffsdr/sffsdr.c b/board/davinci/sffsdr/sffsdr.c
+new file mode 100644
+index 0000000..31e0f24
+--- /dev/null
++++ b/board/davinci/sffsdr/sffsdr.c
+@@ -0,0 +1,306 @@
++/*
++ * Copyright (C) 2007 Sergey Kubushyn <ksi@koi8.net>
++ *
++ * Copyright (C) 2008 Lyrtech <www.lyrtech.com>
++ * Copyright (C) 2008 Philip Balister, OpenSDR <philip@opensdr.com>
++ *
++ * Parts are shamelessly stolen from various TI sources, original copyright
++ * follows:
++ *
++ * Copyright (C) 2004 Texas Instruments.
++ *
++ * 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., 675 Mass Ave, Cambridge, MA 02139, USA.
++ */
++
++#include <common.h>
++#include <i2c.h>
++#include <asm/arch/hardware.h>
++#include <asm/arch/emac_defs.h>
++
++#define DAVINCI_A3CR (0x01E00014) /* EMIF-A CS3 config register. */
++#define DAVINCI_A3CR_VAL (0x3FFFFFFD) /* EMIF-A CS3 value for FPGA. */
++
++#define INTEGRITY_SYSCFG_OFFSET 0x7E8
++#define INTEGRITY_CHECKWORD_OFFSET 0x7F8
++#define INTEGRITY_CHECKWORD_VALUE 0x10ADBEEF
++
++DECLARE_GLOBAL_DATA_PTR;
++
++extern void timer_init(void);
++extern int eth_hw_init(void);
++extern phy_t phy;
++
++
++/* Works on Always On power domain only (no PD argument) */
++void lpsc_on(unsigned int id)
++{
++ dv_reg_p mdstat, mdctl;
++
++ if (id >= DAVINCI_LPSC_GEM)
++ return; /* Don't work on DSP Power Domain */
++
++ mdstat = REG_P(PSC_MDSTAT_BASE + (id * 4));
++ mdctl = REG_P(PSC_MDCTL_BASE + (id * 4));
++
++ while (REG(PSC_PTSTAT) & 0x01);
++
++ if ((*mdstat & 0x1f) == 0x03)
++ return; /* Already on and enabled */
++
++ *mdctl |= 0x03;
++
++ /* Special treatment for some modules as for sprue14 p.7.4.2 */
++ switch (id) {
++ case DAVINCI_LPSC_VPSSSLV:
++ case DAVINCI_LPSC_EMAC:
++ case DAVINCI_LPSC_EMAC_WRAPPER:
++ case DAVINCI_LPSC_MDIO:
++ case DAVINCI_LPSC_USB:
++ case DAVINCI_LPSC_ATA:
++ case DAVINCI_LPSC_VLYNQ:
++ case DAVINCI_LPSC_UHPI:
++ case DAVINCI_LPSC_DDR_EMIF:
++ case DAVINCI_LPSC_AEMIF:
++ case DAVINCI_LPSC_MMC_SD:
++ case DAVINCI_LPSC_MEMSTICK:
++ case DAVINCI_LPSC_McBSP:
++ case DAVINCI_LPSC_GPIO:
++ *mdctl |= 0x200;
++ break;
++ }
++
++ REG(PSC_PTCMD) = 0x01;
++
++ while (REG(PSC_PTSTAT) & 0x03);
++ while ((*mdstat & 0x1f) != 0x03); /* Probably an overkill... */
++}
++
++void dsp_on(void)
++{
++ int i;
++
++ if (REG(PSC_PDSTAT1) & 0x1f)
++ return; /* Already on */
++
++ REG(PSC_GBLCTL) |= 0x01;
++ REG(PSC_PDCTL1) |= 0x01;
++ REG(PSC_PDCTL1) &= ~0x100;
++ REG(PSC_MDCTL_BASE + (DAVINCI_LPSC_GEM * 4)) |= 0x03;
++ REG(PSC_MDCTL_BASE + (DAVINCI_LPSC_GEM * 4)) &= 0xfffffeff;
++ REG(PSC_MDCTL_BASE + (DAVINCI_LPSC_IMCOP * 4)) |= 0x03;
++ REG(PSC_MDCTL_BASE + (DAVINCI_LPSC_IMCOP * 4)) &= 0xfffffeff;
++ REG(PSC_PTCMD) = 0x02;
++
++ for (i = 0; i < 100; i++) {
++ if (REG(PSC_EPCPR) & 0x02)
++ break;
++ }
++
++ REG(PSC_CHP_SHRTSW) = 0x01;
++ REG(PSC_PDCTL1) |= 0x100;
++ REG(PSC_EPCCR) = 0x02;
++
++ for (i = 0; i < 100; i++) {
++ if (!(REG(PSC_PTSTAT) & 0x02))
++ break;
++ }
++
++ REG(PSC_GBLCTL) &= ~0x1f;
++}
++
++int board_init(void)
++{
++ /* arch number of the board */
++ gd->bd->bi_arch_number = MACH_TYPE_SFFSDR;
++
++ /* address of boot parameters */
++ gd->bd->bi_boot_params = LINUX_BOOT_PARAM_ADDR;
++
++ /* Workaround for TMS320DM6446 errata 1.3.22 */
++ REG(PSC_SILVER_BULLET) = 0;
++
++ /* Power on required peripherals */
++ lpsc_on(DAVINCI_LPSC_EMAC);
++ lpsc_on(DAVINCI_LPSC_EMAC_WRAPPER);
++ lpsc_on(DAVINCI_LPSC_MDIO);
++ lpsc_on(DAVINCI_LPSC_I2C);
++ lpsc_on(DAVINCI_LPSC_UART0);
++ lpsc_on(DAVINCI_LPSC_TIMER1);
++ lpsc_on(DAVINCI_LPSC_GPIO);
++
++ /* Powerup the DSP */
++ dsp_on();
++
++ /* Bringup UART0 out of reset */
++ REG(UART0_PWREMU_MGMT) = 0x0000e003;
++
++ /* Enable GIO3.3V cells used for EMAC */
++ REG(VDD3P3V_PWDN) = 0;
++
++ /* Enable UART0 MUX lines */
++ REG(PINMUX1) |= 1;
++
++ /* Enable EMAC and AEMIF pins */
++ REG(PINMUX0) = 0x80000c1f;
++
++ /* Enable I2C pin Mux */
++ REG(PINMUX1) |= (1 << 7);
++
++ /* Set the Bus Priority Register to appropriate value */
++ REG(VBPR) = 0x20;
++
++ timer_init();
++
++ return(0);
++}
++
++/* Read ethernet MAC address from Integrity data structure inside EEPROM. */
++int read_mac_address(uint8_t *buf)
++{
++ u_int32_t value, mac[2], address;
++
++ /* Read Integrity data structure checkword. */
++ if (i2c_read(CFG_I2C_EEPROM_ADDR, INTEGRITY_CHECKWORD_OFFSET,
++ CFG_I2C_EEPROM_ADDR_LEN, (uint8_t *) &value, 4))
++ goto err;
++ if (value != INTEGRITY_CHECKWORD_VALUE)
++ return 1;
++
++ /* Read SYSCFG structure offset. */
++ if (i2c_read(CFG_I2C_EEPROM_ADDR, INTEGRITY_SYSCFG_OFFSET,
++ CFG_I2C_EEPROM_ADDR_LEN, (uint8_t *) &value, 4))
++ goto err;
++ address = 0x800 + (int) value; /* Address of SYSCFG structure. */
++
++ /* Read NET CONFIG structure offset. */
++ if (i2c_read(CFG_I2C_EEPROM_ADDR, address,
++ CFG_I2C_EEPROM_ADDR_LEN, (uint8_t *) &value, 4))
++ goto err;
++ address = 0x800 + (int) value; /* Address of NET CONFIG structure. */
++ address += 12; /* Address of NET INTERFACE CONFIG structure. */
++
++ /* Read NET INTERFACE CONFIG 2 structure offset. */
++ if (i2c_read(CFG_I2C_EEPROM_ADDR, address,
++ CFG_I2C_EEPROM_ADDR_LEN, (uint8_t *) &value, 4))
++ goto err;
++ address = 0x800 + 16 + (int) value; /* Address of NET INTERFACE
++ * CONFIG 2 structure. */
++
++ /* Read MAC address. */
++ if (i2c_read(CFG_I2C_EEPROM_ADDR, address,
++ CFG_I2C_EEPROM_ADDR_LEN, (uint8_t *) &mac[0], 8))
++ goto err;
++
++ buf[0] = mac[0] >> 24;
++ buf[1] = mac[0] >> 16;
++ buf[2] = mac[0] >> 8;
++ buf[3] = mac[0];
++ buf[4] = mac[1] >> 24;
++ buf[5] = mac[1] >> 16;
++
++ return 0;
++
++err:
++ printf("Read from EEPROM @ 0x%02x failed\n", CFG_I2C_EEPROM_ADDR);
++ return 1;
++}
++
++/* Platform dependent initialisation. */
++int misc_init_r(void)
++{
++ int i;
++ u_int8_t i2cbuf;
++ u_int8_t env_enetaddr[6], eeprom_enetaddr[6];
++ char *tmp = getenv("ethaddr");
++ char *end;
++ int clk;
++
++ /* EMIF-A CS3 configuration for FPGA. */
++ REG(DAVINCI_A3CR) = DAVINCI_A3CR_VAL;
++
++ clk = ((REG(PLL2_PLLM) + 1) * 27) / ((REG(PLL2_DIV2) & 0x1f) + 1);
++
++ printf("ARM Clock: %dMHz\n", ((REG(PLL1_PLLM) + 1) * 27) / 2);
++ printf("DDR Clock: %dMHz\n", (clk / 2));
++
++ /* Configure I2C switch (PCA9543) to enable channel 0. */
++ i2cbuf = CFG_I2C_PCA9543_ENABLE_CH0;
++ if (i2c_write(CFG_I2C_PCA9543_ADDR, 0,
++ CFG_I2C_PCA9543_ADDR_LEN, &i2cbuf, 1)) {
++ printf("Write to MUX @ 0x%02x failed\n", CFG_I2C_PCA9543_ADDR);
++ return 1;
++ }
++
++ /* Read Ethernet MAC address from the U-Boot environment. */
++ for (i = 0; i < 6; i++) {
++ env_enetaddr[i] = tmp ? simple_strtoul(tmp, &end, 16) : 0;
++ if (tmp)
++ tmp = (*end) ? end+1 : end;
++ }
++
++ /* Read Ethernet MAC address from EEPROM. */
++ if (read_mac_address(eeprom_enetaddr) == 0) {
++ if (memcmp(env_enetaddr, "\0\0\0\0\0\0", 6) != 0 &&
++ memcmp(env_enetaddr, eeprom_enetaddr, 6) != 0) {
++ printf("\nWarning: MAC addresses don't match:\n");
++ printf("\tHW MAC address: "
++ "%02X:%02X:%02X:%02X:%02X:%02X\n",
++ eeprom_enetaddr[0], eeprom_enetaddr[1],
++ eeprom_enetaddr[2], eeprom_enetaddr[3],
++ eeprom_enetaddr[4], eeprom_enetaddr[5]);
++ printf("\t\"ethaddr\" value: "
++ "%02X:%02X:%02X:%02X:%02X:%02X\n",
++ env_enetaddr[0], env_enetaddr[1],
++ env_enetaddr[2], env_enetaddr[3],
++ env_enetaddr[4], env_enetaddr[5]) ;
++ debug("### Set MAC addr from environment\n");
++ memcpy(eeprom_enetaddr, env_enetaddr, 6);
++ }
++ if (!tmp) {
++ char ethaddr[20];
++
++ sprintf(ethaddr, "%02X:%02X:%02X:%02X:%02X:%02X",
++ eeprom_enetaddr[0], eeprom_enetaddr[1],
++ eeprom_enetaddr[2], eeprom_enetaddr[3],
++ eeprom_enetaddr[4], eeprom_enetaddr[5]) ;
++ debug("### Set environment from HW MAC addr = \"%s\"\n",
++ ethaddr);
++ setenv("ethaddr", ethaddr);
++ }
++ }
++
++ if (!eth_hw_init()) {
++ printf("Ethernet init failed\n");
++ } else {
++ printf("ETH PHY: %s\n", phy.name);
++ }
++
++ /* On this platform, U-Boot is copied in RAM by the UBL,
++ * so we are always in the relocated state. */
++ gd->flags |= GD_FLG_RELOC;
++
++ return(0);
++}
++
++int dram_init(void)
++{
++ gd->bd->bi_dram[0].start = PHYS_SDRAM_1;
++ gd->bd->bi_dram[0].size = PHYS_SDRAM_1_SIZE;
++
++ return(0);
++}
+diff --git a/board/davinci/sffsdr/u-boot.lds b/board/davinci/sffsdr/u-boot.lds
+new file mode 100644
+index 0000000..a4fcd1a
+--- /dev/null
++++ b/board/davinci/sffsdr/u-boot.lds
+@@ -0,0 +1,52 @@
++/*
++ * (C) Copyright 2002
++ * Gary Jennejohn, DENX Software Engineering, <gj@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 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-littlearm", "elf32-littlearm", "elf32-littlearm")
++OUTPUT_ARCH(arm)
++ENTRY(_start)
++SECTIONS
++{
++ . = 0x00000000;
++ . = ALIGN(4);
++ .text :
++ {
++ cpu/arm926ejs/start.o (.text)
++ *(.text)
++ }
++ . = ALIGN(4);
++ .rodata : { *(.rodata) }
++ . = ALIGN(4);
++ .data : { *(.data) }
++ . = ALIGN(4);
++ .got : { *(.got) }
++
++ . = .;
++ __u_boot_cmd_start = .;
++ .u_boot_cmd : { *(.u_boot_cmd) }
++ __u_boot_cmd_end = .;
++
++ . = ALIGN(4);
++ __bss_start = .;
++ .bss (NOLOAD) : { *(.bss) }
++ _end = .;
++}
+diff --git a/include/asm-arm/mach-types.h b/include/asm-arm/mach-types.h
+index aaf2ea2..b347857 100644
+--- a/include/asm-arm/mach-types.h
++++ b/include/asm-arm/mach-types.h
+@@ -1595,6 +1595,7 @@ extern unsigned int __machine_arch_type;
+ #define MACH_TYPE_P300 1602
+ #define MACH_TYPE_XDACOMET 1603
+ #define MACH_TYPE_DEXFLEX2 1604
++#define MACH_TYPE_SFFSDR 1657
+
+ #ifdef CONFIG_ARCH_EBSA110
+ # ifdef machine_arch_type
+@@ -16500,6 +16501,18 @@ extern unsigned int __machine_arch_type;
+ # define machine_is_schmoogie() (0)
+ #endif
+
++#ifdef CONFIG_MACH_SFFSDR
++# ifdef machine_arch_type
++# undef machine_arch_type
++# define machine_arch_type __machine_arch_type
++# else
++# define machine_arch_type MACH_TYPE_SFFSDR
++# endif
++# define machine_is_sffsdr() (machine_arch_type == MACH_TYPE_SFFSDR)
++#else
++# define machine_is_sffsdr() (0)
++#endif
++
+ #ifdef CONFIG_MACH_AZTOOL
+ # ifdef machine_arch_type
+ # undef machine_arch_type
+diff --git a/include/configs/davinci_sffsdr.h b/include/configs/davinci_sffsdr.h
+new file mode 100644
+index 0000000..897e9e5
+--- /dev/null
++++ b/include/configs/davinci_sffsdr.h
+@@ -0,0 +1,148 @@
++/*
++ * Copyright (C) 2007 Sergey Kubushyn <ksi@koi8.net>
++ *
++ * Copyright (C) 2008 Lyrtech <www.lyrtech.com>
++ * Copyright (C) 2008 Philip Balister, OpenSDR <philip@opensdr.com>
++ *
++ * 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
++ */
++
++#ifndef __CONFIG_H
++#define __CONFIG_H
++#include <asm/sizes.h>
++
++/* Board */
++#define SFFSDR
++#define CFG_NAND_LARGEPAGE
++#define CFG_USE_NAND
++/* SoC Configuration */
++#define CONFIG_ARM926EJS /* arm926ejs CPU core */
++#define CONFIG_SYS_CLK_FREQ 297000000 /* Arm Clock frequency */
++#define CFG_TIMERBASE 0x01c21400 /* use timer 0 */
++#define CFG_HZ_CLOCK 27000000 /* Timer Input clock freq */
++#define CFG_HZ 1000
++/* EEPROM definitions for Atmel 24LC64 EEPROM chip */
++#define CFG_I2C_EEPROM_ADDR_LEN 2
++#define CFG_I2C_EEPROM_ADDR 0x50
++#define CFG_EEPROM_PAGE_WRITE_BITS 5
++#define CFG_EEPROM_PAGE_WRITE_DELAY_MS 20
++/* Memory Info */
++#define CFG_MALLOC_LEN (0x10000 + 256*1024) /* malloc() len */
++#define CFG_GBL_DATA_SIZE 128 /* reserved for initial data */
++#define CFG_MEMTEST_START 0x80000000 /* memtest start address */
++#define CFG_MEMTEST_END 0x81000000 /* 16MB RAM test */
++#define CONFIG_NR_DRAM_BANKS 1 /* we have 1 bank of DRAM */
++#define CONFIG_STACKSIZE (256*1024) /* regular stack */
++#define PHYS_SDRAM_1 0x80000000 /* DDR Start */
++#define PHYS_SDRAM_1_SIZE 0x08000000 /* DDR size 128MB */
++#define DDR_4BANKS /* 4-bank DDR2 (128MB) */
++/* Serial Driver info */
++#define CFG_NS16550
++#define CFG_NS16550_SERIAL
++#define CFG_NS16550_REG_SIZE 4 /* NS16550 register size */
++#define CFG_NS16550_COM1 0x01c20000 /* Base address of UART0 */
++#define CFG_NS16550_CLK 27000000 /* Input clock to NS16550 */
++#define CONFIG_CONS_INDEX 1 /* use UART0 for console */
++#define CONFIG_BAUDRATE 115200 /* Default baud rate */
++#define CFG_BAUDRATE_TABLE { 9600, 19200, 38400, 57600, 115200 }
++/* I2C Configuration */
++#define CONFIG_HARD_I2C
++#define CONFIG_DRIVER_DAVINCI_I2C
++#define CFG_I2C_SPEED 80000 /* 100Kbps won't work, silicon bug */
++#define CFG_I2C_SLAVE 10 /* Bogus, master-only in U-Boot */
++/* Network & Ethernet Configuration */
++#define CONFIG_DRIVER_TI_EMAC
++#define CONFIG_MII
++#define CONFIG_BOOTP_DEFAULT
++#define CONFIG_BOOTP_DNS
++#define CONFIG_BOOTP_DNS2
++#define CONFIG_BOOTP_SEND_HOSTNAME
++#define CONFIG_NET_RETRY_COUNT 10
++#define CONFIG_OVERWRITE_ETHADDR_ONCE
++/* Flash & Environment */
++#undef CFG_ENV_IS_IN_FLASH
++#define CFG_NO_FLASH
++#define CFG_ENV_IS_IN_NAND /* U-Boot env in NAND Flash */
++#define CFG_ENV_SECT_SIZE 2048 /* Env sector Size */
++#define CFG_ENV_SIZE SZ_128K
++#define CONFIG_SKIP_LOWLEVEL_INIT /* U-Boot is loaded by a bootloader */
++#define CONFIG_SKIP_RELOCATE_UBOOT /* to a proper address, init done */
++#define CFG_NAND_BASE 0x02000000
++#define CFG_NAND_HW_ECC
++#define CFG_MAX_NAND_DEVICE 1 /* Max number of NAND devices */
++#define NAND_MAX_CHIPS 1
++#define CFG_ENV_OFFSET 0x0 /* Block 0--not used by bootcode */
++/* I2C switch definitions for PCA9543 chip */
++#define CFG_I2C_PCA9543_ADDR 0x70
++#define CFG_I2C_PCA9543_ADDR_LEN 0 /* Single register. */
++#define CFG_I2C_PCA9543_ENABLE_CH0 0x01 /* Enable channel 0. */
++/* U-Boot general configuration */
++#undef CONFIG_USE_IRQ /* No IRQ/FIQ in U-Boot */
++#define CONFIG_MISC_INIT_R
++#define CONFIG_BOOTDELAY 5 /* Autoboot after 5 seconds. */
++#define CONFIG_BOOTFILE "uImage" /* Boot file name */
++#define CFG_PROMPT "U-Boot > " /* Monitor Command Prompt */
++#define CFG_CBSIZE 1024 /* Console I/O Buffer Size */
++#define CFG_PBSIZE \
++ (CFG_CBSIZE + sizeof(CFG_PROMPT) + 16) /* Print buffer size */
++#define CFG_MAXARGS 16 /* max number of command args */
++#define CFG_BARGSIZE CFG_CBSIZE /* Boot Argument Buffer Size */
++#define CFG_LOAD_ADDR 0x80700000 /* Default Linux kernel
++ * load address. */
++#define CONFIG_VERSION_VARIABLE
++#define CONFIG_AUTO_COMPLETE /* Won't work with hush so far,
++ * may be later */
++#define CFG_HUSH_PARSER
++#define CFG_PROMPT_HUSH_PS2 "> "
++#define CONFIG_CMDLINE_EDITING
++#define CFG_LONGHELP
++#define CONFIG_CRC32_VERIFY
++#define CONFIG_MX_CYCLIC
++/* Linux Information */
++#define LINUX_BOOT_PARAM_ADDR 0x80000100
++#define CONFIG_CMDLINE_TAG
++#define CONFIG_SETUP_MEMORY_TAGS
++#define CONFIG_BOOTARGS \
++ "mem=56M " \
++ "console=ttyS0,115200n8 " \
++ "root=/dev/nfs rw noinitrd ip=dhcp " \
++ "nfsroot=${serverip}:/nfsroot/sffsdr " \
++ "nwhwconf=device:eth0,hwaddr:${ethaddr}"
++#define CONFIG_BOOTCOMMAND \
++ "nand read 87A00000 100000 300000;" \
++ "bootelf 87A00000"
++/* U-Boot commands */
++#include <config_cmd_default.h>
++#define CONFIG_CMD_ASKENV
++#define CONFIG_CMD_DHCP
++#define CONFIG_CMD_DIAG
++#define CONFIG_CMD_I2C
++#define CONFIG_CMD_MII
++#define CONFIG_CMD_PING
++#define CONFIG_CMD_SAVES
++#define CONFIG_CMD_NAND
++#define CONFIG_CMD_EEPROM
++#undef CONFIG_CMD_BDI
++#undef CONFIG_CMD_FPGA
++#undef CONFIG_CMD_SETGETDCR
++#undef CONFIG_CMD_FLASH
++#undef CONFIG_CMD_IMLS
++/* KGDB support (if any) */
++#ifdef CONFIG_CMD_KGDB
++#define CONFIG_KGDB_BAUDRATE 115200 /* speed to run kgdb serial port */
++#define CONFIG_KGDB_SER_INDEX 1 /* which serial port to use */
++#endif
++#endif /* __CONFIG_H */
+
+-------------------------------------------------------------------------
+Check out the new SourceForge.net Marketplace.
+It's the best place to buy or sell services for
+just about anything Open Source.
+http://sourceforge.net/services/buy/index.php
+_______________________________________________
+U-Boot-Users mailing list
+U-Boot-Users@lists.sourceforge.net
+https://lists.sourceforge.net/lists/listinfo/u-boot-users
+
diff --git a/recipes/u-boot/files/u-boot-20061030-ext2load_hex.patch b/recipes/u-boot/files/u-boot-20061030-ext2load_hex.patch
new file mode 100644
index 0000000000..3cecb7485d
--- /dev/null
+++ b/recipes/u-boot/files/u-boot-20061030-ext2load_hex.patch
@@ -0,0 +1,14 @@
+This patch adds the hex-printing of the file size read by 'ext2load'
+Index: u-boot.git/common/cmd_ext2.c
+===================================================================
+--- u-boot.git.orig/common/cmd_ext2.c 2007-01-02 18:26:17.000000000 +0100
++++ u-boot.git/common/cmd_ext2.c 2007-01-02 18:26:27.000000000 +0100
+@@ -279,7 +279,7 @@
+ /* Loading ok, update default load address */
+ load_addr = addr;
+
+- printf ("\n%ld bytes read\n", filelen);
++ printf ("\n%ld (0x%lx) bytes read\n", filelen, filelen);
+ sprintf(buf, "%lX", filelen);
+ setenv("filesize", buf);
+
diff --git a/recipes/u-boot/files/uboot-20070311-tools_makefile_ln_sf.patch b/recipes/u-boot/files/uboot-20070311-tools_makefile_ln_sf.patch
new file mode 100644
index 0000000000..eca50615ad
--- /dev/null
+++ b/recipes/u-boot/files/uboot-20070311-tools_makefile_ln_sf.patch
@@ -0,0 +1,26 @@
+Index: git/tools/Makefile
+===================================================================
+--- git.orig/tools/Makefile 2008-03-03 13:32:32.000000000 +0800
++++ git/tools/Makefile 2008-03-03 13:40:23.000000000 +0800
+@@ -208,18 +208,18 @@
+
+ $(obj)environment.c:
+ @rm -f $(obj)environment.c
+- ln -s $(src)../common/environment.c $(obj)environment.c
++ ln -sf $(src)../common/environment.c $(obj)environment.c
+
+ $(obj)environment.o: $(obj)environment.c
+ $(CC) -g $(HOST_ENVIRO_CFLAGS) $(CPPFLAGS) -c -o $@ $<
+
+ $(obj)crc32.c:
+ @rm -f $(obj)crc32.c
+- ln -s $(src)../lib_generic/crc32.c $(obj)crc32.c
++ ln -sf $(src)../lib_generic/crc32.c $(obj)crc32.c
+
+ $(obj)sha1.c:
+ @rm -f $(obj)sha1.c
+- ln -s $(src)../lib_generic/sha1.c $(obj)sha1.c
++ ln -sf $(src)../lib_generic/sha1.c $(obj)sha1.c
+
+ $(LOGO_H): $(obj)bmp_logo $(LOGO_BMP)
+ $(obj)./bmp_logo $(LOGO_BMP) >$@
diff --git a/recipes/u-boot/files/uboot-eabi-fix-HACK.patch b/recipes/u-boot/files/uboot-eabi-fix-HACK.patch
new file mode 100644
index 0000000000..65b212917d
--- /dev/null
+++ b/recipes/u-boot/files/uboot-eabi-fix-HACK.patch
@@ -0,0 +1,197 @@
+Index: git/lib_arm/div0.c
+===================================================================
+--- git.orig/lib_arm/div0.c
++++ git/lib_arm/div0.c
+@@ -22,9 +22,3 @@
+ */
+
+ /* Replacement (=dummy) for GNU/Linux division-by zero handler */
+-void __div0 (void)
+-{
+- extern void hang (void);
+-
+- hang();
+-}
+Index: git/board/neo1973/common/bootmenu.c
+===================================================================
+--- git.orig/board/neo1973/common/bootmenu.c
++++ git/board/neo1973/common/bootmenu.c
+@@ -118,3 +118,14 @@ void neo1973_bootmenu(void)
+ bootmenu_add("Factory reset", factory_reset, NULL);
+ bootmenu();
+ }
++
++void raise()
++{
++ serial_printf( "*** something's wrong... please reset ***\n" );
++}
++
++void abort()
++{
++ serial_printf( "*** something's wrong... please reset ***\n" );
++}
++
+Index: git/board/neo1973/gta01/u-boot.lds
+===================================================================
+--- git.orig/board/neo1973/gta01/u-boot.lds
++++ git/board/neo1973/gta01/u-boot.lds
+@@ -39,6 +39,10 @@ SECTIONS
+
+ . = ALIGN(4);
+ .rodata : { *(.rodata) }
++ .ARM.extab : { *(.ARM.extab* .gnu.linkonce.armextab.*) }
++ __exidx_start = .;
++ .ARM.exidx : { *(.ARM.exidx* .gnu.linkonce.armexidx.*) }
++ __exidx_end = .;
+
+ . = ALIGN(4);
+ .data : { *(.data) }
+Index: git/board/neo1973/gta02/u-boot.lds
+===================================================================
+--- git.orig/board/neo1973/gta02/u-boot.lds
++++ git/board/neo1973/gta02/u-boot.lds
+@@ -39,6 +39,10 @@ SECTIONS
+
+ . = ALIGN(4);
+ .rodata : { *(.rodata) }
++ .ARM.extab : { *(.ARM.extab* .gnu.linkonce.armextab.*) }
++ __exidx_start = .;
++ .ARM.exidx : { *(.ARM.exidx* .gnu.linkonce.armexidx.*) }
++ __exidx_end = .;
+
+ . = ALIGN(4);
+ .data : { *(.data) }
+Index: git/board/neo1973/common/lowlevel_foo.lds
+===================================================================
+--- git.orig/board/neo1973/common/lowlevel_foo.lds
++++ git/board/neo1973/common/lowlevel_foo.lds
+@@ -37,6 +37,10 @@ SECTIONS
+
+ . = ALIGN(4);
+ .rodata : { *(.rodata) }
++ .ARM.extab : { *(.ARM.extab* .gnu.linkonce.armextab.*) }
++ __exidx_start = .;
++ .ARM.exidx : { *(.ARM.exidx* .gnu.linkonce.armexidx.*) }
++ __exidx_end = .;
+
+ . = ALIGN(4);
+ .data : { *(.data) }
+Index: git/board/hxd8/hxd8.c
+===================================================================
+--- git.orig/board/hxd8/hxd8.c
++++ git/board/hxd8/hxd8.c
+@@ -187,3 +187,6 @@ unsigned int dynpart_size[] = {
+ char *dynpart_names[] = {
+ "u-boot", "u-boot_env", "kernel", "splash", "rootfs", NULL };
+
++void raise() {}
++
++void abort() {}
+Index: git/board/hxd8/u-boot.lds
+===================================================================
+--- git.orig/board/hxd8/u-boot.lds
++++ git/board/hxd8/u-boot.lds
+@@ -39,6 +39,10 @@ SECTIONS
+
+ . = ALIGN(4);
+ .rodata : { *(.rodata) }
++ .ARM.extab : { *(.ARM.extab* .gnu.linkonce.armextab.*) }
++ __exidx_start = .;
++ .ARM.exidx : { *(.ARM.exidx* .gnu.linkonce.armexidx.*) }
++ __exidx_end = .;
+
+ . = ALIGN(4);
+ .data : { *(.data) }
+Index: git/board/hxd8/lowlevel_foo.lds
+===================================================================
+--- git.orig/board/hxd8/lowlevel_foo.lds
++++ git/board/hxd8/lowlevel_foo.lds
+@@ -37,6 +37,10 @@ SECTIONS
+
+ . = ALIGN(4);
+ .rodata : { *(.rodata) }
++ .ARM.extab : { *(.ARM.extab* .gnu.linkonce.armextab.*) }
++ __exidx_start = .;
++ .ARM.exidx : { *(.ARM.exidx* .gnu.linkonce.armexidx.*) }
++ __exidx_end = .;
+
+ . = ALIGN(4);
+ .data : { *(.data) }
+Index: git/board/qt2410/qt2410.c
+===================================================================
+--- git.orig/board/qt2410/qt2410.c
++++ git/board/qt2410/qt2410.c
+@@ -156,3 +156,7 @@ unsigned int dynpart_size[] = {
+ char *dynpart_names[] = {
+ "u-boot", "u-boot_env", "kernel", "splash", "rootfs", NULL };
+
++void raise() {}
++
++void abort() {}
++
+Index: git/board/qt2410/u-boot.lds
+===================================================================
+--- git.orig/board/qt2410/u-boot.lds
++++ git/board/qt2410/u-boot.lds
+@@ -39,6 +39,10 @@ SECTIONS
+
+ . = ALIGN(4);
+ .rodata : { *(.rodata) }
++ .ARM.extab : { *(.ARM.extab* .gnu.linkonce.armextab.*) }
++ __exidx_start = .;
++ .ARM.exidx : { *(.ARM.exidx* .gnu.linkonce.armexidx.*) }
++ __exidx_end = .;
+
+ . = ALIGN(4);
+ .data : { *(.data) }
+Index: git/Makefile
+===================================================================
+--- git.orig/Makefile
++++ git/Makefile
+@@ -225,7 +225,7 @@ LIBS := $(addprefix $(obj),$(LIBS))
+ .PHONY : $(LIBS)
+
+ # Add GCC lib
+-PLATFORM_LIBS += -L $(shell dirname `$(CC) $(CFLAGS) -print-libgcc-file-name`) -lgcc
++PLATFORM_LIBS += -L $(shell dirname `$(CC) $(CFLAGS) -print-libgcc-file-name`) -lgcc -lgcc_eh
+
+ # The "tools" are needed early, so put this first
+ # Don't include stuff already done in $(LIBS)
+Index: git/board/smdk2440/smdk2440.c
+===================================================================
+--- git.orig/board/smdk2440/smdk2440.c
++++ git/board/smdk2440/smdk2440.c
+@@ -150,3 +150,6 @@ char *dynpart_names[] = {
+ "u-boot", "u-boot_env", "kernel", "splash", "rootfs", NULL };
+
+
++void raise() {}
++void abort() {}
++
+Index: git/board/smdk2440/u-boot.lds
+===================================================================
+--- git.orig/board/smdk2440/u-boot.lds
++++ git/board/smdk2440/u-boot.lds
+@@ -39,6 +39,10 @@ SECTIONS
+
+ . = ALIGN(4);
+ .rodata : { *(.rodata) }
++ .ARM.extab : { *(.ARM.extab* .gnu.linkonce.armextab.*) }
++ __exidx_start = .;
++ .ARM.exidx : { *(.ARM.exidx* .gnu.linkonce.armexidx.*) }
++ __exidx_end = .;
+
+ . = ALIGN(4);
+ .data : { *(.data) }
+Index: git/board/neo1973/gta02/gta02.c
+===================================================================
+--- git.orig/board/neo1973/gta02/gta02.c
++++ git/board/neo1973/gta02/gta02.c
+@@ -321,3 +321,7 @@ int neo1973_set_charge_mode(enum neo1973
+ /* FIXME */
+ return 0;
+ }
++
++void raise() {}
++void abort() {}
++