diff options
Diffstat (limited to 'common/cmd_bdinfo.c')
| -rw-r--r-- | common/cmd_bdinfo.c | 180 | 
1 files changed, 180 insertions, 0 deletions
| diff --git a/common/cmd_bdinfo.c b/common/cmd_bdinfo.c new file mode 100644 index 000000000..3f73cf852 --- /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 */ + |