* Code cleanup:
  - remove trailing white space, trailing empty lines, C++ comments, etc.
  - split cmd_boot.c (separate cmd_bdinfo.c and cmd_load.c)

* Patches by Kenneth Johansson, 25 Jun 2003:
  - major rework of command structure
    (work done mostly by Michal Cendrowski and Joakim Kristiansen)
diff --git a/common/cmd_bdinfo.c b/common/cmd_bdinfo.c
new file mode 100644
index 0000000..3f73cf8
--- /dev/null
+++ b/common/cmd_bdinfo.c
@@ -0,0 +1,180 @@
+/*
+ * (C) Copyright 2003
+ * 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
+ */
+
+/*
+ * Boot support
+ */
+#include <common.h>
+#include <command.h>
+
+
+#if (CONFIG_COMMANDS & CFG_CMD_BDI)
+static void print_num(const char *, ulong);
+
+#ifndef CONFIG_ARM	/* PowerPC and other */
+
+#ifdef CONFIG_PPC
+static void print_str(const char *, const char *);
+
+int do_bdinfo ( cmd_tbl_t *cmdtp, int flag, int argc, char *argv[])
+{
+	DECLARE_GLOBAL_DATA_PTR;
+
+	int i;
+	bd_t *bd = gd->bd;
+	char buf[32];
+
+#ifdef DEBUG
+	print_num ("bd address",    (ulong)bd		);
+#endif
+	print_num ("memstart",	    bd->bi_memstart	);
+	print_num ("memsize",	    bd->bi_memsize	);
+	print_num ("flashstart",    bd->bi_flashstart	);
+	print_num ("flashsize",	    bd->bi_flashsize	);
+	print_num ("flashoffset",   bd->bi_flashoffset	);
+	print_num ("sramstart",	    bd->bi_sramstart	);
+	print_num ("sramsize",	    bd->bi_sramsize	);
+#if defined(CONFIG_5xx) || defined(CONFIG_8xx) || defined(CONFIG_8260)
+	print_num ("immr_base",	    bd->bi_immr_base	);
+#endif
+	print_num ("bootflags",	    bd->bi_bootflags	);
+#if defined(CONFIG_405GP) || defined(CONFIG_405CR) || defined(CONFIG_405EP)
+	print_str ("procfreq",	    strmhz(buf, bd->bi_procfreq));
+	print_str ("plb_busfreq",	    strmhz(buf, bd->bi_plb_busfreq));
+#if defined(CONFIG_405GP) || defined(CONFIG_405EP)
+	print_str ("pci_busfreq",	    strmhz(buf, bd->bi_pci_busfreq));
+#endif
+#else	/* ! CONFIG_405GP, CONFIG_405CR, CONFIG_405EP */
+#if defined(CONFIG_8260)
+	print_str ("vco",	    strmhz(buf, bd->bi_vco));
+	print_str ("sccfreq",	    strmhz(buf, bd->bi_sccfreq));
+	print_str ("brgfreq",	    strmhz(buf, bd->bi_brgfreq));
+#endif
+	print_str ("intfreq",	    strmhz(buf, bd->bi_intfreq));
+#if defined(CONFIG_8260)
+	print_str ("cpmfreq",	    strmhz(buf, bd->bi_cpmfreq));
+#endif
+	print_str ("busfreq",	    strmhz(buf, bd->bi_busfreq));
+#endif /* CONFIG_405GP, CONFIG_405CR, CONFIG_405EP */
+	printf ("ethaddr     =");
+	for (i=0; i<6; ++i) {
+		printf ("%c%02X", i ? ':' : ' ', bd->bi_enetaddr[i]);
+	}
+#ifdef CONFIG_PN62
+	printf ("\neth1addr    =");
+	for (i=0; i<6; ++i) {
+		printf ("%c%02X", i ? ':' : ' ', bd->bi_enet1addr[i]);
+	}
+#endif /* CONFIG_PN62 */
+#ifdef CONFIG_HERMES
+	print_str ("ethspeed",	    strmhz(buf, bd->bi_ethspeed));
+#endif
+	printf ("\nIP addr     = ");	print_IPaddr (bd->bi_ip_addr);
+	printf ("\nbaudrate    = %6ld bps\n", bd->bi_baudrate   );
+	return 0;
+}
+
+#else /* ! PPC, which leaves MIPS */
+
+int do_bdinfo ( cmd_tbl_t *cmdtp, int flag, int argc, char *argv[])
+{
+	DECLARE_GLOBAL_DATA_PTR;
+
+	int i;
+	bd_t *bd = gd->bd;
+
+	print_num ("boot_params",	(ulong)bd->bi_boot_params);
+	print_num ("memstart",		(ulong)bd->bi_memstart);
+	print_num ("memsize",		(ulong)bd->bi_memsize);
+	print_num ("flashstart",	(ulong)bd->bi_flashstart);
+	print_num ("flashsize",		(ulong)bd->bi_flashsize);
+	print_num ("flashoffset",	(ulong)bd->bi_flashoffset);
+
+	printf ("ethaddr     =");
+	for (i=0; i<6; ++i) {
+		printf ("%c%02X", i ? ':' : ' ', bd->bi_enetaddr[i]);
+	}
+	printf ("\nip_addr     = ");
+	print_IPaddr (bd->bi_ip_addr);
+	printf ("\nbaudrate    = %d bps\n", bd->bi_baudrate);
+
+	return 0;
+}
+#endif  /* MIPS */
+
+#else	/* ARM */
+
+int do_bdinfo ( cmd_tbl_t *cmdtp, int flag, int argc, char *argv[])
+{
+	DECLARE_GLOBAL_DATA_PTR;
+
+	int i;
+	bd_t *bd = gd->bd;
+
+	print_num ("arch_number",	bd->bi_arch_number);
+	print_num ("env_t",		(ulong)bd->bi_env);
+	print_num ("boot_params",	(ulong)bd->bi_boot_params);
+
+	for (i=0; i<CONFIG_NR_DRAM_BANKS; ++i) {
+		print_num("DRAM bank",	i);
+		print_num("-> start",	bd->bi_dram[i].start);
+		print_num("-> size",	bd->bi_dram[i].size);
+	}
+
+	printf ("ethaddr     =");
+	for (i=0; i<6; ++i) {
+		printf ("%c%02X", i ? ':' : ' ', bd->bi_enetaddr[i]);
+	}
+	printf ("\n"
+		"ip_addr     = ");
+	print_IPaddr (bd->bi_ip_addr);
+	printf ("\n"
+		"baudrate    = %d bps\n", bd->bi_baudrate);
+
+	return 0;
+}
+
+#endif /* CONFIG_ARM XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX */
+
+static void print_num(const char *name, ulong value)
+{
+	printf ("%-12s= 0x%08lX\n", name, value);
+}
+
+#ifdef CONFIG_PPC
+static void print_str(const char *name, const char *str)
+{
+	printf ("%-12s= %6s MHz\n", name, str);
+}
+#endif	/* CONFIG_PPC */
+
+
+/* -------------------------------------------------------------------- */
+
+cmd_tbl_t U_BOOT_CMD(BDINFO) =  MK_CMD_ENTRY(
+	"bdinfo",	1,	1,	do_bdinfo,
+	"bdinfo  - print Board Info structure\n",
+	NULL
+);
+#endif	/* CFG_CMD_BDI */
+