diff options
Diffstat (limited to 'cmd')
213 files changed, 592 insertions, 495 deletions
diff --git a/cmd/2048.c b/cmd/2048.c index fa60aa94aad..42cd171b0e4 100644 --- a/cmd/2048.c +++ b/cmd/2048.c @@ -3,10 +3,10 @@ /* Console version of the game "2048" for GNU/Linux */ -#include <common.h> #include <cli.h> #include <command.h> #include <rand.h> +#include <vsprintf.h> #include <linux/delay.h> #define SIZE 4 diff --git a/cmd/Kconfig b/cmd/Kconfig index 6834bbd82f3..40ac5a8dbac 100644 --- a/cmd/Kconfig +++ b/cmd/Kconfig @@ -308,7 +308,7 @@ config CMD_BOOTMETH depends on BOOTSTD default y if BOOTSTD_FULL help - Support listing available bootmethds (methods used to boot an + Support listing available bootmeths (methods used to boot an Operating System), as well as selecting the order that the bootmeths are used. @@ -539,6 +539,7 @@ config CMD_IMI config CMD_IMLS bool "imls" + depends on MTD_NOR_FLASH || FLASH_CFI_DRIVER help List all images found in flash @@ -803,9 +804,16 @@ config CMD_EEPROM_LAYOUT types of eeprom fields. Can be used for defining custom layouts. +config EEPROM_LAYOUT_VERSIONS + bool "Support specifying eeprom layout version" + depends on CMD_EEPROM_LAYOUT + help + Support specifying eeprom layout version in the 'eeprom' command + via the -l option. + config EEPROM_LAYOUT_HELP_STRING string "Tells user what layout names are supported" - depends on CMD_EEPROM_LAYOUT + depends on EEPROM_LAYOUT_VERSIONS default "<not defined>" help Help printed with the LAYOUT VERSIONS part of the 'eeprom' @@ -831,7 +839,7 @@ config SYS_EEPROM_SIZE config SYS_EEPROM_PAGE_WRITE_BITS int "Number of bits used to address bytes in a single page" - depends on CMD_EEPROM + depends on CMD_EEPROM || ENV_IS_IN_EEPROM default 8 help The EEPROM page size is 2^SYS_EEPROM_PAGE_WRITE_BITS. @@ -1023,8 +1031,8 @@ config CMD_ARMFFA - Displaying the arm_ffa device info config CMD_ARMFLASH - #depends on FLASH_CFI_DRIVER bool "armflash" + depends on FLASH_CFI_DRIVER help ARM Ltd reference designs flash partition access @@ -1167,6 +1175,7 @@ config CMD_FPGA_LOAD_SECURE config CMD_FPGAD bool "fpgad - dump FPGA registers" + depends on GDSYS_LEGACY_DRIVERS help (legacy, needs conversion to driver model) Provides a way to dump FPGA registers by calling the board-specific @@ -1602,6 +1611,7 @@ config CMD_TEMPERATURE config CMD_TSI148 bool "tsi148 - Command to access tsi148 device" + depends on DM_PCI_COMPAT help This provides various sub-commands to initialise and configure the Turndra tsi148 device. See the command help for full details. @@ -1615,6 +1625,7 @@ config CMD_UFS config CMD_UNIVERSE bool "universe - Command to set up the Turndra Universe controller" + depends on DM_PCI_COMPAT help This allows setting up the VMEbus provided by this controller. See the command help for full details. diff --git a/cmd/ab_select.c b/cmd/ab_select.c index bfb67b8236b..faeb83816e5 100644 --- a/cmd/ab_select.c +++ b/cmd/ab_select.c @@ -3,7 +3,6 @@ * Copyright (C) 2017 The Android Open Source Project */ -#include <common.h> #include <android_ab.h> #include <command.h> #include <env.h> diff --git a/cmd/abootimg.c b/cmd/abootimg.c index 2653b555b10..327712a536c 100644 --- a/cmd/abootimg.c +++ b/cmd/abootimg.c @@ -5,7 +5,6 @@ */ #include <android_image.h> -#include <common.h> #include <command.h> #include <image.h> #include <mapmem.h> @@ -15,6 +14,7 @@ /* Please use abootimg_addr() macro to obtain the boot image address */ static ulong _abootimg_addr = -1; +static ulong _ainit_bootimg_addr = -1; static ulong _avendor_bootimg_addr = -1; ulong get_abootimg_addr(void) @@ -22,6 +22,11 @@ ulong get_abootimg_addr(void) return (_abootimg_addr == -1 ? image_load_addr : _abootimg_addr); } +ulong get_ainit_bootimg_addr(void) +{ + return _ainit_bootimg_addr; +} + ulong get_avendor_bootimg_addr(void) { return _avendor_bootimg_addr; @@ -180,7 +185,7 @@ static int do_abootimg_addr(struct cmd_tbl *cmdtp, int flag, int argc, char *endp; ulong img_addr; - if (argc < 2 || argc > 3) + if (argc < 2 || argc > 4) return CMD_RET_USAGE; img_addr = hextoul(argv[1], &endp); @@ -191,16 +196,26 @@ static int do_abootimg_addr(struct cmd_tbl *cmdtp, int flag, int argc, _abootimg_addr = img_addr; - if (argc == 3) { + if (argc > 2) { img_addr = simple_strtoul(argv[2], &endp, 16); if (*endp != '\0') { - printf("Error: Wrong vendor image address\n"); + printf("Error: Wrong vendor_boot image address\n"); return CMD_RET_FAILURE; } _avendor_bootimg_addr = img_addr; } + if (argc == 4) { + img_addr = simple_strtoul(argv[3], &endp, 16); + if (*endp != '\0') { + printf("Error: Wrong init_boot image address\n"); + return CMD_RET_FAILURE; + } + + _ainit_bootimg_addr = img_addr; + } + return CMD_RET_SUCCESS; } @@ -244,7 +259,7 @@ static int do_abootimg_dump(struct cmd_tbl *cmdtp, int flag, int argc, } static struct cmd_tbl cmd_abootimg_sub[] = { - U_BOOT_CMD_MKENT(addr, 3, 1, do_abootimg_addr, "", ""), + U_BOOT_CMD_MKENT(addr, 4, 1, do_abootimg_addr, "", ""), U_BOOT_CMD_MKENT(dump, 2, 1, do_abootimg_dump, "", ""), U_BOOT_CMD_MKENT(get, 5, 1, do_abootimg_get, "", ""), }; @@ -272,7 +287,7 @@ static int do_abootimg(struct cmd_tbl *cmdtp, int flag, int argc, U_BOOT_CMD( abootimg, CONFIG_SYS_MAXARGS, 0, do_abootimg, "manipulate Android Boot Image", - "addr <boot_img_addr> [<vendor_boot_img_addr>]>\n" + "addr <boot_img_addr> [<vendor_boot_img_addr> [<init_boot_img_addr>]]\n" " - set the address in RAM where boot image is located\n" " ($loadaddr is used by default)\n" "abootimg dump dtb\n" diff --git a/cmd/acpi.c b/cmd/acpi.c index 928e5dc525e..094d9d4e858 100644 --- a/cmd/acpi.c +++ b/cmd/acpi.c @@ -3,7 +3,6 @@ * Copyright 2019 Google LLC * Written by Simon Glass <sjg@chromium.org> */ -#include <common.h> #include <command.h> #include <display_options.h> #include <log.h> @@ -11,6 +10,7 @@ #include <acpi/acpi_table.h> #include <asm/acpi_table.h> #include <asm/global_data.h> +#include <linux/errno.h> #include <dm/acpi.h> DECLARE_GLOBAL_DATA_PTR; diff --git a/cmd/adc.c b/cmd/adc.c index 4cb18b66d4a..4d3b5b61f6f 100644 --- a/cmd/adc.c +++ b/cmd/adc.c @@ -3,7 +3,6 @@ * Copyright (C) 2018 BayLibre, SAS * Author: Neil Armstrong <narmstrong@baylibre.com> */ -#include <common.h> #include <command.h> #include <dm.h> #include <adc.h> @@ -153,11 +152,11 @@ static int do_adc_scan(struct cmd_tbl *cmdtp, int flag, int argc, return CMD_RET_SUCCESS; } -static char adc_help_text[] = +U_BOOT_LONGHELP(adc, "list - list ADC devices\n" "adc info <name> - Get ADC device info\n" "adc single <name> <channel> [varname] - Get Single data of ADC device channel\n" - "adc scan <name> [channel mask] - Scan all [or masked] ADC channels"; + "adc scan <name> [channel mask] - Scan all [or masked] ADC channels\n"); U_BOOT_CMD_WITH_SUBCMDS(adc, "ADC sub-system", adc_help_text, U_BOOT_SUBCMD_MKENT(list, 1, 1, do_adc_list), diff --git a/cmd/addrmap.c b/cmd/addrmap.c index bd23549f3a5..f7e4d9206de 100644 --- a/cmd/addrmap.c +++ b/cmd/addrmap.c @@ -3,7 +3,6 @@ * Copyright (C) 2021, Bin Meng <bmeng.cn@gmail.com> */ -#include <common.h> #include <command.h> #include <addr_map.h> diff --git a/cmd/adtimg.c b/cmd/adtimg.c index f4b5cbf35b9..53f33764fbe 100644 --- a/cmd/adtimg.c +++ b/cmd/adtimg.c @@ -7,8 +7,8 @@ #include <command.h> #include <env.h> +#include <vsprintf.h> #include <image-android-dt.h> -#include <common.h> #define OPT_INDEX "--index" diff --git a/cmd/aes.c b/cmd/aes.c index 1264675aa01..87ad1ab82b9 100644 --- a/cmd/aes.c +++ b/cmd/aes.c @@ -5,13 +5,13 @@ * Command for en/de-crypting block of memory with AES-[128/192/256]-CBC cipher. */ -#include <common.h> #include <command.h> #include <uboot_aes.h> #include <malloc.h> #include <asm/byteorder.h> #include <linux/compiler.h> #include <mapmem.h> +#include <vsprintf.h> u32 aes_get_key_len(char *command) { diff --git a/cmd/arm/exception.c b/cmd/arm/exception.c index 98a9795b68c..8857f121604 100644 --- a/cmd/arm/exception.c +++ b/cmd/arm/exception.c @@ -49,12 +49,11 @@ static struct cmd_tbl cmd_sub[] = { "", ""), }; -static char exception_help_text[] = +U_BOOT_LONGHELP(exception, "<ex>\n" " The following exceptions are available:\n" " breakpoint - prefetch abort\n" " unaligned - data abort\n" - " undefined - undefined instruction\n" - ; + " undefined - undefined instruction\n"); #include <exception.h> diff --git a/cmd/arm/exception64.c b/cmd/arm/exception64.c index 589a23115b0..4c5b953168c 100644 --- a/cmd/arm/exception64.c +++ b/cmd/arm/exception64.c @@ -5,7 +5,6 @@ * Copyright (c) 2018, Heinrich Schuchardt <xypron.glpk@gmx.de> */ -#include <common.h> #include <command.h> #include <linux/bitops.h> @@ -78,12 +77,11 @@ static struct cmd_tbl cmd_sub[] = { "", ""), }; -static char exception_help_text[] = +U_BOOT_LONGHELP(exception, "<ex>\n" " The following exceptions are available:\n" " breakpoint - breakpoint instruction exception\n" " unaligned - unaligned LDAR data abort\n" - " undefined - undefined instruction exception\n" - ; + " undefined - undefined instruction exception\n"); #include <exception.h> diff --git a/cmd/armffa.c b/cmd/armffa.c index 9585150b962..181e31bc49a 100644 --- a/cmd/armffa.c +++ b/cmd/armffa.c @@ -5,7 +5,6 @@ * Authors: * Abdellatif El Khlifi <abdellatif.elkhlifi@arm.com> */ -#include <common.h> #include <arm_ffa.h> #include <command.h> #include <dm.h> diff --git a/cmd/armflash.c b/cmd/armflash.c index fdaea5ad811..e292cf85c45 100644 --- a/cmd/armflash.c +++ b/cmd/armflash.c @@ -5,10 +5,10 @@ * * Support for ARM Flash Partitions */ -#include <common.h> #include <command.h> #include <console.h> #include <flash.h> +#include <vsprintf.h> #include <asm/io.h> #define MAX_REGIONS 4 diff --git a/cmd/axi.c b/cmd/axi.c index 5620891db28..3dbea0499de 100644 --- a/cmd/axi.c +++ b/cmd/axi.c @@ -9,7 +9,6 @@ * SPDX-License-Identifier: GPL-2.0+ */ -#include <common.h> #include <axi.h> #include <command.h> #include <console.h> diff --git a/cmd/bcb.c b/cmd/bcb.c index f3b92564d10..fe6d6cb2c38 100644 --- a/cmd/bcb.c +++ b/cmd/bcb.c @@ -8,12 +8,12 @@ #include <android_bootloader_message.h> #include <bcb.h> #include <command.h> -#include <common.h> #include <display_options.h> #include <log.h> #include <part.h> #include <malloc.h> #include <memalign.h> +#include <vsprintf.h> #include <linux/err.h> enum bcb_cmd { diff --git a/cmd/bdinfo.c b/cmd/bdinfo.c index 79106caeec2..437ac4e8630 100644 --- a/cmd/bdinfo.c +++ b/cmd/bdinfo.c @@ -6,7 +6,6 @@ * Wolfgang Denk, DENX Software Engineering, wd@denx.de. */ -#include <common.h> #include <command.h> #include <dm.h> #include <env.h> diff --git a/cmd/bind.c b/cmd/bind.c index be0d4d2a711..3a59eefd5c5 100644 --- a/cmd/bind.c +++ b/cmd/bind.c @@ -3,7 +3,6 @@ * Copyright (c) 2018 JJ Hiblot <jjhiblot@ti.com> */ -#include <common.h> #include <command.h> #include <dm.h> #include <dm/device-internal.h> diff --git a/cmd/binop.c b/cmd/binop.c index 592e9146901..10d91b5dbf2 100644 --- a/cmd/binop.c +++ b/cmd/binop.c @@ -1,11 +1,11 @@ // SPDX-License-Identifier: GPL-2.0+ -#include <common.h> #include <command.h> #include <env.h> #include <hexdump.h> #include <malloc.h> #include <mapmem.h> +#include <vsprintf.h> #include <linux/ctype.h> enum { diff --git a/cmd/blk_common.c b/cmd/blk_common.c index 02ac92837b6..4c05a4e0610 100644 --- a/cmd/blk_common.c +++ b/cmd/blk_common.c @@ -8,10 +8,10 @@ * Wolfgang Denk, DENX Software Engineering, wd@denx.de. */ -#include <common.h> #include <blk.h> #include <command.h> #include <mapmem.h> +#include <vsprintf.h> int blk_common_cmd(int argc, char *const argv[], enum uclass_id uclass_id, int *cur_devnump) diff --git a/cmd/blkcache.c b/cmd/blkcache.c index 1456654df6f..dbd03df14dc 100644 --- a/cmd/blkcache.c +++ b/cmd/blkcache.c @@ -6,9 +6,9 @@ */ #include <command.h> #include <config.h> -#include <common.h> #include <malloc.h> #include <part.h> +#include <vsprintf.h> static int blkc_show(struct cmd_tbl *cmdtp, int flag, int argc, char *const argv[]) diff --git a/cmd/blkmap.c b/cmd/blkmap.c index ef74ebc0036..164f80f1387 100644 --- a/cmd/blkmap.c +++ b/cmd/blkmap.c @@ -6,7 +6,6 @@ #include <blk.h> #include <blkmap.h> -#include <common.h> #include <command.h> #include <malloc.h> #include <dm/device.h> diff --git a/cmd/blob.c b/cmd/blob.c index 7c77c410d52..b1c72e3f440 100644 --- a/cmd/blob.c +++ b/cmd/blob.c @@ -4,9 +4,9 @@ * Command for encapsulating/decapsulating blob of memory. */ -#include <common.h> #include <command.h> #include <malloc.h> +#include <vsprintf.h> #include <asm/byteorder.h> #include <linux/compiler.h> #if defined(CONFIG_ARCH_MX6) || defined(CONFIG_ARCH_MX7) || \ @@ -99,7 +99,7 @@ static int do_blob(struct cmd_tbl *cmdtp, int flag, int argc, } /***************************************************/ -static char blob_help_text[] = +U_BOOT_LONGHELP(blob, "enc src dst len km - Encapsulate and create blob of data\n" " $len bytes long at address $src and\n" " store the result at address $dst.\n" @@ -115,7 +115,7 @@ static char blob_help_text[] = " modifier is stored.\n" " The modifier is required for generation\n" " /use as key for cryptographic operation.\n" - " Key modifier should be 16 byte long.\n"; + " Key modifier should be 16 byte long.\n"); U_BOOT_CMD( blob, 6, 1, do_blob, diff --git a/cmd/bloblist.c b/cmd/bloblist.c index 26548ecf847..333ae558142 100644 --- a/cmd/bloblist.c +++ b/cmd/bloblist.c @@ -6,7 +6,6 @@ * Written by Simon Glass <sjg@chromium.org> */ -#include <common.h> #include <bloblist.h> #include <command.h> #include <asm/global_data.h> diff --git a/cmd/bmp.c b/cmd/bmp.c index 8f43a40dafd..3b618448624 100644 --- a/cmd/bmp.c +++ b/cmd/bmp.c @@ -8,7 +8,6 @@ * BMP handling routines */ -#include <common.h> #include <command.h> #include <image.h> #include <mapmem.h> diff --git a/cmd/boot.c b/cmd/boot.c index 14839c1cedc..23496cafdf5 100644 --- a/cmd/boot.c +++ b/cmd/boot.c @@ -7,9 +7,9 @@ /* * Misc boot support */ -#include <common.h> #include <command.h> #include <net.h> +#include <vsprintf.h> #ifdef CONFIG_CMD_GO diff --git a/cmd/bootcount.c b/cmd/bootcount.c index 30ce5dba30d..5e3b66e676b 100644 --- a/cmd/bootcount.c +++ b/cmd/bootcount.c @@ -1,6 +1,5 @@ // SPDX-License-Identifier: GPL-2.0+ -#include <common.h> #include <command.h> #include <bootcount.h> diff --git a/cmd/bootdev.c b/cmd/bootdev.c index 471189cda48..fa7285ba25e 100644 --- a/cmd/bootdev.c +++ b/cmd/bootdev.c @@ -6,7 +6,6 @@ * Written by Simon Glass <sjg@chromium.org> */ -#include <common.h> #include <bootdev.h> #include <bootflow.h> #include <bootstd.h> diff --git a/cmd/bootflow.c b/cmd/bootflow.c index be5d7d8e743..1588f277a4a 100644 --- a/cmd/bootflow.c +++ b/cmd/bootflow.c @@ -6,7 +6,6 @@ * Written by Simon Glass <sjg@chromium.org> */ -#include <common.h> #include <bootdev.h> #include <bootflow.h> #include <bootm.h> diff --git a/cmd/booti.c b/cmd/booti.c index b9637b3ec3d..62b19e83436 100644 --- a/cmd/booti.c +++ b/cmd/booti.c @@ -4,7 +4,6 @@ * Wolfgang Denk, DENX Software Engineering, wd@denx.de. */ -#include <common.h> #include <bootm.h> #include <command.h> #include <image.h> diff --git a/cmd/bootm.c b/cmd/bootm.c index 9737a2d28c0..545b0c3d823 100644 --- a/cmd/bootm.c +++ b/cmd/bootm.c @@ -7,7 +7,6 @@ /* * Boot support */ -#include <common.h> #include <bootm.h> #include <command.h> #include <env.h> diff --git a/cmd/bootmenu.c b/cmd/bootmenu.c index 78184fccab2..977a04b7d76 100644 --- a/cmd/bootmenu.c +++ b/cmd/bootmenu.c @@ -5,7 +5,6 @@ #include <charset.h> #include <cli.h> -#include <common.h> #include <command.h> #include <ansi.h> #include <efi_config.h> diff --git a/cmd/bootmeth.c b/cmd/bootmeth.c index f5b01343c48..ebf8b7e2530 100644 --- a/cmd/bootmeth.c +++ b/cmd/bootmeth.c @@ -6,7 +6,6 @@ * Written by Simon Glass <sjg@chromium.org> */ -#include <common.h> #include <bootdev.h> #include <bootmeth.h> #include <bootstd.h> diff --git a/cmd/bootstage.c b/cmd/bootstage.c index 77a4bc66ff4..5246924f39a 100644 --- a/cmd/bootstage.c +++ b/cmd/bootstage.c @@ -3,9 +3,9 @@ * Copyright (c) 2012, Google Inc. All rights reserved. */ -#include <common.h> #include <bootstage.h> #include <command.h> +#include <vsprintf.h> static int do_bootstage_report(struct cmd_tbl *cmdtp, int flag, int argc, char *const argv[]) diff --git a/cmd/bootz.c b/cmd/bootz.c index b6bb4aae72d..55837a7599b 100644 --- a/cmd/bootz.c +++ b/cmd/bootz.c @@ -4,7 +4,6 @@ * Wolfgang Denk, DENX Software Engineering, wd@denx.de. */ -#include <common.h> #include <bootm.h> #include <command.h> #include <image.h> diff --git a/cmd/broadcom/chimp_boot.c b/cmd/broadcom/chimp_boot.c index 16f2b612c4d..ae0a81179d0 100644 --- a/cmd/broadcom/chimp_boot.c +++ b/cmd/broadcom/chimp_boot.c @@ -3,7 +3,6 @@ * Copyright 2020 Broadcom */ -#include <common.h> #include <command.h> #include <broadcom/chimp.h> diff --git a/cmd/broadcom/chimp_handshake.c b/cmd/broadcom/chimp_handshake.c index a90a73a6d74..e2742671963 100644 --- a/cmd/broadcom/chimp_handshake.c +++ b/cmd/broadcom/chimp_handshake.c @@ -3,7 +3,6 @@ * Copyright 2020 Broadcom */ -#include <common.h> #include <command.h> #include <broadcom/chimp.h> diff --git a/cmd/broadcom/nitro_image_load.c b/cmd/broadcom/nitro_image_load.c index 93b5cb4cebe..289b184e9af 100644 --- a/cmd/broadcom/nitro_image_load.c +++ b/cmd/broadcom/nitro_image_load.c @@ -3,8 +3,8 @@ * Copyright 2020 Broadcom */ -#include <common.h> #include <command.h> +#include <vsprintf.h> #define FW_IMAGE_SIG 0xff123456 #define CFG_IMAGE_SIG 0xcf54321a diff --git a/cmd/btrfs.c b/cmd/btrfs.c index 2843835d08b..69d1b1f830d 100644 --- a/cmd/btrfs.c +++ b/cmd/btrfs.c @@ -3,7 +3,6 @@ * 2017 by Marek Behún <kabel@kernel.org> */ -#include <common.h> #include <command.h> #include <btrfs.h> #include <fs.h> diff --git a/cmd/button.c b/cmd/button.c index 1b45d0a2a03..3e6db3f5b8e 100644 --- a/cmd/button.c +++ b/cmd/button.c @@ -5,7 +5,6 @@ * Based on led.c */ -#include <common.h> #include <command.h> #include <dm.h> #include <button.h> diff --git a/cmd/cache.c b/cmd/cache.c index b68d45b98bf..0254ff17f9b 100644 --- a/cmd/cache.c +++ b/cmd/cache.c @@ -7,7 +7,6 @@ /* * Cache support: switch on or off, get status */ -#include <common.h> #include <command.h> #include <cpu_func.h> #include <linux/compiler.h> diff --git a/cmd/cat.c b/cmd/cat.c index 18aa6ca7aa6..6828b7b364e 100644 --- a/cmd/cat.c +++ b/cmd/cat.c @@ -4,7 +4,6 @@ * Roger Knecht <rknecht@pm.de> */ -#include <common.h> #include <command.h> #include <fs.h> #include <malloc.h> diff --git a/cmd/cbfs.c b/cmd/cbfs.c index 3cfc9eb2727..c1035461df1 100644 --- a/cmd/cbfs.c +++ b/cmd/cbfs.c @@ -6,10 +6,10 @@ /* * CBFS commands */ -#include <common.h> #include <command.h> #include <env.h> #include <cbfs.h> +#include <vsprintf.h> static int do_cbfs_init(struct cmd_tbl *cmdtp, int flag, int argc, char *const argv[]) diff --git a/cmd/cedit.c b/cmd/cedit.c index 6352e6369d1..fec67a8e334 100644 --- a/cmd/cedit.c +++ b/cmd/cedit.c @@ -6,7 +6,6 @@ * Written by Simon Glass <sjg@chromium.org> */ -#include <common.h> #include <abuf.h> #include <cedit.h> #include <command.h> diff --git a/cmd/cli.c b/cmd/cli.c index be3bf7dfe20..e0ddd0a43d0 100644 --- a/cmd/cli.c +++ b/cmd/cli.c @@ -118,16 +118,11 @@ static int do_cli(struct cmd_tbl *cmdtp, int flag, int argc, return CMD_RET_USAGE; } -#if CONFIG_IS_ENABLED(SYS_LONGHELP) -static char cli_help_text[] = +U_BOOT_LONGHELP(cli, "get - print current cli\n" - "set - set the current cli, possible value are: old, modern" - ; -#endif + "set - set the current cli, possible value are: old, modern\n"); U_BOOT_CMD(cli, 3, 1, do_cli, "cli", -#if CONFIG_IS_ENABLED(SYS_LONGHELP) cli_help_text -#endif ); diff --git a/cmd/clk.c b/cmd/clk.c index 7bbcbfeda33..6fda6efb1ce 100644 --- a/cmd/clk.c +++ b/cmd/clk.c @@ -2,7 +2,6 @@ /* * Copyright (C) 2013 Xilinx, Inc. */ -#include <common.h> #include <command.h> #include <clk.h> #if defined(CONFIG_DM) && defined(CONFIG_CLK) diff --git a/cmd/clone.c b/cmd/clone.c index a9062077571..1f3cff1836d 100644 --- a/cmd/clone.c +++ b/cmd/clone.c @@ -4,11 +4,11 @@ * */ -#include <common.h> #include <command.h> #include <malloc.h> #include <part.h> #include <blk.h> +#include <time.h> #include <vsprintf.h> #define BUFSIZE (1 * 1024 * 1024) diff --git a/cmd/cls.c b/cmd/cls.c index 80d0558d467..4bee8a18305 100644 --- a/cmd/cls.c +++ b/cmd/cls.c @@ -5,7 +5,6 @@ * * cls - clear screen command */ -#include <common.h> #include <command.h> #include <console.h> #include <dm.h> diff --git a/cmd/config.c b/cmd/config.c index cf30841a359..f0d2033c61f 100644 --- a/cmd/config.c +++ b/cmd/config.c @@ -3,7 +3,6 @@ * Copyright (C) 2017 Masahiro Yamada <yamada.masahiro@socionext.com> */ -#include <common.h> #include <command.h> #include <gzip.h> #include <malloc.h> diff --git a/cmd/conitrace.c b/cmd/conitrace.c index 9a1bc351848..6cc113328eb 100644 --- a/cmd/conitrace.c +++ b/cmd/conitrace.c @@ -5,7 +5,6 @@ * * Copyright (c) 2018, Heinrich Schuchardt <xypron.glpk@gmx.de> */ -#include <common.h> #include <command.h> #include <linux/delay.h> diff --git a/cmd/console.c b/cmd/console.c index 58c2cf1c894..12fc92061a1 100644 --- a/cmd/console.c +++ b/cmd/console.c @@ -7,7 +7,6 @@ /* * Boot support */ -#include <common.h> #include <command.h> #include <iomux.h> #include <stdio_dev.h> diff --git a/cmd/cpu.c b/cmd/cpu.c index 245a82fa3eb..9e323069b9e 100644 --- a/cmd/cpu.c +++ b/cmd/cpu.c @@ -5,7 +5,6 @@ * Copyright (c) 2017 Álvaro Fernández Rojas <noltari@gmail.com> */ -#include <common.h> #include <command.h> #include <cpu.h> #include <display_options.h> diff --git a/cmd/cramfs.c b/cmd/cramfs.c index 57e2afa2472..b57e2815926 100644 --- a/cmd/cramfs.c +++ b/cmd/cramfs.c @@ -10,7 +10,6 @@ /* * CRAMFS support */ -#include <common.h> #include <command.h> #include <env.h> #include <image.h> diff --git a/cmd/cros_ec.c b/cmd/cros_ec.c index 90921cecf60..7b60e415b6c 100644 --- a/cmd/cros_ec.c +++ b/cmd/cros_ec.c @@ -6,7 +6,6 @@ * Copyright (c) 2016 National Instruments Corp */ -#include <common.h> #include <command.h> #include <cros_ec.h> #include <dm.h> diff --git a/cmd/cyclic.c b/cmd/cyclic.c index ad7fc3b975e..339dd4a7bce 100644 --- a/cmd/cyclic.c +++ b/cmd/cyclic.c @@ -8,20 +8,23 @@ * Copyright (C) 2022 Stefan Roese <sr@denx.de> */ -#include <common.h> #include <command.h> #include <cyclic.h> #include <div64.h> #include <malloc.h> +#include <time.h> +#include <vsprintf.h> #include <linux/delay.h> +#include <linux/kernel.h> struct cyclic_demo_info { + struct cyclic_info cyclic; uint delay_us; }; -static void cyclic_demo(void *ctx) +static void cyclic_demo(struct cyclic_info *c) { - struct cyclic_demo_info *info = ctx; + struct cyclic_demo_info *info = container_of(c, struct cyclic_demo_info, cyclic); /* Just a small dummy delay here */ udelay(info->delay_us); @@ -31,7 +34,6 @@ static int do_cyclic_demo(struct cmd_tbl *cmdtp, int flag, int argc, char *const argv[]) { struct cyclic_demo_info *info; - struct cyclic_info *cyclic; uint time_ms; if (argc < 3) @@ -47,10 +49,7 @@ static int do_cyclic_demo(struct cmd_tbl *cmdtp, int flag, int argc, info->delay_us = simple_strtoul(argv[2], NULL, 0); /* Register demo cyclic function */ - cyclic = cyclic_register(cyclic_demo, time_ms * 1000, "cyclic_demo", - info); - if (!cyclic) - printf("Registering of cyclic_demo failed\n"); + cyclic_register(&info->cyclic, cyclic_demo, time_ms * 1000, "cyclic_demo"); printf("Registered function \"%s\" to be executed all %dms\n", "cyclic_demo", time_ms); diff --git a/cmd/date.c b/cmd/date.c index 4f98b470ca2..755adec1e71 100644 --- a/cmd/date.c +++ b/cmd/date.c @@ -7,7 +7,6 @@ /* * RTC, Date & Time support: get and set date & time */ -#include <common.h> #include <command.h> #include <dm.h> #include <rtc.h> diff --git a/cmd/demo.c b/cmd/demo.c index ebd5a241c36..5c422ac165b 100644 --- a/cmd/demo.c +++ b/cmd/demo.c @@ -6,7 +6,6 @@ * Pavel Herrmann <morpheus.ibis@gmail.com> */ -#include <common.h> #include <command.h> #include <dm.h> #include <dm-demo.h> diff --git a/cmd/dfu.c b/cmd/dfu.c index d7bfb535dc6..46f0190588e 100644 --- a/cmd/dfu.c +++ b/cmd/dfu.c @@ -10,7 +10,6 @@ * Lukasz Majewski <l.majewski@samsung.com> */ -#include <common.h> #include <command.h> #include <watchdog.h> #include <dfu.h> diff --git a/cmd/diag.c b/cmd/diag.c index f51536dbfaa..c6da5aae3fc 100644 --- a/cmd/diag.c +++ b/cmd/diag.c @@ -7,7 +7,6 @@ /* * Diagnostics support */ -#include <common.h> #include <command.h> #include <post.h> diff --git a/cmd/disk.c b/cmd/disk.c index 92eaa02f4a1..2efc3ca4b1a 100644 --- a/cmd/disk.c +++ b/cmd/disk.c @@ -3,7 +3,6 @@ * (C) Copyright 2000-2011 * Wolfgang Denk, DENX Software Engineering, wd@denx.de. */ -#include <common.h> #include <bootstage.h> #include <command.h> #include <cpu_func.h> @@ -6,7 +6,6 @@ * Marek Vasut <marex@denx.de> */ -#include <common.h> #include <command.h> #include <dm/root.h> #include <dm/util.h> diff --git a/cmd/echo.c b/cmd/echo.c index fda844ee9d3..973213a03a6 100644 --- a/cmd/echo.c +++ b/cmd/echo.c @@ -4,7 +4,6 @@ * Wolfgang Denk, DENX Software Engineering, wd@denx.de. */ -#include <common.h> #include <command.h> static int do_echo(struct cmd_tbl *cmdtp, int flag, int argc, diff --git a/cmd/eeprom.c b/cmd/eeprom.c index 322765ad02a..cf89cfce3e4 100644 --- a/cmd/eeprom.c +++ b/cmd/eeprom.c @@ -19,12 +19,14 @@ * */ -#include <common.h> #include <config.h> #include <command.h> +#include <dm.h> #include <eeprom.h> #include <i2c.h> +#include <i2c_eeprom.h> #include <eeprom_layout.h> +#include <vsprintf.h> #include <linux/delay.h> #ifndef I2C_RXTX_LEN @@ -208,41 +210,95 @@ static long parse_numeric_param(char *str) return (*endptr != '\0') ? -1 : value; } +struct eeprom_dev_spec { +#if CONFIG_IS_ENABLED(I2C_EEPROM) + struct udevice *dev; +#endif + int i2c_bus; + ulong i2c_addr; +}; + +static void eeprom_dev_spec_init(struct eeprom_dev_spec *dev) +{ +#if CONFIG_IS_ENABLED(I2C_EEPROM) + if (!dev->dev) +#endif + eeprom_init(dev->i2c_bus); +} + +static int eeprom_dev_spec_read(struct eeprom_dev_spec *dev, + unsigned offset, uchar *buffer, unsigned cnt) +{ +#if CONFIG_IS_ENABLED(I2C_EEPROM) + if (dev->dev) + return i2c_eeprom_read(dev->dev, offset, buffer, cnt); +#endif + return eeprom_read(dev->i2c_addr, offset, buffer, cnt); +} + +static int eeprom_dev_spec_write(struct eeprom_dev_spec *dev, + unsigned offset, uchar *buffer, unsigned cnt) +{ +#if CONFIG_IS_ENABLED(I2C_EEPROM) + if (dev->dev) + return i2c_eeprom_write(dev->dev, offset, buffer, cnt); +#endif + return eeprom_write(dev->i2c_addr, offset, buffer, cnt); +} + /** - * parse_i2c_bus_addr - parse the i2c bus and i2c devaddr parameters + * parse_eeprom_dev_spec - parse the eeprom device specifier * - * @i2c_bus: address to store the i2c bus - * @i2c_addr: address to store the device i2c address - * @argc: count of command line arguments left to parse + * @dev: pointer to eeprom device specifier + * @argc: count of command line arguments that can be used to parse + * the device specifier * @argv: command line arguments left to parse - * @argc_no_bus_addr: argc value we expect to see when bus & addr aren't given * * @returns: number of arguments parsed or CMD_RET_USAGE if error */ -static int parse_i2c_bus_addr(int *i2c_bus, ulong *i2c_addr, int argc, - char *const argv[], int argc_no_bus_addr) +static int parse_eeprom_dev_spec(struct eeprom_dev_spec *dev, int argc, + char *const argv[]) { - int argc_no_bus = argc_no_bus_addr + 1; - int argc_bus_addr = argc_no_bus_addr + 2; +#if CONFIG_IS_ENABLED(I2C_EEPROM) + if (argc == 0) { + if (!uclass_first_device_err(UCLASS_I2C_EEPROM, &dev->dev)) + return 0; + } + + if (argc == 1) { + if (!uclass_get_device_by_name(UCLASS_I2C_EEPROM, argv[0], + &dev->dev)) + return 1; + + /* + * If we could not find the device by name and the parameter is + * not numeric (and so won't be handled later), fail. + */ + if (parse_numeric_param(argv[0]) == -1) { + printf("Can't get eeprom device: %s\n", argv[0]); + return CMD_RET_USAGE; + } + } +#endif #ifdef CONFIG_SYS_I2C_EEPROM_ADDR - if (argc == argc_no_bus_addr) { - *i2c_bus = -1; - *i2c_addr = CONFIG_SYS_I2C_EEPROM_ADDR; + if (argc == 0) { + dev->i2c_bus = -1; + dev->i2c_addr = CONFIG_SYS_I2C_EEPROM_ADDR; return 0; } #endif - if (argc == argc_no_bus) { - *i2c_bus = -1; - *i2c_addr = parse_numeric_param(argv[0]); + if (argc == 1) { + dev->i2c_bus = -1; + dev->i2c_addr = parse_numeric_param(argv[0]); return 1; } - if (argc == argc_bus_addr) { - *i2c_bus = parse_numeric_param(argv[0]); - *i2c_addr = parse_numeric_param(argv[1]); + if (argc == 2) { + dev->i2c_bus = parse_numeric_param(argv[0]); + dev->i2c_addr = parse_numeric_param(argv[1]); return 2; } @@ -252,16 +308,19 @@ static int parse_i2c_bus_addr(int *i2c_bus, ulong *i2c_addr, int argc, #ifdef CONFIG_CMD_EEPROM_LAYOUT +#ifdef CONFIG_EEPROM_LAYOUT_VERSIONS __weak int eeprom_parse_layout_version(char *str) { return LAYOUT_VERSION_UNRECOGNIZED; } +#endif static unsigned char eeprom_buf[CONFIG_SYS_EEPROM_SIZE]; #endif enum eeprom_action { + EEPROM_LIST, EEPROM_READ, EEPROM_WRITE, EEPROM_PRINT, @@ -271,6 +330,10 @@ enum eeprom_action { static enum eeprom_action parse_action(char *cmd) { +#if CONFIG_IS_ENABLED(I2C_EEPROM) + if (!strncmp(cmd, "list", 4)) + return EEPROM_LIST; +#endif if (!strncmp(cmd, "read", 4)) return EEPROM_READ; if (!strncmp(cmd, "write", 5)) @@ -285,68 +348,115 @@ static enum eeprom_action parse_action(char *cmd) return EEPROM_ACTION_INVALID; } -static int eeprom_execute_command(enum eeprom_action action, int i2c_bus, - ulong i2c_addr, int layout_ver, char *key, - char *value, ulong addr, ulong off, ulong cnt) +#if CONFIG_IS_ENABLED(I2C_EEPROM) +static int do_eeprom_list(void) +{ + struct udevice *dev; + struct uclass *uc; + int err; + + err = uclass_get(UCLASS_I2C_EEPROM, &uc); + if (err) + return CMD_RET_FAILURE; + + uclass_foreach_dev(dev, uc) + printf("%s (%s)\n", dev->name, dev->driver->name); + + return CMD_RET_SUCCESS; +} +#endif + +static int do_eeprom_rw(struct eeprom_dev_spec *dev, bool read, + ulong addr, ulong off, ulong cnt) { - int rcode = 0; const char *const fmt = "\nEEPROM @0x%lX %s: addr 0x%08lx off 0x%04lx count %ld ... "; + uchar *memloc = (uchar *)addr; + int ret; + + printf(fmt, dev->i2c_addr, read ? "read" : "write", addr, off, cnt); + if (read) + ret = eeprom_dev_spec_read(dev, off, memloc, cnt); + else + ret = eeprom_dev_spec_write(dev, off, memloc, cnt); + puts("done\n"); + + return ret; +} + #ifdef CONFIG_CMD_EEPROM_LAYOUT - struct eeprom_layout layout; -#endif - if (action == EEPROM_ACTION_INVALID) - return CMD_RET_USAGE; +static int do_eeprom_layout(struct eeprom_dev_spec *dev, int layout_ver, + struct eeprom_layout *layout) +{ + eeprom_layout_setup(layout, eeprom_buf, CONFIG_SYS_EEPROM_SIZE, + layout_ver); - eeprom_init(i2c_bus); - if (action == EEPROM_READ) { - printf(fmt, i2c_addr, "read", addr, off, cnt); + return eeprom_dev_spec_read(dev, 0, eeprom_buf, layout->data_size); +} - rcode = eeprom_read(i2c_addr, off, (uchar *)addr, cnt); +static int do_eeprom_print(struct eeprom_dev_spec *dev, int layout_ver) +{ + struct eeprom_layout layout; + int ret; - puts("done\n"); - return rcode; - } else if (action == EEPROM_WRITE) { - printf(fmt, i2c_addr, "write", addr, off, cnt); + ret = do_eeprom_layout(dev, layout_ver, &layout); + if (ret) + return ret; - rcode = eeprom_write(i2c_addr, off, (uchar *)addr, cnt); + layout.print(&layout); - puts("done\n"); - return rcode; - } + return 0; +} -#ifdef CONFIG_CMD_EEPROM_LAYOUT - rcode = eeprom_read(i2c_addr, 0, eeprom_buf, CONFIG_SYS_EEPROM_SIZE); - if (rcode < 0) - return rcode; +static int do_eeprom_update(struct eeprom_dev_spec *dev, int layout_ver, + char *key, char *value) +{ + struct eeprom_layout layout; + int ret; - eeprom_layout_setup(&layout, eeprom_buf, CONFIG_SYS_EEPROM_SIZE, - layout_ver); + ret = do_eeprom_layout(dev, layout_ver, &layout); + if (ret) + return ret; - if (action == EEPROM_PRINT) { - layout.print(&layout); - return 0; - } + ret = layout.update(&layout, key, value); + if (ret) + return CMD_RET_FAILURE; - layout.update(&layout, key, value); + return eeprom_dev_spec_write(dev, 0, layout.data, layout.data_size); +} - rcode = eeprom_write(i2c_addr, 0, layout.data, CONFIG_SYS_EEPROM_SIZE); #endif - return rcode; +static int eeprom_action_expected_argc(enum eeprom_action action) +{ + switch (action) { + case EEPROM_LIST: + return 0; + case EEPROM_READ: + case EEPROM_WRITE: + return 3; + case EEPROM_PRINT: + return 0; + case EEPROM_UPDATE: + return 2; + default: + return CMD_RET_USAGE; + } } #define NEXT_PARAM(argc, index) { (argc)--; (index)++; } int do_eeprom(struct cmd_tbl *cmdtp, int flag, int argc, char *const argv[]) { - int layout_ver = LAYOUT_VERSION_AUTODETECT; enum eeprom_action action = EEPROM_ACTION_INVALID; - int i2c_bus = -1, index = 0; - ulong i2c_addr = -1, addr = 0, cnt = 0, off = 0; - int ret; + struct eeprom_dev_spec dev; + ulong addr = 0, cnt = 0, off = 0; + int ret, index = 0; +#ifdef CONFIG_CMD_EEPROM_LAYOUT char *field_name = ""; char *field_value = ""; + int layout_ver = LAYOUT_VERSION_AUTODETECT; +#endif if (argc <= 1) return CMD_RET_USAGE; @@ -359,7 +469,12 @@ int do_eeprom(struct cmd_tbl *cmdtp, int flag, int argc, char *const argv[]) if (action == EEPROM_ACTION_INVALID) return CMD_RET_USAGE; -#ifdef CONFIG_CMD_EEPROM_LAYOUT +#if CONFIG_IS_ENABLED(I2C_EEPROM) + if (action == EEPROM_LIST) + return do_eeprom_list(); +#endif + +#ifdef CONFIG_EEPROM_LAYOUT_VERSIONS if (action == EEPROM_PRINT || action == EEPROM_UPDATE) { if (!strcmp(argv[index], "-l")) { NEXT_PARAM(argc, index); @@ -369,25 +484,9 @@ int do_eeprom(struct cmd_tbl *cmdtp, int flag, int argc, char *const argv[]) } #endif - switch (action) { - case EEPROM_READ: - case EEPROM_WRITE: - ret = parse_i2c_bus_addr(&i2c_bus, &i2c_addr, argc, - argv + index, 3); - break; - case EEPROM_PRINT: - ret = parse_i2c_bus_addr(&i2c_bus, &i2c_addr, argc, - argv + index, 0); - break; - case EEPROM_UPDATE: - ret = parse_i2c_bus_addr(&i2c_bus, &i2c_addr, argc, - argv + index, 2); - break; - default: - /* Get compiler to stop whining */ - return CMD_RET_USAGE; - } - + ret = parse_eeprom_dev_spec(&dev, + argc - eeprom_action_expected_argc(action), + argv + index); if (ret == CMD_RET_USAGE) return ret; @@ -411,24 +510,64 @@ int do_eeprom(struct cmd_tbl *cmdtp, int flag, int argc, char *const argv[]) } #endif - return eeprom_execute_command(action, i2c_bus, i2c_addr, layout_ver, - field_name, field_value, addr, off, cnt); + eeprom_dev_spec_init(&dev); + + switch (action) { + case EEPROM_READ: + case EEPROM_WRITE: + return do_eeprom_rw(&dev, action == EEPROM_READ, + addr, off, cnt); +#ifdef CONFIG_CMD_EEPROM_LAYOUT + case EEPROM_PRINT: + return do_eeprom_print(&dev, layout_ver); + case EEPROM_UPDATE: + return do_eeprom_update(&dev, layout_ver, + field_name, field_value); +#endif + default: + return CMD_RET_USAGE; + } } +#ifdef CONFIG_EEPROM_LAYOUT_VERSIONS +#define EEPROM_LAYOUT_SPEC "[-l <layout_version>] " +#else +#define EEPROM_LAYOUT_SPEC "" +#endif + +#if CONFIG_IS_ENABLED(I2C_EEPROM) +# define EEPROM_DEV_SPEC "[device_specifier]" +#else +# define EEPROM_DEV_SPEC "[[bus] devaddr]" +#endif + U_BOOT_CMD( eeprom, 8, 1, do_eeprom, "EEPROM sub-system", - "read <bus> <devaddr> addr off cnt\n" - "eeprom write <bus> <devaddr> addr off cnt\n" +#if CONFIG_IS_ENABLED(I2C_EEPROM) + "list\n" + "eeprom " +#endif + "read " EEPROM_DEV_SPEC " addr off cnt\n" + "eeprom write " EEPROM_DEV_SPEC " addr off cnt\n" " - read/write `cnt' bytes from `devaddr` EEPROM at offset `off'" #ifdef CONFIG_CMD_EEPROM_LAYOUT "\n" - "eeprom print [-l <layout_version>] <bus> <devaddr>\n" + "eeprom print " EEPROM_LAYOUT_SPEC EEPROM_DEV_SPEC "\n" " - Print layout fields and their data in human readable format\n" - "eeprom update [-l <layout_version>] <bus> <devaddr> field_name field_value\n" + "eeprom update " EEPROM_LAYOUT_SPEC EEPROM_DEV_SPEC " field_name field_value\n" " - Update a specific eeprom field with new data.\n" - " The new data must be written in the same human readable format as shown by the print command.\n" - "\n" + " The new data must be written in the same human readable format as shown by the print command." +#endif +#if CONFIG_IS_ENABLED(I2C_EEPROM) + "\n\n" + "DEVICE SPECIFIER - the eeprom device can be specified\n" + " [dev_name] - by device name (devices can listed with the eeprom list command)\n" + " [[bus] devaddr] - or by I2C bus and I2C device address\n" + "If no device specifier is given, the first driver-model found device is used." +#endif +#ifdef CONFIG_EEPROM_LAYOUT_VERSIONS + "\n\n" "LAYOUT VERSIONS\n" "The -l option can be used to force the command to interpret the EEPROM data using the chosen layout.\n" "If the -l option is omitted, the command will auto detect the layout based on the data in the EEPROM.\n" diff --git a/cmd/efi.c b/cmd/efi.c index 6cd5361aca5..6bed2d743ba 100644 --- a/cmd/efi.c +++ b/cmd/efi.c @@ -4,7 +4,6 @@ * Written by Simon Glass <sjg@chromium.org> */ -#include <common.h> #include <command.h> #include <efi.h> #include <efi_api.h> diff --git a/cmd/efi_common.c b/cmd/efi_common.c index 1aa2351fcdf..c46764e6eea 100644 --- a/cmd/efi_common.c +++ b/cmd/efi_common.c @@ -6,7 +6,6 @@ * Written by Simon Glass <sjg@chromium.org> */ -#include <common.h> #include <efi.h> #include <efi_api.h> #include <uuid.h> diff --git a/cmd/eficonfig.c b/cmd/eficonfig.c index 0ba92c60e03..bea09e4ecc7 100644 --- a/cmd/eficonfig.c +++ b/cmd/eficonfig.c @@ -7,7 +7,6 @@ #include <ansi.h> #include <cli.h> -#include <common.h> #include <charset.h> #include <efi_loader.h> #include <efi_load_initrd.h> @@ -62,6 +61,7 @@ struct eficonfig_filepath_info { struct eficonfig_boot_option { struct eficonfig_select_file_info file_info; struct eficonfig_select_file_info initrd_info; + struct eficonfig_select_file_info fdt_info; unsigned int boot_index; u16 *description; u16 *optional_data; @@ -531,7 +531,7 @@ struct efi_device_path *eficonfig_create_device_path(struct efi_device_path *dp_ dp = efi_dp_shorten(dp_volume); if (!dp) dp = dp_volume; - dp = efi_dp_concat(dp, &fp->dp, false); + dp = efi_dp_concat(dp, &fp->dp, 0); free(buf); return dp; @@ -1308,6 +1308,10 @@ static efi_status_t eficonfig_show_boot_option(struct eficonfig_boot_option *bo, if (ret != EFI_SUCCESS) goto out; + ret = prepare_file_selection_entry(efi_menu, "Fdt File: ", &bo->fdt_info); + if (ret != EFI_SUCCESS) + goto out; + ret = create_boot_option_entry(efi_menu, "Optional Data: ", bo->optional_data, eficonfig_boot_add_optional_data, bo); if (ret != EFI_SUCCESS) @@ -1388,27 +1392,44 @@ static efi_status_t eficonfig_edit_boot_option(u16 *varname, struct eficonfig_bo efi_status_t ret; char *tmp = NULL, *p; struct efi_load_option lo = {0}; - efi_uintn_t final_dp_size; + efi_uintn_t dp_size; struct efi_device_path *dp = NULL; efi_uintn_t size = load_option_size; - struct efi_device_path *final_dp = NULL; struct efi_device_path *device_dp = NULL; struct efi_device_path *initrd_dp = NULL; + struct efi_device_path *fdt_dp = NULL; struct efi_device_path *initrd_device_dp = NULL; + struct efi_device_path *fdt_device_dp = NULL; - const struct efi_initrd_dp id_dp = { + const struct efi_lo_dp_prefix initrd_prefix = { .vendor = { { DEVICE_PATH_TYPE_MEDIA_DEVICE, DEVICE_PATH_SUB_TYPE_VENDOR_PATH, - sizeof(id_dp.vendor), + sizeof(initrd_prefix.vendor), }, EFI_INITRD_MEDIA_GUID, }, .end = { DEVICE_PATH_TYPE_END, DEVICE_PATH_SUB_TYPE_END, - sizeof(id_dp.end), + sizeof(initrd_prefix.end), + } + }; + + const struct efi_lo_dp_prefix fdt_prefix = { + .vendor = { + { + DEVICE_PATH_TYPE_MEDIA_DEVICE, + DEVICE_PATH_SUB_TYPE_VENDOR_PATH, + sizeof(fdt_prefix.vendor), + }, + EFI_FDT_GUID, + }, + .end = { + DEVICE_PATH_TYPE_END, + DEVICE_PATH_SUB_TYPE_END, + sizeof(initrd_prefix.end), } }; @@ -1424,6 +1445,12 @@ static efi_status_t eficonfig_edit_boot_option(u16 *varname, struct eficonfig_bo goto out; } + bo->fdt_info.current_path = calloc(1, EFICONFIG_FILE_PATH_BUF_SIZE); + if (!bo->fdt_info.current_path) { + ret = EFI_OUT_OF_RESOURCES; + goto out; + } + bo->description = calloc(1, EFICONFIG_DESCRIPTION_MAX * sizeof(u16)); if (!bo->description) { ret = EFI_OUT_OF_RESOURCES; @@ -1456,13 +1483,20 @@ static efi_status_t eficonfig_edit_boot_option(u16 *varname, struct eficonfig_bo if (lo.file_path) fill_file_info(lo.file_path, &bo->file_info, device_dp); - /* Initrd file path(optional) is placed at second instance. */ + /* Initrd file path (optional) is placed at second instance. */ initrd_dp = efi_dp_from_lo(&lo, &efi_lf2_initrd_guid); if (initrd_dp) { fill_file_info(initrd_dp, &bo->initrd_info, initrd_device_dp); efi_free_pool(initrd_dp); } + /* Fdt file path (optional) is placed as third instance. */ + fdt_dp = efi_dp_from_lo(&lo, &efi_guid_fdt); + if (fdt_dp) { + fill_file_info(fdt_dp, &bo->fdt_info, fdt_device_dp); + efi_free_pool(fdt_dp); + } + if (size > 0) memcpy(bo->optional_data, lo.optional_data, size); } @@ -1484,8 +1518,20 @@ static efi_status_t eficonfig_edit_boot_option(u16 *varname, struct eficonfig_bo ret = EFI_OUT_OF_RESOURCES; goto out; } - initrd_dp = efi_dp_concat((const struct efi_device_path *)&id_dp, - dp, false); + initrd_dp = efi_dp_concat((const struct efi_device_path *)&initrd_prefix, + dp, 0); + efi_free_pool(dp); + } + + if (bo->fdt_info.dp_volume) { + dp = eficonfig_create_device_path(bo->fdt_info.dp_volume, + bo->fdt_info.current_path); + if (!dp) { + ret = EFI_OUT_OF_RESOURCES; + goto out; + } + fdt_dp = efi_dp_concat((const struct efi_device_path *)&fdt_prefix, + dp, 0); efi_free_pool(dp); } @@ -1494,16 +1540,9 @@ static efi_status_t eficonfig_edit_boot_option(u16 *varname, struct eficonfig_bo ret = EFI_OUT_OF_RESOURCES; goto out; } - final_dp_size = efi_dp_size(dp) + sizeof(END); - if (initrd_dp) { - final_dp = efi_dp_concat(dp, initrd_dp, true); - final_dp_size += efi_dp_size(initrd_dp) + sizeof(END); - } else { - final_dp = efi_dp_dup(dp); - } - efi_free_pool(dp); - if (!final_dp) + ret = efi_load_option_dp_join(&dp, &dp_size, initrd_dp, fdt_dp); + if (ret != EFI_SUCCESS) goto out; if (utf16_utf8_strlen(bo->optional_data)) { @@ -1515,17 +1554,20 @@ static efi_status_t eficonfig_edit_boot_option(u16 *varname, struct eficonfig_bo utf16_utf8_strncpy(&p, bo->optional_data, u16_strlen(bo->optional_data)); } - ret = eficonfig_set_boot_option(varname, final_dp, final_dp_size, bo->description, tmp); + ret = eficonfig_set_boot_option(varname, dp, dp_size, bo->description, tmp); out: free(tmp); free(bo->optional_data); free(bo->description); free(bo->file_info.current_path); free(bo->initrd_info.current_path); + free(bo->fdt_info.current_path); efi_free_pool(device_dp); efi_free_pool(initrd_device_dp); efi_free_pool(initrd_dp); - efi_free_pool(final_dp); + efi_free_pool(fdt_device_dp); + efi_free_pool(fdt_dp); + efi_free_pool(dp); return ret; } diff --git a/cmd/eficonfig_sbkey.c b/cmd/eficonfig_sbkey.c index caca27495e0..b3325a540f9 100644 --- a/cmd/eficonfig_sbkey.c +++ b/cmd/eficonfig_sbkey.c @@ -6,7 +6,6 @@ */ #include <ansi.h> -#include <common.h> #include <charset.h> #include <hexdump.h> #include <log.h> diff --git a/cmd/efidebug.c b/cmd/efidebug.c index c2c525f2351..1a191eb9994 100644 --- a/cmd/efidebug.c +++ b/cmd/efidebug.c @@ -6,7 +6,6 @@ */ #include <charset.h> -#include <common.h> #include <command.h> #include <dm/device.h> #include <efi_dt_fixup.h> @@ -654,38 +653,80 @@ static int do_efi_show_tables(struct cmd_tbl *cmdtp, int flag, } /** - * create_initrd_dp() - create a special device for our Boot### option + * enum efi_lo_dp_part - part of device path in load option + */ +enum efi_lo_dp_part { + /** @EFI_LO_DP_PART_BINARY: binary */ + EFI_LO_DP_PART_BINARY, + /** @EFI_LO_DP_PART_INITRD: initial RAM disk */ + EFI_LO_DP_PART_INITRD, + /** @EFI_LP_DP_PART_FDT: device-tree */ + EFI_LP_DP_PART_FDT, +}; + +/** + * create_lo_dp() - create a special device path for our Boot### option * * @dev: device * @part: disk partition * @file: filename * @shortform: create short form device path + * @type: part of device path to be created * Return: pointer to the device path or ERR_PTR */ static -struct efi_device_path *create_initrd_dp(const char *dev, const char *part, - const char *file, int shortform) +struct efi_device_path *create_lo_dp_part(const char *dev, const char *part, + const char *file, bool shortform, + enum efi_lo_dp_part type) { struct efi_device_path *tmp_dp = NULL, *tmp_fp = NULL, *short_fp = NULL; - struct efi_device_path *initrd_dp = NULL; + struct efi_device_path *dp = NULL; + const struct efi_device_path *dp_prefix; efi_status_t ret; - const struct efi_initrd_dp id_dp = { + const struct efi_lo_dp_prefix fdt_dp = { .vendor = { { DEVICE_PATH_TYPE_MEDIA_DEVICE, DEVICE_PATH_SUB_TYPE_VENDOR_PATH, - sizeof(id_dp.vendor), + sizeof(fdt_dp.vendor), + }, + EFI_FDT_GUID, + }, + .end = { + DEVICE_PATH_TYPE_END, + DEVICE_PATH_SUB_TYPE_END, + sizeof(fdt_dp.end), + } + }; + const struct efi_lo_dp_prefix initrd_dp = { + .vendor = { + { + DEVICE_PATH_TYPE_MEDIA_DEVICE, + DEVICE_PATH_SUB_TYPE_VENDOR_PATH, + sizeof(initrd_dp.vendor), }, EFI_INITRD_MEDIA_GUID, }, .end = { DEVICE_PATH_TYPE_END, DEVICE_PATH_SUB_TYPE_END, - sizeof(id_dp.end), + sizeof(initrd_dp.end), } }; + switch (type) { + case EFI_LO_DP_PART_INITRD: + dp_prefix = &initrd_dp.vendor.dp; + break; + case EFI_LP_DP_PART_FDT: + dp_prefix = &fdt_dp.vendor.dp; + break; + default: + dp_prefix = NULL; + break; + } + ret = efi_dp_from_name(dev, part, file, &tmp_dp, &tmp_fp); if (ret != EFI_SUCCESS) { printf("Cannot create device path for \"%s %s\"\n", part, file); @@ -696,13 +737,12 @@ struct efi_device_path *create_initrd_dp(const char *dev, const char *part, if (!short_fp) short_fp = tmp_fp; - initrd_dp = efi_dp_concat((const struct efi_device_path *)&id_dp, - short_fp, false); + dp = efi_dp_concat(dp_prefix, short_fp, 0); out: efi_free_pool(tmp_dp); efi_free_pool(tmp_fp); - return initrd_dp; + return dp; } /** @@ -793,9 +833,8 @@ static int do_efi_boot_add(struct cmd_tbl *cmdtp, int flag, efi_guid_t guid; u16 *label; struct efi_device_path *file_path = NULL; - struct efi_device_path *fp_free = NULL; - struct efi_device_path *final_fp = NULL; struct efi_device_path *initrd_dp = NULL; + struct efi_device_path *fdt_dp = NULL; struct efi_load_option lo; void *data = NULL; efi_uintn_t size; @@ -843,22 +882,31 @@ static int do_efi_boot_add(struct cmd_tbl *cmdtp, int flag, lo.label = label; /* label will be changed below */ /* file path */ - ret = efi_dp_from_name(argv[3], argv[4], argv[5], - NULL, &fp_free); - if (ret != EFI_SUCCESS) { - printf("Cannot create device path for \"%s %s\"\n", - argv[3], argv[4]); + file_path = create_lo_dp_part(argv[3], argv[4], argv[5], + shortform, + EFI_LO_DP_PART_BINARY); + argc -= 5; + argv += 5; + break; + case 'd': + shortform = 1; + fallthrough; + case 'D': + if (argc < 3 || fdt_dp) { + r = CMD_RET_USAGE; + goto out; + } + + fdt_dp = create_lo_dp_part(argv[1], argv[2], argv[3], + shortform, + EFI_LP_DP_PART_FDT); + if (!fdt_dp) { + printf("Cannot add a device-tree\n"); r = CMD_RET_FAILURE; goto out; } - if (shortform) - file_path = efi_dp_shorten(fp_free); - if (!file_path) - file_path = fp_free; - fp_size += efi_dp_size(file_path) + - sizeof(struct efi_device_path); - argc -= 5; - argv += 5; + argc -= 3; + argv += 3; break; case 'i': shortform = 1; @@ -869,8 +917,9 @@ static int do_efi_boot_add(struct cmd_tbl *cmdtp, int flag, goto out; } - initrd_dp = create_initrd_dp(argv[1], argv[2], argv[3], - shortform); + initrd_dp = create_lo_dp_part(argv[1], argv[2], argv[3], + shortform, + EFI_LO_DP_PART_INITRD); if (!initrd_dp) { printf("Cannot add an initrd\n"); r = CMD_RET_FAILURE; @@ -878,8 +927,6 @@ static int do_efi_boot_add(struct cmd_tbl *cmdtp, int flag, } argc -= 3; argv += 3; - fp_size += efi_dp_size(initrd_dp) + - sizeof(struct efi_device_path); break; case 's': if (argc < 1 || lo.optional_data) { @@ -897,7 +944,6 @@ static int do_efi_boot_add(struct cmd_tbl *cmdtp, int flag, &file_path, &fp_size); if (r != CMD_RET_SUCCESS) goto out; - fp_free = file_path; argc -= 3; argv += 3; } else{ @@ -917,14 +963,14 @@ static int do_efi_boot_add(struct cmd_tbl *cmdtp, int flag, goto out; } - final_fp = efi_dp_concat(file_path, initrd_dp, true); - if (!final_fp) { + ret = efi_load_option_dp_join(&file_path, &fp_size, initrd_dp, fdt_dp); + if (ret != EFI_SUCCESS) { printf("Cannot create final device path\n"); r = CMD_RET_FAILURE; goto out; } - lo.file_path = final_fp; + lo.file_path = file_path; lo.file_path_length = fp_size; size = efi_serialize_load_option(&lo, (u8 **)&data); @@ -945,9 +991,9 @@ static int do_efi_boot_add(struct cmd_tbl *cmdtp, int flag, out: free(data); - efi_free_pool(final_fp); efi_free_pool(initrd_dp); - efi_free_pool(fp_free); + efi_free_pool(fdt_dp); + efi_free_pool(file_path); free(lo.label); return r; @@ -1009,7 +1055,8 @@ static int do_efi_boot_rm(struct cmd_tbl *cmdtp, int flag, */ static void show_efi_boot_opt_data(u16 *varname16, void *data, size_t *size) { - struct efi_device_path *initrd_path = NULL; + struct efi_device_path *fdt_path; + struct efi_device_path *initrd_path; struct efi_load_option lo; efi_status_t ret; @@ -1038,6 +1085,12 @@ static void show_efi_boot_opt_data(u16 *varname16, void *data, size_t *size) efi_free_pool(initrd_path); } + fdt_path = efi_dp_from_lo(&lo, &efi_guid_fdt); + if (fdt_path) { + printf(" device-tree path: %pD\n", fdt_path); + efi_free_pool(fdt_path); + } + printf(" data:\n"); print_hex_dump(" ", DUMP_PREFIX_OFFSET, 16, 1, lo.optional_data, *size, true); @@ -1565,8 +1618,9 @@ U_BOOT_LONGHELP(efidebug, "\n" "efidebug boot add - set UEFI BootXXXX variable\n" " -b|-B <bootid> <label> <interface> <devnum>[:<part>] <file path>\n" + " -d|-D <interface> <devnum>[:<part>] <device-tree file path>\n" " -i|-I <interface> <devnum>[:<part>] <initrd file path>\n" - " (-b, -i for short form device path)\n" + " (-b, -d, -i for short form device path)\n" #if (IS_ENABLED(CONFIG_EFI_HTTP_BOOT)) " -u <bootid> <label> <uri>\n" #endif diff --git a/cmd/elf.c b/cmd/elf.c index df4354d3742..32b7462f92a 100644 --- a/cmd/elf.c +++ b/cmd/elf.c @@ -4,7 +4,6 @@ * All rights reserved. */ -#include <common.h> #include <command.h> #include <cpu_func.h> #include <elf.h> @@ -20,21 +19,6 @@ #include <linux/linkage.h> #endif -/* Allow ports to override the default behavior */ -static unsigned long do_bootelf_exec(ulong (*entry)(int, char * const[]), - int argc, char *const argv[]) -{ - unsigned long ret; - - /* - * pass address parameter as argv[0] (aka command name), - * and all remaining args - */ - ret = entry(argc, argv); - - return ret; -} - /* Interpreter command to boot an arbitrary ELF image from memory */ int do_bootelf(struct cmd_tbl *cmdtp, int flag, int argc, char *const argv[]) { @@ -44,8 +28,8 @@ int do_bootelf(struct cmd_tbl *cmdtp, int flag, int argc, char *const argv[]) #endif unsigned long addr; /* Address of the ELF image */ unsigned long rc; /* Return value from user code */ - char *sload = NULL; - int rcode = 0; + int rcode = CMD_RET_SUCCESS; + Bootelf_flags flags = {0}; /* Consume 'bootelf' */ argc--; argv++; @@ -53,7 +37,10 @@ int do_bootelf(struct cmd_tbl *cmdtp, int flag, int argc, char *const argv[]) /* Check for [-p|-s] flag. */ if (argc >= 1 && (argv[0][0] == '-' && \ (argv[0][1] == 'p' || argv[0][1] == 's'))) { - sload = argv[0]; + if (argv[0][1] == 'p') + flags.phdr = 1; + log_debug("Using ELF header format %s\n", + flags.phdr ? "phdr" : "shdr"); /* Consume flag. */ argc--; argv++; } @@ -76,17 +63,9 @@ int do_bootelf(struct cmd_tbl *cmdtp, int flag, int argc, char *const argv[]) } else addr = image_load_addr; - if (!valid_elf_image(addr)) - return 1; - - if (sload && sload[1] == 'p') - addr = load_elf_image_phdr(addr); - else - addr = load_elf_image_shdr(addr); - #if CONFIG_IS_ENABLED(CMD_ELF_FDT_SETUP) if (fdt_addr) { - printf("## Setting up FDT at 0x%08lx ...\n", fdt_addr); + log_debug("Setting up FDT at 0x%08lx ...\n", fdt_addr); flush(); if (image_setup_libfdt(&img, (void *)fdt_addr, NULL)) @@ -94,21 +73,27 @@ int do_bootelf(struct cmd_tbl *cmdtp, int flag, int argc, char *const argv[]) } #endif - if (!env_get_autostart()) - return rcode; - - printf("## Starting application at 0x%08lx ...\n", addr); - flush(); + if (env_get_autostart()) { + flags.autostart = 1; + log_debug("Starting application at 0x%08lx ...\n", addr); + flush(); + } /* * pass address parameter as argv[0] (aka command name), - * and all remaining args + * and all remaining arguments */ - rc = do_bootelf_exec((void *)addr, argc, argv); + rc = bootelf(addr, flags, argc, argv); if (rc != 0) - rcode = 1; + rcode = CMD_RET_FAILURE; - printf("## Application terminated, rc = 0x%lx\n", rc); + if (flags.autostart) + { + if (ENOEXEC == errno) + log_err("Invalid ELF image\n"); + else + log_debug("## Application terminated, rc = 0x%lx\n", rc); + } return rcode; } diff --git a/cmd/ethsw.c b/cmd/ethsw.c index f8b8a798bf6..4bf49ac598f 100644 --- a/cmd/ethsw.c +++ b/cmd/ethsw.c @@ -5,13 +5,13 @@ * Ethernet Switch commands */ -#include <common.h> #include <command.h> #include <env.h> #include <errno.h> #include <env_flags.h> #include <ethsw.h> #include <net.h> +#include <vsprintf.h> static const char *ethsw_name; diff --git a/cmd/event.c b/cmd/event.c index f6cdb55fc91..00c828757ca 100644 --- a/cmd/event.c +++ b/cmd/event.c @@ -6,7 +6,6 @@ * Written by Simon Glass <sjg@chromium.org> */ -#include <common.h> #include <command.h> #include <event.h> diff --git a/cmd/exit.c b/cmd/exit.c index 7bf241ec732..d125ec1e31f 100644 --- a/cmd/exit.c +++ b/cmd/exit.c @@ -4,8 +4,8 @@ * Wolfgang Denk, DENX Software Engineering, wd@denx.de. */ -#include <common.h> #include <command.h> +#include <vsprintf.h> static int do_exit(struct cmd_tbl *cmdtp, int flag, int argc, char *const argv[]) diff --git a/cmd/ext2.c b/cmd/ext2.c index a0ce0cf5796..45c8b353b58 100644 --- a/cmd/ext2.c +++ b/cmd/ext2.c @@ -19,7 +19,6 @@ /* * Ext2fs support */ -#include <common.h> #include <command.h> #include <fs.h> diff --git a/cmd/ext4.c b/cmd/ext4.c index 4791b69fd96..40d1fe30d5e 100644 --- a/cmd/ext4.c +++ b/cmd/ext4.c @@ -25,7 +25,6 @@ * file in uboot. Added ext4fs ls load and write support. */ -#include <common.h> #include <part.h> #include <config.h> #include <command.h> diff --git a/cmd/extension_board.c b/cmd/extension_board.c index 2b672d888c6..f43bf680858 100644 --- a/cmd/extension_board.c +++ b/cmd/extension_board.c @@ -4,7 +4,6 @@ * Köry Maincent, Bootlin, <kory.maincent@bootlin.com> */ -#include <common.h> #include <bootdev.h> #include <command.h> #include <dm.h> diff --git a/cmd/fastboot.c b/cmd/fastboot.c index c3c19231c98..d4cfc0c7a28 100644 --- a/cmd/fastboot.c +++ b/cmd/fastboot.c @@ -6,7 +6,6 @@ * (C) Copyright 2014 Linaro, Ltd. * Rob Herring <robh@kernel.org> */ -#include <common.h> #include <command.h> #include <console.h> #include <g_dnl.h> diff --git a/cmd/fat.c b/cmd/fat.c index 69ce1fa5300..ad0e5ed7d60 100644 --- a/cmd/fat.c +++ b/cmd/fat.c @@ -7,7 +7,6 @@ /* * Boot support */ -#include <common.h> #include <command.h> #include <mapmem.h> #include <fat.h> diff --git a/cmd/fdt.c b/cmd/fdt.c index 331564c13be..d16b141ce32 100644 --- a/cmd/fdt.c +++ b/cmd/fdt.c @@ -7,7 +7,6 @@ * Matthew McClintock <msm@freescale.com> */ -#include <common.h> #include <command.h> #include <env.h> #include <image.h> diff --git a/cmd/flash.c b/cmd/flash.c index f4f85ecc7a8..de0e04f09cf 100644 --- a/cmd/flash.c +++ b/cmd/flash.c @@ -7,9 +7,9 @@ /* * FLASH support */ -#include <common.h> #include <command.h> #include <log.h> +#include <vsprintf.h> #include <uuid.h> #if defined(CONFIG_CMD_MTDPARTS) diff --git a/cmd/font.c b/cmd/font.c index cb39c88063f..ebde094b0a5 100644 --- a/cmd/font.c +++ b/cmd/font.c @@ -6,7 +6,6 @@ * Written by Simon Glass <sjg@chromium.org> */ -#include <common.h> #include <command.h> #include <dm.h> #include <video.h> diff --git a/cmd/fpga.c b/cmd/fpga.c index 8c64e957db0..93f14098ccb 100644 --- a/cmd/fpga.c +++ b/cmd/fpga.c @@ -7,7 +7,6 @@ /* * FPGA support */ -#include <common.h> #include <command.h> #include <env.h> #include <fpga.h> diff --git a/cmd/fpgad.c b/cmd/fpgad.c index dfc6220b5e0..b4bfaa12165 100644 --- a/cmd/fpgad.c +++ b/cmd/fpgad.c @@ -8,10 +8,10 @@ * Wolfgang Denk, DENX Software Engineering, wd@denx.de. */ -#include <common.h> #include <command.h> #include <console.h> #include <display_options.h> +#include <vsprintf.h> #include <gdsys_fpga.h> @@ -5,7 +5,6 @@ * Inspired by cmd_ext_common.c, cmd_fat.c. */ -#include <common.h> #include <command.h> #include <fs.h> diff --git a/cmd/fs_uuid.c b/cmd/fs_uuid.c index 5dc94aa6408..5f7770d09ac 100644 --- a/cmd/fs_uuid.c +++ b/cmd/fs_uuid.c @@ -5,7 +5,6 @@ * Copyright (C) 2014, Bachmann electronic GmbH */ -#include <common.h> #include <command.h> #include <fs.h> diff --git a/cmd/fuse.c b/cmd/fuse.c index f884c894fb0..598ef496a43 100644 --- a/cmd/fuse.c +++ b/cmd/fuse.c @@ -8,11 +8,11 @@ * Martha Marx <mmarx@silicontkx.com> */ -#include <common.h> #include <command.h> #include <console.h> #include <fuse.h> #include <mapmem.h> +#include <vsprintf.h> #include <linux/errno.h> static int strtou32(const char *str, unsigned int base, u32 *result) diff --git a/cmd/fwu_mdata.c b/cmd/fwu_mdata.c index 5ecda455df6..9c048d69a13 100644 --- a/cmd/fwu_mdata.c +++ b/cmd/fwu_mdata.c @@ -13,27 +13,34 @@ #include <linux/types.h> -static void print_mdata(struct fwu_mdata *mdata) +static void print_mdata(struct fwu_data *data) { int i, j; struct fwu_image_entry *img_entry; struct fwu_image_bank_info *img_info; printf("\tFWU Metadata\n"); - printf("crc32: %#x\n", mdata->crc32); - printf("version: %#x\n", mdata->version); - printf("active_index: %#x\n", mdata->active_index); - printf("previous_active_index: %#x\n", mdata->previous_active_index); + printf("crc32: %#x\n", data->crc32); + printf("version: %#x\n", data->version); + printf("size: %#x\n", data->metadata_size); + printf("active_index: %#x\n", data->active_index); + printf("previous_active_index: %#x\n", data->previous_active_index); + + if (data->version == 2) { + for (i = 0; i < 4; i++) + printf("bank_state[%d]: %#x\n", + i, data->bank_state[i]); + } printf("\tImage Info\n"); for (i = 0; i < CONFIG_FWU_NUM_IMAGES_PER_BANK; i++) { - img_entry = &mdata->img_entry[i]; + img_entry = &data->fwu_images[i]; printf("\nImage Type Guid: %pUL\n", - &img_entry->image_type_uuid); - printf("Location Guid: %pUL\n", &img_entry->location_uuid); + &img_entry->image_type_guid); + printf("Location Guid: %pUL\n", &img_entry->location_guid); for (j = 0; j < CONFIG_FWU_NUM_BANKS; j++) { img_info = &img_entry->img_bank_info[j]; - printf("Image Guid: %pUL\n", &img_info->image_uuid); + printf("Image Guid: %pUL\n", &img_info->image_guid); printf("Image Acceptance: %s\n", img_info->accepted == 0x1 ? "yes" : "no"); } @@ -43,20 +50,11 @@ static void print_mdata(struct fwu_mdata *mdata) int do_fwu_mdata_read(struct cmd_tbl *cmdtp, int flag, int argc, char * const argv[]) { - int ret = CMD_RET_SUCCESS, res; - struct fwu_mdata mdata; - - res = fwu_get_mdata(&mdata); - if (res < 0) { - log_err("Unable to get valid FWU metadata\n"); - ret = CMD_RET_FAILURE; - goto out; - } + struct fwu_data *data = fwu_get_data(); - print_mdata(&mdata); + print_mdata(data); -out: - return ret; + return CMD_RET_SUCCESS; } U_BOOT_CMD( diff --git a/cmd/gettime.c b/cmd/gettime.c index 2e74e02b499..fc307efce8c 100644 --- a/cmd/gettime.c +++ b/cmd/gettime.c @@ -11,8 +11,8 @@ /* * Get Timer overflows after 2^32 / CONFIG_SYS_HZ (32Khz) = 131072 sec */ -#include <common.h> #include <command.h> +#include <time.h> static int do_gettime(struct cmd_tbl *cmdtp, int flag, int argc, char *const argv[]) diff --git a/cmd/gpio.c b/cmd/gpio.c index dab6f7097ae..7a43dc6ab18 100644 --- a/cmd/gpio.c +++ b/cmd/gpio.c @@ -6,7 +6,6 @@ * Licensed under the GPL-2 or later. */ -#include <common.h> #include <command.h> #include <errno.h> #include <dm.h> diff --git a/cmd/gpt.c b/cmd/gpt.c index 7aaf1889a5a..aeabd19dd76 100644 --- a/cmd/gpt.c +++ b/cmd/gpt.c @@ -10,7 +10,6 @@ * author: Piotr Wilczek <p.wilczek@samsung.com> */ -#include <common.h> #include <blk.h> #include <env.h> #include <log.h> @@ -683,7 +682,8 @@ static int gpt_verify(struct blk_desc *blk_dev_desc, const char *str_part) free(str_disk_guid); free(partitions); out: - free(gpt_pte); + if (!ret) + free(gpt_pte); return ret; } diff --git a/cmd/hash.c b/cmd/hash.c index 5534a735fa7..60d482b7f87 100644 --- a/cmd/hash.c +++ b/cmd/hash.c @@ -9,7 +9,6 @@ * Wolfgang Denk, DENX Software Engineering, wd@denx.de. */ -#include <common.h> #include <command.h> #include <hash.h> #include <linux/ctype.h> diff --git a/cmd/help.c b/cmd/help.c index 9f8393eefd8..56579e28d31 100644 --- a/cmd/help.c +++ b/cmd/help.c @@ -4,7 +4,6 @@ * Wolfgang Denk, DENX Software Engineering, wd@denx.de. */ -#include <common.h> #include <command.h> static int do_help(struct cmd_tbl *cmdtp, int flag, int argc, diff --git a/cmd/history.c b/cmd/history.c index b6bf4670b1c..8972986ca9d 100644 --- a/cmd/history.c +++ b/cmd/history.c @@ -4,7 +4,6 @@ * Written by Simon Glass <sjg@chromium.org> */ -#include <common.h> #include <command.h> #include <cli.h> diff --git a/cmd/host.c b/cmd/host.c index c33c2a9787e..e03576b4d2d 100644 --- a/cmd/host.c +++ b/cmd/host.c @@ -3,7 +3,6 @@ * Copyright (c) 2012, Google Inc. */ -#include <common.h> #include <command.h> #include <dm.h> #include <fs.h> diff --git a/cmd/i2c.c b/cmd/i2c.c index 80831561c67..7dac0a9fb6c 100644 --- a/cmd/i2c.c +++ b/cmd/i2c.c @@ -64,7 +64,6 @@ * Adapted from cmd_mem.c which is copyright Wolfgang Denk (wd@denx.de). */ -#include <common.h> #include <bootretry.h> #include <cli.h> #include <command.h> diff --git a/cmd/ide.c b/cmd/ide.c index ddc87d3a0bb..036489fda97 100644 --- a/cmd/ide.c +++ b/cmd/ide.c @@ -8,7 +8,6 @@ * IDE support */ -#include <common.h> #include <blk.h> #include <dm.h> #include <config.h> diff --git a/cmd/ini.c b/cmd/ini.c index 35de2373e60..96399017691 100644 --- a/cmd/ini.c +++ b/cmd/ini.c @@ -11,9 +11,9 @@ * http://code.google.com/p/inih/ */ -#include <common.h> #include <command.h> #include <env.h> +#include <vsprintf.h> #include <linux/ctype.h> #include <linux/string.h> @@ -7,9 +7,9 @@ * IO space access commands. */ -#include <common.h> #include <command.h> #include <display_options.h> +#include <vsprintf.h> #include <asm/io.h> /* Display values from last command */ diff --git a/cmd/iotrace.c b/cmd/iotrace.c index f28359e2875..0a041ed8652 100644 --- a/cmd/iotrace.c +++ b/cmd/iotrace.c @@ -3,9 +3,9 @@ * Copyright (c) 2014 Google, Inc */ -#include <common.h> #include <command.h> #include <iotrace.h> +#include <vsprintf.h> static void do_print_stats(void) { diff --git a/cmd/irq.c b/cmd/irq.c index 1d3e28cb3ce..655aba576a8 100644 --- a/cmd/irq.c +++ b/cmd/irq.c @@ -3,7 +3,6 @@ * Copyright 2008 Freescale Semiconductor, Inc. */ -#include <common.h> #include <config.h> #include <command.h> #include <irq_func.h> diff --git a/cmd/itest.c b/cmd/itest.c index 74414cbdc4c..b79512a505d 100644 --- a/cmd/itest.c +++ b/cmd/itest.c @@ -11,11 +11,11 @@ * A few parts were lifted from bash 'test' command */ -#include <common.h> #include <config.h> #include <command.h> #include <env.h> #include <mapmem.h> +#include <vsprintf.h> #include <asm/io.h> diff --git a/cmd/jffs2.c b/cmd/jffs2.c index e00fcc20226..89d336f5958 100644 --- a/cmd/jffs2.c +++ b/cmd/jffs2.c @@ -70,7 +70,6 @@ /* * JFFS2/CRAMFS support */ -#include <common.h> #include <command.h> #include <env.h> #if defined(CONFIG_CMD_FLASH) diff --git a/cmd/kaslrseed.c b/cmd/kaslrseed.c index 9acb8e16386..2ad983a11f9 100644 --- a/cmd/kaslrseed.c +++ b/cmd/kaslrseed.c @@ -6,7 +6,6 @@ * Copyright (c) 2021, Chris Morgan <macromorgan@hotmail.com> */ -#include <common.h> #include <command.h> #include <dm.h> #include <hexdump.h> @@ -16,60 +15,25 @@ static int do_kaslr_seed(struct cmd_tbl *cmdtp, int flag, int argc, char *const argv[]) { - size_t n = 0x8; - struct udevice *dev; - u64 *buf; - int nodeoffset; - int ret = CMD_RET_SUCCESS; + int err = CMD_RET_SUCCESS; - if (uclass_get_device(UCLASS_RNG, 0, &dev) || !dev) { - printf("No RNG device\n"); - return CMD_RET_FAILURE; - } - - buf = malloc(n); - if (!buf) { - printf("Out of memory\n"); - return CMD_RET_FAILURE; - } - - if (dm_rng_read(dev, buf, n)) { - printf("Reading RNG failed\n"); - return CMD_RET_FAILURE; - } + printf("Notice: a /chosen/kaslr-seed is automatically added to the device-tree when booted via booti/bootm/bootz therefore using this command is likely no longer needed\n"); if (!working_fdt) { printf("No FDT memory address configured. Please configure\n" "the FDT address via \"fdt addr <address>\" command.\n" "Aborting!\n"); - return CMD_RET_FAILURE; - } - - ret = fdt_check_header(working_fdt); - if (ret < 0) { - printf("fdt_chosen: %s\n", fdt_strerror(ret)); - return CMD_RET_FAILURE; - } - - nodeoffset = fdt_find_or_add_subnode(working_fdt, 0, "chosen"); - if (nodeoffset < 0) { - printf("Reading chosen node failed\n"); - return CMD_RET_FAILURE; + err = CMD_RET_FAILURE; + } else { + if (fdt_kaslrseed(working_fdt, true) < 0) + err = CMD_RET_FAILURE; } - ret = fdt_setprop(working_fdt, nodeoffset, "kaslr-seed", buf, sizeof(buf)); - if (ret < 0) { - printf("Unable to set kaslr-seed on chosen node: %s\n", fdt_strerror(ret)); - return CMD_RET_FAILURE; - } - - free(buf); - - return ret; + return cmd_process_error(cmdtp, err); } U_BOOT_LONGHELP(kaslrseed, - "[n]\n" + "\n" " - append random bytes to chosen kaslr-seed node\n"); U_BOOT_CMD( diff --git a/cmd/led.c b/cmd/led.c index 48a02baf509..4256b3429c2 100644 --- a/cmd/led.c +++ b/cmd/led.c @@ -4,7 +4,6 @@ * Written by Simon Glass <sjg@chromium.org> */ -#include <common.h> #include <command.h> #include <dm.h> #include <led.h> diff --git a/cmd/legacy-mtd-utils.c b/cmd/legacy-mtd-utils.c index 5903a90fe53..1a5271000bf 100644 --- a/cmd/legacy-mtd-utils.c +++ b/cmd/legacy-mtd-utils.c @@ -1,6 +1,5 @@ // SPDX-License-Identifier: GPL-2.0+ -#include <common.h> #include <jffs2/jffs2.h> #include <linux/mtd/mtd.h> #include <linux/mtd/partitions.h> diff --git a/cmd/legacy_led.c b/cmd/legacy_led.c index 5256255f052..50de7e89d8f 100644 --- a/cmd/legacy_led.c +++ b/cmd/legacy_led.c @@ -9,10 +9,9 @@ * Ulf Samuelsson <ulf.samuelsson@atmel.com> */ -#include <common.h> -#include <config.h> #include <command.h> #include <status_led.h> +#include <vsprintf.h> struct led_tbl_s { char *string; /* String for use in the command */ diff --git a/cmd/license.c b/cmd/license.c index 15411b5a92d..161663ff29c 100644 --- a/cmd/license.c +++ b/cmd/license.c @@ -4,7 +4,6 @@ * Author: Harald Welte <laforge@openmoko.org> */ -#include <common.h> #include <command.h> #include <gzip.h> #include <malloc.h> diff --git a/cmd/load.c b/cmd/load.c index 540361b43f0..ace1c52f90a 100644 --- a/cmd/load.c +++ b/cmd/load.c @@ -7,7 +7,6 @@ /* * Serial up- and download support */ -#include <common.h> #include <command.h> #include <console.h> #include <cpu_func.h> diff --git a/cmd/log.c b/cmd/log.c index c9a23e4ae0d..519ec76f3b5 100644 --- a/cmd/log.c +++ b/cmd/log.c @@ -4,7 +4,6 @@ * Written by Simon Glass <sjg@chromium.org> */ -#include <common.h> #include <command.h> #include <dm.h> #include <getopt.h> diff --git a/cmd/lsblk.c b/cmd/lsblk.c index d214dafc3be..7c00bfdc7a0 100644 --- a/cmd/lsblk.c +++ b/cmd/lsblk.c @@ -4,7 +4,6 @@ * Niel Fourie, DENX Software Engineering, lusus@denx.de. */ -#include <common.h> #include <blk.h> #include <command.h> #include <dm.h> diff --git a/cmd/lzmadec.c b/cmd/lzmadec.c index 81924da4618..c40b96941b4 100644 --- a/cmd/lzmadec.c +++ b/cmd/lzmadec.c @@ -9,10 +9,10 @@ * Wolfgang Denk, DENX Software Engineering, wd@denx.de. */ -#include <common.h> #include <command.h> #include <env.h> #include <mapmem.h> +#include <vsprintf.h> #include <asm/io.h> #include <lzma/LzmaTools.h> diff --git a/cmd/mbr.c b/cmd/mbr.c index ec99b662834..7e1f92a13bb 100644 --- a/cmd/mbr.c +++ b/cmd/mbr.c @@ -8,11 +8,11 @@ * based on the gpt command. */ -#include <common.h> #include <blk.h> #include <command.h> #include <malloc.h> #include <part.h> +#include <vsprintf.h> /** * extract_val() - Extract a value from the key=value pair list diff --git a/cmd/mdio.c b/cmd/mdio.c index 3c74326161e..c0a87087d31 100644 --- a/cmd/mdio.c +++ b/cmd/mdio.c @@ -8,7 +8,6 @@ * MDIO Commands */ -#include <common.h> #include <command.h> #include <dm.h> #include <miiphy.h> diff --git a/cmd/mem.c b/cmd/mem.c index 768057e4d3f..4989d27f2ab 100644 --- a/cmd/mem.c +++ b/cmd/mem.c @@ -10,7 +10,6 @@ * Copied from FADS ROM, Dan Malek (dmalek@jlc.net) */ -#include <common.h> #include <console.h> #include <bootretry.h> #include <cli.h> @@ -24,6 +23,7 @@ #include <log.h> #include <mapmem.h> #include <rand.h> +#include <time.h> #include <watchdog.h> #include <asm/global_data.h> #include <asm/io.h> diff --git a/cmd/meson/sm.c b/cmd/meson/sm.c index de9a242e17f..b69f8123ee2 100644 --- a/cmd/meson/sm.c +++ b/cmd/meson/sm.c @@ -9,11 +9,11 @@ */ #include <command.h> -#include <common.h> #include <env.h> #include <asm/arch/sm.h> #include <stdlib.h> #include <display_options.h> +#include <vsprintf.h> static int do_sm_serial(struct cmd_tbl *cmdtp, int flag, int argc, char *const argv[]) diff --git a/cmd/mii.c b/cmd/mii.c index fab420ee29e..ce372489692 100644 --- a/cmd/mii.c +++ b/cmd/mii.c @@ -8,7 +8,6 @@ * MII Utilities */ -#include <common.h> #include <command.h> #include <dm.h> #include <miiphy.h> diff --git a/cmd/misc.c b/cmd/misc.c index ec32b41ed1e..792d9723c75 100644 --- a/cmd/misc.c +++ b/cmd/misc.c @@ -8,7 +8,6 @@ * A command interface to access misc devices with MISC uclass driver APIs. */ -#include <common.h> #include <command.h> #include <dm.h> #include <errno.h> diff --git a/cmd/mmc.c b/cmd/mmc.c index 2d5430a5307..7244a90f4dc 100644 --- a/cmd/mmc.c +++ b/cmd/mmc.c @@ -4,7 +4,6 @@ * Kyle Harris, kharris@nexus-tech.net */ -#include <common.h> #include <blk.h> #include <command.h> #include <console.h> @@ -14,6 +13,7 @@ #include <part.h> #include <sparse_format.h> #include <image-sparse.h> +#include <vsprintf.h> static int curr_device = -1; @@ -3,9 +3,9 @@ * Copyright 2008-2009 Freescale Semiconductor, Inc. */ -#include <common.h> #include <command.h> #include <cpu_func.h> +#include <vsprintf.h> static int cpu_status_all(void) { diff --git a/cmd/mtd.c b/cmd/mtd.c index 9189f45cabd..795aaa2b37d 100644 --- a/cmd/mtd.c +++ b/cmd/mtd.c @@ -9,7 +9,6 @@ */ #include <command.h> -#include <common.h> #include <console.h> #if CONFIG_IS_ENABLED(CMD_MTD_OTP) #include <hexdump.h> diff --git a/cmd/mtdparts.c b/cmd/mtdparts.c index b31db73ebfc..f57d84dbb3a 100644 --- a/cmd/mtdparts.c +++ b/cmd/mtdparts.c @@ -70,7 +70,6 @@ * */ -#include <common.h> #include <command.h> #include <env.h> #include <log.h> diff --git a/cmd/mux.c b/cmd/mux.c index 388fb0878a8..2f6c08b8b07 100644 --- a/cmd/mux.c +++ b/cmd/mux.c @@ -6,7 +6,6 @@ * Author: Pratyush Yadav <p.yadav@ti.com> */ -#include <common.h> #include <command.h> #include <errno.h> #include <dm.h> diff --git a/cmd/mvebu/bubt.c b/cmd/mvebu/bubt.c index 744b1c20aa8..e3f21dd0d81 100644 --- a/cmd/mvebu/bubt.c +++ b/cmd/mvebu/bubt.c @@ -5,7 +5,6 @@ */ #include <config.h> -#include <common.h> #include <command.h> #include <env.h> #include <image.h> diff --git a/cmd/mvebu/comphy_rx_training.c b/cmd/mvebu/comphy_rx_training.c index 4ee8f54ea9c..5653877cd4a 100644 --- a/cmd/mvebu/comphy_rx_training.c +++ b/cmd/mvebu/comphy_rx_training.c @@ -5,7 +5,6 @@ * SPDX-License-Identifier: GPL-2.0 */ -#include <common.h> #include <command.h> #include <console.h> #include <dm.h> diff --git a/cmd/nand.c b/cmd/nand.c index fe834c4ac5c..5a328e0acdd 100644 --- a/cmd/nand.c +++ b/cmd/nand.c @@ -23,7 +23,6 @@ * only */ -#include <common.h> #include <bootstage.h> #include <image.h> #include <asm/cache.h> diff --git a/cmd/net.c b/cmd/net.c index d407d8320a3..b206ff58e68 100644 --- a/cmd/net.c +++ b/cmd/net.c @@ -9,7 +9,6 @@ /* * Boot support */ -#include <common.h> #include <bootstage.h> #include <command.h> #include <dm.h> diff --git a/cmd/nvedit.c b/cmd/nvedit.c index e77338f8139..98a687bcabb 100644 --- a/cmd/nvedit.c +++ b/cmd/nvedit.c @@ -23,7 +23,7 @@ * environment. After that, we use a hash table. */ -#include <common.h> +#include <config.h> #include <cli.h> #include <command.h> #include <console.h> diff --git a/cmd/nvedit_efi.c b/cmd/nvedit_efi.c index 7a30b5cc8f8..64ae2ad2ce2 100644 --- a/cmd/nvedit_efi.c +++ b/cmd/nvedit_efi.c @@ -6,7 +6,6 @@ */ #include <charset.h> -#include <common.h> #include <command.h> #include <efi_loader.h> #include <efi_variable.h> diff --git a/cmd/nvme.c b/cmd/nvme.c index 09d5f438fb1..f2c9acba5c3 100644 --- a/cmd/nvme.c +++ b/cmd/nvme.c @@ -4,7 +4,6 @@ * Copyright (C) 2017 Bin Meng <bmeng.cn@gmail.com> */ -#include <common.h> #include <blk.h> #include <command.h> #include <dm.h> diff --git a/cmd/onenand.c b/cmd/onenand.c index fad781583a3..6e808ce3fce 100644 --- a/cmd/onenand.c +++ b/cmd/onenand.c @@ -9,7 +9,6 @@ * published by the Free Software Foundation. */ -#include <common.h> #include <command.h> #include <malloc.h> #include <linux/printk.h> diff --git a/cmd/optee_rpmb.c b/cmd/optee_rpmb.c index b3cafd92410..b155278ee2a 100644 --- a/cmd/optee_rpmb.c +++ b/cmd/optee_rpmb.c @@ -4,7 +4,6 @@ */ #include <command.h> -#include <common.h> #include <env.h> #include <errno.h> #include <image.h> diff --git a/cmd/osd.c b/cmd/osd.c index 210bc5d4c23..5671338d9e7 100644 --- a/cmd/osd.c +++ b/cmd/osd.c @@ -9,7 +9,6 @@ * Dirk Eibach, Guntermann & Drunck GmbH, eibach@gdsys.de */ -#include <common.h> #include <command.h> #include <dm.h> #include <hexdump.h> diff --git a/cmd/panic.c b/cmd/panic.c index f13b3f094fa..7c0affa5eb5 100644 --- a/cmd/panic.c +++ b/cmd/panic.c @@ -3,7 +3,7 @@ * Copyright (c) 2020 Theobroma Systems Design und Consulting GmbH */ -#include <common.h> +#include <vsprintf.h> #include <command.h> static int do_panic(struct cmd_tbl *cmdtp, int flag, int argc, diff --git a/cmd/part.c b/cmd/part.c index c75f85acd52..db7bc5819c0 100644 --- a/cmd/part.c +++ b/cmd/part.c @@ -15,11 +15,11 @@ * Pavel Bartusek <pba@sysgo.com> */ -#include <common.h> #include <config.h> #include <command.h> #include <env.h> #include <part.h> +#include <stdio.h> #include <vsprintf.h> enum cmd_part_info { diff --git a/cmd/pcap.c b/cmd/pcap.c index a0149203fad..8d610966c13 100644 --- a/cmd/pcap.c +++ b/cmd/pcap.c @@ -4,8 +4,8 @@ * Ramon Fried <rfried.dev@gmail.com> */ -#include <common.h> #include <command.h> +#include <vsprintf.h> #include <net.h> #include <net/pcap.h> diff --git a/cmd/pci.c b/cmd/pci.c index d89e71c16a0..3c0aed50cae 100644 --- a/cmd/pci.c +++ b/cmd/pci.c @@ -12,7 +12,6 @@ * PCI routines */ -#include <common.h> #include <bootretry.h> #include <cli.h> #include <command.h> diff --git a/cmd/pci_mps.c b/cmd/pci_mps.c index 98161da93a0..19e71db8cbd 100644 --- a/cmd/pci_mps.c +++ b/cmd/pci_mps.c @@ -6,7 +6,6 @@ * PCI Express Maximum Packet Size (MPS) configuration */ -#include <common.h> #include <bootretry.h> #include <cli.h> #include <command.h> diff --git a/cmd/pinmux.c b/cmd/pinmux.c index 105f01eaaff..01f3e4af6ce 100644 --- a/cmd/pinmux.c +++ b/cmd/pinmux.c @@ -3,7 +3,6 @@ * Copyright (C) 2018, STMicroelectronics - All Rights Reserved */ -#include <common.h> #include <command.h> #include <dm.h> #include <errno.h> diff --git a/cmd/pmc.c b/cmd/pmc.c index 9a3ba2bffc5..1a3416fb2a9 100644 --- a/cmd/pmc.c +++ b/cmd/pmc.c @@ -5,7 +5,6 @@ * Copyright 2019 Google LLC */ -#include <common.h> #include <command.h> #include <dm.h> #include <power/acpi_pmc.h> diff --git a/cmd/pmic.c b/cmd/pmic.c index c9e9730adf9..3ad1b8aa375 100644 --- a/cmd/pmic.c +++ b/cmd/pmic.c @@ -3,7 +3,6 @@ * Copyright (C) 2014-2015 Samsung Electronics * Przemyslaw Marczak <p.marczak@samsung.com> */ -#include <common.h> #include <command.h> #include <errno.h> #include <dm.h> diff --git a/cmd/printf.c b/cmd/printf.c index 0c6887e0d6e..a1727ac15a2 100644 --- a/cmd/printf.c +++ b/cmd/printf.c @@ -84,12 +84,12 @@ * We try to be compatible. */ -#include <common.h> #include <ctype.h> #include <errno.h> #include <stddef.h> #include <stdio.h> #include <stdlib.h> +#include <vsprintf.h> #define WANT_HEX_ESCAPES 0 #define PRINT_CONVERSION_ERROR 1 diff --git a/cmd/pvblock.c b/cmd/pvblock.c index 1b604c37373..3a83ac9cd92 100644 --- a/cmd/pvblock.c +++ b/cmd/pvblock.c @@ -6,7 +6,6 @@ */ #include <blk.h> -#include <common.h> #include <command.h> /* Current I/O Device */ diff --git a/cmd/pxe.c b/cmd/pxe.c index 21134eb7a30..ae02c28c075 100644 --- a/cmd/pxe.c +++ b/cmd/pxe.c @@ -4,12 +4,12 @@ * Copyright (c) 2014, NVIDIA CORPORATION. All rights reserved. */ -#include <common.h> #include <command.h> #include <fs.h> #include <net.h> #include <net6.h> #include <malloc.h> +#include <vsprintf.h> #include "pxe_utils.h" diff --git a/cmd/qfw.c b/cmd/qfw.c index 1b8c775ebf5..1b108118658 100644 --- a/cmd/qfw.c +++ b/cmd/qfw.c @@ -3,7 +3,6 @@ * (C) Copyright 2015 Miao Yan <yanmiaobest@gmail.com> */ -#include <common.h> #include <command.h> #include <env.h> #include <errno.h> diff --git a/cmd/read.c b/cmd/read.c index 1218e7acfd0..af54bd17654 100644 --- a/cmd/read.c +++ b/cmd/read.c @@ -8,10 +8,10 @@ * Software Foundation. */ -#include <common.h> #include <command.h> #include <mapmem.h> #include <part.h> +#include <vsprintf.h> static int do_rw(struct cmd_tbl *cmdtp, int flag, int argc, char *const argv[]) diff --git a/cmd/reginfo.c b/cmd/reginfo.c index c8a04b1754e..53b8bc41bfe 100644 --- a/cmd/reginfo.c +++ b/cmd/reginfo.c @@ -4,7 +4,6 @@ * Subodh Nijsure, SkyStream Networks, snijsure@skystream.com */ -#include <common.h> #include <command.h> #include <asm/ppc.h> diff --git a/cmd/regulator.c b/cmd/regulator.c index 635a9add585..da298090bb7 100644 --- a/cmd/regulator.c +++ b/cmd/regulator.c @@ -3,7 +3,6 @@ * Copyright (C) 2014-2015 Samsung Electronics * Przemyslaw Marczak <p.marczak@samsung.com> */ -#include <common.h> #include <command.h> #include <errno.h> #include <dm.h> diff --git a/cmd/remoteproc.c b/cmd/remoteproc.c index ea8724a187d..3c5b6a05b1a 100644 --- a/cmd/remoteproc.c +++ b/cmd/remoteproc.c @@ -3,7 +3,6 @@ * (C) Copyright 2015 * Texas Instruments Incorporated - https://www.ti.com/ */ -#include <common.h> #include <command.h> #include <dm.h> #include <errno.h> diff --git a/cmd/riscv/exception.c b/cmd/riscv/exception.c index 14ad6c440a5..2b58b1c449c 100644 --- a/cmd/riscv/exception.c +++ b/cmd/riscv/exception.c @@ -68,14 +68,13 @@ static struct cmd_tbl cmd_sub[] = { "", ""), }; -static char exception_help_text[] = +U_BOOT_LONGHELP(exception, "<ex>\n" " The following exceptions are available:\n" " compressed - compressed instruction\n" " ebreak - breakpoint\n" " ialign16 - 16 bit aligned instruction\n" " undefined - illegal instruction\n" - " unaligned - load address misaligned\n" - ; + " unaligned - load address misaligned\n"); #include <exception.h> diff --git a/cmd/riscv/sbi.c b/cmd/riscv/sbi.c index 2d8ee7e5bbb..a231604e492 100644 --- a/cmd/riscv/sbi.c +++ b/cmd/riscv/sbi.c @@ -5,7 +5,6 @@ * Copyright (c) 2020, Heinrich Schuchardt <xypron.glpk@gmx.de> */ -#include <common.h> #include <command.h> #include <asm/sbi.h> diff --git a/cmd/rkmtd.c b/cmd/rkmtd.c index 5b80427cb94..a870c119110 100644 --- a/cmd/rkmtd.c +++ b/cmd/rkmtd.c @@ -8,7 +8,6 @@ * Copyright (C) 2023 Johan Jonker <jbx6244@gmail.com> */ -#include <common.h> #include <blk.h> #include <command.h> #include <dm.h> diff --git a/cmd/rng.c b/cmd/rng.c index e5ab8681122..2fb7202303a 100644 --- a/cmd/rng.c +++ b/cmd/rng.c @@ -4,7 +4,6 @@ * * Copyright (c) 2019, Heinrich Schuchardt <xypron.glpk@gmx.de> */ -#include <common.h> #include <command.h> #include <dm.h> #include <hexdump.h> diff --git a/cmd/rockusb.c b/cmd/rockusb.c index 07088564a10..48497aa8764 100644 --- a/cmd/rockusb.c +++ b/cmd/rockusb.c @@ -3,7 +3,6 @@ * Copyright (C) 2017 Eddie Cai <eddie.cai.linux@gmail.com> */ -#include <common.h> #include <command.h> #include <console.h> #include <g_dnl.h> diff --git a/cmd/rtc.c b/cmd/rtc.c index a344cfa76b1..a931fd9d54f 100644 --- a/cmd/rtc.c +++ b/cmd/rtc.c @@ -1,6 +1,5 @@ // SPDX-License-Identifier: GPL-2.0+ -#include <common.h> #include <command.h> #include <display_options.h> #include <dm.h> diff --git a/cmd/sandbox/exception.c b/cmd/sandbox/exception.c index cfa153da260..f9c847d8ff2 100644 --- a/cmd/sandbox/exception.c +++ b/cmd/sandbox/exception.c @@ -19,7 +19,11 @@ static int do_sigsegv(struct cmd_tbl *cmdtp, int flag, int argc, static int do_undefined(struct cmd_tbl *cmdtp, int flag, int argc, char *const argv[]) { +#ifdef __powerpc__ + asm volatile (".long 0xffffffff\n"); +#else asm volatile (".word 0xffff\n"); +#endif return CMD_RET_FAILURE; } diff --git a/cmd/sata.c b/cmd/sata.c index 9c9fe111d12..8b923f9378b 100644 --- a/cmd/sata.c +++ b/cmd/sata.c @@ -9,7 +9,6 @@ * Dave Liu <daveliu@freescale.com> */ -#include <common.h> #include <ahci.h> #include <blk.h> #include <dm.h> @@ -4,7 +4,6 @@ * Written by Simon Glass <sjg@chromium.org> */ -#include <common.h> #include <command.h> #include <dm.h> #include <spl.h> diff --git a/cmd/scmi.c b/cmd/scmi.c index 664062c4eff..cfbca63e164 100644 --- a/cmd/scmi.c +++ b/cmd/scmi.c @@ -369,7 +369,7 @@ static int do_scmi(struct cmd_tbl *cmdtp, int flag, return cp->cmd(cmdtp, flag, argc, argv); } -static char scmi_help_text[] = +U_BOOT_LONGHELP(scmi, " - SCMI utility\n" " info - get the info of SCMI services\n" " perm_dev <agent-id in hex> <device-id in hex> <flags in hex>\n" @@ -377,8 +377,7 @@ static char scmi_help_text[] = " perm_proto <agent-id in hex> <device-id in hex> <protocol-id in hex> <flags in hex>\n" " - set protocol permission to device\n" " reset <agent-id in hex> <flags in hex>\n" - " - reset platform resource settings\n" - ""; + " - reset platform resource settings\n"); U_BOOT_CMD(scmi, CONFIG_SYS_MAXARGS, 0, do_scmi, "SCMI utility", scmi_help_text); diff --git a/cmd/scp03.c b/cmd/scp03.c index 2b8d5aecf34..9c749d19af8 100644 --- a/cmd/scp03.c +++ b/cmd/scp03.c @@ -4,7 +4,6 @@ * */ -#include <common.h> #include <command.h> #include <env.h> #include <scp03.h> diff --git a/cmd/scsi.c b/cmd/scsi.c index c501d7f456d..c286bdc0726 100644 --- a/cmd/scsi.c +++ b/cmd/scsi.c @@ -7,7 +7,6 @@ /* * SCSI support. */ -#include <common.h> #include <blk.h> #include <command.h> #include <scsi.h> diff --git a/cmd/seama.c b/cmd/seama.c index 3aafb43c48a..3c8e8199234 100644 --- a/cmd/seama.c +++ b/cmd/seama.c @@ -4,7 +4,6 @@ * Support for the "SEAttle iMAge" SEAMA NAND image format */ -#include <common.h> #include <command.h> #include <nand.h> diff --git a/cmd/setexpr.c b/cmd/setexpr.c index ab76824a32b..e111b8ba98a 100644 --- a/cmd/setexpr.c +++ b/cmd/setexpr.c @@ -8,7 +8,6 @@ * This file provides a shell like 'expr' function to return. */ -#include <common.h> #include <config.h> #include <command.h> #include <ctype.h> @@ -16,6 +15,8 @@ #include <log.h> #include <malloc.h> #include <mapmem.h> +#include <vsprintf.h> +#include <linux/errno.h> #include <linux/sizes.h> #include "printf.h" @@ -5,7 +5,6 @@ * Copyright (C) 2008 Atmel Corporation */ -#include <common.h> #include <command.h> #include <display_options.h> #include <div64.h> @@ -14,6 +13,7 @@ #include <malloc.h> #include <mapmem.h> #include <spi.h> +#include <time.h> #include <spi_flash.h> #include <asm/cache.h> #include <jffs2/jffs2.h> diff --git a/cmd/sha1sum.c b/cmd/sha1sum.c index bcc665a5a6c..52aa26c78d2 100644 --- a/cmd/sha1sum.c +++ b/cmd/sha1sum.c @@ -7,7 +7,6 @@ * Wolfgang Denk, DENX Software Engineering, wd@denx.de. */ -#include <common.h> #include <command.h> #include <hash.h> #include <u-boot/sha1.h> diff --git a/cmd/sleep.c b/cmd/sleep.c index c741b4aa029..7616fed7556 100644 --- a/cmd/sleep.c +++ b/cmd/sleep.c @@ -4,9 +4,10 @@ * Wolfgang Denk, DENX Software Engineering, wd@denx.de. */ -#include <common.h> #include <command.h> #include <console.h> +#include <time.h> +#include <vsprintf.h> #include <linux/delay.h> static int do_sleep(struct cmd_tbl *cmdtp, int flag, int argc, diff --git a/cmd/smccc.c b/cmd/smccc.c index fb80431ad1d..3a4d885e37e 100644 --- a/cmd/smccc.c +++ b/cmd/smccc.c @@ -4,8 +4,8 @@ * Michalis Pappas <mpappas@fastmail.fm> */ #include <asm/psci.h> -#include <common.h> #include <command.h> +#include <vsprintf.h> #include <linux/arm-smccc.h> #include <linux/compiler.h> #include <linux/psci.h> diff --git a/cmd/sound.c b/cmd/sound.c index bc44a431609..8f67cbd96e1 100644 --- a/cmd/sound.c +++ b/cmd/sound.c @@ -4,7 +4,6 @@ * Rajeshwari Shinde <rajeshwari.s@samsung.com> */ -#include <common.h> #include <command.h> #include <dm.h> #include <fdtdec.h> diff --git a/cmd/source.c b/cmd/source.c index 0ba9736b1ab..c9b5f8e400a 100644 --- a/cmd/source.c +++ b/cmd/source.c @@ -14,7 +14,6 @@ /* #define DEBUG */ -#include <common.h> #include <command.h> #include <env.h> #include <image.h> diff --git a/cmd/spi.c b/cmd/spi.c index f30018f33be..ea30c854c21 100644 --- a/cmd/spi.c +++ b/cmd/spi.c @@ -8,7 +8,6 @@ * SPI Read/Write Utilities */ -#include <common.h> #include <command.h> #include <dm.h> #include <errno.h> diff --git a/cmd/spl.c b/cmd/spl.c index 8a2ded72be9..d1f47c7316b 100644 --- a/cmd/spl.c +++ b/cmd/spl.c @@ -4,7 +4,6 @@ * Corscience GmbH & Co. KG - Simon Schwarz <schwarz@corscience.de> */ -#include <common.h> #include <command.h> #include <cmd_spl.h> #include <env.h> diff --git a/cmd/stackprot_test.c b/cmd/stackprot_test.c index f3470288fac..e7ff4a06158 100644 --- a/cmd/stackprot_test.c +++ b/cmd/stackprot_test.c @@ -3,7 +3,6 @@ * Copyright 2021 Broadcom */ -#include <common.h> #include <command.h> static int do_test_stackprot_fail(struct cmd_tbl *cmdtp, int flag, int argc, diff --git a/cmd/strings.c b/cmd/strings.c index bf348afce81..5bcb0f2b567 100644 --- a/cmd/strings.c +++ b/cmd/strings.c @@ -7,8 +7,8 @@ */ #include <config.h> -#include <common.h> #include <command.h> +#include <vsprintf.h> static char *start_addr, *last_addr; diff --git a/cmd/sysboot.c b/cmd/sysboot.c index d14c570d96a..0ea08fd7b53 100644 --- a/cmd/sysboot.c +++ b/cmd/sysboot.c @@ -1,10 +1,10 @@ // SPDX-License-Identifier: GPL-2.0+ -#include <common.h> #include <command.h> #include <env.h> #include <fs.h> #include <pxe_utils.h> +#include <vsprintf.h> /** * struct sysboot_info - useful information for sysboot helpers diff --git a/cmd/temperature.c b/cmd/temperature.c index 420965de143..41e422fc937 100644 --- a/cmd/temperature.c +++ b/cmd/temperature.c @@ -5,7 +5,6 @@ * Written by Robert Marko <robert.marko@sartura.hr> */ -#include <common.h> #include <command.h> #include <dm.h> #include <thermal.h> diff --git a/cmd/terminal.c b/cmd/terminal.c index 9e32a4191e1..369a755e0f5 100644 --- a/cmd/terminal.c +++ b/cmd/terminal.c @@ -7,7 +7,6 @@ /* * Boot support */ -#include <common.h> #include <command.h> #include <stdio_dev.h> #include <serial.h> diff --git a/cmd/test.c b/cmd/test.c index fa7c48fb9f1..b4c3eabf9f6 100644 --- a/cmd/test.c +++ b/cmd/test.c @@ -4,10 +4,10 @@ * Wolfgang Denk, DENX Software Engineering, wd@denx.de. */ -#include <common.h> #include <command.h> #include <fs.h> #include <log.h> +#include <vsprintf.h> #define OP_INVALID 0 #define OP_NOT 1 diff --git a/cmd/thordown.c b/cmd/thordown.c index 48e22b31d02..70061bf8d4c 100644 --- a/cmd/thordown.c +++ b/cmd/thordown.c @@ -6,7 +6,6 @@ * All rights reserved. */ -#include <common.h> #include <command.h> #include <thor.h> #include <dfu.h> diff --git a/cmd/ti/ddr3.c b/cmd/ti/ddr3.c index bbd406fc66e..70ce53d01e8 100644 --- a/cmd/ti/ddr3.c +++ b/cmd/ti/ddr3.c @@ -12,7 +12,6 @@ #include <asm/arch/hardware.h> #include <asm/cache.h> #include <asm/emif.h> -#include <common.h> #include <command.h> #include <asm/global_data.h> diff --git a/cmd/ti/pd.c b/cmd/ti/pd.c index a0492a5fdee..305023af1e7 100644 --- a/cmd/ti/pd.c +++ b/cmd/ti/pd.c @@ -5,7 +5,6 @@ * Copyright (C) 2020 Texas Instruments Incorporated, <www.ti.com> */ -#include <common.h> #include <command.h> #include <dm.h> #include <k3-dev.h> diff --git a/cmd/time.c b/cmd/time.c index db8c1892df4..eee6084e968 100644 --- a/cmd/time.c +++ b/cmd/time.c @@ -3,7 +3,6 @@ * Copyright (c) 2011 The Chromium OS Authors. */ -#include <common.h> #include <command.h> static void report_time(ulong cycles) diff --git a/cmd/timer.c b/cmd/timer.c index 551be5dd54e..04fcd84ac6a 100644 --- a/cmd/timer.c +++ b/cmd/timer.c @@ -4,8 +4,8 @@ * Wolfgang Denk, DENX Software Engineering, wd@denx.de. */ -#include <common.h> #include <command.h> +#include <time.h> static int do_timer(struct cmd_tbl *cmdtp, int flag, int argc, char *const argv[]) diff --git a/cmd/tlv_eeprom.c b/cmd/tlv_eeprom.c index 57cfd355df1..0aec7521770 100644 --- a/cmd/tlv_eeprom.c +++ b/cmd/tlv_eeprom.c @@ -9,7 +9,6 @@ * Copyright (C) 2014,2016 david_yang <david_yang@accton.com> */ -#include <common.h> #include <command.h> #include <dm.h> #include <i2c.h> diff --git a/cmd/tpm-common.c b/cmd/tpm-common.c index a7dc23d85d5..1cd57f901b6 100644 --- a/cmd/tpm-common.c +++ b/cmd/tpm-common.c @@ -3,7 +3,6 @@ * Copyright (c) 2013 The Chromium OS Authors. */ -#include <common.h> #include <command.h> #include <dm.h> #include <env.h> diff --git a/cmd/tpm-v1.c b/cmd/tpm-v1.c index 1b1efcd204d..6e019d1c729 100644 --- a/cmd/tpm-v1.c +++ b/cmd/tpm-v1.c @@ -3,10 +3,10 @@ * Copyright (c) 2013 The Chromium OS Authors. */ -#include <common.h> #include <command.h> #include <env.h> #include <malloc.h> +#include <vsprintf.h> #include <asm/unaligned.h> #include <tpm-common.h> #include <tpm-v1.h> diff --git a/cmd/tpm-v2.c b/cmd/tpm-v2.c index 2343b4d9cb9..8517833f861 100644 --- a/cmd/tpm-v2.c +++ b/cmd/tpm-v2.c @@ -4,7 +4,6 @@ * Author: Miquel Raynal <miquel.raynal@bootlin.com> */ -#include <common.h> #include <command.h> #include <dm.h> #include <log.h> diff --git a/cmd/tpm_test.c b/cmd/tpm_test.c index c7fa6e775f5..9c8b1c74384 100644 --- a/cmd/tpm_test.c +++ b/cmd/tpm_test.c @@ -3,10 +3,10 @@ * Copyright (c) 2015 Google, Inc */ -#include <common.h> #include <command.h> #include <cpu_func.h> #include <log.h> +#include <time.h> #include <tpm-v1.h> #include <linux/printk.h> #include "tpm-user-utils.h" diff --git a/cmd/trace.c b/cmd/trace.c index 2e3ee1d3ba2..937e6a682ad 100644 --- a/cmd/trace.c +++ b/cmd/trace.c @@ -3,11 +3,11 @@ * Copyright (c) 2011 The Chromium OS Authors. */ -#include <common.h> #include <command.h> #include <env.h> #include <mapmem.h> #include <trace.h> +#include <vsprintf.h> #include <asm/io.h> static int get_args(int argc, char *const argv[], char **buff, diff --git a/cmd/tsi148.c b/cmd/tsi148.c index 0d849d9979e..113b4e67330 100644 --- a/cmd/tsi148.c +++ b/cmd/tsi148.c @@ -7,10 +7,10 @@ * (C) Copyright 2003 Stefan Roese, stefan.roese@esd-electronics.com */ -#include <common.h> #include <command.h> #include <log.h> #include <malloc.h> +#include <vsprintf.h> #include <asm/io.h> #include <pci.h> diff --git a/cmd/ubi.c b/cmd/ubi.c index 0a6a80bdd10..8c1b5df0572 100644 --- a/cmd/ubi.c +++ b/cmd/ubi.c @@ -11,7 +11,6 @@ * published by the Free Software Foundation. */ -#include <common.h> #include <command.h> #include <env.h> #include <exports.h> diff --git a/cmd/ubifs.c b/cmd/ubifs.c index 2a035bc7ae6..8fd39032ecc 100644 --- a/cmd/ubifs.c +++ b/cmd/ubifs.c @@ -11,11 +11,11 @@ #undef DEBUG -#include <common.h> #include <config.h> #include <command.h> #include <log.h> #include <ubifs_uboot.h> +#include <vsprintf.h> static int ubifs_initialized; static int ubifs_mounted; diff --git a/cmd/ufs.c b/cmd/ufs.c index 536bd85b75d..6e21fbb1685 100644 --- a/cmd/ufs.c +++ b/cmd/ufs.c @@ -5,9 +5,9 @@ * Copyright (C) 2019 Texas Instruments Incorporated - https://www.ti.com * */ -#include <common.h> #include <command.h> #include <ufs.h> +#include <vsprintf.h> static int do_ufs(struct cmd_tbl *cmdtp, int flag, int argc, char *const argv[]) { diff --git a/cmd/universe.c b/cmd/universe.c index fb3a32d4d5a..d1a712829d0 100644 --- a/cmd/universe.c +++ b/cmd/universe.c @@ -3,9 +3,9 @@ * (C) Copyright 2003 Stefan Roese, stefan.roese@esd-electronics.com */ -#include <common.h> #include <command.h> #include <malloc.h> +#include <vsprintf.h> #include <asm/io.h> #include <pci.h> diff --git a/cmd/unlz4.c b/cmd/unlz4.c index 5f20838e899..fc5200117ad 100644 --- a/cmd/unlz4.c +++ b/cmd/unlz4.c @@ -4,9 +4,9 @@ * FUJITSU COMPUTERTECHNOLOGIES LIMITED. All rights reserved. */ -#include <common.h> #include <command.h> #include <env.h> +#include <vsprintf.h> #include <u-boot/lz4.h> static int do_unlz4(struct cmd_tbl *cmdtp, int flag, int argc, diff --git a/cmd/unzip.c b/cmd/unzip.c index bc6cee06043..e7a3f9808b2 100644 --- a/cmd/unzip.c +++ b/cmd/unzip.c @@ -4,12 +4,12 @@ * Wolfgang Denk, DENX Software Engineering, wd@denx.de. */ -#include <common.h> #include <command.h> #include <env.h> #include <gzip.h> #include <mapmem.h> #include <part.h> +#include <vsprintf.h> static int do_unzip(struct cmd_tbl *cmdtp, int flag, int argc, char *const argv[]) diff --git a/cmd/usb.c b/cmd/usb.c index 8ddda5a0d89..225d9291765 100644 --- a/cmd/usb.c +++ b/cmd/usb.c @@ -10,7 +10,6 @@ * project. */ -#include <common.h> #include <blk.h> #include <bootstage.h> #include <command.h> diff --git a/cmd/usb_gadget_sdp.c b/cmd/usb_gadget_sdp.c index cbdda733533..39259a3b092 100644 --- a/cmd/usb_gadget_sdp.c +++ b/cmd/usb_gadget_sdp.c @@ -6,7 +6,6 @@ * Author: Stefan Agner <stefan.agner@toradex.com> */ -#include <common.h> #include <command.h> #include <g_dnl.h> #include <sdp.h> diff --git a/cmd/usb_mass_storage.c b/cmd/usb_mass_storage.c index 751701fe73a..47e8b70cd10 100644 --- a/cmd/usb_mass_storage.c +++ b/cmd/usb_mass_storage.c @@ -6,7 +6,6 @@ * Copyright (c) 2015, NVIDIA CORPORATION. All rights reserved. */ -#include <common.h> #include <blk.h> #include <command.h> #include <console.h> diff --git a/cmd/vbe.c b/cmd/vbe.c index 0e84b0e97aa..423d9e5f8f0 100644 --- a/cmd/vbe.c +++ b/cmd/vbe.c @@ -6,7 +6,6 @@ * Written by Simon Glass <sjg@chromium.org> */ -#include <common.h> #include <bloblist.h> #include <bootmeth.h> #include <bootstd.h> diff --git a/cmd/version.c b/cmd/version.c index d99a44f19fb..53db1a0b6bd 100644 --- a/cmd/version.c +++ b/cmd/version.c @@ -4,7 +4,6 @@ * Wolfgang Denk, DENX Software Engineering, wd@denx.de. */ -#include <common.h> #include <command.h> #include <display_options.h> #include <version_string.h> diff --git a/cmd/video.c b/cmd/video.c index 942f81c1633..91bd6de14dc 100644 --- a/cmd/video.c +++ b/cmd/video.c @@ -6,7 +6,6 @@ * Written by Simon Glass <sjg@chromium.org> */ -#include <common.h> #include <command.h> #include <dm.h> #include <video.h> diff --git a/cmd/virtio.c b/cmd/virtio.c index 019e317e755..a42a563ab72 100644 --- a/cmd/virtio.c +++ b/cmd/virtio.c @@ -4,7 +4,6 @@ * Copyright (C) 2018, Bin Meng <bmeng.cn@gmail.com> */ -#include <common.h> #include <blk.h> #include <command.h> #include <dm.h> @@ -4,7 +4,6 @@ * Microchip Technology, Inc. * Eugen Hristev <eugen.hristev@microchip.com> */ -#include <common.h> #include <command.h> #include <dm.h> #include <w1.h> diff --git a/cmd/wdt.c b/cmd/wdt.c index b9fdf7ad155..c7a06cca181 100644 --- a/cmd/wdt.c +++ b/cmd/wdt.c @@ -5,7 +5,6 @@ * Copyright (c) 2019 Michael Walle <michael@walle.cc> */ -#include <common.h> #include <command.h> #include <dm.h> #include <wdt.h> diff --git a/cmd/wol.c b/cmd/wol.c index f0d63432272..45d4ae3f719 100644 --- a/cmd/wol.c +++ b/cmd/wol.c @@ -7,9 +7,9 @@ /* * Wake-on-LAN support */ -#include <common.h> #include <command.h> #include <net.h> +#include <vsprintf.h> #if defined(CONFIG_CMD_WOL) void wol_set_timeout(ulong); diff --git a/cmd/x86/cbsysinfo.c b/cmd/x86/cbsysinfo.c index 84822a3e321..7ca2e13ae2f 100644 --- a/cmd/x86/cbsysinfo.c +++ b/cmd/x86/cbsysinfo.c @@ -4,7 +4,6 @@ * Written by Simon Glass <sjg@chromium.org> */ -#include <common.h> #include <asm/cb_sysinfo.h> #include <command.h> #include <console.h> diff --git a/cmd/x86/exception.c b/cmd/x86/exception.c index 14b6bd6f493..02735494a3c 100644 --- a/cmd/x86/exception.c +++ b/cmd/x86/exception.c @@ -19,10 +19,9 @@ static struct cmd_tbl cmd_sub[] = { "", ""), }; -static char exception_help_text[] = +U_BOOT_LONGHELP(exception, "<ex>\n" " The following exceptions are available:\n" - " undefined - undefined instruction\n" - ; + " undefined - undefined instruction\n"); #include <exception.h> diff --git a/cmd/x86/fsp.c b/cmd/x86/fsp.c index 82e4415b16e..2620ab8ee02 100644 --- a/cmd/x86/fsp.c +++ b/cmd/x86/fsp.c @@ -3,7 +3,6 @@ * Copyright (C) 2014-2015, Bin Meng <bmeng.cn@gmail.com> */ -#include <common.h> #include <command.h> #include <asm/fsp/fsp_support.h> #include <asm/global_data.h> diff --git a/cmd/x86/hob.c b/cmd/x86/hob.c index 04d092dbe7e..2dd30808bd1 100644 --- a/cmd/x86/hob.c +++ b/cmd/x86/hob.c @@ -3,7 +3,6 @@ * Copyright (C) 2014-2015, Bin Meng <bmeng.cn@gmail.com> */ -#include <common.h> #include <command.h> #include <efi.h> #include <uuid.h> diff --git a/cmd/x86/mtrr.c b/cmd/x86/mtrr.c index 6ad7a123a44..b2afb598c73 100644 --- a/cmd/x86/mtrr.c +++ b/cmd/x86/mtrr.c @@ -3,9 +3,9 @@ * (C) Copyright 2014 Google, Inc */ -#include <common.h> #include <command.h> #include <log.h> +#include <vsprintf.h> #include <asm/msr.h> #include <asm/mp.h> #include <asm/mtrr.h> diff --git a/cmd/x86/zboot.c b/cmd/x86/zboot.c index addf28cb4aa..94e602b8a5b 100644 --- a/cmd/x86/zboot.c +++ b/cmd/x86/zboot.c @@ -5,6 +5,8 @@ * Daniel Engström, Omicron Ceti AB, <daniel@omicron.se> */ +#define LOG_CATEGORY LOGC_BOOT + #include <command.h> #include <mapmem.h> #include <vsprintf.h> @@ -14,8 +16,14 @@ static int do_zboot_start(struct cmd_tbl *cmdtp, int flag, int argc, char *const argv[]) { ulong bzimage_addr = 0, bzimage_size, initrd_addr, initrd_size; - ulong base_addr; const char *s, *cmdline; + ulong base_addr; + int i; + + log_debug("argc %d:", argc); + for (i = 0; i < argc; i++) + log_debug(" %s", argv[i]); + log_debug("\n"); /* argv[1] holds the address of the bzImage */ s = cmd_arg1(argc, argv) ? : env_get("fileaddr"); @@ -114,17 +122,18 @@ U_BOOT_SUBCMDS(zboot, int do_zboot_states(struct cmd_tbl *cmdtp, int flag, int argc, char *const argv[], int state_mask) { - int ret; + int ret = 0; - if (flag & ZBOOT_STATE_START) + log_debug("state_mask %x\n", state_mask); + if (state_mask & ZBOOT_STATE_START) ret = do_zboot_start(cmdtp, flag, argc, argv); - if (!ret && (flag & ZBOOT_STATE_LOAD)) + if (!ret && (state_mask & ZBOOT_STATE_LOAD)) ret = do_zboot_load(cmdtp, flag, argc, argv); - if (!ret && (flag & ZBOOT_STATE_SETUP)) + if (!ret && (state_mask & ZBOOT_STATE_SETUP)) ret = do_zboot_setup(cmdtp, flag, argc, argv); - if (!ret && (flag & ZBOOT_STATE_INFO)) + if (!ret && (state_mask & ZBOOT_STATE_INFO)) ret = do_zboot_info(cmdtp, flag, argc, argv); - if (!ret && (flag & ZBOOT_STATE_GO)) + if (!ret && (state_mask & ZBOOT_STATE_GO)) ret = do_zboot_go(cmdtp, flag, argc, argv); if (ret) return ret; diff --git a/cmd/ximg.c b/cmd/ximg.c index 0e7eead8d19..c79e8a07860 100644 --- a/cmd/ximg.c +++ b/cmd/ximg.c @@ -11,11 +11,13 @@ /* * Multi Image extract */ -#include <common.h> #include <command.h> #include <cpu_func.h> #include <env.h> #include <gzip.h> +#if IS_ENABLED(CONFIG_ZSTD) +#include <linux/zstd.h> +#endif #include <image.h> #include <malloc.h> #include <mapmem.h> @@ -238,6 +240,26 @@ do_imgextract(struct cmd_tbl *cmdtp, int flag, int argc, char *const argv[]) } break; #endif /* CONFIG_BZIP2 */ +#if IS_ENABLED(CONFIG_ZSTD) + case IH_COMP_ZSTD: + { + int ret; + struct abuf in, out; + + printf(" Uncompressing part %d ... ", part); + + abuf_init_set(&in, (void *)data, len); + abuf_init_set(&out, (void *)dest, unc_len); + ret = zstd_decompress(&in, &out); + if (ret < 0) { + printf("ZSTD ERROR %d - " + "image not loaded\n", ret); + return 1; + } + len = ret; + } + break; +#endif default: printf("Unimplemented compression type %d\n", comp); return 1; diff --git a/cmd/xxd.c b/cmd/xxd.c index 446ac1915ef..8ae05f910cb 100644 --- a/cmd/xxd.c +++ b/cmd/xxd.c @@ -4,7 +4,6 @@ * Roger Knecht <rknecht@pm.de> */ -#include <common.h> #include <command.h> #include <display_options.h> #include <fs.h> diff --git a/cmd/yaffs2.c b/cmd/yaffs2.c index 27fbd1be8f7..d0724d9bea8 100644 --- a/cmd/yaffs2.c +++ b/cmd/yaffs2.c @@ -13,7 +13,6 @@ * ... */ -#include <common.h> #include <config.h> #include <command.h> diff --git a/cmd/zfs.c b/cmd/zfs.c index 6ef1b56ab10..2f831532c2e 100644 --- a/cmd/zfs.c +++ b/cmd/zfs.c @@ -8,7 +8,6 @@ * made from existing GRUB Sources by Sun, GNU and others. */ -#include <common.h> #include <part.h> #include <config.h> #include <command.h> diff --git a/cmd/zip.c b/cmd/zip.c index 08afd62b973..2d255428822 100644 --- a/cmd/zip.c +++ b/cmd/zip.c @@ -4,10 +4,10 @@ * Lei Wen <leiwen@marvell.com>, Marvell Inc. */ -#include <common.h> #include <command.h> #include <env.h> #include <gzip.h> +#include <vsprintf.h> static int do_zip(struct cmd_tbl *cmdtp, int flag, int argc, char *const argv[]) { |