* Patch by Thomas Frieden, 13 Nov 2002:
  Add code for AmigaOne board
  (preliminary merge to U-Boot, still WIP)

* Patch by Jon Diekema, 12 Nov 2002:
  - Adding URL for IEEE OUI lookup
  - Making the autoboot #defines dependent on CONFIG_AUTOBOOT_KEYED
    being defined.
  - In the CONFIG_EXTRA_ENV_SETTINGS #define, the root-on-initrd and
    root-on-nfs macros are designed to switch how the default boot
    method gets defined.
diff --git a/include/asm-ppc/global_data.h b/include/asm-ppc/global_data.h
index 7cf234d..3470180 100644
--- a/include/asm-ppc/global_data.h
+++ b/include/asm-ppc/global_data.h
@@ -62,6 +62,9 @@
 #if defined(CONFIG_SANDPOINT) || defined(CONFIG_MUSENKI)
 	void *		console_addr;
 #endif
+#ifdef CONFIG_AMIGAONEG3SE
+	unsigned long	relocaddr;	/* Start address of U-Boot in RAM */
+#endif
 #if defined(CONFIG_LCD) || defined(CONFIG_VIDEO)
 	unsigned long	fb_base;	/* Base address of framebuffer memory	*/
 #endif
diff --git a/include/cmd_boota.h b/include/cmd_boota.h
new file mode 100644
index 0000000..3ec3118
--- /dev/null
+++ b/include/cmd_boota.h
@@ -0,0 +1,42 @@
+/*
+ * (C) Copyright 2001
+ * Thomas Frieden, Hyperion Entertainment
+ * ThomasF@hyperion-entertainment.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
+ */
+#ifndef _CMD_BOOTA_H
+#define _CMD_BOOTA_H
+
+#include <common.h>
+#include <command.h>
+
+#if defined(CONFIG_AMIGAONEG3SE) && (CONFIG_COMMANDS & CFG_CMD_BSP)
+#define CMD_TBL_BOOTA     MK_CMD_TBL_ENTRY(                      \
+        "boota", 5,   3,      1,      do_boota,                   \
+        "boota   - boot an Amiga kernel\n",                     \
+        "address disk"                                        \
+),
+
+int do_boota (cmd_tbl_t *cmdtp, int flag, int argc, char *argv[] );
+#else
+#define CMD_TBL_BOOTA
+#endif
+
+#endif /* _CMD_BOOTA_H */
diff --git a/include/cmd_bsp.h b/include/cmd_bsp.h
index b39d50b..e4b1041 100644
--- a/include/cmd_bsp.h
+++ b/include/cmd_bsp.h
@@ -1,5 +1,5 @@
 /*
- * (C) Copyright 2001
+ * (C) Copyright 2001, 2002
  * Wolfgang Denk, DENX Software Engineering, wd@denx.de.
  *
  * See file CREDITS for list of people who contributed to this
@@ -29,7 +29,7 @@
 
 #if (CONFIG_COMMANDS & CFG_CMD_BSP)
 
-/* ----- LWMON -----------------------------------------------------------------
+/* ----- LWMON ---------------------------------------------------------
  */
 #if defined(CONFIG_LWMON)
 
@@ -54,10 +54,9 @@
 int do_lsb (cmd_tbl_t *cmdtp, int flag, int argc, char *argv[]);
 
 #endif	/* CONFIG_LWMON */
-/* ----------------------------------------------------------------------------*/
+/* --------------------------------------------------------------------	*/
 
-/* ----- PCU E -----------------------------------------------------------------
- */
+/* ----- PCU E -------------------------------------------------------- */
 #if defined(CONFIG_PCU_E)
 
 #define CMD_TBL_BSP	MK_CMD_TBL_ENTRY(					\
@@ -69,10 +68,9 @@
 int do_puma (cmd_tbl_t *cmdtp, int flag, int argc, char *argv[]);
 
 #endif	/* CONFIG_PCU_E */
-/* ----------------------------------------------------------------------------*/
+/* --------------------------------------------------------------------	*/
 
-/* ----- CCM/SCM ---------------------------------------------------------------
- */
+/* ----- CCM/SCM ------------------------------------------------------ */
 #if defined(CONFIG_CCM) || defined(CONFIG_SCM)
 
 #define CMD_TBL_BSP	MK_CMD_TBL_ENTRY(					\
@@ -85,10 +83,9 @@
 int do_fpga (cmd_tbl_t *cmdtp, int flag, int argc, char *argv[]);
 
 #endif	/* CONFIG_CCM, CONFIG_SCM */
-/* ----------------------------------------------------------------------------*/
+/* --------------------------------------------------------------------	*/
 
-/* ----- PIP405 -----------------------------------------------------------------
- */
+/* ----- PIP405 ------------------------------------------------------- */
 #if defined(CONFIG_PIP405)
 
 #define	CMD_TBL_BSP MK_CMD_TBL_ENTRY(				\
@@ -101,9 +98,9 @@
 int do_pip405 (cmd_tbl_t *cmdtp, int flag, int argc, char *argv[]);
 
 #endif /* CONFIG_PIP405 */
-/* ----------------------------------------------------------------------------*/
-/* ----- MIP405 -----------------------------------------------------------------
- */
+/* --------------------------------------------------------------------	*/
+
+/* ----- MIP405 ------------------------------------------------------- */
 #if defined(CONFIG_MIP405)
 
 #define	CMD_TBL_BSP MK_CMD_TBL_ENTRY(				\
@@ -115,10 +112,9 @@
 int do_mip405 (cmd_tbl_t *cmdtp, int flag, int argc, char *argv[]);
 
 #endif /* CONFIG_MIP405 */
-/* ----------------------------------------------------------------------------*/
+/* --------------------------------------------------------------------	*/
 
-/* ----- DASA_SIM ---------------------------------------------------------------
- */
+/* ----- DASA_SIM ----------------------------------------------------- */
 #if defined(CONFIG_DASA_SIM)
 
 #define	CMD_TBL_BSP MK_CMD_TBL_ENTRY(				                \
@@ -130,10 +126,9 @@
 int do_pci9054 (cmd_tbl_t *cmdtp, int flag, int argc, char *argv[]);
 
 #endif /* CONFIG_DASA_SIM */
-/* ----------------------------------------------------------------------------*/
+/* --------------------------------------------------------------------	*/
 
-/* ----- HYMOD -----------------------------------------------------------------
- */
+/* ----- HYMOD -------------------------------------------------------- */
 #if defined(CONFIG_HYMOD)
 
 #define	CMD_TBL_BSP	MK_CMD_TBL_ENTRY(				\
@@ -171,8 +166,9 @@
 int do_eecl (cmd_tbl_t *cmdtp, int flag, int argc, char *argv[]);
 
 #endif	/* CONFIG_HYMOD */
-/* ----------------------------------------------------------------------------*/
-/* CRAY405 (L1) */
+/* --------------------------------------------------------------------	*/
+
+/* ----- CRAY405 (L1) ------------------------------------------------- */
 #if defined (CONFIG_CRAYL1)
 #define	CMD_TBL_BSP MK_CMD_TBL_ENTRY(						\
 	"L1cmd",	5,	4,	1,	do_crayL1,			\
@@ -182,10 +178,10 @@
 ),
 int do_crayL1 (cmd_tbl_t *cmdtp, int flag, int argc, char *argv[]);
 #endif /* CONFIG_CRAY405 */
-/* ----------------------------------------------------------------------------*/
+/* --------------------------------------------------------------------	*/
 
+/* ----- EVB64260 ----------------------------------------------------- */
 #if defined (CONFIG_EVB64260)
-/* ----- EVB64260 -------------------------------------------------------------*/
 #ifdef CONFIG_ZUMA_V2
 #define CMD_TBL_BSP  ZUMA_TBL_ENTRY
 
@@ -218,9 +214,9 @@
 #endif /* ZUMA_NTL */
 
 #endif /* CONFIG_EVB64260 */
-/* ----------------------------------------------------------------------------*/
+/* --------------------------------------------------------------------	*/
 
-/* -----W7O--------------------------------------------------------------------*/
+/* -----W7O------------------------------------------------------------ */
 #if defined(CONFIG_W7O)
 
 #define CMD_TBL_BSP MK_CMD_TBL_ENTRY(			\
@@ -233,18 +229,18 @@
 extern int do_vpd (cmd_tbl_t *, int, int, char *[]);
 
 #endif	/* CONFIG_W7O */
-/* ----------------------------------------------------------------------------*/
+/* --------------------------------------------------------------------	*/
 
-/* ---- PCIPPC2 / PCIPPC6 -----------------------------------------------------*/
+/* ---- PCIPPC2 / PCIPPC6 --------------------------------------------- */
 #if defined(CONFIG_PCIPPC2) || defined(CONFIG_PCIPPC6)
 #if defined(CONFIG_WATCHDOG)
 
 #define CMD_TBL_BSP MK_CMD_TBL_ENTRY(			\
-	"wd",	3,	2,	1,	do_wd,					\
-	"wd      - check and set watchdog\n",					\
-	"on   - switch watchDog on\n"							\
-	"wd off  - switch watchdog off\n"						\
-	"wd      - print current status\n"					\
+	"wd",	3,	2,	1,	do_wd,		\
+	"wd      - check and set watchdog\n",		\
+	"on   - switch watchDog on\n"			\
+	"wd off  - switch watchdog off\n"		\
+	"wd      - print current status\n"		\
 ),
 
 extern int do_wd (cmd_tbl_t *, int, int, char *[]);
@@ -254,9 +250,9 @@
 #endif  /* CONFIG_WATCHDOG */
 
 #endif	/* CONFIG_PCIPPC2 , CONFIG_PCIPPC6 */
-/* ----------------------------------------------------------------------------*/
+/* --------------------------------------------------------------------	*/
 
-/* ----- PN62 -----------------------------------------------------------------*/
+/* ----- PN62 --------------------------------------------------------- */
 #if defined(CONFIG_PN62)
 
 #define CMD_TBL_BSP MK_CMD_TBL_ENTRY(				\
@@ -274,40 +270,46 @@
 extern int do_loadpci (cmd_tbl_t *, int, int, char *[]);
 extern int do_led (cmd_tbl_t *, int, int, char *[]);
 #endif /* CONFIG_PN62 */
-/* ----------------------------------------------------------------------------*/
+/* --------------------------------------------------------------------	*/
 
-/* ----- TRAB ------------------------------------------------------------------
- */
+/* ----- TRAB --------------------------------------------------------- */
 #if defined(CONFIG_TRAB)
 
-#define	CMD_TBL_BSP	MK_CMD_TBL_ENTRY(					\
-	"kbd",	3,	1,	1,	do_kbd,					\
-	"kbd     - read keyboard status\n",					\
-	NULL									\
+#define	CMD_TBL_BSP	MK_CMD_TBL_ENTRY(			\
+	"kbd",	3,	1,	1,	do_kbd,			\
+	"kbd     - read keyboard status\n",			\
+	NULL							\
 ),
 
 int do_kbd (cmd_tbl_t *cmdtp, int flag, int argc, char *argv[]);
 
 #endif	/* CONFIG_TRAB */
-/* ----------------------------------------------------------------------------*/
+/* --------------------------------------------------------------------	*/
 
-#else
-#define CMD_TBL_BSP
-#endif	/* CFG_CMD_BSP */
-
-/* ----- R360MPI ---------------------------------------------------------------
- */
+/* ----- R360MPI ------------------------------------------------------ */
 #if defined(CONFIG_R360MPI)
 
-#define	CMD_TBL_BSP	MK_CMD_TBL_ENTRY(					\
-	"kbd",	3,	1,	1,	do_kbd,					\
-	"kbd     - read keyboard status\n",					\
-	NULL									\
+#define	CMD_TBL_BSP	MK_CMD_TBL_ENTRY(			\
+	"kbd",	3,	1,	1,	do_kbd,			\
+	"kbd     - read keyboard status\n",			\
+	NULL							\
 ),
 
 int do_kbd (cmd_tbl_t *cmdtp, int flag, int argc, char *argv[]);
 
 #endif	/* CONFIG_R360MPI */
-/* ----------------------------------------------------------------------------*/
+/* --------------------------------------------------------------------	*/
+
+/* ------ AMIGAONEG3SE ------------------------------------------------ */
+#if defined(CONFIG_AMIGAONEG3SE)
+
+#define CMD_TBL_BSP	/* dummy */
+
+#endif  /* AmigaOneG3SE */
+/* -------------------------------------------------------------------- */
+
+#else
+#define CMD_TBL_BSP
+#endif	/* CFG_CMD_BSP */
 
 #endif	/* _CMD_BSP_H_ */
diff --git a/include/cmd_confdefs.h b/include/cmd_confdefs.h
index 25f386b..c462c3f 100644
--- a/include/cmd_confdefs.h
+++ b/include/cmd_confdefs.h
@@ -12,7 +12,7 @@
  *
  * 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
+ * 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
@@ -24,8 +24,8 @@
 /*
  *  Definitions for Configuring the monitor commands
  */
-#ifndef	_CMD_CONFIG_H
-#define	_CMD_CONFIG_H
+#ifndef _CMD_CONFIG_H
+#define _CMD_CONFIG_H
 
 /*
  * Configurable monitor commands
@@ -42,27 +42,27 @@
 #define CFG_CMD_ENV		0x00000100	/* saveenv			*/
 #define CFG_CMD_KGDB		0x00000200	/* kgdb				*/
 #define CFG_CMD_PCMCIA		0x00000400	/* PCMCIA support		*/
-#define	CFG_CMD_IDE		0x00000800	/* IDE harddisk support		*/
-#define	CFG_CMD_PCI		0x00001000	/* pciinfo			*/
-#define	CFG_CMD_IRQ		0x00002000	/* irqinfo			*/
+#define CFG_CMD_IDE		0x00000800	/* IDE harddisk support		*/
+#define CFG_CMD_PCI		0x00001000	/* pciinfo			*/
+#define CFG_CMD_IRQ		0x00002000	/* irqinfo			*/
 #define CFG_CMD_BOOTD		0x00004000	/* bootd			*/
 #define CFG_CMD_CONSOLE		0x00008000	/* coninfo			*/
 #define CFG_CMD_EEPROM		0x00010000	/* EEPROM read/write support	*/
-#define	CFG_CMD_ASKENV		0x00020000	/* ask for env variable		*/
-#define	CFG_CMD_RUN		0x00040000	/* run command in env variable	*/
-#define	CFG_CMD_ECHO		0x00080000	/* echo arguments		*/
-#define	CFG_CMD_I2C		0x00100000	/* I2C serial bus support	*/
-#define	CFG_CMD_REGINFO		0x00200000	/* Register dump		*/
-#define	CFG_CMD_IMMAP		0x00400000	/* IMMR dump support		*/
-#define	CFG_CMD_DATE		0x00800000	/* support for RTC, date/time...*/
+#define CFG_CMD_ASKENV		0x00020000	/* ask for env variable		*/
+#define CFG_CMD_RUN		0x00040000	/* run command in env variable	*/
+#define CFG_CMD_ECHO		0x00080000	/* echo arguments		*/
+#define CFG_CMD_I2C		0x00100000	/* I2C serial bus support	*/
+#define CFG_CMD_REGINFO		0x00200000	/* Register dump		*/
+#define CFG_CMD_IMMAP		0x00400000	/* IMMR dump support		*/
+#define CFG_CMD_DATE		0x00800000	/* support for RTC, date/time...*/
 #define CFG_CMD_DHCP		0x01000000	/* DHCP Support			*/
 #define CFG_CMD_BEDBUG		0x02000000	/* Include BedBug Debugger	*/
-#define	CFG_CMD_FDC		0x04000000	/* Floppy Disk Support		*/
-#define	CFG_CMD_SCSI		0x08000000	/* SCSI Support			*/
-#define	CFG_CMD_AUTOSCRIPT	0x10000000	/* Autoscript Support		*/
-#define	CFG_CMD_MII		0x20000000	/* MII support			*/
+#define CFG_CMD_FDC		0x04000000	/* Floppy Disk Support		*/
+#define CFG_CMD_SCSI		0x08000000	/* SCSI Support			*/
+#define CFG_CMD_AUTOSCRIPT	0x10000000	/* Autoscript Support		*/
+#define CFG_CMD_MII		0x20000000	/* MII support			*/
 #define CFG_CMD_SETGETDCR	0x40000000	/* DCR support on 4xx		*/
-#define	CFG_CMD_BSP		0x80000000	/* Board Specific functions	*/
+#define CFG_CMD_BSP		0x80000000	/* Board Specific functions	*/
 
 #define CFG_CMD_ELF	0x0000000100000000	/* ELF (VxWorks) load/boot cmd	*/
 #define CFG_CMD_MISC	0x0000000200000000	/* Misc functions like sleep etc*/
@@ -70,13 +70,14 @@
 #define CFG_CMD_DOC	0x0000000800000000	/* Disk-On-Chip Support		*/
 #define CFG_CMD_JFFS2	0x0000001000000000	/* JFFS2 Support		*/
 #define CFG_CMD_DTT	0x0000002000000000	/* Digital Therm and Thermostat */
-#define CFG_CMD_SDRAM	0x0000004000000000	/* SDRAM DIMM SPD info printout	*/
+#define CFG_CMD_SDRAM	0x0000004000000000	/* SDRAM DIMM SPD info printout */
 #define CFG_CMD_DIAG	0x0000008000000000	/* Diagnostics			*/
-#define CFG_CMD_FPGA	0x0000010000000000	/* FPGA configuration Support   */
+#define CFG_CMD_FPGA	0x0000010000000000	/* FPGA configuration Support	*/
 #define CFG_CMD_HWFLOW	0x0000020000000000	/* RTS/CTS hw flow control	*/
 #define CFG_CMD_SAVES	0x0000040000000000	/* save S record dump		*/
 #define CFG_CMD_SPI	0x0000100000000000	/* SPI utility			*/
-#define CFG_CMD_FDOS    0x0000200000000000      /* Floppy DOS support           */
+#define CFG_CMD_FDOS	0x0000200000000000	/* Floppy DOS support		*/
+#define CFG_CMD_VFD	0x0000400000000000	/* VFD support (TRAB)		*/
 
 #define CFG_CMD_ALL	0xFFFFFFFFFFFFFFFF	/* ALL commands			*/
 
@@ -96,7 +97,7 @@
 			CFG_CMD_EEPROM	| \
 			CFG_CMD_ELF	| \
 			CFG_CMD_FDC	| \
-                        CFG_CMD_FDOS    | \
+			CFG_CMD_FDOS	| \
 			CFG_CMD_HWFLOW	| \
 			CFG_CMD_I2C	| \
 			CFG_CMD_IDE	| \
@@ -107,7 +108,7 @@
 			CFG_CMD_MII	| \
 			CFG_CMD_PCI	| \
 			CFG_CMD_PCMCIA	| \
-			CFG_CMD_REGINFO	| \
+			CFG_CMD_REGINFO | \
 			CFG_CMD_SAVES	| \
 			CFG_CMD_SCSI	| \
 			CFG_CMD_SDRAM	| \
@@ -117,10 +118,10 @@
 
 /* Default configuration
  */
-#define	CONFIG_CMD_DFL	(CFG_CMD_ALL & ~CFG_CMD_NONSTD)
+#define CONFIG_CMD_DFL	(CFG_CMD_ALL & ~CFG_CMD_NONSTD)
 
 #ifndef CONFIG_COMMANDS
-#define CONFIG_COMMANDS	CONFIG_CMD_DFL
+#define CONFIG_COMMANDS CONFIG_CMD_DFL
 #endif
 
 
diff --git a/include/cmd_menu.h b/include/cmd_menu.h
new file mode 100644
index 0000000..ad1bd7f
--- /dev/null
+++ b/include/cmd_menu.h
@@ -0,0 +1,42 @@
+/*
+ * (C) Copyright 2001
+ * Hans-Jörg Frieden, Hyperion Entertainment
+ * Hans-JoergF@hyperion-entertainment.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
+ */
+#ifndef _CMD_MENU_H
+#define _CMD_MENU_H
+
+#include <common.h>
+#include <command.h>
+
+#if defined(CONFIG_AMIGAONEG3SE) && (CONFIG_COMMANDS & CFG_CMD_BSP)
+#define CMD_TBL_MENU     MK_CMD_TBL_ENTRY(                      \
+        "menu", 3,   1,      1,      do_menu,                   \
+        "menu    - display BIOS setup menu\n",                     \
+        ""                                                      \
+),
+
+int do_menu( cmd_tbl_t *cmdtp, int flag, int argc, char *argv[] );
+#else
+#define CMD_TBL_MENU
+#endif
+
+#endif /* _CMD_MENU_H */
diff --git a/include/common.h b/include/common.h
index a950cdc..d9d5702 100644
--- a/include/common.h
+++ b/include/common.h
@@ -81,6 +81,18 @@
 
 
 /*
+ * General Purpose Utilities
+ */
+#define min(X, Y)				\
+	({ typeof (X) __x = (X), __y = (Y);	\
+		(__x < __y) ? __x : __y; })
+
+#define max(X, Y)				\
+	({ typeof (X) __x = (X), __y = (Y);	\
+		(__x > __y) ? __x : __y; })
+
+
+/*
  * Function Prototypes
  */
 
diff --git a/include/configs/AmigaOneG3SE.h b/include/configs/AmigaOneG3SE.h
new file mode 100644
index 0000000..7e40c53
--- /dev/null
+++ b/include/configs/AmigaOneG3SE.h
@@ -0,0 +1,383 @@
+/*
+ * (C) Copyright 2002
+ * 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 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
+ */
+
+/*
+ *
+ * Configuration settings for the AmigaOneG3SE board.
+ *
+ */
+
+/* ------------------------------------------------------------------------- */
+
+/*
+ * board/config.h - configuration options, board specific
+ */
+
+#ifndef __CONFIG_H
+#define __CONFIG_H
+
+/*
+ * High Level Configuration Options
+ * (easy to change)
+ */
+
+#define CONFIG_AMIGAONEG3SE	1
+
+#define CONFIG_BOARD_PRE_INIT	1
+#define CONFIG_MISC_INIT_R	1
+
+#define CONFIG_VERY_BIG_RAM	1
+
+#define CONFIG_CONS_INDEX	1
+#define CONFIG_BAUDRATE		9600
+#define CFG_BAUDRATE_TABLE	{ 9600, 19200, 38400, 57600, 115200 }
+
+#undef CONFIG_CLOCKS_IN_MHZ		/* clocks passed to Linux in Hz */
+
+#define CONFIG_BOOTARGS		"root=/dev/ram rw ramdisk=4096"
+
+#define CONFIG_BOOTP_MASK	(CONFIG_BOOTP_DEFAULT | \
+				 CONFIG_BOOTP_BOOTFILESIZE)
+
+#define CONFIG_MAC_PARTITION
+#define CONFIG_DOS_PARTITION
+#define CONFIG_AMIGA_PARTITION
+
+#define CONFIG_COMMANDS		(CONFIG_CMD_DFL | \
+				 CFG_CMD_ASKENV | \
+				 CFG_CMD_BSP	| \
+				 CFG_CMD_DATE	| \
+				 CFG_CMD_DHCP	| \
+				 CFG_CMD_ELF	| \
+				 CFG_CMD_NET	| \
+				 CFG_CMD_IDE	| \
+				 CFG_CMD_FDC	| \
+				 CFG_CMD_CACHE	| \
+				 CFG_CMD_CONSOLE| \
+				 CFG_CMD_USB	| \
+				 CFG_CMD_BSP	| \
+				 CFG_CMD_PCI	)
+
+/*				    CFG_CMD_MII	   | \ */
+
+#define CONFIG_PCI		1
+/* #define CONFIG_PCI_SCAN_SHOW 1 */
+#define CONFIG_PCI_PNP		1	/* PCI plug-and-play */
+
+/* This must be included AFTER the definition of CONFIG_COMMANDS (if any)
+ */
+#include <cmd_confdefs.h>
+
+
+/*
+ * Miscellaneous configurable options
+ */
+#define CFG_LONGHELP			/* undef to save memory		*/
+#define CFG_PROMPT	"=> "		/* Monitor Command Prompt	*/
+
+#define CFG_HUSH_PARSER		1	/* use "hush" command parser	*/
+/* #undef CFG_HUSH_PARSER */
+#ifdef	CFG_HUSH_PARSER
+#define CFG_PROMPT_HUSH_PS2	"> "
+#endif
+#define CFG_CBSIZE	1024		/* Console I/O Buffer Size	*/
+
+/* Print Buffer Size
+ */
+#define CFG_PBSIZE	(CFG_CBSIZE + sizeof(CFG_PROMPT) + 16)
+
+#define CFG_MAXARGS	64		/* max number of command args	*/
+#define CFG_BARGSIZE	CFG_CBSIZE	/* Boot Argument Buffer Size	*/
+#define CFG_LOAD_ADDR	0x00500000	/* Default load address		*/
+
+/*-----------------------------------------------------------------------
+ * Start addresses for the final memory configuration
+ * (Set up by the startup code)
+ * Please note that CFG_SDRAM_BASE _must_ start at 0
+ */
+#define CFG_SDRAM_BASE	    0x00000000
+#define CFG_FLASH_BASE	    0xFFF00000
+#define CFG_FLASH_MAX_SIZE  0x00080000
+/* Maximum amount of RAM.
+ */
+#define CFG_MAX_RAM_SIZE    0x80000000	/* 2G			*/
+
+#define CFG_RESET_ADDRESS   0xFFF00100
+
+#define CFG_MONITOR_BASE    TEXT_BASE
+
+#define CFG_MONITOR_LEN	    (768 << 10) /* Reserve 512 kB for Monitor	*/
+#define CFG_MALLOC_LEN	    (2500 << 10) /* Reserve 128 kB for malloc() */
+
+#if CFG_MONITOR_BASE >= CFG_SDRAM_BASE && \
+    CFG_MONITOR_BASE < CFG_SDRAM_BASE + CFG_MAX_RAM_SIZE
+#define CFG_RAMBOOT
+#else
+#undef CFG_RAMBOOT
+#endif
+
+#define CFG_MEMTEST_START	0x00004000	/* memtest works on	*/
+#define CFG_MEMTEST_END		0x02000000	/* 0 ... 32 MB in DRAM	*/
+
+/*-----------------------------------------------------------------------
+ * Definitions for initial stack pointer and data area
+ */
+
+/* Size in bytes reserved for initial data
+ */
+#define CFG_INIT_RAM_ADDR	0x400000
+#define CFG_INIT_RAM_END	0x8000
+#define CFG_GBL_DATA_SIZE	128
+#define CFG_GBL_DATA_OFFSET	(CFG_INIT_RAM_END - CFG_GBL_DATA_SIZE)
+#define CFG_INIT_SP_OFFSET	CFG_GBL_DATA_OFFSET
+
+#define CFG_INIT_RAM_LOCK
+
+/*
+ * Temporary buffer for serial data until the real serial driver
+ * is initialised (memtest will destroy this buffer)
+ */
+#define CFG_SCONSOLE_ADDR     CFG_INIT_RAM_ADDR
+#define CFG_SCONSOLE_SIZE     0x0002000
+
+/* SDRAM 0 - 256MB
+ */
+
+#define CFG_IBAT0L (CFG_SDRAM_BASE | BATL_PP_RW | BATL_CACHEINHIBIT)
+#define CFG_IBAT0U (CFG_SDRAM_BASE | BATU_BL_4M | BATU_VS | BATU_VP)
+#define CFG_DBAT0L (CFG_SDRAM_BASE | BATL_PP_RW | BATL_CACHEINHIBIT)
+#define CFG_DBAT0U CFG_IBAT0U
+
+/* SDRAM 1 - 256MB
+ */
+#define CFG_IBAT1L ((CFG_SDRAM_BASE+CFG_INIT_RAM_ADDR) | BATL_PP_RW) /* | BATL_CACHEINHIBIT) */
+#define CFG_IBAT1U ((CFG_SDRAM_BASE+CFG_INIT_RAM_ADDR) | BATU_BL_256M | BATU_VS | BATU_VP)
+#define CFG_DBAT1L ((CFG_SDRAM_BASE+CFG_INIT_RAM_ADDR + 0x20000) | BATL_PP_RW ) /* | BATL_CACHEINHIBIT) */
+#define CFG_DBAT1U ((CFG_SDRAM_BASE+CFG_INIT_RAM_ADDR + 0x20000) | BATU_BL_256M | BATU_VS | BATU_VP)
+
+/* Init RAM in the CPU DCache (no backing memory)
+ */
+#define CFG_DBAT2L	(CFG_INIT_RAM_ADDR | BATL_PP_RW | BATL_MEMCOHERENCE)
+#define CFG_DBAT2U	(CFG_INIT_RAM_ADDR | BATU_BL_128K | BATU_VS | BATU_VP)
+#define CFG_IBAT2L	0 /* CFG_DBAT2L */
+#define CFG_IBAT2U	0 /* CFG_DBAT2U */
+
+/* I/O and PCI memory at 0xf0000000
+ */
+#define CFG_DBAT3L	(0xf0000000 | BATL_PP_RW | BATL_CACHEINHIBIT | BATL_GUARDEDSTORAGE)
+#define CFG_DBAT3U	(0xf0000000 | BATU_BL_256M | BATU_VS | BATU_VP)
+
+#define CFG_IBAT3L	(0xf0000000 | BATL_PP_RW | BATL_CACHEINHIBIT)
+#define CFG_IBAT3U	(0xf0000000 | BATU_BL_256M | BATU_VS | BATU_VP)
+
+/*
+ * Low Level Configuration Settings
+ * (address mappings, register initial values, etc.)
+ */
+#define CFG_HZ		1000
+#define CFG_BUS_HZ	133000000 /* bus speed - 100 mhz		*/
+#define CFG_CPU_CLK	133000000
+#define CFG_BUS_CLK	133000000
+
+/*
+ * For booting Linux, the board info and command line data
+ * have to be in the first 8 MB of memory, since this is
+ * the maximum mapped by the Linux kernel during initialization.
+ */
+#define CFG_BOOTMAPSZ	(8 << 20) /* Initial Memory map for Linux */
+
+/*-----------------------------------------------------------------------
+ * FLASH organization
+ */
+#define CFG_MAX_FLASH_BANKS	1	/* Max number of flash banks		*/
+#define CFG_MAX_FLASH_SECT	8	/* Max number of sectors in one bank	*/
+
+#define CFG_FLASH_ERASE_TOUT	120000	/* Timeout for Flash Erase (in ms)	*/
+#define CFG_FLASH_WRITE_TOUT	1000	/* Timeout for Flash Write (in ms)	*/
+
+/*
+ * Environment is stored in NVRAM.
+ */
+#define CFG_ENV_IS_IN_NVRAM	1
+#define CFG_ENV_ADDR		0xFD0E0000 /* This should be 0xFD0E0000, but we skip bytes to
+					    * protect softex's settings for now.
+					    * Original 768 bytes where not enough.
+					    */
+#define CFG_ENV_SIZE		0x8000	   /* Size of the Environment. See comment above */
+
+#define CFG_CONSOLE_IS_IN_ENV	1 /* stdin/stdout/stderr are in environment */
+#define CFG_CONSOLE_OVERWRITE_ROUTINE	1
+#define CONFIG_ENV_OVERWRITE 1
+
+/*-----------------------------------------------------------------------
+ * Cache Configuration
+ */
+#define CFG_CACHELINE_SIZE	32
+#if (CONFIG_COMMANDS & CFG_CMD_KGDB)
+#  define CFG_CACHELINE_SHIFT	5	/* log base 2 of the above value	*/
+#endif
+
+/*
+ * L2 cache
+ */
+#define CFG_L2
+#define L2_INIT	  (L2CR_L2SIZ_2M | L2CR_L2CLK_3 | L2CR_L2RAM_BURST | \
+		   L2CR_L2OH_5 | L2CR_L2CTL | L2CR_L2WT)
+#define L2_ENABLE (L2_INIT | L2CR_L2E)
+
+/*
+ * Internal Definitions
+ *
+ * Boot Flags
+ */
+#define BOOTFLAG_COLD		0x01	/* Normal Power-On: Boot from FLASH	*/
+#define BOOTFLAG_WARM		0x02	/* Software reboot			*/
+
+
+/*-----------------------------------------------------------------------
+ * IDE ATAPI Configuration
+ */
+
+#define CONFIG_ATAPI		1
+#define CFG_IDE_MAXBUS		2
+#define CFG_IDE_MAXDEVICE	4
+#define CONFIG_ISO_PARTITION	1
+
+#define CFG_ATA_BASE_ADDR	0xFE000000  /* was: via_get_base_addr() */
+#define CFG_ATA_IDE0_OFFSET	0x1F0
+#define CFG_ATA_IDE1_OFFSET	0x170
+
+#define CFG_ATA_REG_OFFSET	0
+#define CFG_ATA_DATA_OFFSET	0
+#define CFG_ATA_ALT_OFFSET	0x0200
+
+/*-----------------------------------------------------------------------
+ * Disk-On-Chip configuration
+ */
+
+#define CFG_MAX_DOC_DEVICE	1	/* Max number of DOC devices		*/
+
+#define CFG_DOC_SUPPORT_2000
+#undef CFG_DOC_SUPPORT_MILLENNIUM
+
+/*-----------------------------------------------------------------------
+  RTC
+*/
+#define CONFIG_RTC_MC146818
+
+/*-----------------------------------------------------------------------
+ * NS16550 Configuration
+ */
+
+#define CFG_NS16550
+
+#define CFG_NS16550_COM1 0xFE0003F8
+#define CFG_NS16550_COM2 0xFE0002F8
+
+#define CFG_NS16550_REG_SIZE 1
+
+/* base address for ISA I/O
+ */
+#define CFG_ISA_IO_BASE_ADDRESS 0xFE000000
+
+/* ISA Interrupt stuff (taken from JWL) */
+
+#define ISA_INT1_OCW1		0x21
+#define ISA_INT2_OCW1		0xA1
+#define ISA_INT1_OCW2		0x20
+#define ISA_INT2_OCW2		0xA0
+#define ISA_INT1_OCW3		0x20
+#define ISA_INT2_OCW3		0xA0
+
+#define ISA_INT1_ICW1		0x20
+#define ISA_INT2_ICW1		0xA0
+#define ISA_INT1_ICW2		0x21
+#define ISA_INT2_ICW2		0xA1
+#define ISA_INT1_ICW3		0x21
+#define ISA_INT2_ICW3		0xA1
+#define ISA_INT1_ICW4		0x21
+#define ISA_INT2_ICW4		0xA1
+
+
+/*
+ * misc
+ */
+
+#define CONFIG_NET_MULTI
+#define CFG_BOARD_ASM_INIT
+#define CONFIG_LAST_STAGE_INIT
+
+/* #define CONFIG_ETHADDR	00:09:D2:10:00:76 */
+/* #define CONFIG_IPADDR	192.168.0.2 */
+/* #define CONFIG_NETMASK	255.255.255.240 */
+/* #define CONFIG_GATEWAYIP	192.168.0.3 */
+
+#define CONFIG_3COM
+/* #define CONFIG_BOOTP_RANDOM_DELAY */
+#define CONFIG_BOOTP_MASK	(CONFIG_BOOTP_DEFAULT | \
+				 CONFIG_BOOTP_BOOTFILESIZE)
+
+/*
+ * USB configuration
+ */
+#define CONFIG_USB_UHCI		1
+#define CONFIG_USB_STORAGE	1
+#define CONFIG_USB_KEYBOARD	1
+#define CFG_DEVICE_DEREGISTER	1 /* needed by CONFIG_USB_KEYBOARD */
+
+/*
+ * Autoboot stuff
+ */
+#define CONFIG_BOOTDELAY	5 /* Boot automatically after five seconds */
+#define CONFIG_PREBOOT		""
+#define CONFIG_BOOTCOMMAND	"fdcboot; diskboot"
+#define CONFIG_MENUPROMPT	"Press any key to interrupt autoboot: %2d "
+#define CONFIG_MENUKEY		' '
+#define CONFIG_MENUCOMMAND	"menu"
+/* #define CONFIG_AUTOBOOT_KEYED */
+
+/*
+ * Extra ENV stuff
+ */
+#define CONFIG_EXTRA_ENV_SETTINGS		\
+	"stdout=vga\0"				\
+	"stdin=ps2kbd\0"			\
+	"ide_doreset=on\0"			\
+	"ide_maxbus=2\0"			\
+	"ide_cd_timeout=30\0"			\
+	"menucmd=menu\0"			\
+	"pci_irqa=9\0"				\
+	"pci_irqa_select=edge\0"		\
+	"pci_irqb=10\0"				\
+	"pci_irqb_select=edge\0"		\
+	"pci_irqc=11\0"				\
+	"pci_irqc_select=edge\0"		\
+	"pci_irqd=12\0"				\
+	"pci_irqd_select=edge\0"
+
+
+/* #define CONFIG_MII		1 */
+/* #define CONFIG_BITBANGMII	1 */
+
+
+#endif	/* __CONFIG_H */
diff --git a/include/configs/sbc8260.h b/include/configs/sbc8260.h
index ec60179..d47c208 100644
--- a/include/configs/sbc8260.h
+++ b/include/configs/sbc8260.h
@@ -239,12 +239,12 @@
 #endif /* CONFIG_ETHER_ON_FCC, CONFIG_ETHER_INDEX */
 
 /*
- * select SPI support configuration
+ * Select SPI support configuration
  */
-#undef  CONFIG_SPI			/* enable SPI driver		*/
+#undef  CONFIG_SPI			/* Disable SPI driver */
 
 /*
- * select i2c support configuration
+ * Select i2c support configuration
  *
  * Supported configurations are {none, software, hardware} drivers.
  * If the software driver is chosen, there are some additional
@@ -284,7 +284,10 @@
 /* What should the console's baud rate be? */
 #define CONFIG_BAUDRATE		9600
 
-/* Ethernet MAC address */
+/* Ethernet MAC address 
+ *     Note: We are using the EST Corporation OUI (00:a0:1e:xx:xx:xx)
+ *           http://standards.ieee.org/regauth/oui/index.shtml
+ */
 #define CONFIG_ETHADDR		00:a0:1e:a8:7b:cb
 
 /*
@@ -299,19 +302,53 @@
 /* Set to a positive value to delay for running BOOTCOMMAND */
 #define CONFIG_BOOTDELAY	5	/* autoboot after 5 seconds */
 
-#if 0
 /* Be selective on what keys can delay or stop the autoboot process
  *     To stop	use: " "
  */
-# define CONFIG_AUTOBOOT_KEYED
-# define CONFIG_AUTOBOOT_PROMPT "Autobooting in %d seconds, press \" \" to stop\n"
-# define CONFIG_AUTOBOOT_STOP_STR	" "
-# undef CONFIG_AUTOBOOT_DELAY_STR
-# define DEBUG_BOOTKEYS		0
+#undef CONFIG_AUTOBOOT_KEYED
+#ifdef CONFIG_AUTOBOOT_KEYED
+#   define CONFIG_AUTOBOOT_PROMPT	"Autobooting in %d seconds, press \" \" to stop\n"
+#   define CONFIG_AUTOBOOT_STOP_STR	" "
+#   undef  CONFIG_AUTOBOOT_DELAY_STR
+#   define DEBUG_BOOTKEYS		0
 #endif
 
 /* Define this to contain any number of null terminated strings that
  * will be part of the default enviroment compiled into the boot image.
+ * 
+ * Variable		Usage
+ * --------------       -------------------------------------------------------
+ * serverip		server IP address 
+ * ipaddr		my IP address
+ * reprog		Reload flash with a new copy of U-Boot
+ * zapenv		Erase the environment area in flash
+ * root-on-initrd       Set the bootcmd variable to allow booting of an initial
+ *                      ram disk.
+ * root-on-nfs          Set the bootcmd variable to allow booting of a NFS 
+ *                      mounted root filesystem.
+ * boot-hook            Convenient stub to do something useful before the 
+ *                      bootm command is executed.
+ * 
+ * Example usage of root-on-initrd and root-on-nfs :
+ *
+ * Note: The lines have been wrapped to improved its readability.
+ *
+ * => printenv bootcmd
+ * bootcmd=version;echo;bootp;setenv bootargs root=/dev/nfs rw
+ * nfsroot=$(serverip):$(rootpath) 
+ * ip=$(ipaddr):$(serverip):$(gatewayip):$(netmask):$(hostname)::off;run boot-hook;bootm
+ *
+ * => run root-on-initrd
+ * => printenv bootcmd
+ * bootcmd=version;echo;bootp;setenv bootargs root=/dev/ram0 rw
+ * ip=$(ipaddr):$(serverip):$(gatewayip):$(netmask):$(hostname)::off;run boot-hook;bootm
+ * 
+ * => run root-on-nfs
+ * => printenv bootcmd
+ * bootcmd=version;echo;bootp;setenv bootargs root=/dev/nfs rw
+ * nfsroot=$(serverip):$(rootpath) 
+ * ip=$(ipaddr):$(serverip):$(gatewayip):$(netmask):$(hostname)::off;run boot-hook;bootm
+ *
  */
 #define CONFIG_EXTRA_ENV_SETTINGS \
 	"serverip=192.168.123.201\0" \
@@ -328,22 +365,22 @@
 		"protect on 1:1\0" \
 	"root-on-initrd="\
 		"setenv bootcmd "\
-		"version;" \
-		"echo;" \
-		"bootp;" \
+		"version\\;" \
+		"echo\\;" \
+		"bootp\\;" \
 		"setenv bootargs root=/dev/ram0 rw " \
-		"ip=$(ipaddr):$(serverip):$(gatewayip):$(netmask):$(hostname)::off;" \
-		"run boot-hook;" \
+		"ip=\\$(ipaddr):\\$(serverip):\\$(gatewayip):\\$(netmask):\\$(hostname)::off\\;" \
+		"run boot-hook\\;" \
 		"bootm\0" \
 	"root-on-nfs="\
 		"setenv bootcmd "\
-		"version;" \
-		"echo;" \
-		"bootp;" \
+		"version\\;" \
+		"echo\\;" \
+		"bootp\\;" \
 		"setenv bootargs root=/dev/nfs rw " \
-		"nfsroot=$(serverip):$(rootpath) " \
-		"ip=$(ipaddr):$(serverip):$(gatewayip):$(netmask):$(hostname)::off\\;" \
-		"run boot-hook;" \
+		"nfsroot=\\$(serverip):\\$(rootpath) " \
+		"ip=\\$(ipaddr):\\$(serverip):\\$(gatewayip):\\$(netmask):\\$(hostname)::off\\;" \
+		"run boot-hook\\;" \
 		"bootm\0" \
 	"boot-hook=echo boot-hook\0"
 
diff --git a/include/part.h b/include/part.h
index e43978c..9aa9f5a 100644
--- a/include/part.h
+++ b/include/part.h
@@ -51,6 +51,8 @@
 #define PART_TYPE_MAC		0x01
 #define PART_TYPE_DOS		0x02
 #define PART_TYPE_ISO		0x03
+#define PART_TYPE_AMIGA         0x04
+
 /* device types */
 #define DEV_TYPE_UNKNOWN 0xff /* not connected */
 #define DEV_TYPE_HARDDISK 0x00 /* harddisk */
@@ -94,6 +96,13 @@
 int   test_part_iso (block_dev_desc_t *dev_desc);
 #endif
 
+#ifdef CONFIG_AMIGA_PARTITION
+/* disk/part_amiga.c */
+int get_partition_info_amiga (block_dev_desc_t * dev_desc, int part, disk_partition_t *info);
+void print_part_amiga (block_dev_desc_t *dev_desc);
+int   test_part_amiga (block_dev_desc_t *dev_desc);
+#endif
+
 #endif /* _PART_H */
 
 
diff --git a/include/pci.h b/include/pci.h
index 4875375..e5055b1 100644
--- a/include/pci.h
+++ b/include/pci.h
@@ -375,6 +375,7 @@
 
 	/* Used by ppc405 autoconfig*/
 	struct pci_region *pci_fb;
+	int current_busno;
 };
 
 extern __inline__ void pci_set_ops(struct pci_controller *hose,
@@ -457,7 +458,7 @@
 				 pci_dev_t dev, int bars_num,
 				 struct pci_region *mem,
 				 struct pci_region *io);
-void pciauto_config_device(struct pci_controller *hose, pci_dev_t dev);
+int pciauto_config_device(struct pci_controller *hose, pci_dev_t dev);
 
 extern pci_dev_t pci_find_device (unsigned int vendor, unsigned int device, int index);
 extern pci_dev_t pci_find_devices (struct pci_device_id *ids, int index);
diff --git a/include/syscall.h b/include/syscall.h
index f80d550..9b9be0d 100644
--- a/include/syscall.h
+++ b/include/syscall.h
@@ -15,10 +15,13 @@
 void mon_free_hdlr(int);
 void *mon_malloc(size_t);
 void mon_free(void*);
+void mon_udelay(unsigned long);
+unsigned long mon_get_timer(unsigned long);
 
 #endif    /* ifndef __ASSEMBLY__ */
 
-#define NR_SYSCALLS            9        /* number of syscalls */
+#define NR_SYSCALLS            11        /* number of syscalls */
+
 
 /*
  * Make sure these functions are in the same order as they
@@ -33,5 +36,7 @@
 #define SYSCALL_FREE_HDLR      6
 #define SYSCALL_MALLOC         7
 #define SYSCALL_FREE           8
+#define SYSCALL_UDELAY         9
+#define SYSCALL_GET_TIMER     10
 
 #endif