From 989a9e1e8795d434e70f11670c07166f5a5ae456 Mon Sep 17 00:00:00 2001 From: Simon Glass Date: Sun, 10 May 2020 14:16:24 -0600 Subject: [PATCH 01/39] tbs2910: Drop the 'bd' command This board is very close to its limit. Drop this command before the bd refactoring, which increases the size slightly on one toolchain. Signed-off-by: Simon Glass Reviewed-by: Bin Meng --- configs/tbs2910_defconfig | 1 + 1 file changed, 1 insertion(+) diff --git a/configs/tbs2910_defconfig b/configs/tbs2910_defconfig index 27080c75ef..62d606bb03 100644 --- a/configs/tbs2910_defconfig +++ b/configs/tbs2910_defconfig @@ -22,6 +22,7 @@ CONFIG_BOUNCE_BUFFER=y CONFIG_BOARD_EARLY_INIT_F=y CONFIG_HUSH_PARSER=y CONFIG_SYS_PROMPT="Matrix U-Boot> " +# CONFIG_CMD_BDI is not set CONFIG_CMD_BOOTZ=y # CONFIG_BOOTM_PLAN9 is not set # CONFIG_BOOTM_RTEMS is not set From 5ffd5e834e6c35a82e5d4221c0b51ca2be13ac1c Mon Sep 17 00:00:00 2001 From: Simon Glass Date: Sun, 10 May 2020 14:16:25 -0600 Subject: [PATCH 02/39] bdinfo: nds32: Use generic bd_info At present nds32 still uses its own private bd_info struct. Move it over to use the generic one like other archs. Signed-off-by: Simon Glass Reviewed-by: Rick Chen Reviewed-by: Bin Meng --- arch/nds32/include/asm/u-boot.h | 20 ++------------------ 1 file changed, 2 insertions(+), 18 deletions(-) diff --git a/arch/nds32/include/asm/u-boot.h b/arch/nds32/include/asm/u-boot.h index 8c949e7fb7..7b6e905f2a 100644 --- a/arch/nds32/include/asm/u-boot.h +++ b/arch/nds32/include/asm/u-boot.h @@ -19,26 +19,10 @@ #ifndef _U_BOOT_H_ #define _U_BOOT_H_ 1 +/* Use the generic board which requires a unified bd_info */ +#include #include - -typedef struct bd_info { - unsigned long bi_arch_number; /* unique id for this board */ - unsigned long bi_boot_params; /* where this board expects params */ - unsigned long bi_memstart; /* start of DRAM memory */ - unsigned long bi_memsize; /* size of DRAM memory in bytes */ - unsigned long bi_flashstart; /* start of FLASH memory */ - unsigned long bi_flashsize; /* size of FLASH memory */ - unsigned long bi_flashoffset; /* reserved area for startup monitor */ - unsigned char bi_enetaddr[6]; - - struct /* RAM configuration */ - { - unsigned long start; - unsigned long size; - } bi_dram[CONFIG_NR_DRAM_BANKS]; -} bd_t; - /* For image.h:image_check_target_arch() */ #define IH_ARCH_DEFAULT IH_ARCH_NDS32 From b46f989bb7e6badf114b42a5c184b99ae8e329c4 Mon Sep 17 00:00:00 2001 From: Simon Glass Date: Sun, 10 May 2020 14:16:26 -0600 Subject: [PATCH 03/39] bdinfo: riscv: Use generic bd_info At present riscv still uses its own private bd_info struct. Move it over to use the generic one like other archs. Signed-off-by: Simon Glass Reviewed-by: Rick Chen Reviewed-by: Bin Meng --- arch/riscv/include/asm/u-boot.h | 19 ++----------------- 1 file changed, 2 insertions(+), 17 deletions(-) diff --git a/arch/riscv/include/asm/u-boot.h b/arch/riscv/include/asm/u-boot.h index 5ba8e77812..d5e1d5f323 100644 --- a/arch/riscv/include/asm/u-boot.h +++ b/arch/riscv/include/asm/u-boot.h @@ -18,25 +18,10 @@ #ifndef _U_BOOT_H_ #define _U_BOOT_H_ 1 +/* Use the generic board which requires a unified bd_info */ +#include #include - -typedef struct bd_info { - unsigned long bi_boot_params; /* where this board expects params */ - unsigned long bi_memstart; /* start of DRAM memory */ - unsigned long bi_memsize; /* size of DRAM memory in bytes */ - unsigned long bi_flashstart; /* start of FLASH memory */ - unsigned long bi_flashsize; /* size of FLASH memory */ - unsigned long bi_flashoffset; /* reserved area for startup monitor */ - unsigned char bi_enetaddr[6]; - - struct /* RAM configuration */ - { - unsigned long start; - unsigned long size; - } bi_dram[CONFIG_NR_DRAM_BANKS]; -} bd_t; - /* For image.h:image_check_target_arch() */ #define IH_ARCH_DEFAULT IH_ARCH_RISCV From 4ac06d352592b79b2a07747073111c12c7ef9663 Mon Sep 17 00:00:00 2001 From: Simon Glass Date: Sun, 10 May 2020 14:16:27 -0600 Subject: [PATCH 04/39] bdinfo: m68k: Drop bd_info->bi_ipbfreq This field is not used anymore. Drop it. Signed-off-by: Simon Glass Reviewed-by: Bin Meng --- include/asm-generic/u-boot.h | 1 - 1 file changed, 1 deletion(-) diff --git a/include/asm-generic/u-boot.h b/include/asm-generic/u-boot.h index 6f749736f1..b496e55964 100644 --- a/include/asm-generic/u-boot.h +++ b/include/asm-generic/u-boot.h @@ -61,7 +61,6 @@ typedef struct bd_info { unsigned long bi_vco; /* VCO Out from PLL, in MHz */ #endif #if defined(CONFIG_M68K) - unsigned long bi_ipbfreq; /* IPB Bus Freq, in MHz */ unsigned long bi_pcifreq; /* PCI Bus Freq, in MHz */ #endif #if defined(CONFIG_EXTRA_CLOCK) From 1af9756db8f04ea5c3243929a157058d32e293bf Mon Sep 17 00:00:00 2001 From: Simon Glass Date: Sun, 10 May 2020 14:16:28 -0600 Subject: [PATCH 05/39] bdinfo: xtensa: Create a generic do_bdinfo for xtensa This arch uses only the generic function. It would be nice if all the archs did the same. As a first step, create a new generic function for the 'bd' command and make xtensa use it. Signed-off-by: Simon Glass Reviewed-by: Bin Meng --- cmd/bdinfo.c | 16 +++++++++++----- 1 file changed, 11 insertions(+), 5 deletions(-) diff --git a/cmd/bdinfo.c b/cmd/bdinfo.c index dba552b03f..83fea50ac1 100644 --- a/cmd/bdinfo.c +++ b/cmd/bdinfo.c @@ -476,16 +476,22 @@ int do_bdinfo(struct cmd_tbl *cmdtp, int flag, int argc, char *const argv[]) #elif defined(CONFIG_XTENSA) -int do_bdinfo(struct cmd_tbl *cmdtp, int flag, int argc, char *const argv[]) -{ - print_std_bdinfo(gd->bd); - return 0; -} +#define USE_GENERIC #else #error "a case for this architecture does not exist!" #endif +/* Temporary check for archs that use generic bdinfo. Eventually all will */ +#ifdef USE_GENERIC +int do_bdinfo(struct cmd_tbl *cmdtp, int flag, int argc, char *const argv[]) +{ + print_std_bdinfo(gd->bd); + + return 0; +} +#endif + /* -------------------------------------------------------------------- */ U_BOOT_CMD( From df529b5a77876481725642bf4aa83869ffc7f492 Mon Sep 17 00:00:00 2001 From: Simon Glass Date: Sun, 10 May 2020 14:16:29 -0600 Subject: [PATCH 06/39] bdinfo: mips: Use the generic bd command MIPS currently has a few extra things which are generally useful. Add them to the generic function and move MIPS over to use it. Signed-off-by: Simon Glass Reviewed-by: Bin Meng Reviewed-by: Daniel Schwierzeck --- cmd/bdinfo.c | 13 ++++--------- 1 file changed, 4 insertions(+), 9 deletions(-) diff --git a/cmd/bdinfo.c b/cmd/bdinfo.c index 83fea50ac1..761bcc1862 100644 --- a/cmd/bdinfo.c +++ b/cmd/bdinfo.c @@ -301,15 +301,7 @@ int do_bdinfo(struct cmd_tbl *cmdtp, int flag, int argc, char *const argv[]) #elif defined(CONFIG_MIPS) -int do_bdinfo(struct cmd_tbl *cmdtp, int flag, int argc, char *const argv[]) -{ - print_std_bdinfo(gd->bd); - print_num("relocaddr", gd->relocaddr); - print_num("reloc off", gd->reloc_off); - print_cpu_word_size(); - - return 0; -} +#define USE_GENERIC #elif defined(CONFIG_ARM) @@ -487,6 +479,9 @@ int do_bdinfo(struct cmd_tbl *cmdtp, int flag, int argc, char *const argv[]) int do_bdinfo(struct cmd_tbl *cmdtp, int flag, int argc, char *const argv[]) { print_std_bdinfo(gd->bd); + print_num("relocaddr", gd->relocaddr); + print_num("reloc off", gd->reloc_off); + print_cpu_word_size(); return 0; } From 08c56d19175aad4824b16d4312f8486646a53ed1 Mon Sep 17 00:00:00 2001 From: Simon Glass Date: Sun, 10 May 2020 14:16:30 -0600 Subject: [PATCH 07/39] bdinfo: nios2: Use the generic bd command Nios2 currently has some code to output SRAM information which is behind an #ifdef. No nios2 boards define this option, so the code can be removed. Move Nios2 over to use the generic function. Signed-off-by: Simon Glass Reviewed-by: Bin Meng --- cmd/bdinfo.c | 19 +------------------ 1 file changed, 1 insertion(+), 18 deletions(-) diff --git a/cmd/bdinfo.c b/cmd/bdinfo.c index 761bcc1862..a8f25cc2fb 100644 --- a/cmd/bdinfo.c +++ b/cmd/bdinfo.c @@ -222,24 +222,7 @@ int do_bdinfo(struct cmd_tbl *cmdtp, int flag, int argc, char *const argv[]) #elif defined(CONFIG_NIOS2) -int do_bdinfo(struct cmd_tbl *cmdtp, int flag, int argc, char *const argv[]) -{ - bd_t *bd = gd->bd; - - print_bi_dram(bd); - print_bi_flash(bd); - -#if defined(CONFIG_SYS_SRAM_BASE) - print_num ("sram start", (ulong)bd->bi_sramstart); - print_num ("sram size", (ulong)bd->bi_sramsize); -#endif - - print_eth_ip_addr(); - print_baudrate(); - print_cpu_word_size(); - - return 0; -} +#define USE_GENERIC #elif defined(CONFIG_MICROBLAZE) From 271db508cc9c6490f6aee2da2f8707c52738c738 Mon Sep 17 00:00:00 2001 From: Simon Glass Date: Sun, 10 May 2020 14:16:31 -0600 Subject: [PATCH 08/39] bdinfo: microblaze: Use the generic bd command Microblaze prints out ethernet and FDT information. This is useful to most archs, so move it into the generic code and move microblaze over to use it. Note that FDT information is shown for all boards, since they should be using device tree by now. Signed-off-by: Simon Glass Reviewed-by: Bin Meng --- cmd/bdinfo.c | 30 +++++++----------------------- 1 file changed, 7 insertions(+), 23 deletions(-) diff --git a/cmd/bdinfo.c b/cmd/bdinfo.c index a8f25cc2fb..16e7ad0fa5 100644 --- a/cmd/bdinfo.c +++ b/cmd/bdinfo.c @@ -226,29 +226,7 @@ int do_bdinfo(struct cmd_tbl *cmdtp, int flag, int argc, char *const argv[]) #elif defined(CONFIG_MICROBLAZE) -int do_bdinfo(struct cmd_tbl *cmdtp, int flag, int argc, char *const argv[]) -{ - bd_t *bd = gd->bd; - - print_bi_dram(bd); - print_bi_flash(bd); -#if defined(CONFIG_SYS_SRAM_BASE) - print_num("sram start ", (ulong)bd->bi_sramstart); - print_num("sram size ", (ulong)bd->bi_sramsize); -#endif -#if defined(CONFIG_CMD_NET) && !defined(CONFIG_DM_ETH) - print_eths(); -#endif - print_baudrate(); - print_num("relocaddr", gd->relocaddr); - print_num("reloc off", gd->reloc_off); - print_num("fdt_blob", (ulong)gd->fdt_blob); - print_num("new_fdt", (ulong)gd->new_fdt); - print_num("fdt_size", (ulong)gd->fdt_size); - print_cpu_word_size(); - - return 0; -} +#define USE_GENERIC #elif defined(CONFIG_M68K) @@ -465,6 +443,12 @@ int do_bdinfo(struct cmd_tbl *cmdtp, int flag, int argc, char *const argv[]) print_num("relocaddr", gd->relocaddr); print_num("reloc off", gd->reloc_off); print_cpu_word_size(); +#if defined(CONFIG_CMD_NET) && !defined(CONFIG_DM_ETH) + print_eths(); +#endif + print_num("fdt_blob", (ulong)gd->fdt_blob); + print_num("new_fdt", (ulong)gd->new_fdt); + print_num("fdt_size", (ulong)gd->fdt_size); return 0; } From f41b830f24095a2d4aebd6e559d2153f0ccc07b1 Mon Sep 17 00:00:00 2001 From: Simon Glass Date: Sun, 10 May 2020 14:16:32 -0600 Subject: [PATCH 09/39] bdinfo: sh: Use the generic bd command This arch has no code that is not already in the generic function. Drop the arch-specific function and change sh over to use the generic one. Signed-off-by: Simon Glass Reviewed-by: Bin Meng --- cmd/bdinfo.c | 13 +------------ 1 file changed, 1 insertion(+), 12 deletions(-) diff --git a/cmd/bdinfo.c b/cmd/bdinfo.c index 16e7ad0fa5..65c64786c0 100644 --- a/cmd/bdinfo.c +++ b/cmd/bdinfo.c @@ -327,18 +327,7 @@ static int do_bdinfo(struct cmd_tbl *cmdtp, int flag, int argc, #elif defined(CONFIG_SH) -int do_bdinfo(struct cmd_tbl *cmdtp, int flag, int argc, char *const argv[]) -{ - bd_t *bd = gd->bd; - - print_bi_mem(bd); - print_bi_flash(bd); - print_eth_ip_addr(); - print_baudrate(); - print_cpu_word_size(); - - return 0; -} +#define USE_GENERIC #elif defined(CONFIG_X86) From 41ec71d184f958ed01a6037536892fd4e645d562 Mon Sep 17 00:00:00 2001 From: Simon Glass Date: Sun, 10 May 2020 14:16:33 -0600 Subject: [PATCH 10/39] bdinfo: x86: Use the generic bd command This arch shows 'ethspeed' info but only the freescale drivers use it, so it can be dropped. It also calls print_bi_dram() which is safe to call from any arch since it has an #ifdef inside it. Add this to the generic do_bdinfo() and move x86 over to use it. Put it first since pytests rely on seeing it before memstart in find_ram_base(). Signed-off-by: Simon Glass Reviewed-by: Bin Meng --- cmd/bdinfo.c | 21 ++------------------- 1 file changed, 2 insertions(+), 19 deletions(-) diff --git a/cmd/bdinfo.c b/cmd/bdinfo.c index 65c64786c0..41d396a170 100644 --- a/cmd/bdinfo.c +++ b/cmd/bdinfo.c @@ -331,25 +331,7 @@ static int do_bdinfo(struct cmd_tbl *cmdtp, int flag, int argc, #elif defined(CONFIG_X86) -int do_bdinfo(struct cmd_tbl *cmdtp, int flag, int argc, char *const argv[]) -{ - bd_t *bd = gd->bd; - - print_bi_boot_params(bd); - - print_bi_dram(bd); - - print_num("relocaddr", gd->relocaddr); - print_num("reloc off", gd->reloc_off); -#if defined(CONFIG_CMD_NET) - print_eth_ip_addr(); - print_mhz("ethspeed", bd->bi_ethspeed); -#endif - print_baudrate(); - print_cpu_word_size(); - - return 0; -} +#define USE_GENERIC #elif defined(CONFIG_SANDBOX) @@ -428,6 +410,7 @@ int do_bdinfo(struct cmd_tbl *cmdtp, int flag, int argc, char *const argv[]) #ifdef USE_GENERIC int do_bdinfo(struct cmd_tbl *cmdtp, int flag, int argc, char *const argv[]) { + print_bi_dram(gd->bd); print_std_bdinfo(gd->bd); print_num("relocaddr", gd->relocaddr); print_num("reloc off", gd->reloc_off); From c66981ccbda837f556ef4ed89d9f9ce93d2adf12 Mon Sep 17 00:00:00 2001 From: Simon Glass Date: Sun, 10 May 2020 14:16:34 -0600 Subject: [PATCH 11/39] bdinfo: sandbox: Use the generic bd command Sandbox has a printout of 'FB base' but this code is not used since sandbox uses driver model for everything. Move sandbox over to use the generic do_bdinfo(). Signed-off-by: Simon Glass Reviewed-by: Bin Meng --- cmd/bdinfo.c | 16 +--------------- 1 file changed, 1 insertion(+), 15 deletions(-) diff --git a/cmd/bdinfo.c b/cmd/bdinfo.c index 41d396a170..8d1aeefa8e 100644 --- a/cmd/bdinfo.c +++ b/cmd/bdinfo.c @@ -335,21 +335,7 @@ static int do_bdinfo(struct cmd_tbl *cmdtp, int flag, int argc, #elif defined(CONFIG_SANDBOX) -int do_bdinfo(struct cmd_tbl *cmdtp, int flag, int argc, char *const argv[]) -{ - bd_t *bd = gd->bd; - - print_bi_boot_params(bd); - print_bi_dram(bd); - print_eth_ip_addr(); - -#if defined(CONFIG_LCD) || defined(CONFIG_VIDEO) - print_num("FB base ", gd->fb_base); -#endif - print_cpu_word_size(); - - return 0; -} +#define USE_GENERIC #elif defined(CONFIG_NDS32) From aa6b898fb13e978e17f0cd2010408886438357ce Mon Sep 17 00:00:00 2001 From: Simon Glass Date: Sun, 10 May 2020 14:16:35 -0600 Subject: [PATCH 12/39] bdinfo: nds32: Use the generic bd command This arch has none of its own info to show. Move it over to use the generic do_bdinfo(). Signed-off-by: Simon Glass Reviewed-by: Rick Chen Reviewed-by: Bin Meng --- cmd/bdinfo.c | 14 +------------- 1 file changed, 1 insertion(+), 13 deletions(-) diff --git a/cmd/bdinfo.c b/cmd/bdinfo.c index 8d1aeefa8e..a3e15b1555 100644 --- a/cmd/bdinfo.c +++ b/cmd/bdinfo.c @@ -339,19 +339,7 @@ static int do_bdinfo(struct cmd_tbl *cmdtp, int flag, int argc, #elif defined(CONFIG_NDS32) -int do_bdinfo(struct cmd_tbl *cmdtp, int flag, int argc, char *const argv[]) -{ - bd_t *bd = gd->bd; - - print_num("arch_number", bd->bi_arch_number); - print_bi_boot_params(bd); - print_bi_dram(bd); - print_eth_ip_addr(); - print_baudrate(); - print_cpu_word_size(); - - return 0; -} +#define USE_GENERIC #elif defined(CONFIG_RISCV) From 628c85aec0a2034e69f56a876132e66c9eb864ff Mon Sep 17 00:00:00 2001 From: Simon Glass Date: Sun, 10 May 2020 14:16:36 -0600 Subject: [PATCH 13/39] bdinfo: riscv: Use the generic bd command This arch has none of its own info to show. Move it over to use the generic do_bdinfo(). Signed-off-by: Simon Glass Reviewed-by: Rick Chen Reviewed-by: Bin Meng --- cmd/bdinfo.c | 15 +-------------- 1 file changed, 1 insertion(+), 14 deletions(-) diff --git a/cmd/bdinfo.c b/cmd/bdinfo.c index a3e15b1555..c1865d6d3e 100644 --- a/cmd/bdinfo.c +++ b/cmd/bdinfo.c @@ -343,20 +343,7 @@ static int do_bdinfo(struct cmd_tbl *cmdtp, int flag, int argc, #elif defined(CONFIG_RISCV) -int do_bdinfo(struct cmd_tbl *cmdtp, int flag, int argc, char *const argv[]) -{ - bd_t *bd = gd->bd; - - print_bi_boot_params(bd); - print_bi_dram(bd); - print_num("relocaddr", gd->relocaddr); - print_num("reloc off", gd->reloc_off); - print_eth_ip_addr(); - print_baudrate(); - print_cpu_word_size(); - - return 0; -} +#define USE_GENERIC #elif defined(CONFIG_ARC) From 2e0fa21785ad24da212f49553a7d1775f4eaca95 Mon Sep 17 00:00:00 2001 From: Simon Glass Date: Sun, 10 May 2020 14:16:37 -0600 Subject: [PATCH 14/39] bdinfo: powerpc: Use the generic bd command Unfortunately PowerPC has a lot of special stuff. Move it into the generic function for now, so we can have it all in one place. Signed-off-by: Simon Glass Reviewed-by: Bin Meng --- cmd/bdinfo.c | 89 ++++++++++++++++++++++++---------------------------- 1 file changed, 41 insertions(+), 48 deletions(-) diff --git a/cmd/bdinfo.c b/cmd/bdinfo.c index c1865d6d3e..5ff11db9af 100644 --- a/cmd/bdinfo.c +++ b/cmd/bdinfo.c @@ -172,53 +172,8 @@ static inline void __maybe_unused print_std_bdinfo(const bd_t *bd) } #if defined(CONFIG_PPC) -void __weak board_detail(void) -{ - /* Please define board_detail() for your platform */ -} -int do_bdinfo(struct cmd_tbl *cmdtp, int flag, int argc, char *const argv[]) -{ - bd_t *bd = gd->bd; - -#ifdef DEBUG - print_num("bd address", (ulong)bd); -#endif - print_bi_mem(bd); - print_bi_flash(bd); - print_num("sramstart", bd->bi_sramstart); - print_num("sramsize", bd->bi_sramsize); -#if defined(CONFIG_MPC8xx) || defined(CONFIG_E500) - print_num("immr_base", bd->bi_immr_base); -#endif - print_num("bootflags", bd->bi_bootflags); -#if defined(CONFIG_CPM2) - print_mhz("vco", bd->bi_vco); - print_mhz("sccfreq", bd->bi_sccfreq); - print_mhz("brgfreq", bd->bi_brgfreq); -#endif - print_mhz("intfreq", bd->bi_intfreq); -#if defined(CONFIG_CPM2) - print_mhz("cpmfreq", bd->bi_cpmfreq); -#endif - print_mhz("busfreq", bd->bi_busfreq); - -#ifdef CONFIG_ENABLE_36BIT_PHYS -#ifdef CONFIG_PHYS_64BIT - puts("addressing = 36-bit\n"); -#else - puts("addressing = 32-bit\n"); -#endif -#endif - - print_eth_ip_addr(); - print_baudrate(); - print_num("relocaddr", gd->relocaddr); - board_detail(); - print_cpu_word_size(); - - return 0; -} +#define USE_GENERIC #elif defined(CONFIG_NIOS2) @@ -369,10 +324,20 @@ int do_bdinfo(struct cmd_tbl *cmdtp, int flag, int argc, char *const argv[]) /* Temporary check for archs that use generic bdinfo. Eventually all will */ #ifdef USE_GENERIC +void __weak board_detail(void) +{ + /* Please define board_detail() for your PPC platform */ +} + int do_bdinfo(struct cmd_tbl *cmdtp, int flag, int argc, char *const argv[]) { - print_bi_dram(gd->bd); - print_std_bdinfo(gd->bd); + bd_t *bd = gd->bd; + +#ifdef DEBUG + print_num("bd address", (ulong)bd); +#endif + print_bi_dram(bd); + print_std_bdinfo(bd); print_num("relocaddr", gd->relocaddr); print_num("reloc off", gd->reloc_off); print_cpu_word_size(); @@ -383,6 +348,34 @@ int do_bdinfo(struct cmd_tbl *cmdtp, int flag, int argc, char *const argv[]) print_num("new_fdt", (ulong)gd->new_fdt); print_num("fdt_size", (ulong)gd->fdt_size); + /* This section is used only by ppc */ +#if defined(CONFIG_MPC8xx) || defined(CONFIG_E500) + print_num("immr_base", bd->bi_immr_base); +#endif + if (IS_ENABLED(CONFIG_PPC)) { + print_num("bootflags", bd->bi_bootflags); + print_mhz("intfreq", bd->bi_intfreq); +#ifdef CONFIG_ENABLE_36BIT_PHYS + if (IS_ENABLED(CONFIG_PHYS_64BIT)) + puts("addressing = 36-bit\n"); + else + puts("addressing = 32-bit\n"); +#endif + print_mhz("busfreq", bd->bi_busfreq); + board_detail(); + } +#if defined(CONFIG_CPM2) + print_mhz("cpmfreq", bd->bi_cpmfreq); + print_mhz("vco", bd->bi_vco); + print_mhz("sccfreq", bd->bi_sccfreq); + print_mhz("brgfreq", bd->bi_brgfreq); +#endif + +#if defined(CONFIG_SYS_INIT_RAM_ADDR) + print_num("sramstart", (ulong)bd->bi_sramstart); + print_num("sramsize", (ulong)bd->bi_sramsize); +#endif + return 0; } #endif From 67145d19412695b3299f093a2d9d1b3feb028b23 Mon Sep 17 00:00:00 2001 From: Simon Glass Date: Sun, 10 May 2020 14:16:38 -0600 Subject: [PATCH 15/39] bdinfo: m68k: Use the generic bd command Unfortunately m68k has a lot of special stuff. Move it into the generic function for now, so we can have it all in one place. Signed-off-by: Simon Glass Reviewed-by: Bin Meng --- cmd/bdinfo.c | 49 +++++++++++++++++++------------------------------ 1 file changed, 19 insertions(+), 30 deletions(-) diff --git a/cmd/bdinfo.c b/cmd/bdinfo.c index 5ff11db9af..9585d6a37a 100644 --- a/cmd/bdinfo.c +++ b/cmd/bdinfo.c @@ -185,35 +185,7 @@ static inline void __maybe_unused print_std_bdinfo(const bd_t *bd) #elif defined(CONFIG_M68K) -int do_bdinfo(struct cmd_tbl *cmdtp, int flag, int argc, char *const argv[]) -{ - bd_t *bd = gd->bd; - - print_bi_mem(bd); - print_bi_flash(bd); -#if defined(CONFIG_SYS_INIT_RAM_ADDR) - print_num("sramstart", (ulong)bd->bi_sramstart); - print_num("sramsize", (ulong)bd->bi_sramsize); -#endif -#if defined(CONFIG_SYS_MBAR) - print_num("mbar", bd->bi_mbar_base); -#endif - print_mhz("cpufreq", bd->bi_intfreq); - print_mhz("busfreq", bd->bi_busfreq); -#ifdef CONFIG_PCI - print_mhz("pcifreq", bd->bi_pcifreq); -#endif -#ifdef CONFIG_EXTRA_CLOCK - print_mhz("flbfreq", bd->bi_flbfreq); - print_mhz("inpfreq", bd->bi_inpfreq); - print_mhz("vcofreq", bd->bi_vcofreq); -#endif - print_eth_ip_addr(); - print_baudrate(); - print_cpu_word_size(); - - return 0; -} +#define USE_GENERIC #elif defined(CONFIG_MIPS) @@ -361,7 +333,6 @@ int do_bdinfo(struct cmd_tbl *cmdtp, int flag, int argc, char *const argv[]) else puts("addressing = 32-bit\n"); #endif - print_mhz("busfreq", bd->bi_busfreq); board_detail(); } #if defined(CONFIG_CPM2) @@ -371,9 +342,27 @@ int do_bdinfo(struct cmd_tbl *cmdtp, int flag, int argc, char *const argv[]) print_mhz("brgfreq", bd->bi_brgfreq); #endif + /* This is used by m68k and ppc */ #if defined(CONFIG_SYS_INIT_RAM_ADDR) print_num("sramstart", (ulong)bd->bi_sramstart); print_num("sramsize", (ulong)bd->bi_sramsize); +#endif + if (IS_ENABLED(CONFIG_PPC) || IS_ENABLED(CONFIG_M68K)) + print_mhz("busfreq", bd->bi_busfreq); + + /* The rest are used only by m68k */ +#ifdef CONFIG_M68K +#if defined(CONFIG_SYS_MBAR) + print_num("mbar", bd->bi_mbar_base); +#endif + print_mhz("cpufreq", bd->bi_intfreq); + if (IS_ENABLED(CONFIG_PCI)) + print_mhz("pcifreq", bd->bi_pcifreq); +#ifdef CONFIG_EXTRA_CLOCK + print_mhz("flbfreq", bd->bi_flbfreq); + print_mhz("inpfreq", bd->bi_inpfreq); + print_mhz("vcofreq", bd->bi_vcofreq); +#endif #endif return 0; From 1aeeaeb56e03610250075943b546b9e913b099b0 Mon Sep 17 00:00:00 2001 From: Simon Glass Date: Sun, 10 May 2020 14:16:39 -0600 Subject: [PATCH 16/39] bdinfo: arm: Use the generic bd command Unfortunately ARM has a lot of special stuff. Move it into the generic function for now, so we can have it all in one place. Signed-off-by: Simon Glass Reviewed-by: Bin Meng --- cmd/bdinfo.c | 102 ++++++++++++++++++++++----------------------------- 1 file changed, 44 insertions(+), 58 deletions(-) diff --git a/cmd/bdinfo.c b/cmd/bdinfo.c index 9585d6a37a..996fb5d06f 100644 --- a/cmd/bdinfo.c +++ b/cmd/bdinfo.c @@ -193,64 +193,7 @@ static inline void __maybe_unused print_std_bdinfo(const bd_t *bd) #elif defined(CONFIG_ARM) -static int do_bdinfo(struct cmd_tbl *cmdtp, int flag, int argc, - char *const argv[]) -{ - bd_t *bd = gd->bd; - - print_num("arch_number", bd->bi_arch_number); - print_bi_boot_params(bd); - print_bi_dram(bd); - -#ifdef CONFIG_SYS_MEM_RESERVE_SECURE - if (gd->arch.secure_ram & MEM_RESERVE_SECURE_SECURED) { - print_num("Secure ram", - gd->arch.secure_ram & MEM_RESERVE_SECURE_ADDR_MASK); - } -#endif -#ifdef CONFIG_RESV_RAM - if (gd->arch.resv_ram) - print_num("Reserved ram", gd->arch.resv_ram); -#endif -#if defined(CONFIG_CMD_NET) && !defined(CONFIG_DM_ETH) - print_eths(); -#endif - print_baudrate(); -#if !(CONFIG_IS_ENABLED(SYS_ICACHE_OFF) && CONFIG_IS_ENABLED(SYS_DCACHE_OFF)) - print_num("TLB addr", gd->arch.tlb_addr); -#endif - print_num("relocaddr", gd->relocaddr); - print_num("reloc off", gd->reloc_off); - print_num("irq_sp", gd->irq_sp); /* irq stack pointer */ - print_num("sp start ", gd->start_addr_sp); -#if defined(CONFIG_LCD) || defined(CONFIG_VIDEO) || defined(CONFIG_DM_VIDEO) - print_num("FB base ", gd->fb_base); -#endif - /* - * TODO: Currently only support for davinci SOC's is added. - * Remove this check once all the board implement this. - */ -#ifdef CONFIG_CLOCKS - printf("ARM frequency = %ld MHz\n", gd->bd->bi_arm_freq); - printf("DSP frequency = %ld MHz\n", gd->bd->bi_dsp_freq); - printf("DDR frequency = %ld MHz\n", gd->bd->bi_ddr_freq); -#endif -#ifdef CONFIG_BOARD_TYPES - printf("Board Type = %ld\n", gd->board_type); -#endif -#if CONFIG_VAL(SYS_MALLOC_F_LEN) - printf("Early malloc usage: %lx / %x\n", gd->malloc_ptr, - CONFIG_VAL(SYS_MALLOC_F_LEN)); -#endif -#if CONFIG_IS_ENABLED(MULTI_DTB_FIT) - print_num("multi_dtb_fit", (ulong)gd->multi_dtb_fit); -#endif - if (gd->fdt_blob) - print_num("fdt_blob", (ulong)gd->fdt_blob); - print_cpu_word_size(); - - return 0; -} +#define USE_GENERIC #elif defined(CONFIG_SH) @@ -308,6 +251,8 @@ int do_bdinfo(struct cmd_tbl *cmdtp, int flag, int argc, char *const argv[]) #ifdef DEBUG print_num("bd address", (ulong)bd); #endif + if (IS_ENABLED(CONFIG_ARM)) + print_num("arch_number", bd->bi_arch_number); print_bi_dram(bd); print_std_bdinfo(bd); print_num("relocaddr", gd->relocaddr); @@ -319,6 +264,47 @@ int do_bdinfo(struct cmd_tbl *cmdtp, int flag, int argc, char *const argv[]) print_num("fdt_blob", (ulong)gd->fdt_blob); print_num("new_fdt", (ulong)gd->new_fdt); print_num("fdt_size", (ulong)gd->fdt_size); +#if defined(CONFIG_LCD) || defined(CONFIG_VIDEO) || defined(CONFIG_DM_VIDEO) + print_num("FB base ", gd->fb_base); +#endif + + /* This section is used only by ARM */ +#ifdef CONFIG_ARM +#ifdef CONFIG_SYS_MEM_RESERVE_SECURE + if (gd->arch.secure_ram & MEM_RESERVE_SECURE_SECURED) { + print_num("Secure ram", + gd->arch.secure_ram & MEM_RESERVE_SECURE_ADDR_MASK); + } +#endif +#ifdef CONFIG_RESV_RAM + if (gd->arch.resv_ram) + print_num("Reserved ram", gd->arch.resv_ram); +#endif +#if !(CONFIG_IS_ENABLED(SYS_ICACHE_OFF) && CONFIG_IS_ENABLED(SYS_DCACHE_OFF)) + print_num("TLB addr", gd->arch.tlb_addr); +#endif + print_num("irq_sp", gd->irq_sp); /* irq stack pointer */ + print_num("sp start ", gd->start_addr_sp); + /* + * TODO: Currently only support for davinci SOC's is added. + * Remove this check once all the board implement this. + */ +#ifdef CONFIG_CLOCKS + printf("ARM frequency = %ld MHz\n", gd->bd->bi_arm_freq); + printf("DSP frequency = %ld MHz\n", gd->bd->bi_dsp_freq); + printf("DDR frequency = %ld MHz\n", gd->bd->bi_ddr_freq); +#endif +#ifdef CONFIG_BOARD_TYPES + printf("Board Type = %ld\n", gd->board_type); +#endif +#if CONFIG_VAL(SYS_MALLOC_F_LEN) + printf("Early malloc usage: %lx / %x\n", gd->malloc_ptr, + CONFIG_VAL(SYS_MALLOC_F_LEN)); +#endif +#if CONFIG_IS_ENABLED(MULTI_DTB_FIT) + print_num("multi_dtb_fit", (ulong)gd->multi_dtb_fit); +#endif +#endif /* CONFIG_ARM */ /* This section is used only by ppc */ #if defined(CONFIG_MPC8xx) || defined(CONFIG_E500) From e227c27393d9d3391288e68623751a448a973b79 Mon Sep 17 00:00:00 2001 From: Simon Glass Date: Sun, 10 May 2020 14:16:40 -0600 Subject: [PATCH 17/39] bdinfo: arc: Use the generic bd command There is nothing new in the arc 'bd' command beyond what is already there. Switch it over to use the generic code. Signed-off-by: Simon Glass Acked-by: Alexey Brodkin Reviewed-by: Bin Meng --- cmd/bdinfo.c | 12 +----------- 1 file changed, 1 insertion(+), 11 deletions(-) diff --git a/cmd/bdinfo.c b/cmd/bdinfo.c index 996fb5d06f..d2dcda91ab 100644 --- a/cmd/bdinfo.c +++ b/cmd/bdinfo.c @@ -217,17 +217,7 @@ static inline void __maybe_unused print_std_bdinfo(const bd_t *bd) #elif defined(CONFIG_ARC) -int do_bdinfo(struct cmd_tbl *cmdtp, int flag, int argc, char *const argv[]) -{ - bd_t *bd = gd->bd; - - print_bi_mem(bd); - print_eth_ip_addr(); - print_baudrate(); - print_cpu_word_size(); - - return 0; -} +#define USE_GENERIC #elif defined(CONFIG_XTENSA) From e01ce34bb0cb33aad17f5df15d74cd8846f80c23 Mon Sep 17 00:00:00 2001 From: Simon Glass Date: Sun, 10 May 2020 14:16:41 -0600 Subject: [PATCH 18/39] bdinfo: Drop the option to not use the generic 'bd' command Now that all architectures are using the generic do_bdinfo(), drop the option to not use it. When new architectures are added, they will get at least some useful information from the generic implementation. Signed-off-by: Simon Glass Reviewed-by: Bin Meng --- cmd/bdinfo.c | 59 ---------------------------------------------------- 1 file changed, 59 deletions(-) diff --git a/cmd/bdinfo.c b/cmd/bdinfo.c index d2dcda91ab..df24994929 100644 --- a/cmd/bdinfo.c +++ b/cmd/bdinfo.c @@ -171,64 +171,6 @@ static inline void __maybe_unused print_std_bdinfo(const bd_t *bd) print_baudrate(); } -#if defined(CONFIG_PPC) - -#define USE_GENERIC - -#elif defined(CONFIG_NIOS2) - -#define USE_GENERIC - -#elif defined(CONFIG_MICROBLAZE) - -#define USE_GENERIC - -#elif defined(CONFIG_M68K) - -#define USE_GENERIC - -#elif defined(CONFIG_MIPS) - -#define USE_GENERIC - -#elif defined(CONFIG_ARM) - -#define USE_GENERIC - -#elif defined(CONFIG_SH) - -#define USE_GENERIC - -#elif defined(CONFIG_X86) - -#define USE_GENERIC - -#elif defined(CONFIG_SANDBOX) - -#define USE_GENERIC - -#elif defined(CONFIG_NDS32) - -#define USE_GENERIC - -#elif defined(CONFIG_RISCV) - -#define USE_GENERIC - -#elif defined(CONFIG_ARC) - -#define USE_GENERIC - -#elif defined(CONFIG_XTENSA) - -#define USE_GENERIC - -#else - #error "a case for this architecture does not exist!" -#endif - -/* Temporary check for archs that use generic bdinfo. Eventually all will */ -#ifdef USE_GENERIC void __weak board_detail(void) { /* Please define board_detail() for your PPC platform */ @@ -343,7 +285,6 @@ int do_bdinfo(struct cmd_tbl *cmdtp, int flag, int argc, char *const argv[]) return 0; } -#endif /* -------------------------------------------------------------------- */ From 7d81641ba9984db472798b1c9b059e019c8b1bc0 Mon Sep 17 00:00:00 2001 From: Simon Glass Date: Sun, 10 May 2020 14:16:42 -0600 Subject: [PATCH 19/39] bdinfo: Drop unused __maybe_unused Some of these are not needed now. Drop them to avoid cluttering the code. Signed-off-by: Simon Glass Reviewed-by: Bin Meng --- cmd/bdinfo.c | 7 ++----- 1 file changed, 2 insertions(+), 5 deletions(-) diff --git a/cmd/bdinfo.c b/cmd/bdinfo.c index df24994929..96888c5fed 100644 --- a/cmd/bdinfo.c +++ b/cmd/bdinfo.c @@ -17,12 +17,11 @@ DECLARE_GLOBAL_DATA_PTR; -__maybe_unused void print_cpu_word_size(void) +void print_cpu_word_size(void) { printf("%-12s= %u-bit\n", "Build", (uint)sizeof(void *) * 8); } -__maybe_unused static void print_num(const char *name, ulong value) { printf("%-12s= 0x%0*lx\n", name, 2 * (int)sizeof(value), value); @@ -63,13 +62,11 @@ static void print_eths(void) } #endif -__maybe_unused static void print_lnum(const char *name, unsigned long long value) { printf("%-12s= 0x%.8llX\n", name, value); } -__maybe_unused static void print_mhz(const char *name, unsigned long hz) { char buf[32]; @@ -162,7 +159,7 @@ static inline void print_baudrate(void) #endif } -static inline void __maybe_unused print_std_bdinfo(const bd_t *bd) +static inline void print_std_bdinfo(const bd_t *bd) { print_bi_boot_params(bd); print_bi_mem(bd); From 566ffde8e19ac683e9d0836716de8ee090a56bf8 Mon Sep 17 00:00:00 2001 From: Simon Glass Date: Sun, 10 May 2020 14:16:43 -0600 Subject: [PATCH 20/39] bdinfo: microblaze: sh: nios2: Drop arch-specific flash info The differences these architectures have are minor and not worth the extra code. Use the generic version always. Tidy up the code style by removing unnecessary tabs. Signed-off-by: Simon Glass Reviewed-by: Bin Meng --- cmd/bdinfo.c | 17 +++-------------- 1 file changed, 3 insertions(+), 14 deletions(-) diff --git a/cmd/bdinfo.c b/cmd/bdinfo.c index 96888c5fed..228835d056 100644 --- a/cmd/bdinfo.c +++ b/cmd/bdinfo.c @@ -111,20 +111,9 @@ static inline void print_bi_dram(const bd_t *bd) static inline void print_bi_flash(const bd_t *bd) { -#if defined(CONFIG_MICROBLAZE) || defined(CONFIG_SH) - print_num("flash start ", (ulong)bd->bi_flashstart); - print_num("flash size ", (ulong)bd->bi_flashsize); - print_num("flash offset ", (ulong)bd->bi_flashoffset); - -#elif defined(CONFIG_NIOS2) - print_num("flash start", (ulong)bd->bi_flashstart); - print_num("flash size", (ulong)bd->bi_flashsize); - print_num("flash offset", (ulong)bd->bi_flashoffset); -#else - print_num("flashstart", (ulong)bd->bi_flashstart); - print_num("flashsize", (ulong)bd->bi_flashsize); - print_num("flashoffset", (ulong)bd->bi_flashoffset); -#endif + print_num("flashstart", (ulong)bd->bi_flashstart); + print_num("flashsize", (ulong)bd->bi_flashsize); + print_num("flashoffset", (ulong)bd->bi_flashoffset); } static inline void print_eth_ip_addr(void) From d67de00eb6d62b52d0ccafb2d80c290079a6f0f6 Mon Sep 17 00:00:00 2001 From: Simon Glass Date: Sun, 10 May 2020 14:16:44 -0600 Subject: [PATCH 21/39] bdinfo: Drop unnecessary inline on functions This serves no purpose since the compiler will inline the functions automatically. Drop use of inline in this file. Signed-off-by: Simon Glass Reviewed-by: Bin Meng --- cmd/bdinfo.c | 14 +++++++------- 1 file changed, 7 insertions(+), 7 deletions(-) diff --git a/cmd/bdinfo.c b/cmd/bdinfo.c index 228835d056..f4f1ba711e 100644 --- a/cmd/bdinfo.c +++ b/cmd/bdinfo.c @@ -75,12 +75,12 @@ static void print_mhz(const char *name, unsigned long hz) } -static inline void print_bi_boot_params(const bd_t *bd) +static void print_bi_boot_params(const bd_t *bd) { print_num("boot_params", (ulong)bd->bi_boot_params); } -static inline void print_bi_mem(const bd_t *bd) +static void print_bi_mem(const bd_t *bd) { #if defined(CONFIG_SH) print_num("mem start ", (ulong)bd->bi_memstart); @@ -94,7 +94,7 @@ static inline void print_bi_mem(const bd_t *bd) #endif } -static inline void print_bi_dram(const bd_t *bd) +static void print_bi_dram(const bd_t *bd) { #ifdef CONFIG_NR_DRAM_BANKS int i; @@ -109,14 +109,14 @@ static inline void print_bi_dram(const bd_t *bd) #endif } -static inline void print_bi_flash(const bd_t *bd) +static void print_bi_flash(const bd_t *bd) { print_num("flashstart", (ulong)bd->bi_flashstart); print_num("flashsize", (ulong)bd->bi_flashsize); print_num("flashoffset", (ulong)bd->bi_flashoffset); } -static inline void print_eth_ip_addr(void) +static void print_eth_ip_addr(void) { #if defined(CONFIG_CMD_NET) print_eth(0); @@ -139,7 +139,7 @@ static inline void print_eth_ip_addr(void) #endif } -static inline void print_baudrate(void) +static void print_baudrate(void) { #if defined(CONFIG_PPC) printf("baudrate = %6u bps\n", gd->baudrate); @@ -148,7 +148,7 @@ static inline void print_baudrate(void) #endif } -static inline void print_std_bdinfo(const bd_t *bd) +static void print_std_bdinfo(const bd_t *bd) { print_bi_boot_params(bd); print_bi_mem(bd); From 9e24e10b7bfe1fc7ca3971dbb5c8e3e781dd6db3 Mon Sep 17 00:00:00 2001 From: Simon Glass Date: Sun, 10 May 2020 14:16:45 -0600 Subject: [PATCH 22/39] bdinfo: Drop print_std_bdinfo() Everything in this function is standard now so it serves no purpose. Move it into the generic do_bdinfo() function. Signed-off-by: Simon Glass Reviewed-by: Bin Meng --- cmd/bdinfo.c | 15 +++++---------- 1 file changed, 5 insertions(+), 10 deletions(-) diff --git a/cmd/bdinfo.c b/cmd/bdinfo.c index f4f1ba711e..77a0cf14e0 100644 --- a/cmd/bdinfo.c +++ b/cmd/bdinfo.c @@ -148,15 +148,6 @@ static void print_baudrate(void) #endif } -static void print_std_bdinfo(const bd_t *bd) -{ - print_bi_boot_params(bd); - print_bi_mem(bd); - print_bi_flash(bd); - print_eth_ip_addr(); - print_baudrate(); -} - void __weak board_detail(void) { /* Please define board_detail() for your PPC platform */ @@ -171,8 +162,12 @@ int do_bdinfo(struct cmd_tbl *cmdtp, int flag, int argc, char *const argv[]) #endif if (IS_ENABLED(CONFIG_ARM)) print_num("arch_number", bd->bi_arch_number); + print_bi_boot_params(bd); print_bi_dram(bd); - print_std_bdinfo(bd); + print_bi_mem(bd); + print_bi_flash(bd); + print_eth_ip_addr(); + print_baudrate(); print_num("relocaddr", gd->relocaddr); print_num("reloc off", gd->reloc_off); print_cpu_word_size(); From 3e1cca2a2f6245a98b86e23222908dee234542e2 Mon Sep 17 00:00:00 2001 From: Simon Glass Date: Sun, 10 May 2020 14:16:46 -0600 Subject: [PATCH 23/39] bdinfo: ppc: Drop arch-specific print_baudrate() This function outputs the same basic info. Since the baud rate is commonly 115200 these is often no difference. Drop the arch-specific code and inline it to avoid a one-line function. Signed-off-by: Simon Glass Reviewed-by: Bin Meng Reviewed-by: Stefan Roese --- cmd/bdinfo.c | 11 +---------- 1 file changed, 1 insertion(+), 10 deletions(-) diff --git a/cmd/bdinfo.c b/cmd/bdinfo.c index 77a0cf14e0..60bfb4e1da 100644 --- a/cmd/bdinfo.c +++ b/cmd/bdinfo.c @@ -139,15 +139,6 @@ static void print_eth_ip_addr(void) #endif } -static void print_baudrate(void) -{ -#if defined(CONFIG_PPC) - printf("baudrate = %6u bps\n", gd->baudrate); -#else - printf("baudrate = %u bps\n", gd->baudrate); -#endif -} - void __weak board_detail(void) { /* Please define board_detail() for your PPC platform */ @@ -167,7 +158,7 @@ int do_bdinfo(struct cmd_tbl *cmdtp, int flag, int argc, char *const argv[]) print_bi_mem(bd); print_bi_flash(bd); print_eth_ip_addr(); - print_baudrate(); + printf("baudrate = %u bps\n", gd->baudrate); print_num("relocaddr", gd->relocaddr); print_num("reloc off", gd->reloc_off); print_cpu_word_size(); From 537cb0dfd2fbf40491595f55b2e03ce898b3896c Mon Sep 17 00:00:00 2001 From: Simon Glass Date: Sun, 10 May 2020 14:16:47 -0600 Subject: [PATCH 24/39] bdinfo: sh: arc: Drop arch-specific print_bi_mem() It isn't worth having arch-specific code for such minor output differences. In fact it is better if all archs are consistent. Drop the arch-specific code in print_bi_mem() and inline it to avoid a two-line function. Signed-off-by: Simon Glass Reviewed-by: Bin Meng Acked-by: Alexey Brodkin --- cmd/bdinfo.c | 17 ++--------------- 1 file changed, 2 insertions(+), 15 deletions(-) diff --git a/cmd/bdinfo.c b/cmd/bdinfo.c index 60bfb4e1da..9746433c23 100644 --- a/cmd/bdinfo.c +++ b/cmd/bdinfo.c @@ -80,20 +80,6 @@ static void print_bi_boot_params(const bd_t *bd) print_num("boot_params", (ulong)bd->bi_boot_params); } -static void print_bi_mem(const bd_t *bd) -{ -#if defined(CONFIG_SH) - print_num("mem start ", (ulong)bd->bi_memstart); - print_lnum("mem size ", (u64)bd->bi_memsize); -#elif defined(CONFIG_ARC) - print_num("mem start", (ulong)bd->bi_memstart); - print_lnum("mem size", (u64)bd->bi_memsize); -#else - print_num("memstart", (ulong)bd->bi_memstart); - print_lnum("memsize", (u64)bd->bi_memsize); -#endif -} - static void print_bi_dram(const bd_t *bd) { #ifdef CONFIG_NR_DRAM_BANKS @@ -155,7 +141,8 @@ int do_bdinfo(struct cmd_tbl *cmdtp, int flag, int argc, char *const argv[]) print_num("arch_number", bd->bi_arch_number); print_bi_boot_params(bd); print_bi_dram(bd); - print_bi_mem(bd); + print_num("memstart", (ulong)bd->bi_memstart); + print_lnum("memsize", (u64)bd->bi_memsize); print_bi_flash(bd); print_eth_ip_addr(); printf("baudrate = %u bps\n", gd->baudrate); From 3cfbe22bf278163fd86d5005ca4d16f354e1e187 Mon Sep 17 00:00:00 2001 From: Simon Glass Date: Sun, 10 May 2020 14:16:48 -0600 Subject: [PATCH 25/39] bdinfo: Drop print_bi_boot_params() This function only has one line of code in it so inline it. Signed-off-by: Simon Glass Reviewed-by: Bin Meng --- cmd/bdinfo.c | 8 +------- 1 file changed, 1 insertion(+), 7 deletions(-) diff --git a/cmd/bdinfo.c b/cmd/bdinfo.c index 9746433c23..8480c8d8ff 100644 --- a/cmd/bdinfo.c +++ b/cmd/bdinfo.c @@ -74,12 +74,6 @@ static void print_mhz(const char *name, unsigned long hz) printf("%-12s= %6s MHz\n", name, strmhz(buf, hz)); } - -static void print_bi_boot_params(const bd_t *bd) -{ - print_num("boot_params", (ulong)bd->bi_boot_params); -} - static void print_bi_dram(const bd_t *bd) { #ifdef CONFIG_NR_DRAM_BANKS @@ -139,7 +133,7 @@ int do_bdinfo(struct cmd_tbl *cmdtp, int flag, int argc, char *const argv[]) #endif if (IS_ENABLED(CONFIG_ARM)) print_num("arch_number", bd->bi_arch_number); - print_bi_boot_params(bd); + print_num("boot_params", (ulong)bd->bi_boot_params); print_bi_dram(bd); print_num("memstart", (ulong)bd->bi_memstart); print_lnum("memsize", (u64)bd->bi_memsize); From aa8b758a88cccddb4f6eab3b90dbc7ab9ed43355 Mon Sep 17 00:00:00 2001 From: Simon Glass Date: Sun, 10 May 2020 14:16:49 -0600 Subject: [PATCH 26/39] bdinfo: Drop print_bi_flash() This function only has three lines of code in it so inline it. This helps to put all the code in one place for future partitioning. Signed-off-by: Simon Glass Reviewed-by: Bin Meng --- cmd/bdinfo.c | 11 +++-------- 1 file changed, 3 insertions(+), 8 deletions(-) diff --git a/cmd/bdinfo.c b/cmd/bdinfo.c index 8480c8d8ff..15eadef19b 100644 --- a/cmd/bdinfo.c +++ b/cmd/bdinfo.c @@ -89,13 +89,6 @@ static void print_bi_dram(const bd_t *bd) #endif } -static void print_bi_flash(const bd_t *bd) -{ - print_num("flashstart", (ulong)bd->bi_flashstart); - print_num("flashsize", (ulong)bd->bi_flashsize); - print_num("flashoffset", (ulong)bd->bi_flashoffset); -} - static void print_eth_ip_addr(void) { #if defined(CONFIG_CMD_NET) @@ -137,7 +130,9 @@ int do_bdinfo(struct cmd_tbl *cmdtp, int flag, int argc, char *const argv[]) print_bi_dram(bd); print_num("memstart", (ulong)bd->bi_memstart); print_lnum("memsize", (u64)bd->bi_memsize); - print_bi_flash(bd); + print_num("flashstart", (ulong)bd->bi_flashstart); + print_num("flashsize", (ulong)bd->bi_flashsize); + print_num("flashoffset", (ulong)bd->bi_flashoffset); print_eth_ip_addr(); printf("baudrate = %u bps\n", gd->baudrate); print_num("relocaddr", gd->relocaddr); From db76c9bece679298668e5c1ce43af820fe99a65b Mon Sep 17 00:00:00 2001 From: Simon Glass Date: Sun, 10 May 2020 14:16:50 -0600 Subject: [PATCH 27/39] bdinfo: Drop print_cpu_word_size() This function only has one line of code in it so inline it. Signed-off-by: Simon Glass Reviewed-by: Bin Meng --- cmd/bdinfo.c | 7 +------ 1 file changed, 1 insertion(+), 6 deletions(-) diff --git a/cmd/bdinfo.c b/cmd/bdinfo.c index 15eadef19b..a7bbd073c5 100644 --- a/cmd/bdinfo.c +++ b/cmd/bdinfo.c @@ -17,11 +17,6 @@ DECLARE_GLOBAL_DATA_PTR; -void print_cpu_word_size(void) -{ - printf("%-12s= %u-bit\n", "Build", (uint)sizeof(void *) * 8); -} - static void print_num(const char *name, ulong value) { printf("%-12s= 0x%0*lx\n", name, 2 * (int)sizeof(value), value); @@ -137,7 +132,7 @@ int do_bdinfo(struct cmd_tbl *cmdtp, int flag, int argc, char *const argv[]) printf("baudrate = %u bps\n", gd->baudrate); print_num("relocaddr", gd->relocaddr); print_num("reloc off", gd->reloc_off); - print_cpu_word_size(); + printf("%-12s= %u-bit\n", "Build", (uint)sizeof(void *) * 8); #if defined(CONFIG_CMD_NET) && !defined(CONFIG_DM_ETH) print_eths(); #endif From 32d0b2dfe57ddb4e88f3f30c5fcabc10aabde6ed Mon Sep 17 00:00:00 2001 From: Simon Glass Date: Sun, 10 May 2020 14:16:51 -0600 Subject: [PATCH 28/39] bdinfo: net: ppc: Drop bi_enet1addr and other similar info These values were 'old' in 2013 so it should be safe to remove them. They are never set in U-Boot anyway, so the values will always be zero. Signed-off-by: Simon Glass Reviewed-by: Bin Meng Reviewed-by: Stefan Roese --- common/board_r.c | 16 +--------------- include/asm-generic/u-boot.h | 17 ----------------- 2 files changed, 1 insertion(+), 32 deletions(-) diff --git a/common/board_r.c b/common/board_r.c index fa57fa9b69..5e924322b2 100644 --- a/common/board_r.c +++ b/common/board_r.c @@ -537,21 +537,7 @@ static int initr_ethaddr(void) /* kept around for legacy kernels only ... ignore the next section */ eth_env_get_enetaddr("ethaddr", bd->bi_enetaddr); -#ifdef CONFIG_HAS_ETH1 - eth_env_get_enetaddr("eth1addr", bd->bi_enet1addr); -#endif -#ifdef CONFIG_HAS_ETH2 - eth_env_get_enetaddr("eth2addr", bd->bi_enet2addr); -#endif -#ifdef CONFIG_HAS_ETH3 - eth_env_get_enetaddr("eth3addr", bd->bi_enet3addr); -#endif -#ifdef CONFIG_HAS_ETH4 - eth_env_get_enetaddr("eth4addr", bd->bi_enet4addr); -#endif -#ifdef CONFIG_HAS_ETH5 - eth_env_get_enetaddr("eth5addr", bd->bi_enet5addr); -#endif + return 0; } #endif /* CONFIG_CMD_NET */ diff --git a/include/asm-generic/u-boot.h b/include/asm-generic/u-boot.h index b496e55964..008ebf3ca3 100644 --- a/include/asm-generic/u-boot.h +++ b/include/asm-generic/u-boot.h @@ -68,23 +68,6 @@ typedef struct bd_info { unsigned long bi_vcofreq; /* vco Freq in MHz */ unsigned long bi_flbfreq; /* Flexbus Freq in MHz */ #endif - -#ifdef CONFIG_HAS_ETH1 - unsigned char bi_enet1addr[6]; /* OLD: see README.enetaddr */ -#endif -#ifdef CONFIG_HAS_ETH2 - unsigned char bi_enet2addr[6]; /* OLD: see README.enetaddr */ -#endif -#ifdef CONFIG_HAS_ETH3 - unsigned char bi_enet3addr[6]; /* OLD: see README.enetaddr */ -#endif -#ifdef CONFIG_HAS_ETH4 - unsigned char bi_enet4addr[6]; /* OLD: see README.enetaddr */ -#endif -#ifdef CONFIG_HAS_ETH5 - unsigned char bi_enet5addr[6]; /* OLD: see README.enetaddr */ -#endif - ulong bi_arch_number; /* unique id for this board */ ulong bi_boot_params; /* where this board expects params */ #ifdef CONFIG_NR_DRAM_BANKS From 3c89c4c8562754fe1540938ec0ddbb41e7d130a8 Mon Sep 17 00:00:00 2001 From: Simon Glass Date: Sun, 10 May 2020 14:16:52 -0600 Subject: [PATCH 29/39] bdinfo: net: ppc: Drop prints for CONFIG_HAS_ETHn These config options have not been migrated to Kconfig. This should be handled using driver model, iterating over the available Ethernet devices. For now, remove the code. Signed-off-by: Simon Glass Reviewed-by: Bin Meng Reviewed-by: Stefan Roese --- cmd/bdinfo.c | 15 --------------- 1 file changed, 15 deletions(-) diff --git a/cmd/bdinfo.c b/cmd/bdinfo.c index a7bbd073c5..1a08e14d08 100644 --- a/cmd/bdinfo.c +++ b/cmd/bdinfo.c @@ -88,21 +88,6 @@ static void print_eth_ip_addr(void) { #if defined(CONFIG_CMD_NET) print_eth(0); -#if defined(CONFIG_HAS_ETH1) - print_eth(1); -#endif -#if defined(CONFIG_HAS_ETH2) - print_eth(2); -#endif -#if defined(CONFIG_HAS_ETH3) - print_eth(3); -#endif -#if defined(CONFIG_HAS_ETH4) - print_eth(4); -#endif -#if defined(CONFIG_HAS_ETH5) - print_eth(5); -#endif printf("IP addr = %s\n", env_get("ipaddr")); #endif } From 441539f90a21156c69e870fcbda13157ce69a1dc Mon Sep 17 00:00:00 2001 From: Simon Glass Date: Sun, 10 May 2020 14:16:53 -0600 Subject: [PATCH 30/39] bdinfo: net: Drop legacy ethernet bdinfo This code pre-dates driver model and the migration date is nearly upon us. Pare the print_eths() function down and enable it for driver model, since it works correctly. The IP address is already printed in print_eth_ip_addr() so we can remove that. Since this results in a one-line print_eths() function, inline it. Signed-off-by: Simon Glass Reviewed-by: Bin Meng --- cmd/bdinfo.c | 26 ++------------------------ 1 file changed, 2 insertions(+), 24 deletions(-) diff --git a/cmd/bdinfo.c b/cmd/bdinfo.c index 1a08e14d08..f1d6a013f5 100644 --- a/cmd/bdinfo.c +++ b/cmd/bdinfo.c @@ -36,27 +36,6 @@ static void print_eth(int idx) printf("%-12s= %s\n", name, val); } -#ifndef CONFIG_DM_ETH -__maybe_unused -static void print_eths(void) -{ - struct eth_device *dev; - int i = 0; - - do { - dev = eth_get_dev_by_index(i); - if (dev) { - printf("eth%dname = %s\n", i, dev->name); - print_eth(i); - i++; - } - } while (dev); - - printf("current eth = %s\n", eth_get_name()); - printf("ip_addr = %s\n", env_get("ipaddr")); -} -#endif - static void print_lnum(const char *name, unsigned long long value) { printf("%-12s= 0x%.8llX\n", name, value); @@ -118,9 +97,8 @@ int do_bdinfo(struct cmd_tbl *cmdtp, int flag, int argc, char *const argv[]) print_num("relocaddr", gd->relocaddr); print_num("reloc off", gd->reloc_off); printf("%-12s= %u-bit\n", "Build", (uint)sizeof(void *) * 8); -#if defined(CONFIG_CMD_NET) && !defined(CONFIG_DM_ETH) - print_eths(); -#endif + if (IS_ENABLED(CONFIG_CMD_NET)) + printf("current eth = %s\n", eth_get_name()); print_num("fdt_blob", (ulong)gd->fdt_blob); print_num("new_fdt", (ulong)gd->new_fdt); print_num("fdt_size", (ulong)gd->fdt_size); From 8a2ba581dc27d2ae1f22eae9d6fee0ec45e075f7 Mon Sep 17 00:00:00 2001 From: Simon Glass Date: Sun, 10 May 2020 14:16:54 -0600 Subject: [PATCH 31/39] bdinfo: net: Inline print_eth_ip_addr() This function only has two lines of code now, so inline it. Signed-off-by: Simon Glass Reviewed-by: Bin Meng --- cmd/bdinfo.c | 15 ++++----------- 1 file changed, 4 insertions(+), 11 deletions(-) diff --git a/cmd/bdinfo.c b/cmd/bdinfo.c index f1d6a013f5..a11f388413 100644 --- a/cmd/bdinfo.c +++ b/cmd/bdinfo.c @@ -22,7 +22,6 @@ static void print_num(const char *name, ulong value) printf("%-12s= 0x%0*lx\n", name, 2 * (int)sizeof(value), value); } -__maybe_unused static void print_eth(int idx) { char name[10], *val; @@ -63,14 +62,6 @@ static void print_bi_dram(const bd_t *bd) #endif } -static void print_eth_ip_addr(void) -{ -#if defined(CONFIG_CMD_NET) - print_eth(0); - printf("IP addr = %s\n", env_get("ipaddr")); -#endif -} - void __weak board_detail(void) { /* Please define board_detail() for your PPC platform */ @@ -92,13 +83,15 @@ int do_bdinfo(struct cmd_tbl *cmdtp, int flag, int argc, char *const argv[]) print_num("flashstart", (ulong)bd->bi_flashstart); print_num("flashsize", (ulong)bd->bi_flashsize); print_num("flashoffset", (ulong)bd->bi_flashoffset); - print_eth_ip_addr(); printf("baudrate = %u bps\n", gd->baudrate); print_num("relocaddr", gd->relocaddr); print_num("reloc off", gd->reloc_off); printf("%-12s= %u-bit\n", "Build", (uint)sizeof(void *) * 8); - if (IS_ENABLED(CONFIG_CMD_NET)) + if (IS_ENABLED(CONFIG_CMD_NET)) { printf("current eth = %s\n", eth_get_name()); + print_eth(0); + printf("IP addr = %s\n", env_get("ipaddr")); + } print_num("fdt_blob", (ulong)gd->fdt_blob); print_num("new_fdt", (ulong)gd->new_fdt); print_num("fdt_size", (ulong)gd->fdt_size); From 655f17ff7d8631ca9344a4bff5918243e5bfed37 Mon Sep 17 00:00:00 2001 From: Simon Glass Date: Sun, 10 May 2020 14:16:55 -0600 Subject: [PATCH 32/39] bdinfo: Export some basic printing functions At present the functions to print a number and a frequency are static. We want to move some of the code in here to an arch-specific file. For consistency that code should use these same functions. So export them with an appropriate name. Signed-off-by: Simon Glass Reviewed-by: Bin Meng --- cmd/bdinfo.c | 78 +++++++++++++++++++++++++------------------------- include/init.h | 6 ++++ 2 files changed, 45 insertions(+), 39 deletions(-) diff --git a/cmd/bdinfo.c b/cmd/bdinfo.c index a11f388413..4fadfd2ac7 100644 --- a/cmd/bdinfo.c +++ b/cmd/bdinfo.c @@ -17,7 +17,7 @@ DECLARE_GLOBAL_DATA_PTR; -static void print_num(const char *name, ulong value) +void bdinfo_print_num(const char *name, ulong value) { printf("%-12s= 0x%0*lx\n", name, 2 * (int)sizeof(value), value); } @@ -40,7 +40,7 @@ static void print_lnum(const char *name, unsigned long long value) printf("%-12s= 0x%.8llX\n", name, value); } -static void print_mhz(const char *name, unsigned long hz) +void bdinfo_print_mhz(const char *name, unsigned long hz) { char buf[32]; @@ -54,9 +54,9 @@ static void print_bi_dram(const bd_t *bd) for (i = 0; i < CONFIG_NR_DRAM_BANKS; ++i) { if (bd->bi_dram[i].size) { - print_num("DRAM bank", i); - print_num("-> start", bd->bi_dram[i].start); - print_num("-> size", bd->bi_dram[i].size); + bdinfo_print_num("DRAM bank", i); + bdinfo_print_num("-> start", bd->bi_dram[i].start); + bdinfo_print_num("-> size", bd->bi_dram[i].size); } } #endif @@ -72,50 +72,50 @@ int do_bdinfo(struct cmd_tbl *cmdtp, int flag, int argc, char *const argv[]) bd_t *bd = gd->bd; #ifdef DEBUG - print_num("bd address", (ulong)bd); + bdinfo_print_num("bd address", (ulong)bd); #endif if (IS_ENABLED(CONFIG_ARM)) - print_num("arch_number", bd->bi_arch_number); - print_num("boot_params", (ulong)bd->bi_boot_params); + bdinfo_print_num("arch_number", bd->bi_arch_number); + bdinfo_print_num("boot_params", (ulong)bd->bi_boot_params); print_bi_dram(bd); - print_num("memstart", (ulong)bd->bi_memstart); + bdinfo_print_num("memstart", (ulong)bd->bi_memstart); print_lnum("memsize", (u64)bd->bi_memsize); - print_num("flashstart", (ulong)bd->bi_flashstart); - print_num("flashsize", (ulong)bd->bi_flashsize); - print_num("flashoffset", (ulong)bd->bi_flashoffset); + bdinfo_print_num("flashstart", (ulong)bd->bi_flashstart); + bdinfo_print_num("flashsize", (ulong)bd->bi_flashsize); + bdinfo_print_num("flashoffset", (ulong)bd->bi_flashoffset); printf("baudrate = %u bps\n", gd->baudrate); - print_num("relocaddr", gd->relocaddr); - print_num("reloc off", gd->reloc_off); + bdinfo_print_num("relocaddr", gd->relocaddr); + bdinfo_print_num("reloc off", gd->reloc_off); printf("%-12s= %u-bit\n", "Build", (uint)sizeof(void *) * 8); if (IS_ENABLED(CONFIG_CMD_NET)) { printf("current eth = %s\n", eth_get_name()); print_eth(0); printf("IP addr = %s\n", env_get("ipaddr")); } - print_num("fdt_blob", (ulong)gd->fdt_blob); - print_num("new_fdt", (ulong)gd->new_fdt); - print_num("fdt_size", (ulong)gd->fdt_size); + bdinfo_print_num("fdt_blob", (ulong)gd->fdt_blob); + bdinfo_print_num("new_fdt", (ulong)gd->new_fdt); + bdinfo_print_num("fdt_size", (ulong)gd->fdt_size); #if defined(CONFIG_LCD) || defined(CONFIG_VIDEO) || defined(CONFIG_DM_VIDEO) - print_num("FB base ", gd->fb_base); + bdinfo_print_num("FB base ", gd->fb_base); #endif /* This section is used only by ARM */ #ifdef CONFIG_ARM #ifdef CONFIG_SYS_MEM_RESERVE_SECURE if (gd->arch.secure_ram & MEM_RESERVE_SECURE_SECURED) { - print_num("Secure ram", + bdinfo_print_num("Secure ram", gd->arch.secure_ram & MEM_RESERVE_SECURE_ADDR_MASK); } #endif #ifdef CONFIG_RESV_RAM if (gd->arch.resv_ram) - print_num("Reserved ram", gd->arch.resv_ram); + bdinfo_print_num("Reserved ram", gd->arch.resv_ram); #endif #if !(CONFIG_IS_ENABLED(SYS_ICACHE_OFF) && CONFIG_IS_ENABLED(SYS_DCACHE_OFF)) - print_num("TLB addr", gd->arch.tlb_addr); + bdinfo_print_num("TLB addr", gd->arch.tlb_addr); #endif - print_num("irq_sp", gd->irq_sp); /* irq stack pointer */ - print_num("sp start ", gd->start_addr_sp); + bdinfo_print_num("irq_sp", gd->irq_sp); /* irq stack pointer */ + bdinfo_print_num("sp start ", gd->start_addr_sp); /* * TODO: Currently only support for davinci SOC's is added. * Remove this check once all the board implement this. @@ -133,17 +133,17 @@ int do_bdinfo(struct cmd_tbl *cmdtp, int flag, int argc, char *const argv[]) CONFIG_VAL(SYS_MALLOC_F_LEN)); #endif #if CONFIG_IS_ENABLED(MULTI_DTB_FIT) - print_num("multi_dtb_fit", (ulong)gd->multi_dtb_fit); + bdinfo_print_num("multi_dtb_fit", (ulong)gd->multi_dtb_fit); #endif #endif /* CONFIG_ARM */ /* This section is used only by ppc */ #if defined(CONFIG_MPC8xx) || defined(CONFIG_E500) - print_num("immr_base", bd->bi_immr_base); + bdinfo_print_num("immr_base", bd->bi_immr_base); #endif if (IS_ENABLED(CONFIG_PPC)) { - print_num("bootflags", bd->bi_bootflags); - print_mhz("intfreq", bd->bi_intfreq); + bdinfo_print_num("bootflags", bd->bi_bootflags); + bdinfo_print_mhz("intfreq", bd->bi_intfreq); #ifdef CONFIG_ENABLE_36BIT_PHYS if (IS_ENABLED(CONFIG_PHYS_64BIT)) puts("addressing = 36-bit\n"); @@ -153,32 +153,32 @@ int do_bdinfo(struct cmd_tbl *cmdtp, int flag, int argc, char *const argv[]) board_detail(); } #if defined(CONFIG_CPM2) - print_mhz("cpmfreq", bd->bi_cpmfreq); - print_mhz("vco", bd->bi_vco); - print_mhz("sccfreq", bd->bi_sccfreq); - print_mhz("brgfreq", bd->bi_brgfreq); + bdinfo_print_mhz("cpmfreq", bd->bi_cpmfreq); + bdinfo_print_mhz("vco", bd->bi_vco); + bdinfo_print_mhz("sccfreq", bd->bi_sccfreq); + bdinfo_print_mhz("brgfreq", bd->bi_brgfreq); #endif /* This is used by m68k and ppc */ #if defined(CONFIG_SYS_INIT_RAM_ADDR) - print_num("sramstart", (ulong)bd->bi_sramstart); - print_num("sramsize", (ulong)bd->bi_sramsize); + bdinfo_print_num("sramstart", (ulong)bd->bi_sramstart); + bdinfo_print_num("sramsize", (ulong)bd->bi_sramsize); #endif if (IS_ENABLED(CONFIG_PPC) || IS_ENABLED(CONFIG_M68K)) - print_mhz("busfreq", bd->bi_busfreq); + bdinfo_print_mhz("busfreq", bd->bi_busfreq); /* The rest are used only by m68k */ #ifdef CONFIG_M68K #if defined(CONFIG_SYS_MBAR) print_num("mbar", bd->bi_mbar_base); #endif - print_mhz("cpufreq", bd->bi_intfreq); + bdinfo_print_mhz("cpufreq", bd->bi_intfreq); if (IS_ENABLED(CONFIG_PCI)) - print_mhz("pcifreq", bd->bi_pcifreq); + bdinfo_print_mhz("pcifreq", bd->bi_pcifreq); #ifdef CONFIG_EXTRA_CLOCK - print_mhz("flbfreq", bd->bi_flbfreq); - print_mhz("inpfreq", bd->bi_inpfreq); - print_mhz("vcofreq", bd->bi_vcofreq); + bdinfo_print_mhz("flbfreq", bd->bi_flbfreq); + bdinfo_print_mhz("inpfreq", bd->bi_inpfreq); + bdinfo_print_mhz("vcofreq", bd->bi_vcofreq); #endif #endif diff --git a/include/init.h b/include/init.h index b5a167b6ed..af4deed566 100644 --- a/include/init.h +++ b/include/init.h @@ -261,6 +261,12 @@ void relocate_code(ulong start_addr_sp, struct global_data *new_gd, __attribute__ ((noreturn)); #endif +/* Print a numeric value (for use in arch_print_bdinfo()) */ +void bdinfo_print_num(const char *name, ulong value); + +/* Print a clock speed in MHz */ +void bdinfo_print_mhz(const char *name, unsigned long hz); + #endif /* __ASSEMBLY__ */ /* Put only stuff here that the assembler can digest */ From 59b0d7d839f135bc44d3459784337a657149f8b3 Mon Sep 17 00:00:00 2001 From: Simon Glass Date: Sun, 10 May 2020 14:16:56 -0600 Subject: [PATCH 33/39] bdinfo: arm: Move ARM-specific info into its own file We don't really want to have ARM-specific code in a generic file. Create a new arch-specific function to hold it, and move it into that. Make the function weak so that any arch can implement it. Signed-off-by: Simon Glass Reviewed-by: Bin Meng --- arch/arm/lib/Makefile | 1 + arch/arm/lib/bdinfo.c | 51 +++++++++++++++++++++++++++++++++++++++++++ cmd/bdinfo.c | 45 ++++++-------------------------------- include/init.h | 3 +++ 4 files changed, 62 insertions(+), 38 deletions(-) create mode 100644 arch/arm/lib/bdinfo.c diff --git a/arch/arm/lib/Makefile b/arch/arm/lib/Makefile index b839aa7a50..27b12e7f2b 100644 --- a/arch/arm/lib/Makefile +++ b/arch/arm/lib/Makefile @@ -43,6 +43,7 @@ obj-$(CONFIG_$(SPL_TPL_)USE_ARCH_MEMSET) += memset.o obj-$(CONFIG_$(SPL_TPL_)USE_ARCH_MEMCPY) += memcpy.o obj-$(CONFIG_SEMIHOSTING) += semihosting.o +obj-y += bdinfo.o obj-y += sections.o obj-y += stack.o ifdef CONFIG_CPU_V7M diff --git a/arch/arm/lib/bdinfo.c b/arch/arm/lib/bdinfo.c new file mode 100644 index 0000000000..81c9291584 --- /dev/null +++ b/arch/arm/lib/bdinfo.c @@ -0,0 +1,51 @@ +// SPDX-License-Identifier: GPL-2.0+ +/* + * ARM-specific information for the 'bd' command + * + * (C) Copyright 2003 + * Wolfgang Denk, DENX Software Engineering, wd@denx.de. + */ + +#include +#include + +DECLARE_GLOBAL_DATA_PTR; + +void arch_print_bdinfo(void) +{ + bd_t *bd = gd->bd; + + bdinfo_print_num("arch_number", bd->bi_arch_number); +#ifdef CONFIG_SYS_MEM_RESERVE_SECURE + if (gd->arch.secure_ram & MEM_RESERVE_SECURE_SECURED) { + bdinfo_print_num("Secure ram", + gd->arch.secure_ram & + MEM_RESERVE_SECURE_ADDR_MASK); + } +#endif +#ifdef CONFIG_RESV_RAM + if (gd->arch.resv_ram) + bdinfo_print_num("Reserved ram", gd->arch.resv_ram); +#endif +#if !(CONFIG_IS_ENABLED(SYS_ICACHE_OFF) && CONFIG_IS_ENABLED(SYS_DCACHE_OFF)) + bdinfo_print_num("TLB addr", gd->arch.tlb_addr); +#endif + bdinfo_print_num("irq_sp", gd->irq_sp); /* irq stack pointer */ + bdinfo_print_num("sp start ", gd->start_addr_sp); + /* + * TODO: Currently only support for davinci SOC's is added. + * Remove this check once all the board implement this. + */ +#ifdef CONFIG_CLOCKS + printf("ARM frequency = %ld MHz\n", bd->bi_arm_freq); + printf("DSP frequency = %ld MHz\n", bd->bi_dsp_freq); + printf("DDR frequency = %ld MHz\n", bd->bi_ddr_freq); +#endif +#ifdef CONFIG_BOARD_TYPES + printf("Board Type = %ld\n", gd->board_type); +#endif +#if CONFIG_VAL(SYS_MALLOC_F_LEN) + printf("Early malloc usage: %lx / %x\n", gd->malloc_ptr, + CONFIG_VAL(SYS_MALLOC_F_LEN)); +#endif +} diff --git a/cmd/bdinfo.c b/cmd/bdinfo.c index 4fadfd2ac7..6aa23e6a43 100644 --- a/cmd/bdinfo.c +++ b/cmd/bdinfo.c @@ -67,6 +67,10 @@ void __weak board_detail(void) /* Please define board_detail() for your PPC platform */ } +__weak void arch_print_bdinfo(void) +{ +} + int do_bdinfo(struct cmd_tbl *cmdtp, int flag, int argc, char *const argv[]) { bd_t *bd = gd->bd; @@ -74,8 +78,6 @@ int do_bdinfo(struct cmd_tbl *cmdtp, int flag, int argc, char *const argv[]) #ifdef DEBUG bdinfo_print_num("bd address", (ulong)bd); #endif - if (IS_ENABLED(CONFIG_ARM)) - bdinfo_print_num("arch_number", bd->bi_arch_number); bdinfo_print_num("boot_params", (ulong)bd->bi_boot_params); print_bi_dram(bd); bdinfo_print_num("memstart", (ulong)bd->bi_memstart); @@ -98,44 +100,11 @@ int do_bdinfo(struct cmd_tbl *cmdtp, int flag, int argc, char *const argv[]) #if defined(CONFIG_LCD) || defined(CONFIG_VIDEO) || defined(CONFIG_DM_VIDEO) bdinfo_print_num("FB base ", gd->fb_base); #endif - - /* This section is used only by ARM */ -#ifdef CONFIG_ARM -#ifdef CONFIG_SYS_MEM_RESERVE_SECURE - if (gd->arch.secure_ram & MEM_RESERVE_SECURE_SECURED) { - bdinfo_print_num("Secure ram", - gd->arch.secure_ram & MEM_RESERVE_SECURE_ADDR_MASK); - } -#endif -#ifdef CONFIG_RESV_RAM - if (gd->arch.resv_ram) - bdinfo_print_num("Reserved ram", gd->arch.resv_ram); -#endif -#if !(CONFIG_IS_ENABLED(SYS_ICACHE_OFF) && CONFIG_IS_ENABLED(SYS_DCACHE_OFF)) - bdinfo_print_num("TLB addr", gd->arch.tlb_addr); -#endif - bdinfo_print_num("irq_sp", gd->irq_sp); /* irq stack pointer */ - bdinfo_print_num("sp start ", gd->start_addr_sp); - /* - * TODO: Currently only support for davinci SOC's is added. - * Remove this check once all the board implement this. - */ -#ifdef CONFIG_CLOCKS - printf("ARM frequency = %ld MHz\n", gd->bd->bi_arm_freq); - printf("DSP frequency = %ld MHz\n", gd->bd->bi_dsp_freq); - printf("DDR frequency = %ld MHz\n", gd->bd->bi_ddr_freq); -#endif -#ifdef CONFIG_BOARD_TYPES - printf("Board Type = %ld\n", gd->board_type); -#endif -#if CONFIG_VAL(SYS_MALLOC_F_LEN) - printf("Early malloc usage: %lx / %x\n", gd->malloc_ptr, - CONFIG_VAL(SYS_MALLOC_F_LEN)); -#endif #if CONFIG_IS_ENABLED(MULTI_DTB_FIT) bdinfo_print_num("multi_dtb_fit", (ulong)gd->multi_dtb_fit); #endif -#endif /* CONFIG_ARM */ + + arch_print_bdinfo(); /* This section is used only by ppc */ #if defined(CONFIG_MPC8xx) || defined(CONFIG_E500) @@ -170,7 +139,7 @@ int do_bdinfo(struct cmd_tbl *cmdtp, int flag, int argc, char *const argv[]) /* The rest are used only by m68k */ #ifdef CONFIG_M68K #if defined(CONFIG_SYS_MBAR) - print_num("mbar", bd->bi_mbar_base); + bdinfo_print_num("mbar", bd->bi_mbar_base); #endif bdinfo_print_mhz("cpufreq", bd->bi_intfreq); if (IS_ENABLED(CONFIG_PCI)) diff --git a/include/init.h b/include/init.h index af4deed566..e727031514 100644 --- a/include/init.h +++ b/include/init.h @@ -267,6 +267,9 @@ void bdinfo_print_num(const char *name, ulong value); /* Print a clock speed in MHz */ void bdinfo_print_mhz(const char *name, unsigned long hz); +/* Show arch-specific information for the 'bd' command */ +void arch_print_bdinfo(void); + #endif /* __ASSEMBLY__ */ /* Put only stuff here that the assembler can digest */ From 79d074d30196811478eb7242121f97cac405b6aa Mon Sep 17 00:00:00 2001 From: Simon Glass Date: Sun, 10 May 2020 14:16:57 -0600 Subject: [PATCH 34/39] bdinfo: ppc: Move PPC-specific info into its own file We don't really want to have PPC-specific code in a generic file. Create a new arch-specific function to hold it, and move it into that. Make the function weak so that any arch can implement it. Signed-off-by: Simon Glass Reviewed-by: Bin Meng Reviewed-by: Stefan Roese --- arch/powerpc/lib/Makefile | 2 ++ arch/powerpc/lib/bdinfo.c | 41 +++++++++++++++++++++++++++++++++++++++ cmd/bdinfo.c | 27 -------------------------- 3 files changed, 43 insertions(+), 27 deletions(-) create mode 100644 arch/powerpc/lib/bdinfo.c diff --git a/arch/powerpc/lib/Makefile b/arch/powerpc/lib/Makefile index 01c9dd51be..f61809ab05 100644 --- a/arch/powerpc/lib/Makefile +++ b/arch/powerpc/lib/Makefile @@ -15,6 +15,8 @@ MINIMAL=y endif endif +obj-y += bdinfo.o + ifdef MINIMAL obj-y += cache.o time.o ifndef CONFIG_TIMER diff --git a/arch/powerpc/lib/bdinfo.c b/arch/powerpc/lib/bdinfo.c new file mode 100644 index 0000000000..da09bb276f --- /dev/null +++ b/arch/powerpc/lib/bdinfo.c @@ -0,0 +1,41 @@ +// SPDX-License-Identifier: GPL-2.0+ +/* + * PPC-specific information for the 'bd' command + * + * (C) Copyright 2003 + * Wolfgang Denk, DENX Software Engineering, wd@denx.de. + */ + +#include +#include + +DECLARE_GLOBAL_DATA_PTR; + +void __weak board_detail(void) +{ + /* Please define board_detail() for your PPC platform */ +} + +void arch_print_bdinfo(void) +{ + bd_t *bd = gd->bd; + +#if defined(CONFIG_MPC8xx) || defined(CONFIG_E500) + bdinfo_print_num("immr_base", bd->bi_immr_base); +#endif + bdinfo_print_num("bootflags", bd->bi_bootflags); + bdinfo_print_mhz("intfreq", bd->bi_intfreq); +#ifdef CONFIG_ENABLE_36BIT_PHYS + if (IS_ENABLED(CONFIG_PHYS_64BIT)) + puts("addressing = 36-bit\n"); + else + puts("addressing = 32-bit\n"); +#endif + board_detail(); +#if defined(CONFIG_CPM2) + bdinfo_print_mhz("cpmfreq", bd->bi_cpmfreq); + bdinfo_print_mhz("vco", bd->bi_vco); + bdinfo_print_mhz("sccfreq", bd->bi_sccfreq); + bdinfo_print_mhz("brgfreq", bd->bi_brgfreq); +#endif +} diff --git a/cmd/bdinfo.c b/cmd/bdinfo.c index 6aa23e6a43..524677edd2 100644 --- a/cmd/bdinfo.c +++ b/cmd/bdinfo.c @@ -62,11 +62,6 @@ static void print_bi_dram(const bd_t *bd) #endif } -void __weak board_detail(void) -{ - /* Please define board_detail() for your PPC platform */ -} - __weak void arch_print_bdinfo(void) { } @@ -106,28 +101,6 @@ int do_bdinfo(struct cmd_tbl *cmdtp, int flag, int argc, char *const argv[]) arch_print_bdinfo(); - /* This section is used only by ppc */ -#if defined(CONFIG_MPC8xx) || defined(CONFIG_E500) - bdinfo_print_num("immr_base", bd->bi_immr_base); -#endif - if (IS_ENABLED(CONFIG_PPC)) { - bdinfo_print_num("bootflags", bd->bi_bootflags); - bdinfo_print_mhz("intfreq", bd->bi_intfreq); -#ifdef CONFIG_ENABLE_36BIT_PHYS - if (IS_ENABLED(CONFIG_PHYS_64BIT)) - puts("addressing = 36-bit\n"); - else - puts("addressing = 32-bit\n"); -#endif - board_detail(); - } -#if defined(CONFIG_CPM2) - bdinfo_print_mhz("cpmfreq", bd->bi_cpmfreq); - bdinfo_print_mhz("vco", bd->bi_vco); - bdinfo_print_mhz("sccfreq", bd->bi_sccfreq); - bdinfo_print_mhz("brgfreq", bd->bi_brgfreq); -#endif - /* This is used by m68k and ppc */ #if defined(CONFIG_SYS_INIT_RAM_ADDR) bdinfo_print_num("sramstart", (ulong)bd->bi_sramstart); From 1a520d949b00a0468746a5d4f14920f54c8f6766 Mon Sep 17 00:00:00 2001 From: Simon Glass Date: Sun, 10 May 2020 14:16:58 -0600 Subject: [PATCH 35/39] bdinfo: m68k: Move m68k-specific info into its own file We don't really want to have m68k-specific code in a generic file. Create a new arch-specific function to hold it, and move it into that. Make the function weak so that any arch can implement it. Signed-off-by: Simon Glass Reviewed-by: Bin Meng Tested-by: Angelo Dureghello Tested-by: Angelo Dureghello --- arch/m68k/lib/Makefile | 1 + arch/m68k/lib/bdinfo.c | 29 +++++++++++++++++++++++++++++ cmd/bdinfo.c | 15 --------------- 3 files changed, 30 insertions(+), 15 deletions(-) create mode 100644 arch/m68k/lib/bdinfo.c diff --git a/arch/m68k/lib/Makefile b/arch/m68k/lib/Makefile index a040f40eb8..b66d66afd2 100644 --- a/arch/m68k/lib/Makefile +++ b/arch/m68k/lib/Makefile @@ -7,6 +7,7 @@ ## if the user asked for it lib-$(CONFIG_USE_PRIVATE_LIBGCC) += lshrdi3.o muldi3.o ashldi3.o +obj-y += bdinfo.o obj-$(CONFIG_CMD_BOOTM) += bootm.o obj-y += cache.o obj-y += interrupts.o diff --git a/arch/m68k/lib/bdinfo.c b/arch/m68k/lib/bdinfo.c new file mode 100644 index 0000000000..09a1abfc21 --- /dev/null +++ b/arch/m68k/lib/bdinfo.c @@ -0,0 +1,29 @@ +// SPDX-License-Identifier: GPL-2.0+ +/* + * PPC-specific information for the 'bd' command + * + * (C) Copyright 2003 + * Wolfgang Denk, DENX Software Engineering, wd@denx.de. + */ + +#include +#include + +DECLARE_GLOBAL_DATA_PTR; + +void arch_print_bdinfo(void) +{ + bd_t *bd = gd->bd; + +#if defined(CONFIG_SYS_MBAR) + bdinfo_print_num("mbar", bd->bi_mbar_base); +#endif + bdinfo_print_mhz("cpufreq", bd->bi_intfreq); + if (IS_ENABLED(CONFIG_PCI)) + bdinfo_print_mhz("pcifreq", bd->bi_pcifreq); +#ifdef CONFIG_EXTRA_CLOCK + bdinfo_print_mhz("flbfreq", bd->bi_flbfreq); + bdinfo_print_mhz("inpfreq", bd->bi_inpfreq); + bdinfo_print_mhz("vcofreq", bd->bi_vcofreq); +#endif +} diff --git a/cmd/bdinfo.c b/cmd/bdinfo.c index 524677edd2..097a31416b 100644 --- a/cmd/bdinfo.c +++ b/cmd/bdinfo.c @@ -109,21 +109,6 @@ int do_bdinfo(struct cmd_tbl *cmdtp, int flag, int argc, char *const argv[]) if (IS_ENABLED(CONFIG_PPC) || IS_ENABLED(CONFIG_M68K)) bdinfo_print_mhz("busfreq", bd->bi_busfreq); - /* The rest are used only by m68k */ -#ifdef CONFIG_M68K -#if defined(CONFIG_SYS_MBAR) - bdinfo_print_num("mbar", bd->bi_mbar_base); -#endif - bdinfo_print_mhz("cpufreq", bd->bi_intfreq); - if (IS_ENABLED(CONFIG_PCI)) - bdinfo_print_mhz("pcifreq", bd->bi_pcifreq); -#ifdef CONFIG_EXTRA_CLOCK - bdinfo_print_mhz("flbfreq", bd->bi_flbfreq); - bdinfo_print_mhz("inpfreq", bd->bi_inpfreq); - bdinfo_print_mhz("vcofreq", bd->bi_vcofreq); -#endif -#endif - return 0; } From 64791981ebbfbfc150f132081f2471c21b485076 Mon Sep 17 00:00:00 2001 From: Simon Glass Date: Sun, 10 May 2020 14:16:59 -0600 Subject: [PATCH 36/39] bdinfo: m68k: ppc: Move arch-specific code from bdinfo We don't have an easy way to share these three lines of code with two architectures. We also want to make it clear that this code is actually arch-specific. So just duplicate it in each arch-specific file. Signed-off-by: Simon Glass Reviewed-by: Bin Meng Reviewed-by: Stefan Roese --- arch/m68k/lib/bdinfo.c | 5 +++++ arch/powerpc/lib/bdinfo.c | 5 +++++ cmd/bdinfo.c | 8 -------- 3 files changed, 10 insertions(+), 8 deletions(-) diff --git a/arch/m68k/lib/bdinfo.c b/arch/m68k/lib/bdinfo.c index 09a1abfc21..971c47c306 100644 --- a/arch/m68k/lib/bdinfo.c +++ b/arch/m68k/lib/bdinfo.c @@ -15,6 +15,11 @@ void arch_print_bdinfo(void) { bd_t *bd = gd->bd; +#if defined(CONFIG_SYS_INIT_RAM_ADDR) + bdinfo_print_num("sramstart", (ulong)bd->bi_sramstart); + bdinfo_print_num("sramsize", (ulong)bd->bi_sramsize); +#endif + bdinfo_print_mhz("busfreq", bd->bi_busfreq); #if defined(CONFIG_SYS_MBAR) bdinfo_print_num("mbar", bd->bi_mbar_base); #endif diff --git a/arch/powerpc/lib/bdinfo.c b/arch/powerpc/lib/bdinfo.c index da09bb276f..d8c64155f0 100644 --- a/arch/powerpc/lib/bdinfo.c +++ b/arch/powerpc/lib/bdinfo.c @@ -20,6 +20,11 @@ void arch_print_bdinfo(void) { bd_t *bd = gd->bd; +#if defined(CONFIG_SYS_INIT_RAM_ADDR) + bdinfo_print_num("sramstart", (ulong)bd->bi_sramstart); + bdinfo_print_num("sramsize", (ulong)bd->bi_sramsize); +#endif + bdinfo_print_mhz("busfreq", bd->bi_busfreq); #if defined(CONFIG_MPC8xx) || defined(CONFIG_E500) bdinfo_print_num("immr_base", bd->bi_immr_base); #endif diff --git a/cmd/bdinfo.c b/cmd/bdinfo.c index 097a31416b..420423a81b 100644 --- a/cmd/bdinfo.c +++ b/cmd/bdinfo.c @@ -101,14 +101,6 @@ int do_bdinfo(struct cmd_tbl *cmdtp, int flag, int argc, char *const argv[]) arch_print_bdinfo(); - /* This is used by m68k and ppc */ -#if defined(CONFIG_SYS_INIT_RAM_ADDR) - bdinfo_print_num("sramstart", (ulong)bd->bi_sramstart); - bdinfo_print_num("sramsize", (ulong)bd->bi_sramsize); -#endif - if (IS_ENABLED(CONFIG_PPC) || IS_ENABLED(CONFIG_M68K)) - bdinfo_print_mhz("busfreq", bd->bi_busfreq); - return 0; } From bda8909fcc813cd5d4175287f53237911c96e316 Mon Sep 17 00:00:00 2001 From: Simon Glass Date: Sun, 10 May 2020 14:17:00 -0600 Subject: [PATCH 37/39] bdinfo: Update the file comments Update the comment at the top of the file to indicate what this file does. Also drop the line at the bottom and an unnecessary header include. Signed-off-by: Simon Glass Reviewed-by: Bin Meng --- cmd/bdinfo.c | 8 ++------ 1 file changed, 2 insertions(+), 6 deletions(-) diff --git a/cmd/bdinfo.c b/cmd/bdinfo.c index 420423a81b..b7f5f710b4 100644 --- a/cmd/bdinfo.c +++ b/cmd/bdinfo.c @@ -1,19 +1,17 @@ // SPDX-License-Identifier: GPL-2.0+ /* + * Implements the 'bd' command to show board information + * * (C) Copyright 2003 * Wolfgang Denk, DENX Software Engineering, wd@denx.de. */ -/* - * Boot support - */ #include #include #include #include #include #include -#include DECLARE_GLOBAL_DATA_PTR; @@ -104,8 +102,6 @@ int do_bdinfo(struct cmd_tbl *cmdtp, int flag, int argc, char *const argv[]) return 0; } -/* -------------------------------------------------------------------- */ - U_BOOT_CMD( bdinfo, 1, 1, do_bdinfo, "print Board Info structure", From aef43ea0606deefc97ed085b16618f18a911cdb5 Mon Sep 17 00:00:00 2001 From: Simon Glass Date: Sun, 10 May 2020 14:17:01 -0600 Subject: [PATCH 38/39] bdinfo: dm: Update fb_base when using driver model Update this value with the address of a video device so that it shows with the 'bd' command. It would be better to obtain the address from the uclass by looking in struct video_uc_platdata for each device. We can move over to that once DM_VIDEO migration is complete. Signed-off-by: Simon Glass Reviewed-by: Bin Meng --- drivers/video/video-uclass.c | 1 + 1 file changed, 1 insertion(+) diff --git a/drivers/video/video-uclass.c b/drivers/video/video-uclass.c index bf396d1091..1f2874554a 100644 --- a/drivers/video/video-uclass.c +++ b/drivers/video/video-uclass.c @@ -84,6 +84,7 @@ int video_reserve(ulong *addrp) __func__, size, *addrp, dev->name); } gd->video_bottom = *addrp; + gd->fb_base = *addrp; debug("Video frame buffers from %lx to %lx\n", gd->video_bottom, gd->video_top); From c68a1ae6ab760d797f4dde2c5c671e18d0e2adb4 Mon Sep 17 00:00:00 2001 From: Simon Glass Date: Sun, 10 May 2020 14:17:02 -0600 Subject: [PATCH 39/39] bdinfo: x86: vesa: Update fb_base to the correct value Set this value in global_data so that it is reported correctly on x86 boards. In fact, U-Boot allocates space for the frame buffer even though it is not used. Then the FSP picks the address itself (e.g. 0xb0000000). So the value set by U-Boot (high in memory with everything else that is relocated), is not actually the correct value. Signed-off-by: Simon Glass Reviewed-by: Bin Meng --- arch/x86/lib/fsp/fsp_graphics.c | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/arch/x86/lib/fsp/fsp_graphics.c b/arch/x86/lib/fsp/fsp_graphics.c index 70224c1a48..6e23f3c95f 100644 --- a/arch/x86/lib/fsp/fsp_graphics.c +++ b/arch/x86/lib/fsp/fsp_graphics.c @@ -98,6 +98,7 @@ static int fsp_video_probe(struct udevice *dev) * For IGD, it seems to be always on BAR2. */ vesa->phys_base_ptr = dm_pci_read_bar32(dev, 2); + gd->fb_base = vesa->phys_base_ptr; ret = vbe_setup_video_priv(vesa, uc_priv, plat); if (ret) @@ -106,8 +107,8 @@ static int fsp_video_probe(struct udevice *dev) mtrr_add_request(MTRR_TYPE_WRCOMB, vesa->phys_base_ptr, 256 << 20); mtrr_commit(true); - printf("%dx%dx%d\n", uc_priv->xsize, uc_priv->ysize, - vesa->bits_per_pixel); + printf("%dx%dx%d @ %x\n", uc_priv->xsize, uc_priv->ysize, + vesa->bits_per_pixel, vesa->phys_base_ptr); return 0;