]> git.kernelconcepts.de Git - karo-tx-uboot.git/blob - common/cmd_bdinfo.c
bdinfo: get mac address from environment
[karo-tx-uboot.git] / common / cmd_bdinfo.c
1 /*
2  * (C) Copyright 2003
3  * Wolfgang Denk, DENX Software Engineering, wd@denx.de.
4  *
5  * See file CREDITS for list of people who contributed to this
6  * project.
7  *
8  * This program is free software; you can redistribute it and/or
9  * modify it under the terms of the GNU General Public License as
10  * published by the Free Software Foundation; either version 2 of
11  * the License, or (at your option) any later version.
12  *
13  * This program is distributed in the hope that it will be useful,
14  * but WITHOUT ANY WARRANTY; without even the implied warranty of
15  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
16  * GNU General Public License for more details.
17  *
18  * You should have received a copy of the GNU General Public License
19  * along with this program; if not, write to the Free Software
20  * Foundation, Inc., 59 Temple Place, Suite 330, Boston,
21  * MA 02111-1307 USA
22  */
23
24 /*
25  * Boot support
26  */
27 #include <common.h>
28 #include <command.h>
29
30 DECLARE_GLOBAL_DATA_PTR;
31
32 static void print_num(const char *, ulong);
33
34 static void print_eth(int idx);
35
36 #ifndef CONFIG_ARM      /* PowerPC and other */
37 static void print_lnum(const char *, u64);
38
39 #ifdef CONFIG_PPC
40 static void print_str(const char *, const char *);
41
42 int do_bdinfo ( cmd_tbl_t *cmdtp, int flag, int argc, char *argv[])
43 {
44         bd_t *bd = gd->bd;
45         char buf[32];
46
47 #ifdef DEBUG
48         print_num ("bd address",    (ulong)bd           );
49 #endif
50         print_num ("memstart",      bd->bi_memstart     );
51         print_lnum ("memsize",      bd->bi_memsize      );
52         print_num ("flashstart",    bd->bi_flashstart   );
53         print_num ("flashsize",     bd->bi_flashsize    );
54         print_num ("flashoffset",   bd->bi_flashoffset  );
55         print_num ("sramstart",     bd->bi_sramstart    );
56         print_num ("sramsize",      bd->bi_sramsize     );
57 #if defined(CONFIG_5xx)  || defined(CONFIG_8xx) || \
58     defined(CONFIG_8260) || defined(CONFIG_E500)
59         print_num ("immr_base",     bd->bi_immr_base    );
60 #endif
61         print_num ("bootflags",     bd->bi_bootflags    );
62 #if defined(CONFIG_405GP) || defined(CONFIG_405CR) || \
63     defined(CONFIG_405EP) || defined(CONFIG_XILINX_405) || \
64     defined(CONFIG_440EP) || defined(CONFIG_440GR) || \
65     defined(CONFIG_440EPX) || defined(CONFIG_440GRX) || \
66     defined(CONFIG_440SP) || defined(CONFIG_440SPE)
67         print_str ("procfreq",      strmhz(buf, bd->bi_procfreq));
68         print_str ("plb_busfreq",   strmhz(buf, bd->bi_plb_busfreq));
69 #if defined(CONFIG_405GP) || defined(CONFIG_405EP) || defined(CONFIG_XILINX_405) || \
70     defined(CONFIG_440EP) || defined(CONFIG_440GR) || defined(CONFIG_440SPE) || \
71     defined(CONFIG_440EPX) || defined(CONFIG_440GRX)
72         print_str ("pci_busfreq",   strmhz(buf, bd->bi_pci_busfreq));
73 #endif
74 #else   /* ! CONFIG_405GP, CONFIG_405CR, CONFIG_405EP, CONFIG_XILINX_405, CONFIG_440EP CONFIG_440GR */
75 #if defined(CONFIG_CPM2)
76         print_str ("vco",           strmhz(buf, bd->bi_vco));
77         print_str ("sccfreq",       strmhz(buf, bd->bi_sccfreq));
78         print_str ("brgfreq",       strmhz(buf, bd->bi_brgfreq));
79 #endif
80         print_str ("intfreq",       strmhz(buf, bd->bi_intfreq));
81 #if defined(CONFIG_CPM2)
82         print_str ("cpmfreq",       strmhz(buf, bd->bi_cpmfreq));
83 #endif
84         print_str ("busfreq",       strmhz(buf, bd->bi_busfreq));
85 #endif /* CONFIG_405GP, CONFIG_405CR, CONFIG_405EP, CONFIG_XILINX_405, CONFIG_440EP CONFIG_440GR */
86 #if defined(CONFIG_MPC8220)
87         print_str ("inpfreq",       strmhz(buf, bd->bi_inpfreq));
88         print_str ("flbfreq",       strmhz(buf, bd->bi_flbfreq));
89         print_str ("pcifreq",       strmhz(buf, bd->bi_pcifreq));
90         print_str ("vcofreq",       strmhz(buf, bd->bi_vcofreq));
91         print_str ("pevfreq",       strmhz(buf, bd->bi_pevfreq));
92 #endif
93
94         print_eth(0);
95 #if defined(CONFIG_HAS_ETH1)
96         print_eth(1);
97 #endif
98 #if defined(CONFIG_HAS_ETH2)
99         print_eth(2);
100 #endif
101 #if defined(CONFIG_HAS_ETH3)
102         print_eth(3);
103 #endif
104 #if defined(CONFIG_HAS_ETH4)
105         print_eth(4);
106 #endif
107 #if defined(CONFIG_HAS_ETH5)
108         print_eth(5);
109 #endif
110
111 #ifdef CONFIG_HERMES
112         print_str ("ethspeed",      strmhz(buf, bd->bi_ethspeed));
113 #endif
114         printf ("IP addr     = %pI4\n", &bd->bi_ip_addr);
115         printf ("baudrate    = %6ld bps\n", bd->bi_baudrate   );
116         return 0;
117 }
118
119 #elif defined(CONFIG_NIOS) /* NIOS*/
120
121 int do_bdinfo ( cmd_tbl_t *cmdtp, int flag, int argc, char *argv[])
122 {
123         bd_t *bd = gd->bd;
124
125         print_num ("memstart",          (ulong)bd->bi_memstart);
126         print_lnum ("memsize",          (u64)bd->bi_memsize);
127         print_num ("flashstart",        (ulong)bd->bi_flashstart);
128         print_num ("flashsize",         (ulong)bd->bi_flashsize);
129         print_num ("flashoffset",       (ulong)bd->bi_flashoffset);
130
131         print_eth(0);
132         printf ("ip_addr     = %pI4\n", &bd->bi_ip_addr);
133         printf ("baudrate    = %ld bps\n", bd->bi_baudrate);
134
135         return 0;
136 }
137
138 #elif defined(CONFIG_NIOS2) /* Nios-II */
139
140 int do_bdinfo ( cmd_tbl_t *cmdtp, int flag, int argc, char *argv[])
141 {
142         bd_t *bd = gd->bd;
143
144         print_num ("mem start",         (ulong)bd->bi_memstart);
145         print_lnum ("mem size",         (u64)bd->bi_memsize);
146         print_num ("flash start",       (ulong)bd->bi_flashstart);
147         print_num ("flash size",        (ulong)bd->bi_flashsize);
148         print_num ("flash offset",      (ulong)bd->bi_flashoffset);
149
150 #if defined(CONFIG_SYS_SRAM_BASE)
151         print_num ("sram start",        (ulong)bd->bi_sramstart);
152         print_num ("sram size",         (ulong)bd->bi_sramsize);
153 #endif
154
155 #if defined(CONFIG_CMD_NET)
156         print_eth(0);
157         printf ("ip_addr     = %pI4\n", &bd->bi_ip_addr);
158 #endif
159
160         printf ("baudrate    = %ld bps\n", bd->bi_baudrate);
161
162         return 0;
163 }
164 #elif defined(CONFIG_MICROBLAZE) /* ! PPC, which leaves Microblaze */
165
166 int do_bdinfo ( cmd_tbl_t *cmdtp, int flag, int argc, char *argv[])
167 {
168         bd_t *bd = gd->bd;
169         print_num ("mem start      ",   (ulong)bd->bi_memstart);
170         print_lnum ("mem size       ",  (u64)bd->bi_memsize);
171         print_num ("flash start    ",   (ulong)bd->bi_flashstart);
172         print_num ("flash size     ",   (ulong)bd->bi_flashsize);
173         print_num ("flash offset   ",   (ulong)bd->bi_flashoffset);
174 #if defined(CONFIG_SYS_SRAM_BASE)
175         print_num ("sram start     ",   (ulong)bd->bi_sramstart);
176         print_num ("sram size      ",   (ulong)bd->bi_sramsize);
177 #endif
178 #if defined(CONFIG_CMD_NET)
179         print_eth(0);
180         printf ("ip_addr     = %pI4\n", &bd->bi_ip_addr);
181 #endif
182         printf ("baudrate    = %ld bps\n", (ulong)bd->bi_baudrate);
183         return 0;
184 }
185
186 #elif defined(CONFIG_SPARC)     /* SPARC */
187 int do_bdinfo(cmd_tbl_t * cmdtp, int flag, int argc, char *argv[])
188 {
189         bd_t *bd = gd->bd;
190
191 #ifdef DEBUG
192         print_num("bd address             ", (ulong) bd);
193 #endif
194         print_num("memstart               ", bd->bi_memstart);
195         print_lnum("memsize                ", bd->bi_memsize);
196         print_num("flashstart             ", bd->bi_flashstart);
197         print_num("CONFIG_SYS_MONITOR_BASE       ", CONFIG_SYS_MONITOR_BASE);
198         print_num("CONFIG_ENV_ADDR           ", CONFIG_ENV_ADDR);
199         printf("CONFIG_SYS_RELOC_MONITOR_BASE = 0x%lx (%d)\n", CONFIG_SYS_RELOC_MONITOR_BASE,
200                CONFIG_SYS_MONITOR_LEN);
201         printf("CONFIG_SYS_MALLOC_BASE        = 0x%lx (%d)\n", CONFIG_SYS_MALLOC_BASE,
202                CONFIG_SYS_MALLOC_LEN);
203         printf("CONFIG_SYS_INIT_SP_OFFSET     = 0x%lx (%d)\n", CONFIG_SYS_INIT_SP_OFFSET,
204                CONFIG_SYS_STACK_SIZE);
205         printf("CONFIG_SYS_PROM_OFFSET        = 0x%lx (%d)\n", CONFIG_SYS_PROM_OFFSET,
206                CONFIG_SYS_PROM_SIZE);
207         printf("CONFIG_SYS_GBL_DATA_OFFSET    = 0x%lx (%d)\n", CONFIG_SYS_GBL_DATA_OFFSET,
208                CONFIG_SYS_GBL_DATA_SIZE);
209
210 #if defined(CONFIG_CMD_NET)
211         print_eth(0);
212         printf("ip_addr     = %pI4\n", &bd->bi_ip_addr);
213 #endif
214         printf("baudrate               = %6ld bps\n", bd->bi_baudrate);
215         return 0;
216 }
217
218 #elif defined(CONFIG_M68K) /* M68K */
219 static void print_str(const char *, const char *);
220
221 int do_bdinfo ( cmd_tbl_t *cmdtp, int flag, int argc, char *argv[])
222 {
223         bd_t *bd = gd->bd;
224         char buf[32];
225
226         print_num ("memstart",          (ulong)bd->bi_memstart);
227         print_lnum ("memsize",          (u64)bd->bi_memsize);
228         print_num ("flashstart",        (ulong)bd->bi_flashstart);
229         print_num ("flashsize",         (ulong)bd->bi_flashsize);
230         print_num ("flashoffset",       (ulong)bd->bi_flashoffset);
231 #if defined(CONFIG_SYS_INIT_RAM_ADDR)
232         print_num ("sramstart",         (ulong)bd->bi_sramstart);
233         print_num ("sramsize",          (ulong)bd->bi_sramsize);
234 #endif
235 #if defined(CONFIG_SYS_MBAR)
236         print_num ("mbar",              bd->bi_mbar_base);
237 #endif
238         print_str ("cpufreq",           strmhz(buf, bd->bi_intfreq));
239         print_str ("busfreq",           strmhz(buf, bd->bi_busfreq));
240 #ifdef CONFIG_PCI
241         print_str ("pcifreq",           strmhz(buf, bd->bi_pcifreq));
242 #endif
243 #ifdef CONFIG_EXTRA_CLOCK
244         print_str ("flbfreq",           strmhz(buf, bd->bi_flbfreq));
245         print_str ("inpfreq",           strmhz(buf, bd->bi_inpfreq));
246         print_str ("vcofreq",           strmhz(buf, bd->bi_vcofreq));
247 #endif
248 #if defined(CONFIG_CMD_NET)
249         print_eth(0);
250 #if defined(CONFIG_HAS_ETH1)
251         print_eth(1);
252 #endif
253 #if defined(CONFIG_HAS_ETH2)
254         print_eth(2);
255 #endif
256 #if defined(CONFIG_HAS_ETH3)
257         print_eth(3);
258 #endif
259
260         printf ("ip_addr     = %pI4\n", &bd->bi_ip_addr);
261 #endif
262         printf ("baudrate    = %ld bps\n", bd->bi_baudrate);
263
264         return 0;
265 }
266
267 #elif defined(CONFIG_BLACKFIN)
268 static void print_str(const char *, const char *);
269
270 int do_bdinfo(cmd_tbl_t *cmdtp, int flag, int argc, char *argv[])
271 {
272         bd_t *bd = gd->bd;
273         char buf[32];
274
275         printf("U-Boot      = %s\n", bd->bi_r_version);
276         printf("CPU         = %s\n", bd->bi_cpu);
277         printf("Board       = %s\n", bd->bi_board_name);
278         print_str("VCO",         strmhz(buf, bd->bi_vco));
279         print_str("CCLK",        strmhz(buf, bd->bi_cclk));
280         print_str("SCLK",        strmhz(buf, bd->bi_sclk));
281
282         print_num("boot_params", (ulong)bd->bi_boot_params);
283         print_num("memstart",    (ulong)bd->bi_memstart);
284         print_lnum("memsize",    (u64)bd->bi_memsize);
285         print_num("flashstart",  (ulong)bd->bi_flashstart);
286         print_num("flashsize",   (ulong)bd->bi_flashsize);
287         print_num("flashoffset", (ulong)bd->bi_flashoffset);
288
289         print_eth(0);
290         printf("ip_addr     = %pI4\n", &bd->bi_ip_addr);
291         printf("baudrate    = %d bps\n", bd->bi_baudrate);
292
293         return 0;
294 }
295
296 #else /* ! PPC, which leaves MIPS */
297
298 int do_bdinfo ( cmd_tbl_t *cmdtp, int flag, int argc, char *argv[])
299 {
300         bd_t *bd = gd->bd;
301
302         print_num ("boot_params",       (ulong)bd->bi_boot_params);
303         print_num ("memstart",          (ulong)bd->bi_memstart);
304         print_lnum ("memsize",          (u64)bd->bi_memsize);
305         print_num ("flashstart",        (ulong)bd->bi_flashstart);
306         print_num ("flashsize",         (ulong)bd->bi_flashsize);
307         print_num ("flashoffset",       (ulong)bd->bi_flashoffset);
308
309         print_eth(0);
310         printf ("ip_addr     = %pI4\n", &bd->bi_ip_addr);
311         printf ("baudrate    = %d bps\n", bd->bi_baudrate);
312
313         return 0;
314 }
315 #endif  /* MIPS */
316
317 #else   /* ARM */
318
319 int do_bdinfo ( cmd_tbl_t *cmdtp, int flag, int argc, char *argv[])
320 {
321         int i;
322         bd_t *bd = gd->bd;
323
324         print_num ("arch_number",       bd->bi_arch_number);
325         print_num ("env_t",             (ulong)bd->bi_env);
326         print_num ("boot_params",       (ulong)bd->bi_boot_params);
327
328         for (i=0; i<CONFIG_NR_DRAM_BANKS; ++i) {
329                 print_num("DRAM bank",  i);
330                 print_num("-> start",   bd->bi_dram[i].start);
331                 print_num("-> size",    bd->bi_dram[i].size);
332         }
333
334 #if defined(CONFIG_CMD_NET)
335         print_eth(0);
336         printf ("ip_addr     = %pI4\n", &bd->bi_ip_addr);
337 #endif
338         printf ("baudrate    = %d bps\n", bd->bi_baudrate);
339
340         return 0;
341 }
342
343 #endif /* CONFIG_ARM XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX */
344
345 static void print_num(const char *name, ulong value)
346 {
347         printf ("%-12s= 0x%08lX\n", name, value);
348 }
349
350 static void print_eth(int idx)
351 {
352         char name[10], *val;
353         if (idx)
354                 sprintf(name, "eth%iaddr", idx);
355         else
356                 strcpy(name, "ethaddr");
357         val = getenv(name);
358         if (!val)
359                 val = "(not set)";
360         printf("%-12s= %s\n", name, val);
361 }
362
363 #ifndef CONFIG_ARM
364 static void print_lnum(const char *name, u64 value)
365 {
366         printf ("%-12s= 0x%.8llX\n", name, value);
367 }
368 #endif
369
370 #if defined(CONFIG_PPC) || defined(CONFIG_M68K) || defined(CONFIG_BLACKFIN)
371 static void print_str(const char *name, const char *str)
372 {
373         printf ("%-12s= %6s MHz\n", name, str);
374 }
375 #endif  /* CONFIG_PPC */
376
377
378 /* -------------------------------------------------------------------- */
379
380 U_BOOT_CMD(
381         bdinfo, 1,      1,      do_bdinfo,
382         "print Board Info structure",
383         NULL
384 );