bdinfo: Drop print_cpu_word_size()
[platform/kernel/u-boot.git] / cmd / bdinfo.c
1 // SPDX-License-Identifier: GPL-2.0+
2 /*
3  * (C) Copyright 2003
4  * Wolfgang Denk, DENX Software Engineering, wd@denx.de.
5  */
6
7 /*
8  * Boot support
9  */
10 #include <common.h>
11 #include <command.h>
12 #include <env.h>
13 #include <net.h>
14 #include <vsprintf.h>
15 #include <asm/cache.h>
16 #include <linux/compiler.h>
17
18 DECLARE_GLOBAL_DATA_PTR;
19
20 static void print_num(const char *name, ulong value)
21 {
22         printf("%-12s= 0x%0*lx\n", name, 2 * (int)sizeof(value), value);
23 }
24
25 __maybe_unused
26 static void print_eth(int idx)
27 {
28         char name[10], *val;
29         if (idx)
30                 sprintf(name, "eth%iaddr", idx);
31         else
32                 strcpy(name, "ethaddr");
33         val = env_get(name);
34         if (!val)
35                 val = "(not set)";
36         printf("%-12s= %s\n", name, val);
37 }
38
39 #ifndef CONFIG_DM_ETH
40 __maybe_unused
41 static void print_eths(void)
42 {
43         struct eth_device *dev;
44         int i = 0;
45
46         do {
47                 dev = eth_get_dev_by_index(i);
48                 if (dev) {
49                         printf("eth%dname    = %s\n", i, dev->name);
50                         print_eth(i);
51                         i++;
52                 }
53         } while (dev);
54
55         printf("current eth = %s\n", eth_get_name());
56         printf("ip_addr     = %s\n", env_get("ipaddr"));
57 }
58 #endif
59
60 static void print_lnum(const char *name, unsigned long long value)
61 {
62         printf("%-12s= 0x%.8llX\n", name, value);
63 }
64
65 static void print_mhz(const char *name, unsigned long hz)
66 {
67         char buf[32];
68
69         printf("%-12s= %6s MHz\n", name, strmhz(buf, hz));
70 }
71
72 static void print_bi_dram(const bd_t *bd)
73 {
74 #ifdef CONFIG_NR_DRAM_BANKS
75         int i;
76
77         for (i = 0; i < CONFIG_NR_DRAM_BANKS; ++i) {
78                 if (bd->bi_dram[i].size) {
79                         print_num("DRAM bank",  i);
80                         print_num("-> start",   bd->bi_dram[i].start);
81                         print_num("-> size",    bd->bi_dram[i].size);
82                 }
83         }
84 #endif
85 }
86
87 static void print_eth_ip_addr(void)
88 {
89 #if defined(CONFIG_CMD_NET)
90         print_eth(0);
91 #if defined(CONFIG_HAS_ETH1)
92         print_eth(1);
93 #endif
94 #if defined(CONFIG_HAS_ETH2)
95         print_eth(2);
96 #endif
97 #if defined(CONFIG_HAS_ETH3)
98         print_eth(3);
99 #endif
100 #if defined(CONFIG_HAS_ETH4)
101         print_eth(4);
102 #endif
103 #if defined(CONFIG_HAS_ETH5)
104         print_eth(5);
105 #endif
106         printf("IP addr     = %s\n", env_get("ipaddr"));
107 #endif
108 }
109
110 void __weak board_detail(void)
111 {
112         /* Please define board_detail() for your PPC platform */
113 }
114
115 int do_bdinfo(struct cmd_tbl *cmdtp, int flag, int argc, char *const argv[])
116 {
117         bd_t *bd = gd->bd;
118
119 #ifdef DEBUG
120         print_num("bd address", (ulong)bd);
121 #endif
122         if (IS_ENABLED(CONFIG_ARM))
123                 print_num("arch_number", bd->bi_arch_number);
124         print_num("boot_params", (ulong)bd->bi_boot_params);
125         print_bi_dram(bd);
126         print_num("memstart", (ulong)bd->bi_memstart);
127         print_lnum("memsize", (u64)bd->bi_memsize);
128         print_num("flashstart", (ulong)bd->bi_flashstart);
129         print_num("flashsize", (ulong)bd->bi_flashsize);
130         print_num("flashoffset", (ulong)bd->bi_flashoffset);
131         print_eth_ip_addr();
132         printf("baudrate    = %u bps\n", gd->baudrate);
133         print_num("relocaddr", gd->relocaddr);
134         print_num("reloc off", gd->reloc_off);
135         printf("%-12s= %u-bit\n", "Build", (uint)sizeof(void *) * 8);
136 #if defined(CONFIG_CMD_NET) && !defined(CONFIG_DM_ETH)
137         print_eths();
138 #endif
139         print_num("fdt_blob", (ulong)gd->fdt_blob);
140         print_num("new_fdt", (ulong)gd->new_fdt);
141         print_num("fdt_size", (ulong)gd->fdt_size);
142 #if defined(CONFIG_LCD) || defined(CONFIG_VIDEO) || defined(CONFIG_DM_VIDEO)
143         print_num("FB base  ", gd->fb_base);
144 #endif
145
146         /* This section is used only by ARM */
147 #ifdef CONFIG_ARM
148 #ifdef CONFIG_SYS_MEM_RESERVE_SECURE
149         if (gd->arch.secure_ram & MEM_RESERVE_SECURE_SECURED) {
150                 print_num("Secure ram",
151                           gd->arch.secure_ram & MEM_RESERVE_SECURE_ADDR_MASK);
152         }
153 #endif
154 #ifdef CONFIG_RESV_RAM
155         if (gd->arch.resv_ram)
156                 print_num("Reserved ram", gd->arch.resv_ram);
157 #endif
158 #if !(CONFIG_IS_ENABLED(SYS_ICACHE_OFF) && CONFIG_IS_ENABLED(SYS_DCACHE_OFF))
159         print_num("TLB addr", gd->arch.tlb_addr);
160 #endif
161         print_num("irq_sp", gd->irq_sp);        /* irq stack pointer */
162         print_num("sp start ", gd->start_addr_sp);
163         /*
164          * TODO: Currently only support for davinci SOC's is added.
165          * Remove this check once all the board implement this.
166          */
167 #ifdef CONFIG_CLOCKS
168         printf("ARM frequency = %ld MHz\n", gd->bd->bi_arm_freq);
169         printf("DSP frequency = %ld MHz\n", gd->bd->bi_dsp_freq);
170         printf("DDR frequency = %ld MHz\n", gd->bd->bi_ddr_freq);
171 #endif
172 #ifdef CONFIG_BOARD_TYPES
173         printf("Board Type  = %ld\n", gd->board_type);
174 #endif
175 #if CONFIG_VAL(SYS_MALLOC_F_LEN)
176         printf("Early malloc usage: %lx / %x\n", gd->malloc_ptr,
177                CONFIG_VAL(SYS_MALLOC_F_LEN));
178 #endif
179 #if CONFIG_IS_ENABLED(MULTI_DTB_FIT)
180         print_num("multi_dtb_fit", (ulong)gd->multi_dtb_fit);
181 #endif
182 #endif /* CONFIG_ARM */
183
184         /* This section is used only by ppc */
185 #if defined(CONFIG_MPC8xx) || defined(CONFIG_E500)
186         print_num("immr_base", bd->bi_immr_base);
187 #endif
188         if (IS_ENABLED(CONFIG_PPC)) {
189                 print_num("bootflags", bd->bi_bootflags);
190                 print_mhz("intfreq", bd->bi_intfreq);
191 #ifdef CONFIG_ENABLE_36BIT_PHYS
192                 if (IS_ENABLED(CONFIG_PHYS_64BIT))
193                         puts("addressing  = 36-bit\n");
194                 else
195                         puts("addressing  = 32-bit\n");
196 #endif
197                 board_detail();
198         }
199 #if defined(CONFIG_CPM2)
200         print_mhz("cpmfreq", bd->bi_cpmfreq);
201         print_mhz("vco", bd->bi_vco);
202         print_mhz("sccfreq", bd->bi_sccfreq);
203         print_mhz("brgfreq", bd->bi_brgfreq);
204 #endif
205
206         /* This is used by m68k and ppc */
207 #if defined(CONFIG_SYS_INIT_RAM_ADDR)
208         print_num("sramstart", (ulong)bd->bi_sramstart);
209         print_num("sramsize", (ulong)bd->bi_sramsize);
210 #endif
211         if (IS_ENABLED(CONFIG_PPC) || IS_ENABLED(CONFIG_M68K))
212                 print_mhz("busfreq", bd->bi_busfreq);
213
214         /* The rest are used only by m68k */
215 #ifdef CONFIG_M68K
216 #if defined(CONFIG_SYS_MBAR)
217         print_num("mbar", bd->bi_mbar_base);
218 #endif
219         print_mhz("cpufreq", bd->bi_intfreq);
220         if (IS_ENABLED(CONFIG_PCI))
221                 print_mhz("pcifreq", bd->bi_pcifreq);
222 #ifdef CONFIG_EXTRA_CLOCK
223         print_mhz("flbfreq", bd->bi_flbfreq);
224         print_mhz("inpfreq", bd->bi_inpfreq);
225         print_mhz("vcofreq", bd->bi_vcofreq);
226 #endif
227 #endif
228
229         return 0;
230 }
231
232 /* -------------------------------------------------------------------- */
233
234 U_BOOT_CMD(
235         bdinfo, 1,      1,      do_bdinfo,
236         "print Board Info structure",
237         ""
238 );