cmd_bdinfo.c 12.9 KB
Newer Older
W
wdenk 已提交
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29
/*
 * (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>

30
DECLARE_GLOBAL_DATA_PTR;
W
wdenk 已提交
31 32 33 34

static void print_num(const char *, ulong);

#ifndef CONFIG_ARM	/* PowerPC and other */
35
static void print_lnum(const char *, u64);
W
wdenk 已提交
36 37 38 39 40 41 42 43 44 45 46 47 48 49

#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	);
50
	print_lnum ("memsize", 	    bd->bi_memsize	);
W
wdenk 已提交
51 52 53 54 55
	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	);
56 57
#if defined(CONFIG_5xx)  || defined(CONFIG_8xx) || \
    defined(CONFIG_8260) || defined(CONFIG_E500)
W
wdenk 已提交
58 59 60
	print_num ("immr_base",	    bd->bi_immr_base	);
#endif
	print_num ("bootflags",	    bd->bi_bootflags	);
61
#if defined(CONFIG_405GP) || defined(CONFIG_405CR) || \
62
    defined(CONFIG_405EP) || defined(CONFIG_XILINX_405) || \
63
    defined(CONFIG_440EP) || defined(CONFIG_440GR) || \
64 65
    defined(CONFIG_440EPX) || defined(CONFIG_440GRX) ||	\
    defined(CONFIG_440SP) || defined(CONFIG_440SPE)
W
wdenk 已提交
66
	print_str ("procfreq",	    strmhz(buf, bd->bi_procfreq));
W
wdenk 已提交
67
	print_str ("plb_busfreq",   strmhz(buf, bd->bi_plb_busfreq));
68
#if defined(CONFIG_405GP) || defined(CONFIG_405EP) || defined(CONFIG_XILINX_405) || \
69 70
    defined(CONFIG_440EP) || defined(CONFIG_440GR) || defined(CONFIG_440SPE) || \
    defined(CONFIG_440EPX) || defined(CONFIG_440GRX)
W
wdenk 已提交
71
	print_str ("pci_busfreq",   strmhz(buf, bd->bi_pci_busfreq));
W
wdenk 已提交
72
#endif
73
#else	/* ! CONFIG_405GP, CONFIG_405CR, CONFIG_405EP, CONFIG_XILINX_405, CONFIG_440EP CONFIG_440GR */
74
#if defined(CONFIG_CPM2)
W
wdenk 已提交
75 76 77 78 79
	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));
80
#if defined(CONFIG_CPM2)
W
wdenk 已提交
81 82 83
	print_str ("cpmfreq",	    strmhz(buf, bd->bi_cpmfreq));
#endif
	print_str ("busfreq",	    strmhz(buf, bd->bi_busfreq));
84
#endif /* CONFIG_405GP, CONFIG_405CR, CONFIG_405EP, CONFIG_XILINX_405, CONFIG_440EP CONFIG_440GR */
W
wdenk 已提交
85 86 87 88 89 90 91
#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
W
wdenk 已提交
92

93
	puts ("ethaddr     =");
W
wdenk 已提交
94 95 96
	for (i=0; i<6; ++i) {
		printf ("%c%02X", i ? ':' : ' ', bd->bi_enetaddr[i]);
	}
W
wdenk 已提交
97

W
wdenk 已提交
98
#if defined(CONFIG_HAS_ETH1)
99
	puts ("\neth1addr    =");
W
wdenk 已提交
100 101 102
	for (i=0; i<6; ++i) {
		printf ("%c%02X", i ? ':' : ' ', bd->bi_enet1addr[i]);
	}
W
wdenk 已提交
103 104
#endif

W
wdenk 已提交
105
#if defined(CONFIG_HAS_ETH2)
106
       puts ("\neth2addr    =");
W
wdenk 已提交
107 108 109 110
       for (i=0; i<6; ++i) {
		printf ("%c%02X", i ? ':' : ' ', bd->bi_enet2addr[i]);
	}
#endif
W
wdenk 已提交
111

W
wdenk 已提交
112
#if defined(CONFIG_HAS_ETH3)
W
wdenk 已提交
113 114 115 116 117 118
       puts ("\neth3addr    =");
       for (i=0; i<6; ++i) {
		printf ("%c%02X", i ? ':' : ' ', bd->bi_enet3addr[i]);
	}
#endif

119 120 121 122 123 124 125 126 127 128 129 130 131 132
#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

W
wdenk 已提交
133 134 135
#ifdef CONFIG_HERMES
	print_str ("ethspeed",	    strmhz(buf, bd->bi_ethspeed));
#endif
M
Mike Frysinger 已提交
136 137
	printf ("IP addr     = %pI4\n", &bd->bi_ip_addr);
	printf ("baudrate    = %6ld bps\n", bd->bi_baudrate   );
W
wdenk 已提交
138 139 140
	return 0;
}

W
wdenk 已提交
141 142 143 144 145 146 147 148
#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);
149
	print_lnum ("memsize",		(u64)bd->bi_memsize);
W
wdenk 已提交
150 151 152 153
	print_num ("flashstart",	(ulong)bd->bi_flashstart);
	print_num ("flashsize",		(ulong)bd->bi_flashsize);
	print_num ("flashoffset",	(ulong)bd->bi_flashoffset);

154
	puts ("ethaddr     =");
W
wdenk 已提交
155 156 157
	for (i=0; i<6; ++i) {
		printf ("%c%02X", i ? ':' : ' ', bd->bi_enetaddr[i]);
	}
M
Mike Frysinger 已提交
158 159
	printf ("ip_addr     = %pI4\n", &bd->bi_ip_addr);
	printf ("baudrate    = %ld bps\n", bd->bi_baudrate);
W
wdenk 已提交
160 161 162 163

	return 0;
}

W
wdenk 已提交
164 165 166 167
#elif defined(CONFIG_NIOS2) /* Nios-II */

int do_bdinfo ( cmd_tbl_t *cmdtp, int flag, int argc, char *argv[])
{
168
#if defined(CONFIG_CMD_NET)
W
wdenk 已提交
169
	int i;
170
#endif
W
wdenk 已提交
171 172 173
	bd_t *bd = gd->bd;

	print_num ("mem start",		(ulong)bd->bi_memstart);
174
	print_lnum ("mem size",		(u64)bd->bi_memsize);
W
wdenk 已提交
175 176 177 178
	print_num ("flash start",	(ulong)bd->bi_flashstart);
	print_num ("flash size",	(ulong)bd->bi_flashsize);
	print_num ("flash offset",	(ulong)bd->bi_flashoffset);

179
#if defined(CONFIG_SYS_SRAM_BASE)
W
wdenk 已提交
180 181 182 183
	print_num ("sram start",	(ulong)bd->bi_sramstart);
	print_num ("sram size",		(ulong)bd->bi_sramsize);
#endif

184
#if defined(CONFIG_CMD_NET)
W
wdenk 已提交
185 186 187 188
	puts ("ethaddr     =");
	for (i=0; i<6; ++i) {
		printf ("%c%02X", i ? ':' : ' ', bd->bi_enetaddr[i]);
	}
M
Mike Frysinger 已提交
189
	printf ("ip_addr     = %pI4\n", &bd->bi_ip_addr);
W
wdenk 已提交
190 191
#endif

M
Mike Frysinger 已提交
192
	printf ("baudrate    = %ld bps\n", bd->bi_baudrate);
W
wdenk 已提交
193 194 195

	return 0;
}
M
Michal Simek 已提交
196 197 198 199 200 201 202
#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);
203
	print_lnum ("mem size       ",	(u64)bd->bi_memsize);
M
Michal Simek 已提交
204 205 206
	print_num ("flash start    ",	(ulong)bd->bi_flashstart);
	print_num ("flash size     ",	(ulong)bd->bi_flashsize);
	print_num ("flash offset   ",	(ulong)bd->bi_flashoffset);
207
#if defined(CONFIG_SYS_SRAM_BASE)
M
Michal Simek 已提交
208 209 210
	print_num ("sram start     ",	(ulong)bd->bi_sramstart);
	print_num ("sram size      ",	(ulong)bd->bi_sramsize);
#endif
211
#if defined(CONFIG_CMD_NET)
M
Michal Simek 已提交
212 213 214 215
	puts ("ethaddr     =");
	for (i=0; i<6; ++i) {
		printf ("%c%02X", i ? ':' : ' ', bd->bi_enetaddr[i]);
	}
M
Mike Frysinger 已提交
216
	printf ("ip_addr     = %pI4\n", &bd->bi_ip_addr);
M
Michal Simek 已提交
217
#endif
M
Mike Frysinger 已提交
218
	printf ("baudrate    = %ld bps\n", (ulong)bd->bi_baudrate);
M
Michal Simek 已提交
219 220
	return 0;
}
W
wdenk 已提交
221

222 223 224 225 226 227 228 229 230 231 232 233
#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);
234
	print_lnum("memsize                ", bd->bi_memsize);
235
	print_num("flashstart             ", bd->bi_flashstart);
236
	print_num("CONFIG_SYS_MONITOR_BASE       ", CONFIG_SYS_MONITOR_BASE);
237
	print_num("CONFIG_ENV_ADDR           ", CONFIG_ENV_ADDR);
238 239 240 241 242 243 244 245 246 247
	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);
248 249 250 251 252 253

#if defined(CONFIG_CMD_NET)
	puts("ethaddr                =");
	for (i = 0; i < 6; ++i) {
		printf("%c%02X", i ? ':' : ' ', bd->bi_enetaddr[i]);
	}
M
Mike Frysinger 已提交
254
	printf("ip_addr     = %pI4\n", &bd->bi_ip_addr);
255
#endif
M
Mike Frysinger 已提交
256
	printf("baudrate               = %6ld bps\n", bd->bi_baudrate);
257 258 259
	return 0;
}

260
#elif defined(CONFIG_M68K) /* M68K */
261
static void print_str(const char *, const char *);
262 263 264 265 266

int do_bdinfo ( cmd_tbl_t *cmdtp, int flag, int argc, char *argv[])
{
	int i;
	bd_t *bd = gd->bd;
267 268
	char buf[32];

269
	print_num ("memstart",		(ulong)bd->bi_memstart);
270
	print_lnum ("memsize",		(u64)bd->bi_memsize);
271 272 273
	print_num ("flashstart",	(ulong)bd->bi_flashstart);
	print_num ("flashsize",		(ulong)bd->bi_flashsize);
	print_num ("flashoffset",	(ulong)bd->bi_flashoffset);
274
#if defined(CONFIG_SYS_INIT_RAM_ADDR)
275 276
	print_num ("sramstart",		(ulong)bd->bi_sramstart);
	print_num ("sramsize",		(ulong)bd->bi_sramsize);
277
#endif
278
#if defined(CONFIG_SYS_MBAR)
279
	print_num ("mbar",		bd->bi_mbar_base);
280
#endif
R
Richard Retanubun 已提交
281
	print_str ("cpufreq",		strmhz(buf, bd->bi_intfreq));
282 283 284 285 286 287 288 289 290
	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
291
#if defined(CONFIG_CMD_NET)
292 293 294 295 296 297 298 299 300 301 302 303 304
	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)
305 306
	puts ("\neth2addr    =");
	for (i=0; i<6; ++i) {
307 308 309 310 311
		printf ("%c%02X", i ? ':' : ' ', bd->bi_enet2addr[i]);
	}
#endif

#if defined(CONFIG_HAS_ETH3)
312 313
	puts ("\neth3addr    =");
	for (i=0; i<6; ++i) {
314 315 316 317
		printf ("%c%02X", i ? ':' : ' ', bd->bi_enet3addr[i]);
	}
#endif

M
Mike Frysinger 已提交
318
	printf ("ip_addr     = %pI4\n", &bd->bi_ip_addr);
319
#endif
M
Mike Frysinger 已提交
320
	printf ("baudrate    = %ld bps\n", bd->bi_baudrate);
321 322 323 324

	return 0;
}

325
#elif defined(CONFIG_BLACKFIN)
326
static void print_str(const char *, const char *);
327 328 329 330 331

int do_bdinfo(cmd_tbl_t *cmdtp, int flag, int argc, char *argv[])
{
	int i;
	bd_t *bd = gd->bd;
332
	char buf[32];
333 334 335 336

	printf("U-Boot      = %s\n", bd->bi_r_version);
	printf("CPU         = %s\n", bd->bi_cpu);
	printf("Board       = %s\n", bd->bi_board_name);
337 338 339
	print_str("VCO",         strmhz(buf, bd->bi_vco));
	print_str("CCLK",        strmhz(buf, bd->bi_cclk));
	print_str("SCLK",        strmhz(buf, bd->bi_sclk));
340 341 342

	print_num("boot_params", (ulong)bd->bi_boot_params);
	print_num("memstart",    (ulong)bd->bi_memstart);
343
	print_lnum("memsize",    (u64)bd->bi_memsize);
344 345 346 347 348 349 350
	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]);
M
Mike Frysinger 已提交
351 352
	printf("ip_addr     = %pI4\n", &bd->bi_ip_addr);
	printf("baudrate    = %d bps\n", bd->bi_baudrate);
353 354 355 356

	return 0;
}

W
wdenk 已提交
357 358 359 360 361 362 363 364 365
#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);
366
	print_lnum ("memsize",		(u64)bd->bi_memsize);
W
wdenk 已提交
367 368 369 370
	print_num ("flashstart",	(ulong)bd->bi_flashstart);
	print_num ("flashsize",		(ulong)bd->bi_flashsize);
	print_num ("flashoffset",	(ulong)bd->bi_flashoffset);

371
	puts ("ethaddr     =");
W
wdenk 已提交
372 373 374
	for (i=0; i<6; ++i) {
		printf ("%c%02X", i ? ':' : ' ', bd->bi_enetaddr[i]);
	}
M
Mike Frysinger 已提交
375 376
	printf ("ip_addr     = %pI4\n", &bd->bi_ip_addr);
	printf ("baudrate    = %d bps\n", bd->bi_baudrate);
W
wdenk 已提交
377 378 379 380 381 382 383 384 385 386 387 388 389 390 391 392 393 394 395 396 397 398

	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);
	}

399
#if defined(CONFIG_CMD_NET)
400
	puts ("ethaddr     =");
W
wdenk 已提交
401 402 403
	for (i=0; i<6; ++i) {
		printf ("%c%02X", i ? ':' : ' ', bd->bi_enetaddr[i]);
	}
M
Mike Frysinger 已提交
404 405
	puts  ( "\n" );
	printf ("ip_addr     = %pI4\n", &bd->bi_ip_addr);
406
#endif
M
Mike Frysinger 已提交
407
	printf ("baudrate    = %d bps\n", bd->bi_baudrate);
W
wdenk 已提交
408 409 410 411 412 413 414 415 416 417 418

	return 0;
}

#endif /* CONFIG_ARM XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX */

static void print_num(const char *name, ulong value)
{
	printf ("%-12s= 0x%08lX\n", name, value);
}

419 420 421 422 423 424 425
#ifndef CONFIG_ARM
static void print_lnum(const char *name, u64 value)
{
	printf ("%-12s= 0x%.8llX\n", name, value);
}
#endif

426
#if defined(CONFIG_PPC) || defined(CONFIG_M68K) || defined(CONFIG_BLACKFIN)
W
wdenk 已提交
427 428 429 430 431 432 433 434 435
static void print_str(const char *name, const char *str)
{
	printf ("%-12s= %6s MHz\n", name, str);
}
#endif	/* CONFIG_PPC */


/* -------------------------------------------------------------------- */

W
wdenk 已提交
436 437
U_BOOT_CMD(
	bdinfo,	1,	1,	do_bdinfo,
P
Peter Tyser 已提交
438
	"print Board Info structure",
W
wdenk 已提交
439 440
	NULL
);