introduce two new weak functions board_bdinfo and soc_bdinfo to allow board and
soc to print more information

Signed-off-by: Jean-Christophe PLAGNIOL-VILLARD <[EMAIL PROTECTED]>
---
 common/cmd_bdinfo.c     |  504 ++++++-----------------------------------------
 include/bdinfo.h        |   54 +++++
 lib_arm/Makefile        |    1 +
 lib_arm/bdinfo.c        |   58 ++++++
 lib_avr32/Makefile      |    1 +
 lib_avr32/bdinfo.c      |   50 +++++
 lib_blackfin/Makefile   |    1 +
 lib_blackfin/bdinfo.c   |   57 ++++++
 lib_i386/Makefile       |    1 +
 lib_i386/bdinfo.c       |   50 +++++
 lib_m68k/Makefile       |    1 +
 lib_m68k/bdinfo.c       |   83 ++++++++
 lib_microblaze/Makefile |    1 +
 lib_microblaze/bdinfo.c |   54 +++++
 lib_mips/Makefile       |    1 +
 lib_mips/bdinfo.c       |   50 +++++
 lib_nios/Makefile       |    1 +
 lib_nios/bdinfo.c       |   49 +++++
 lib_nios2/Makefile      |    1 +
 lib_nios2/bdinfo.c      |   57 ++++++
 lib_ppc/Makefile        |    1 +
 lib_ppc/bdinfo.c        |  119 +++++++++++
 lib_sh/Makefile         |    1 +
 lib_sh/bdinfo.c         |   50 +++++
 lib_sparc/Makefile      |   13 +-
 lib_sparc/bdinfo.c      |   64 ++++++
 26 files changed, 872 insertions(+), 451 deletions(-)
 rewrite common/cmd_bdinfo.c (90%)
 create mode 100644 include/bdinfo.h
 create mode 100644 lib_arm/bdinfo.c
 create mode 100644 lib_avr32/bdinfo.c
 create mode 100644 lib_blackfin/bdinfo.c
 create mode 100644 lib_i386/bdinfo.c
 create mode 100644 lib_m68k/bdinfo.c
 create mode 100644 lib_microblaze/bdinfo.c
 create mode 100644 lib_mips/bdinfo.c
 create mode 100644 lib_nios/bdinfo.c
 create mode 100644 lib_nios2/bdinfo.c
 create mode 100644 lib_ppc/bdinfo.c
 create mode 100644 lib_sh/bdinfo.c
 create mode 100644 lib_sparc/bdinfo.c

diff --git a/common/cmd_bdinfo.c b/common/cmd_bdinfo.c
dissimilarity index 90%
index 087eda7..63cb6dc 100644
--- a/common/cmd_bdinfo.c
+++ b/common/cmd_bdinfo.c
@@ -1,447 +1,57 @@
-/*
- * (C) Copyright 2003
- * Wolfgang Denk, DENX Software Engineering, [EMAIL PROTECTED]
- *
- * 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>
-#include <net.h>               /* for print_IPaddr */
-
-DECLARE_GLOBAL_DATA_PTR;
-
-static void print_num(const char *, ulong);
-
-#ifndef CONFIG_ARM     /* PowerPC and other */
-static void print_lnum(const char *, u64);
-
-#ifdef CONFIG_PPC
-static void print_str(const char *, const char *);
-
-int do_bdinfo ( cmd_tbl_t *cmdtp, int flag, int argc, char *argv[])
-{
-       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_lnum ("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) || defined(CONFIG_E500)
-       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) || defined(CONFIG_XILINX_405) || \
-    defined(CONFIG_440EP) || defined(CONFIG_440GR) || \
-    defined(CONFIG_440EPX) || defined(CONFIG_440GRX) ||        \
-    defined(CONFIG_440SP) || defined(CONFIG_440SPE)
-       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) || 
defined(CONFIG_XILINX_405) || \
-    defined(CONFIG_440EP) || defined(CONFIG_440GR) || defined(CONFIG_440SPE) 
|| \
-    defined(CONFIG_440EPX) || defined(CONFIG_440GRX)
-       print_str ("pci_busfreq",   strmhz(buf, bd->bi_pci_busfreq));
-#endif
-#else  /* ! CONFIG_405GP, CONFIG_405CR, CONFIG_405EP, CONFIG_XILINX_405, 
CONFIG_440EP CONFIG_440GR */
-#if defined(CONFIG_CPM2)
-       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_CPM2)
-       print_str ("cpmfreq",       strmhz(buf, bd->bi_cpmfreq));
-#endif
-       print_str ("busfreq",       strmhz(buf, bd->bi_busfreq));
-#endif /* CONFIG_405GP, CONFIG_405CR, CONFIG_405EP, CONFIG_XILINX_405, 
CONFIG_440EP CONFIG_440GR */
-#if defined(CONFIG_MPC8220)
-       print_str ("inpfreq",       strmhz(buf, bd->bi_inpfreq));
-       print_str ("flbfreq",       strmhz(buf, bd->bi_flbfreq));
-       print_str ("pcifreq",       strmhz(buf, bd->bi_pcifreq));
-       print_str ("vcofreq",       strmhz(buf, bd->bi_vcofreq));
-       print_str ("pevfreq",       strmhz(buf, bd->bi_pevfreq));
-#endif
-
-       puts ("ethaddr     =");
-       for (i=0; i<6; ++i) {
-               printf ("%c%02X", i ? ':' : ' ', bd->bi_enetaddr[i]);
-       }
-
-#if defined(CONFIG_HAS_ETH1)
-       puts ("\neth1addr    =");
-       for (i=0; i<6; ++i) {
-               printf ("%c%02X", i ? ':' : ' ', bd->bi_enet1addr[i]);
-       }
-#endif
-
-#if defined(CONFIG_HAS_ETH2)
-       puts ("\neth2addr    =");
-       for (i=0; i<6; ++i) {
-               printf ("%c%02X", i ? ':' : ' ', bd->bi_enet2addr[i]);
-       }
-#endif
-
-#if defined(CONFIG_HAS_ETH3)
-       puts ("\neth3addr    =");
-       for (i=0; i<6; ++i) {
-               printf ("%c%02X", i ? ':' : ' ', bd->bi_enet3addr[i]);
-       }
-#endif
-
-#if defined(CONFIG_HAS_ETH4)
-       puts ("\neth4addr    =");
-       for (i=0; i<6; ++i) {
-               printf ("%c%02X", i ? ':' : ' ', bd->bi_enet4addr[i]);
-       }
-#endif
-
-#if defined(CONFIG_HAS_ETH5)
-       puts ("\neth5addr    =");
-       for (i=0; i<6; ++i) {
-               printf ("%c%02X", i ? ':' : ' ', bd->bi_enet5addr[i]);
-       }
-#endif
-
-#ifdef CONFIG_HERMES
-       print_str ("ethspeed",      strmhz(buf, bd->bi_ethspeed));
-#endif
-       puts ("\nIP addr     = ");      print_IPaddr (bd->bi_ip_addr);
-       printf ("\nbaudrate    = %6ld bps\n", bd->bi_baudrate   );
-       return 0;
-}
-
-#elif defined(CONFIG_NIOS) /* NIOS*/
-
-int do_bdinfo ( cmd_tbl_t *cmdtp, int flag, int argc, char *argv[])
-{
-       int i;
-       bd_t *bd = gd->bd;
-
-       print_num ("memstart",          (ulong)bd->bi_memstart);
-       print_lnum ("memsize",          (u64)bd->bi_memsize);
-       print_num ("flashstart",        (ulong)bd->bi_flashstart);
-       print_num ("flashsize",         (ulong)bd->bi_flashsize);
-       print_num ("flashoffset",       (ulong)bd->bi_flashoffset);
-
-       puts ("ethaddr     =");
-       for (i=0; i<6; ++i) {
-               printf ("%c%02X", i ? ':' : ' ', bd->bi_enetaddr[i]);
-       }
-       puts ("\nip_addr     = ");
-       print_IPaddr (bd->bi_ip_addr);
-       printf ("\nbaudrate    = %ld bps\n", bd->bi_baudrate);
-
-       return 0;
-}
-
-#elif defined(CONFIG_NIOS2) /* Nios-II */
-
-int do_bdinfo ( cmd_tbl_t *cmdtp, int flag, int argc, char *argv[])
-{
-#if defined(CONFIG_CMD_NET)
-       int i;
-#endif
-       bd_t *bd = gd->bd;
-
-       print_num ("mem start",         (ulong)bd->bi_memstart);
-       print_lnum ("mem size",         (u64)bd->bi_memsize);
-       print_num ("flash start",       (ulong)bd->bi_flashstart);
-       print_num ("flash size",        (ulong)bd->bi_flashsize);
-       print_num ("flash offset",      (ulong)bd->bi_flashoffset);
-
-#if defined(CONFIG_SYS_SRAM_BASE)
-       print_num ("sram start",        (ulong)bd->bi_sramstart);
-       print_num ("sram size",         (ulong)bd->bi_sramsize);
-#endif
-
-#if defined(CONFIG_CMD_NET)
-       puts ("ethaddr     =");
-       for (i=0; i<6; ++i) {
-               printf ("%c%02X", i ? ':' : ' ', bd->bi_enetaddr[i]);
-       }
-       puts ("\nip_addr     = ");
-       print_IPaddr (bd->bi_ip_addr);
-#endif
-
-       printf ("\nbaudrate    = %ld bps\n", bd->bi_baudrate);
-
-       return 0;
-}
-#elif defined(CONFIG_MICROBLAZE) /* ! PPC, which leaves Microblaze */
-
-int do_bdinfo ( cmd_tbl_t *cmdtp, int flag, int argc, char *argv[])
-{
-       int i;
-       bd_t *bd = gd->bd;
-       print_num ("mem start      ",   (ulong)bd->bi_memstart);
-       print_lnum ("mem size       ",  (u64)bd->bi_memsize);
-       print_num ("flash start    ",   (ulong)bd->bi_flashstart);
-       print_num ("flash size     ",   (ulong)bd->bi_flashsize);
-       print_num ("flash offset   ",   (ulong)bd->bi_flashoffset);
-#if defined(CONFIG_SYS_SRAM_BASE)
-       print_num ("sram start     ",   (ulong)bd->bi_sramstart);
-       print_num ("sram size      ",   (ulong)bd->bi_sramsize);
-#endif
-#if defined(CONFIG_CMD_NET)
-       puts ("ethaddr     =");
-       for (i=0; i<6; ++i) {
-               printf ("%c%02X", i ? ':' : ' ', bd->bi_enetaddr[i]);
-       }
-       puts ("\nip_addr     = ");
-       print_IPaddr (bd->bi_ip_addr);
-#endif
-       printf ("\nbaudrate    = %ld bps\n", (ulong)bd->bi_baudrate);
-       return 0;
-}
-
-#elif defined(CONFIG_SPARC)    /* SPARC */
-int do_bdinfo(cmd_tbl_t * cmdtp, int flag, int argc, char *argv[])
-{
-       bd_t *bd = gd->bd;
-#if defined(CONFIG_CMD_NET)
-       int i;
-#endif
-
-#ifdef DEBUG
-       print_num("bd address             ", (ulong) bd);
-#endif
-       print_num("memstart               ", bd->bi_memstart);
-       print_lnum("memsize                ", bd->bi_memsize);
-       print_num("flashstart             ", bd->bi_flashstart);
-       print_num("CONFIG_SYS_MONITOR_BASE       ", CONFIG_SYS_MONITOR_BASE);
-       print_num("CONFIG_ENV_ADDR           ", CONFIG_ENV_ADDR);
-       printf("CONFIG_SYS_RELOC_MONITOR_BASE = 0x%lx (%d)\n", 
CONFIG_SYS_RELOC_MONITOR_BASE,
-              CONFIG_SYS_MONITOR_LEN);
-       printf("CONFIG_SYS_MALLOC_BASE        = 0x%lx (%d)\n", 
CONFIG_SYS_MALLOC_BASE,
-              CONFIG_SYS_MALLOC_LEN);
-       printf("CONFIG_SYS_INIT_SP_OFFSET     = 0x%lx (%d)\n", 
CONFIG_SYS_INIT_SP_OFFSET,
-              CONFIG_SYS_STACK_SIZE);
-       printf("CONFIG_SYS_PROM_OFFSET        = 0x%lx (%d)\n", 
CONFIG_SYS_PROM_OFFSET,
-              CONFIG_SYS_PROM_SIZE);
-       printf("CONFIG_SYS_GBL_DATA_OFFSET    = 0x%lx (%d)\n", 
CONFIG_SYS_GBL_DATA_OFFSET,
-              CONFIG_SYS_GBL_DATA_SIZE);
-
-#if defined(CONFIG_CMD_NET)
-       puts("ethaddr                =");
-       for (i = 0; i < 6; ++i) {
-               printf("%c%02X", i ? ':' : ' ', bd->bi_enetaddr[i]);
-       }
-       puts("\nIP addr                = ");
-       print_IPaddr(bd->bi_ip_addr);
-#endif
-       printf("\nbaudrate               = %6ld bps\n", bd->bi_baudrate);
-       return 0;
-}
-
-#elif defined(CONFIG_M68K) /* M68K */
-static void print_str(const char *, const char *);
-
-int do_bdinfo ( cmd_tbl_t *cmdtp, int flag, int argc, char *argv[])
-{
-       int i;
-       bd_t *bd = gd->bd;
-       char buf[32];
-
-       print_num ("memstart",          (ulong)bd->bi_memstart);
-       print_lnum ("memsize",          (u64)bd->bi_memsize);
-       print_num ("flashstart",        (ulong)bd->bi_flashstart);
-       print_num ("flashsize",         (ulong)bd->bi_flashsize);
-       print_num ("flashoffset",       (ulong)bd->bi_flashoffset);
-#if defined(CONFIG_SYS_INIT_RAM_ADDR)
-       print_num ("sramstart",         (ulong)bd->bi_sramstart);
-       print_num ("sramsize",          (ulong)bd->bi_sramsize);
-#endif
-#if defined(CONFIG_SYS_MBAR)
-       print_num ("mbar",              bd->bi_mbar_base);
-#endif
-       print_str ("busfreq",           strmhz(buf, bd->bi_busfreq));
-#ifdef CONFIG_PCI
-       print_str ("pcifreq",           strmhz(buf, bd->bi_pcifreq));
-#endif
-#ifdef CONFIG_EXTRA_CLOCK
-       print_str ("flbfreq",           strmhz(buf, bd->bi_flbfreq));
-       print_str ("inpfreq",           strmhz(buf, bd->bi_inpfreq));
-       print_str ("vcofreq",           strmhz(buf, bd->bi_vcofreq));
-#endif
-#if defined(CONFIG_CMD_NET)
-       puts ("ethaddr     =");
-       for (i=0; i<6; ++i) {
-               printf ("%c%02X", i ? ':' : ' ', bd->bi_enetaddr[i]);
-       }
-
-#if defined(CONFIG_HAS_ETH1)
-       puts ("\neth1addr    =");
-       for (i=0; i<6; ++i) {
-               printf ("%c%02X", i ? ':' : ' ', bd->bi_enet1addr[i]);
-       }
-#endif
-
-#if defined(CONFIG_HAS_ETH2)
-       puts ("\neth2addr    =");
-       for (i=0; i<6; ++i) {
-               printf ("%c%02X", i ? ':' : ' ', bd->bi_enet2addr[i]);
-       }
-#endif
-
-#if defined(CONFIG_HAS_ETH3)
-       puts ("\neth3addr    =");
-       for (i=0; i<6; ++i) {
-               printf ("%c%02X", i ? ':' : ' ', bd->bi_enet3addr[i]);
-       }
-#endif
-
-       puts ("\nip_addr     = ");
-       print_IPaddr (bd->bi_ip_addr);
-#endif
-       printf ("\nbaudrate    = %d bps\n", bd->bi_baudrate);
-
-       return 0;
-}
-
-#elif defined(CONFIG_BLACKFIN)
-
-int do_bdinfo(cmd_tbl_t *cmdtp, int flag, int argc, char *argv[])
-{
-       int i;
-       bd_t *bd = gd->bd;
-
-       printf("U-Boot      = %s\n", bd->bi_r_version);
-       printf("CPU         = %s\n", bd->bi_cpu);
-       printf("Board       = %s\n", bd->bi_board_name);
-       printf("VCO         = %lu MHz\n", bd->bi_vco / 1000000);
-       printf("CCLK        = %lu MHz\n", bd->bi_cclk / 1000000);
-       printf("SCLK        = %lu MHz\n", bd->bi_sclk / 1000000);
-
-       print_num("boot_params", (ulong)bd->bi_boot_params);
-       print_num("memstart",    (ulong)bd->bi_memstart);
-       print_lnum("memsize",    (u64)bd->bi_memsize);
-       print_num("flashstart",  (ulong)bd->bi_flashstart);
-       print_num("flashsize",   (ulong)bd->bi_flashsize);
-       print_num("flashoffset", (ulong)bd->bi_flashoffset);
-
-       puts("ethaddr     =");
-       for (i = 0; i < 6; ++i)
-               printf("%c%02X", i ? ':' : ' ', bd->bi_enetaddr[i]);
-       puts("\nip_addr     = ");
-       print_IPaddr(bd->bi_ip_addr);
-       printf("\nbaudrate    = %d 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[])
-{
-       int i;
-       bd_t *bd = gd->bd;
-
-       print_num ("boot_params",       (ulong)bd->bi_boot_params);
-       print_num ("memstart",          (ulong)bd->bi_memstart);
-       print_lnum ("memsize",          (u64)bd->bi_memsize);
-       print_num ("flashstart",        (ulong)bd->bi_flashstart);
-       print_num ("flashsize",         (ulong)bd->bi_flashsize);
-       print_num ("flashoffset",       (ulong)bd->bi_flashoffset);
-
-       puts ("ethaddr     =");
-       for (i=0; i<6; ++i) {
-               printf ("%c%02X", i ? ':' : ' ', bd->bi_enetaddr[i]);
-       }
-       puts ("\nip_addr     = ");
-       print_IPaddr (bd->bi_ip_addr);
-       printf ("\nbaudrate    = %ld bps\n", bd->bi_baudrate);
-
-       return 0;
-}
-#endif  /* MIPS */
-
-#else  /* ARM */
-
-int do_bdinfo ( cmd_tbl_t *cmdtp, int flag, int argc, char *argv[])
-{
-       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);
-       }
-
-#if defined(CONFIG_CMD_NET)
-       puts ("ethaddr     =");
-       for (i=0; i<6; ++i) {
-               printf ("%c%02X", i ? ':' : ' ', bd->bi_enetaddr[i]);
-       }
-       puts  ( "\n"
-               "ip_addr     = ");
-       print_IPaddr (bd->bi_ip_addr);
-#endif
-       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);
-}
-
-#ifndef CONFIG_ARM
-static void print_lnum(const char *name, u64 value)
-{
-       printf ("%-12s= 0x%.8llX\n", name, value);
-}
-#endif
-
-#if defined(CONFIG_PPC) || defined(CONFIG_M68K)
-static void print_str(const char *name, const char *str)
-{
-       printf ("%-12s= %6s MHz\n", name, str);
-}
-#endif /* CONFIG_PPC */
-
-
-/* -------------------------------------------------------------------- */
-
-U_BOOT_CMD(
-       bdinfo, 1,      1,      do_bdinfo,
-       "bdinfo  - print Board Info structure\n",
-       NULL
-);
+/*
+ * (C) Copyright 2003
+ * Wolfgang Denk, DENX Software Engineering, [EMAIL PROTECTED]
+ *
+ * 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>
+#include <bdinfo.h>
+
+void board_bdinfo(cmd_tbl_t *, int, int, char **) __attribute((weak));
+void soc_bdinfo(cmd_tbl_t *, int, int, char **) __attribute((weak));
+
+int do_bdinfo(cmd_tbl_t *cmdtp, int flag, int argc, char *argv[])
+{
+
+       /* call arch bdinfo */
+       arch_bdinfo(cmdtp, flag, argc, argv);
+
+       /* call soc bdinfo */
+       if(soc_bdinfo)
+               soc_bdinfo(cmdtp, flag, argc, argv);
+
+       /* call board bdinfo */
+       if(board_bdinfo)
+               board_bdinfo(cmdtp, flag, argc, argv);
+
+       return 0;
+}
+
+/* -------------------------------------------------------------------- */
+
+U_BOOT_CMD(
+       bdinfo, 1,      1,      do_bdinfo,
+       "bdinfo  - print Board Info structure\n",
+       NULL
+);
diff --git a/include/bdinfo.h b/include/bdinfo.h
new file mode 100644
index 0000000..e660281
--- /dev/null
+++ b/include/bdinfo.h
@@ -0,0 +1,54 @@
+/*
+ * (C) Copyright 2008
+ * Jean-Christophe PLAGNIOL-VILLARD <[EMAIL PROTECTED]>
+ *
+ * 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 _BDINFO_H_
+#define _BDINFO_H_
+
+void arch_bdinfo(cmd_tbl_t *, int, int, char **);
+void board_bdinfo(cmd_tbl_t *, int, int, char **);
+void soc_bdinfo(cmd_tbl_t *, int, int, char **);
+
+static inline void print_num(const char *name, ulong value)
+{
+       printf ("%-12s= 0x%08lX\n", name, value);
+}
+
+static inline void print_lnum(const char *name, u64 value)
+{
+       printf ("%-12s= 0x%.8llX\n", name, value);
+}
+
+static inline void print_str(const char *name, const char *str)
+{
+       printf ("%-12s= %6s MHz\n", name, str);
+}
+
+static inline void print_eth_addr(const unsigned char *enetaddr)
+{
+       int i;
+
+       for (i = 0; i < 6; ++i)
+               printf ("%c%02X", i ? ':' : ' ', enetaddr[i]);
+}
+
+#endif /* _BDINFO_H_ */
diff --git a/lib_arm/Makefile b/lib_arm/Makefile
index c8795b2..1f36f58 100644
--- a/lib_arm/Makefile
+++ b/lib_arm/Makefile
@@ -32,6 +32,7 @@ SOBJS-y       += _modsi3.o
 SOBJS-y        += _udivsi3.o
 SOBJS-y        += _umodsi3.o
 
+COBJS-$(CONFIG_CMD_BDI) += bdinfo.o
 COBJS-y        += board.o
 COBJS-y        += bootm.o
 COBJS-y        += cache.o
diff --git a/lib_arm/bdinfo.c b/lib_arm/bdinfo.c
new file mode 100644
index 0000000..339ba77
--- /dev/null
+++ b/lib_arm/bdinfo.c
@@ -0,0 +1,58 @@
+/*
+ * (C) Copyright 2003
+ * Wolfgang Denk, DENX Software Engineering, [EMAIL PROTECTED]
+ *
+ * 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>
+#include <bdinfo.h>
+#include <net.h>               /* for print_IPaddr */
+
+DECLARE_GLOBAL_DATA_PTR;
+
+void arch_bdinfo ( cmd_tbl_t *cmdtp, int flag, int argc, char *argv[])
+{
+       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);
+       }
+
+#if defined(CONFIG_CMD_NET)
+       puts ("ethaddr     =");
+       print_eth_addr (bd->bi_enetaddr);
+       puts  ( "\n"
+               "ip_addr     = ");
+       print_IPaddr (bd->bi_ip_addr);
+#endif
+       printf ("\n"
+               "baudrate    = %d bps\n", bd->bi_baudrate);
+}
diff --git a/lib_avr32/Makefile b/lib_avr32/Makefile
index 37b8051..856d450 100644
--- a/lib_avr32/Makefile
+++ b/lib_avr32/Makefile
@@ -29,6 +29,7 @@ LIB   = $(obj)lib$(ARCH).a
 
 SOBJS-y        += memset.o
 
+COBJS-$(CONFIG_CMD_BDI) += bdinfo.o
 COBJS-y        += board.o
 COBJS-y        += bootm.o
 COBJS-y        += interrupts.o
diff --git a/lib_avr32/bdinfo.c b/lib_avr32/bdinfo.c
new file mode 100644
index 0000000..473a63d
--- /dev/null
+++ b/lib_avr32/bdinfo.c
@@ -0,0 +1,50 @@
+/*
+ * (C) Copyright 2003
+ * Wolfgang Denk, DENX Software Engineering, [EMAIL PROTECTED]
+ *
+ * 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>
+#include <bdinfo.h>
+#include <net.h>               /* for print_IPaddr */
+
+DECLARE_GLOBAL_DATA_PTR;
+
+void arch_bdinfo ( cmd_tbl_t *cmdtp, int flag, int argc, char *argv[])
+{
+       bd_t *bd = gd->bd;
+
+       print_num ("boot_params",       (ulong)bd->bi_boot_params);
+       print_num ("memstart",          (ulong)bd->bi_memstart);
+       print_lnum ("memsize",          (u64)bd->bi_memsize);
+       print_num ("flashstart",        (ulong)bd->bi_flashstart);
+       print_num ("flashsize",         (ulong)bd->bi_flashsize);
+       print_num ("flashoffset",       (ulong)bd->bi_flashoffset);
+
+       puts ("ethaddr     =");
+       print_eth_addr (bd->bi_enetaddr);
+       puts ("\nip_addr     = ");
+       print_IPaddr (bd->bi_ip_addr);
+       printf ("\nbaudrate    = %ld bps\n", bd->bi_baudrate);
+}
diff --git a/lib_blackfin/Makefile b/lib_blackfin/Makefile
index 3f69770..4afc651 100644
--- a/lib_blackfin/Makefile
+++ b/lib_blackfin/Makefile
@@ -36,6 +36,7 @@ SOBJS-y       += memcpy.o
 SOBJS-y        += memmove.o
 SOBJS-y        += memset.o
 
+COBJS-$(CONFIG_CMD_BDI) += bdinfo.o
 COBJS-y        += board.o
 COBJS-y        += bootm.o
 COBJS-y        += cache.o
diff --git a/lib_blackfin/bdinfo.c b/lib_blackfin/bdinfo.c
new file mode 100644
index 0000000..aab1da1
--- /dev/null
+++ b/lib_blackfin/bdinfo.c
@@ -0,0 +1,57 @@
+/*
+ * (C) Copyright 2003
+ * Wolfgang Denk, DENX Software Engineering, [EMAIL PROTECTED]
+ *
+ * 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>
+#include <bdinfo.h>
+#include <net.h>               /* for print_IPaddr */
+
+DECLARE_GLOBAL_DATA_PTR;
+
+void arch_bdinfo(cmd_tbl_t *cmdtp, int flag, int argc, char *argv[])
+{
+       bd_t *bd = gd->bd;
+
+       printf("U-Boot      = %s\n", bd->bi_r_version);
+       printf("CPU         = %s\n", bd->bi_cpu);
+       printf("Board       = %s\n", bd->bi_board_name);
+       printf("VCO         = %lu MHz\n", bd->bi_vco / 1000000);
+       printf("CCLK        = %lu MHz\n", bd->bi_cclk / 1000000);
+       printf("SCLK        = %lu MHz\n", bd->bi_sclk / 1000000);
+
+       print_num("boot_params", (ulong)bd->bi_boot_params);
+       print_num("memstart",    (ulong)bd->bi_memstart);
+       print_lnum("memsize",    (u64)bd->bi_memsize);
+       print_num("flashstart",  (ulong)bd->bi_flashstart);
+       print_num("flashsize",   (ulong)bd->bi_flashsize);
+       print_num("flashoffset", (ulong)bd->bi_flashoffset);
+
+       puts("ethaddr     =");
+       print_eth_addr(bd->bi_enetaddr);
+       puts("\nip_addr     = ");
+       print_IPaddr(bd->bi_ip_addr);
+       printf("\nbaudrate    = %d bps\n", bd->bi_baudrate);
+}
diff --git a/lib_i386/Makefile b/lib_i386/Makefile
index 4fbcd08..0a7a777 100644
--- a/lib_i386/Makefile
+++ b/lib_i386/Makefile
@@ -29,6 +29,7 @@ SOBJS-y       += bios.o
 SOBJS-y        += bios_pci.o
 SOBJS-y        += realmode_switch.o
 
+COBJS-$(CONFIG_CMD_BDI) += bdinfo.o
 COBJS-y        += bios_setup.o
 COBJS-y        += board.o
 COBJS-y        += bootm.o
diff --git a/lib_i386/bdinfo.c b/lib_i386/bdinfo.c
new file mode 100644
index 0000000..473a63d
--- /dev/null
+++ b/lib_i386/bdinfo.c
@@ -0,0 +1,50 @@
+/*
+ * (C) Copyright 2003
+ * Wolfgang Denk, DENX Software Engineering, [EMAIL PROTECTED]
+ *
+ * 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>
+#include <bdinfo.h>
+#include <net.h>               /* for print_IPaddr */
+
+DECLARE_GLOBAL_DATA_PTR;
+
+void arch_bdinfo ( cmd_tbl_t *cmdtp, int flag, int argc, char *argv[])
+{
+       bd_t *bd = gd->bd;
+
+       print_num ("boot_params",       (ulong)bd->bi_boot_params);
+       print_num ("memstart",          (ulong)bd->bi_memstart);
+       print_lnum ("memsize",          (u64)bd->bi_memsize);
+       print_num ("flashstart",        (ulong)bd->bi_flashstart);
+       print_num ("flashsize",         (ulong)bd->bi_flashsize);
+       print_num ("flashoffset",       (ulong)bd->bi_flashoffset);
+
+       puts ("ethaddr     =");
+       print_eth_addr (bd->bi_enetaddr);
+       puts ("\nip_addr     = ");
+       print_IPaddr (bd->bi_ip_addr);
+       printf ("\nbaudrate    = %ld bps\n", bd->bi_baudrate);
+}
diff --git a/lib_m68k/Makefile b/lib_m68k/Makefile
index 6db35ed..f11b601 100644
--- a/lib_m68k/Makefile
+++ b/lib_m68k/Makefile
@@ -27,6 +27,7 @@ LIB   = $(obj)lib$(ARCH).a
 
 SOBJS-y        +=
 
+COBJS-$(CONFIG_CMD_BDI) += bdinfo.o
 COBJS-y        += board.o
 COBJS-y        += bootm.o
 COBJS-y        += cache.o
diff --git a/lib_m68k/bdinfo.c b/lib_m68k/bdinfo.c
new file mode 100644
index 0000000..82829cb
--- /dev/null
+++ b/lib_m68k/bdinfo.c
@@ -0,0 +1,83 @@
+/*
+ * (C) Copyright 2003
+ * Wolfgang Denk, DENX Software Engineering, [EMAIL PROTECTED]
+ *
+ * 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>
+#include <bdinfo.h>
+#include <net.h>               /* for print_IPaddr */
+
+DECLARE_GLOBAL_DATA_PTR;
+
+void arch_bdinfo ( cmd_tbl_t *cmdtp, int flag, int argc, char *argv[])
+{
+       bd_t *bd = gd->bd;
+       char buf[32];
+
+       print_num ("memstart",          (ulong)bd->bi_memstart);
+       print_lnum ("memsize",          (u64)bd->bi_memsize);
+       print_num ("flashstart",        (ulong)bd->bi_flashstart);
+       print_num ("flashsize",         (ulong)bd->bi_flashsize);
+       print_num ("flashoffset",       (ulong)bd->bi_flashoffset);
+#if defined(CONFIG_SYS_INIT_RAM_ADDR)
+       print_num ("sramstart",         (ulong)bd->bi_sramstart);
+       print_num ("sramsize",          (ulong)bd->bi_sramsize);
+#endif
+#if defined(CONFIG_SYS_MBAR)
+       print_num ("mbar",              bd->bi_mbar_base);
+#endif
+       print_str ("busfreq",           strmhz(buf, bd->bi_busfreq));
+#ifdef CONFIG_PCI
+       print_str ("pcifreq",           strmhz(buf, bd->bi_pcifreq));
+#endif
+#ifdef CONFIG_EXTRA_CLOCK
+       print_str ("flbfreq",           strmhz(buf, bd->bi_flbfreq));
+       print_str ("inpfreq",           strmhz(buf, bd->bi_inpfreq));
+       print_str ("vcofreq",           strmhz(buf, bd->bi_vcofreq));
+#endif
+#if defined(CONFIG_CMD_NET)
+       puts ("ethaddr     =");
+       print_eth_addr (bd->bi_enetaddr);
+
+#if defined(CONFIG_HAS_ETH1)
+       puts ("\neth1addr    =");
+       print_eth_addr (bd->bi_enet1addr);
+#endif
+
+#if defined(CONFIG_HAS_ETH2)
+       puts ("\neth2addr    =");
+       print_eth_addr (bd->bi_enet2addr);
+#endif
+
+#if defined(CONFIG_HAS_ETH3)
+       puts ("\neth3addr    =");
+       print_eth_addr (bd->bi_enet3addr);
+#endif
+
+       puts ("\nip_addr     = ");
+       print_IPaddr (bd->bi_ip_addr);
+#endif
+       printf ("\nbaudrate    = %d bps\n", bd->bi_baudrate);
+}
diff --git a/lib_microblaze/Makefile b/lib_microblaze/Makefile
index 9b0f296..b9c5088 100644
--- a/lib_microblaze/Makefile
+++ b/lib_microblaze/Makefile
@@ -27,6 +27,7 @@ LIB   = $(obj)lib$(ARCH).a
 
 SOBJS-y        +=
 
+COBJS-$(CONFIG_CMD_BDI) += bdinfo.o
 COBJS-y        += board.o
 COBJS-y        += bootm.o
 COBJS-y        += cache.o
diff --git a/lib_microblaze/bdinfo.c b/lib_microblaze/bdinfo.c
new file mode 100644
index 0000000..8f726eb
--- /dev/null
+++ b/lib_microblaze/bdinfo.c
@@ -0,0 +1,54 @@
+/*
+ * (C) Copyright 2003
+ * Wolfgang Denk, DENX Software Engineering, [EMAIL PROTECTED]
+ *
+ * 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>
+#include <bdinfo.h>
+#include <net.h>               /* for print_IPaddr */
+
+DECLARE_GLOBAL_DATA_PTR;
+
+void arch_bdinfo ( cmd_tbl_t *cmdtp, int flag, int argc, char *argv[])
+{
+       bd_t *bd = gd->bd;
+
+       print_num ("mem start      ",   (ulong)bd->bi_memstart);
+       print_lnum ("mem size       ",  (u64)bd->bi_memsize);
+       print_num ("flash start    ",   (ulong)bd->bi_flashstart);
+       print_num ("flash size     ",   (ulong)bd->bi_flashsize);
+       print_num ("flash offset   ",   (ulong)bd->bi_flashoffset);
+#if defined(CONFIG_SYS_SRAM_BASE)
+       print_num ("sram start     ",   (ulong)bd->bi_sramstart);
+       print_num ("sram size      ",   (ulong)bd->bi_sramsize);
+#endif
+#if defined(CONFIG_CMD_NET)
+       puts ("ethaddr     =");
+       print_eth_addr (bd->bi_enetaddr);
+       puts ("\nip_addr     = ");
+       print_IPaddr (bd->bi_ip_addr);
+#endif
+       printf ("\nbaudrate    = %ld bps\n", (ulong)bd->bi_baudrate);
+}
diff --git a/lib_mips/Makefile b/lib_mips/Makefile
index 7967e58..5dc75c0 100644
--- a/lib_mips/Makefile
+++ b/lib_mips/Makefile
@@ -27,6 +27,7 @@ LIB   = $(obj)lib$(ARCH).a
 
 SOBJS-y        +=
 
+COBJS-$(CONFIG_CMD_BDI) += bdinfo.o
 COBJS-y        += board.o
 ifeq ($(CONFIG_QEMU_MIPS),y)
 COBJS-y        += bootm_qemu_mips.o
diff --git a/lib_mips/bdinfo.c b/lib_mips/bdinfo.c
new file mode 100644
index 0000000..e5920ad
--- /dev/null
+++ b/lib_mips/bdinfo.c
@@ -0,0 +1,50 @@
+/*
+ * (C) Copyright 2003
+ * Wolfgang Denk, DENX Software Engineering, [EMAIL PROTECTED]
+ *
+ * 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>
+#include <bdinfo.h>
+#include <net.h>               /* for print_IPaddr */
+
+DECLARE_GLOBAL_DATA_PTR;
+
+void arch_bdinfo(cmd_tbl_t *cmdtp, int flag, int argc, char *argv[])
+{
+       bd_t *bd = gd->bd;
+
+       print_num ("boot_params",       (ulong)bd->bi_boot_params);
+       print_num ("memstart",          (ulong)bd->bi_memstart);
+       print_lnum ("memsize",          (u64)bd->bi_memsize);
+       print_num ("flashstart",        (ulong)bd->bi_flashstart);
+       print_num ("flashsize",         (ulong)bd->bi_flashsize);
+       print_num ("flashoffset",       (ulong)bd->bi_flashoffset);
+
+       puts ("ethaddr     =");
+       print_eth_addr (bd->bi_enetaddr);
+       puts ("\nip_addr     = ");
+       print_IPaddr (bd->bi_ip_addr);
+       printf ("\nbaudrate    = %ld bps\n", bd->bi_baudrate);
+}
diff --git a/lib_nios/Makefile b/lib_nios/Makefile
index f66e989..b665eb7 100644
--- a/lib_nios/Makefile
+++ b/lib_nios/Makefile
@@ -27,6 +27,7 @@ LIB   = $(obj)lib$(ARCH).a
 
 SOBJS-y        +=
 
+COBJS-$(CONFIG_CMD_BDI) += bdinfo.o
 COBJS-y        += board.o
 COBJS-y        += bootm.o
 COBJS-y        += cache.o
diff --git a/lib_nios/bdinfo.c b/lib_nios/bdinfo.c
new file mode 100644
index 0000000..04a9232
--- /dev/null
+++ b/lib_nios/bdinfo.c
@@ -0,0 +1,49 @@
+/*
+ * (C) Copyright 2003
+ * Wolfgang Denk, DENX Software Engineering, [EMAIL PROTECTED]
+ *
+ * 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>
+#include <bdinfo.h>
+#include <net.h>               /* for print_IPaddr */
+
+DECLARE_GLOBAL_DATA_PTR;
+
+void arch_bdinfo ( cmd_tbl_t *cmdtp, int flag, int argc, char *argv[])
+{
+       bd_t *bd = gd->bd;
+
+       print_num ("memstart",          (ulong)bd->bi_memstart);
+       print_lnum ("memsize",          (u64)bd->bi_memsize);
+       print_num ("flashstart",        (ulong)bd->bi_flashstart);
+       print_num ("flashsize",         (ulong)bd->bi_flashsize);
+       print_num ("flashoffset",       (ulong)bd->bi_flashoffset);
+
+       puts ("ethaddr     =");
+       print_eth_addr (bd->bi_enetaddr);
+       puts ("\nip_addr     = ");
+       print_IPaddr (bd->bi_ip_addr);
+       printf ("\nbaudrate    = %ld bps\n", bd->bi_baudrate);
+}
diff --git a/lib_nios2/Makefile b/lib_nios2/Makefile
index b69bc38..fd9a60e 100644
--- a/lib_nios2/Makefile
+++ b/lib_nios2/Makefile
@@ -27,6 +27,7 @@ LIB   = $(obj)lib$(ARCH).a
 
 SOBJS-y        += cache.o
 
+COBJS-$(CONFIG_CMD_BDI) += bdinfo.o
 COBJS-y        += board.o
 COBJS-y        += bootm.o
 COBJS-y        += divmod.o
diff --git a/lib_nios2/bdinfo.c b/lib_nios2/bdinfo.c
new file mode 100644
index 0000000..c256dfb
--- /dev/null
+++ b/lib_nios2/bdinfo.c
@@ -0,0 +1,57 @@
+/*
+ * (C) Copyright 2003
+ * Wolfgang Denk, DENX Software Engineering, [EMAIL PROTECTED]
+ *
+ * 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>
+#include <bdinfo.h>
+#include <net.h>               /* for print_IPaddr */
+
+DECLARE_GLOBAL_DATA_PTR;
+
+void arch_bdinfo ( cmd_tbl_t *cmdtp, int flag, int argc, char *argv[])
+{
+       bd_t *bd = gd->bd;
+
+       print_num ("mem start",         (ulong)bd->bi_memstart);
+       print_lnum ("mem size",         (u64)bd->bi_memsize);
+       print_num ("flash start",       (ulong)bd->bi_flashstart);
+       print_num ("flash size",        (ulong)bd->bi_flashsize);
+       print_num ("flash offset",      (ulong)bd->bi_flashoffset);
+
+#if defined(CONFIG_SYS_SRAM_BASE)
+       print_num ("sram start",        (ulong)bd->bi_sramstart);
+       print_num ("sram size",         (ulong)bd->bi_sramsize);
+#endif
+
+#if defined(CONFIG_CMD_NET)
+       puts ("ethaddr     =");
+       print_eth_addr (bd->bi_enetaddr);
+       puts ("\nip_addr     = ");
+       print_IPaddr (bd->bi_ip_addr);
+#endif
+
+       printf ("\nbaudrate    = %ld bps\n", bd->bi_baudrate);
+}
diff --git a/lib_ppc/Makefile b/lib_ppc/Makefile
index 60ea0c9..b53bf29 100644
--- a/lib_ppc/Makefile
+++ b/lib_ppc/Makefile
@@ -30,6 +30,7 @@ SOBJS-y       += ppcstring.o
 SOBJS-y        += ticks.o
 
 COBJS-y        += bat_rw.o
+COBJS-$(CONFIG_CMD_BDI) += bdinfo.o
 COBJS-y        += board.o
 COBJS-y        += bootm.o
 COBJS-y        += cache.o
diff --git a/lib_ppc/bdinfo.c b/lib_ppc/bdinfo.c
new file mode 100644
index 0000000..de8b5a2
--- /dev/null
+++ b/lib_ppc/bdinfo.c
@@ -0,0 +1,119 @@
+/*
+ * (C) Copyright 2003
+ * Wolfgang Denk, DENX Software Engineering, [EMAIL PROTECTED]
+ *
+ * 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>
+#include <bdinfo.h>
+#include <net.h>               /* for print_IPaddr */
+
+DECLARE_GLOBAL_DATA_PTR;
+
+void arch_bdinfo ( cmd_tbl_t *cmdtp, int flag, int argc, char *argv[])
+{
+       bd_t *bd = gd->bd;
+       char buf[32];
+
+#ifdef DEBUG
+       print_num ("bd address",    (ulong)bd           );
+#endif
+       print_num ("memstart",      bd->bi_memstart     );
+       print_lnum ("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) || defined(CONFIG_E500)
+       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) || defined(CONFIG_XILINX_405) || \
+    defined(CONFIG_440EP) || defined(CONFIG_440GR) || \
+    defined(CONFIG_440EPX) || defined(CONFIG_440GRX) ||        \
+    defined(CONFIG_440SP) || defined(CONFIG_440SPE)
+       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) || 
defined(CONFIG_XILINX_405) || \
+    defined(CONFIG_440EP) || defined(CONFIG_440GR) || defined(CONFIG_440SPE) 
|| \
+    defined(CONFIG_440EPX) || defined(CONFIG_440GRX)
+       print_str ("pci_busfreq",   strmhz(buf, bd->bi_pci_busfreq));
+#endif
+#else  /* ! CONFIG_405GP, CONFIG_405CR, CONFIG_405EP, CONFIG_XILINX_405, 
CONFIG_440EP CONFIG_440GR */
+#if defined(CONFIG_CPM2)
+       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_CPM2)
+       print_str ("cpmfreq",       strmhz(buf, bd->bi_cpmfreq));
+#endif
+       print_str ("busfreq",       strmhz(buf, bd->bi_busfreq));
+#endif /* CONFIG_405GP, CONFIG_405CR, CONFIG_405EP, CONFIG_XILINX_405, 
CONFIG_440EP CONFIG_440GR */
+#if defined(CONFIG_MPC8220)
+       print_str ("inpfreq",       strmhz(buf, bd->bi_inpfreq));
+       print_str ("flbfreq",       strmhz(buf, bd->bi_flbfreq));
+       print_str ("pcifreq",       strmhz(buf, bd->bi_pcifreq));
+       print_str ("vcofreq",       strmhz(buf, bd->bi_vcofreq));
+       print_str ("pevfreq",       strmhz(buf, bd->bi_pevfreq));
+#endif
+
+       puts ("ethaddr     =");
+       print_eth_addr (bd->bi_enetaddr);
+
+#if defined(CONFIG_HAS_ETH1)
+       puts ("\neth1addr    =");
+       print_eth_addr (bd->bi_enet1addr);
+#endif
+
+#if defined(CONFIG_HAS_ETH2)
+       puts ("\neth2addr    =");
+       print_eth_addr (bd->bi_enet2addr);
+#endif
+
+#if defined(CONFIG_HAS_ETH3)
+       puts ("\neth3addr    =");
+       print_eth_addr (bd->bi_enet3addr);
+#endif
+
+#if defined(CONFIG_HAS_ETH4)
+       puts ("\neth4addr    =");
+       print_eth_addr (bd->bi_enet4addr);
+#endif
+
+#if defined(CONFIG_HAS_ETH5)
+       puts ("\neth5addr    =");
+       print_eth_addr (bd->bi_enet5addr);
+#endif
+
+#ifdef CONFIG_HERMES
+       print_str ("ethspeed",      strmhz(buf, bd->bi_ethspeed));
+#endif
+       puts ("\nIP addr     = ");      print_IPaddr (bd->bi_ip_addr);
+       printf ("\nbaudrate    = %6ld bps\n", bd->bi_baudrate);
+}
diff --git a/lib_sh/Makefile b/lib_sh/Makefile
index 4034381..a405c8d 100644
--- a/lib_sh/Makefile
+++ b/lib_sh/Makefile
@@ -24,6 +24,7 @@ LIB   = $(obj)lib$(ARCH).a
 
 SOBJS-y        +=
 
+COBJS-$(CONFIG_CMD_BDI) += bdinfo.o
 COBJS-y        += board.o
 COBJS-y        += bootm.o
 # COBJS-y      += time.o
diff --git a/lib_sh/bdinfo.c b/lib_sh/bdinfo.c
new file mode 100644
index 0000000..e5920ad
--- /dev/null
+++ b/lib_sh/bdinfo.c
@@ -0,0 +1,50 @@
+/*
+ * (C) Copyright 2003
+ * Wolfgang Denk, DENX Software Engineering, [EMAIL PROTECTED]
+ *
+ * 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>
+#include <bdinfo.h>
+#include <net.h>               /* for print_IPaddr */
+
+DECLARE_GLOBAL_DATA_PTR;
+
+void arch_bdinfo(cmd_tbl_t *cmdtp, int flag, int argc, char *argv[])
+{
+       bd_t *bd = gd->bd;
+
+       print_num ("boot_params",       (ulong)bd->bi_boot_params);
+       print_num ("memstart",          (ulong)bd->bi_memstart);
+       print_lnum ("memsize",          (u64)bd->bi_memsize);
+       print_num ("flashstart",        (ulong)bd->bi_flashstart);
+       print_num ("flashsize",         (ulong)bd->bi_flashsize);
+       print_num ("flashoffset",       (ulong)bd->bi_flashoffset);
+
+       puts ("ethaddr     =");
+       print_eth_addr (bd->bi_enetaddr);
+       puts ("\nip_addr     = ");
+       print_IPaddr (bd->bi_ip_addr);
+       printf ("\nbaudrate    = %ld bps\n", bd->bi_baudrate);
+}
diff --git a/lib_sparc/Makefile b/lib_sparc/Makefile
index 040ca10..67a68da 100644
--- a/lib_sparc/Makefile
+++ b/lib_sparc/Makefile
@@ -25,12 +25,17 @@ include $(TOPDIR)/config.mk
 
 LIB    = $(obj)lib$(ARCH).a
 
-SOBJS  =
+SOBJS-y        =
 
-COBJS  = board.o cache.o interrupts.o time.o bootm.o
+COBJS-$(CONFIG_CMD_BDI) += bdinfo.o
+COBJS-y        = board.o
+COBJS-y        = bootm.o
+COBJS-y        = cache.o
+COBJS-y        = interrupts.o
+COBJS-y        = time.o
 
-SRCS   := $(SOBJS:.o=.S) $(COBJS:.o=.c)
-OBJS   := $(addprefix $(obj),$(SOBJS) $(COBJS))
+SRCS   := $(SOBJS-y:.o=.S) $(COBJS-y:.o=.c)
+OBJS   := $(addprefix $(obj),$(SOBJS-y) $(COBJS-y))
 
 $(LIB):        $(obj).depend $(OBJS)
        $(AR) $(ARFLAGS) $@ $(OBJS)
diff --git a/lib_sparc/bdinfo.c b/lib_sparc/bdinfo.c
new file mode 100644
index 0000000..72e054f
--- /dev/null
+++ b/lib_sparc/bdinfo.c
@@ -0,0 +1,64 @@
+/*
+ * (C) Copyright 2003
+ * Wolfgang Denk, DENX Software Engineering, [EMAIL PROTECTED]
+ *
+ * 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>
+#include <bdinfo.h>
+#include <net.h>               /* for print_IPaddr */
+
+DECLARE_GLOBAL_DATA_PTR;
+
+void arch_bdinfo(cmd_tbl_t * cmdtp, int flag, int argc, char *argv[])
+{
+       bd_t *bd = gd->bd;
+
+#ifdef DEBUG
+       print_num("bd address             ", (ulong) bd);
+#endif
+       print_num("memstart               ", bd->bi_memstart);
+       print_lnum("memsize                ", bd->bi_memsize);
+       print_num("flashstart             ", bd->bi_flashstart);
+       print_num("CONFIG_SYS_MONITOR_BASE       ", CONFIG_SYS_MONITOR_BASE);
+       print_num("CONFIG_ENV_ADDR           ", CONFIG_ENV_ADDR);
+       printf("CONFIG_SYS_RELOC_MONITOR_BASE = 0x%lx (%d)\n", 
CONFIG_SYS_RELOC_MONITOR_BASE,
+              CONFIG_SYS_MONITOR_LEN);
+       printf("CONFIG_SYS_MALLOC_BASE        = 0x%lx (%d)\n", 
CONFIG_SYS_MALLOC_BASE,
+              CONFIG_SYS_MALLOC_LEN);
+       printf("CONFIG_SYS_INIT_SP_OFFSET     = 0x%lx (%d)\n", 
CONFIG_SYS_INIT_SP_OFFSET,
+              CONFIG_SYS_STACK_SIZE);
+       printf("CONFIG_SYS_PROM_OFFSET        = 0x%lx (%d)\n", 
CONFIG_SYS_PROM_OFFSET,
+              CONFIG_SYS_PROM_SIZE);
+       printf("CONFIG_SYS_GBL_DATA_OFFSET    = 0x%lx (%d)\n", 
CONFIG_SYS_GBL_DATA_OFFSET,
+              CONFIG_SYS_GBL_DATA_SIZE);
+
+#if defined(CONFIG_CMD_NET)
+       puts("ethaddr                =");
+       print_eth_addr(bd->bi_enetaddr);
+       puts("\nIP addr                = ");
+       print_IPaddr(bd->bi_ip_addr);
+#endif
+       printf("\nbaudrate               = %6ld bps\n", bd->bi_baudrate);
+}
-- 
1.5.6.5

_______________________________________________
U-Boot mailing list
U-Boot@lists.denx.de
http://lists.denx.de/mailman/listinfo/u-boot

Reply via email to