]> git.kernelconcepts.de Git - karo-tx-uboot.git/blob - common/cmd_bdinfo.c
* Patches by Xianghua Xiao, 15 Oct 2003:
[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 #include <net.h>                /* for print_IPaddr */
30
31
32 #if (CONFIG_COMMANDS & CFG_CMD_BDI)
33 static void print_num(const char *, ulong);
34
35 #ifndef CONFIG_ARM      /* PowerPC and other */
36
37 #ifdef CONFIG_PPC
38 static void print_str(const char *, const char *);
39
40 int do_bdinfo ( cmd_tbl_t *cmdtp, int flag, int argc, char *argv[])
41 {
42         DECLARE_GLOBAL_DATA_PTR;
43
44         int i;
45         bd_t *bd = gd->bd;
46         char buf[32];
47
48 #ifdef DEBUG
49         print_num ("bd address",    (ulong)bd           );
50 #endif
51         print_num ("memstart",      bd->bi_memstart     );
52         print_num ("memsize",       bd->bi_memsize      );
53         print_num ("flashstart",    bd->bi_flashstart   );
54         print_num ("flashsize",     bd->bi_flashsize    );
55         print_num ("flashoffset",   bd->bi_flashoffset  );
56         print_num ("sramstart",     bd->bi_sramstart    );
57         print_num ("sramsize",      bd->bi_sramsize     );
58 #if defined(CONFIG_5xx) || defined(CONFIG_8xx) || 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) || defined(CONFIG_405EP)
63         print_str ("procfreq",      strmhz(buf, bd->bi_procfreq));
64         print_str ("plb_busfreq",           strmhz(buf, bd->bi_plb_busfreq));
65 #if defined(CONFIG_405GP) || defined(CONFIG_405EP)
66         print_str ("pci_busfreq",           strmhz(buf, bd->bi_pci_busfreq));
67 #endif
68 #else   /* ! CONFIG_405GP, CONFIG_405CR, CONFIG_405EP */
69 #if defined(CONFIG_8260) || defined(CONFIG_MPC8560)
70         print_str ("vco",           strmhz(buf, bd->bi_vco));
71         print_str ("sccfreq",       strmhz(buf, bd->bi_sccfreq));
72         print_str ("brgfreq",       strmhz(buf, bd->bi_brgfreq));
73 #endif
74         print_str ("intfreq",       strmhz(buf, bd->bi_intfreq));
75 #if defined(CONFIG_8260) || defined(CONFIG_MPC8560)
76         print_str ("cpmfreq",       strmhz(buf, bd->bi_cpmfreq));
77 #endif
78         print_str ("busfreq",       strmhz(buf, bd->bi_busfreq));
79 #endif /* CONFIG_405GP, CONFIG_405CR, CONFIG_405EP */
80         printf ("ethaddr     =");
81         for (i=0; i<6; ++i) {
82                 printf ("%c%02X", i ? ':' : ' ', bd->bi_enetaddr[i]);
83         }
84 #if (defined CONFIG_PN62) || (defined CONFIG_PPCHAMELEONEVB) \
85     || (defined CONFIG_MPC8540ADS) || (defined CONFIG_MPC8560ADS)
86         printf ("\neth1addr    =");
87         for (i=0; i<6; ++i) {
88                 printf ("%c%02X", i ? ':' : ' ', bd->bi_enet1addr[i]);
89         }
90 #endif /* CONFIG_PN62 */
91 #if defined(CONFIG_MPC8540ADS) || defined(CONFIG_MPC8560ADS)
92        printf ("\neth2addr    =");
93        for (i=0; i<6; ++i) {
94                 printf ("%c%02X", i ? ':' : ' ', bd->bi_enet2addr[i]);
95         }
96 #endif
97 #ifdef CONFIG_HERMES
98         print_str ("ethspeed",      strmhz(buf, bd->bi_ethspeed));
99 #endif
100         printf ("\nIP addr     = ");    print_IPaddr (bd->bi_ip_addr);
101         printf ("\nbaudrate    = %6ld bps\n", bd->bi_baudrate   );
102         return 0;
103 }
104
105 #elif defined(CONFIG_NIOS) /* NIOS*/
106
107 int do_bdinfo ( cmd_tbl_t *cmdtp, int flag, int argc, char *argv[])
108 {
109         DECLARE_GLOBAL_DATA_PTR;
110
111         int i;
112         bd_t *bd = gd->bd;
113
114         print_num ("memstart",          (ulong)bd->bi_memstart);
115         print_num ("memsize",           (ulong)bd->bi_memsize);
116         print_num ("flashstart",        (ulong)bd->bi_flashstart);
117         print_num ("flashsize",         (ulong)bd->bi_flashsize);
118         print_num ("flashoffset",       (ulong)bd->bi_flashoffset);
119
120         printf ("ethaddr     =");
121         for (i=0; i<6; ++i) {
122                 printf ("%c%02X", i ? ':' : ' ', bd->bi_enetaddr[i]);
123         }
124         printf ("\nip_addr     = ");
125         print_IPaddr (bd->bi_ip_addr);
126         printf ("\nbaudrate    = %ld bps\n", bd->bi_baudrate);
127
128         return 0;
129 }
130
131
132 #else /* ! PPC, which leaves MIPS */
133
134 int do_bdinfo ( cmd_tbl_t *cmdtp, int flag, int argc, char *argv[])
135 {
136         DECLARE_GLOBAL_DATA_PTR;
137
138         int i;
139         bd_t *bd = gd->bd;
140
141         print_num ("boot_params",       (ulong)bd->bi_boot_params);
142         print_num ("memstart",          (ulong)bd->bi_memstart);
143         print_num ("memsize",           (ulong)bd->bi_memsize);
144         print_num ("flashstart",        (ulong)bd->bi_flashstart);
145         print_num ("flashsize",         (ulong)bd->bi_flashsize);
146         print_num ("flashoffset",       (ulong)bd->bi_flashoffset);
147
148         printf ("ethaddr     =");
149         for (i=0; i<6; ++i) {
150                 printf ("%c%02X", i ? ':' : ' ', bd->bi_enetaddr[i]);
151         }
152         printf ("\nip_addr     = ");
153         print_IPaddr (bd->bi_ip_addr);
154         printf ("\nbaudrate    = %d bps\n", bd->bi_baudrate);
155
156         return 0;
157 }
158 #endif  /* MIPS */
159
160 #else   /* ARM */
161
162 int do_bdinfo ( cmd_tbl_t *cmdtp, int flag, int argc, char *argv[])
163 {
164         DECLARE_GLOBAL_DATA_PTR;
165
166         int i;
167         bd_t *bd = gd->bd;
168
169         print_num ("arch_number",       bd->bi_arch_number);
170         print_num ("env_t",             (ulong)bd->bi_env);
171         print_num ("boot_params",       (ulong)bd->bi_boot_params);
172
173         for (i=0; i<CONFIG_NR_DRAM_BANKS; ++i) {
174                 print_num("DRAM bank",  i);
175                 print_num("-> start",   bd->bi_dram[i].start);
176                 print_num("-> size",    bd->bi_dram[i].size);
177         }
178
179         printf ("ethaddr     =");
180         for (i=0; i<6; ++i) {
181                 printf ("%c%02X", i ? ':' : ' ', bd->bi_enetaddr[i]);
182         }
183         printf ("\n"
184                 "ip_addr     = ");
185         print_IPaddr (bd->bi_ip_addr);
186         printf ("\n"
187                 "baudrate    = %d bps\n", bd->bi_baudrate);
188
189         return 0;
190 }
191
192 #endif /* CONFIG_ARM XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX */
193
194 static void print_num(const char *name, ulong value)
195 {
196         printf ("%-12s= 0x%08lX\n", name, value);
197 }
198
199 #ifdef CONFIG_PPC
200 static void print_str(const char *name, const char *str)
201 {
202         printf ("%-12s= %6s MHz\n", name, str);
203 }
204 #endif  /* CONFIG_PPC */
205
206
207 /* -------------------------------------------------------------------- */
208
209 U_BOOT_CMD(
210         bdinfo, 1,      1,      do_bdinfo,
211         "bdinfo  - print Board Info structure\n",
212         NULL
213 );
214 #endif  /* CFG_CMD_BDI */