diff options
Diffstat (limited to 'cmd')
-rw-r--r-- | cmd/2048.c | 2 | ||||
-rw-r--r-- | cmd/Kconfig | 93 | ||||
-rw-r--r-- | cmd/Makefile | 1 | ||||
-rw-r--r-- | cmd/ab_select.c | 2 | ||||
-rw-r--r-- | cmd/abootimg.c | 37 | ||||
-rw-r--r-- | cmd/acpi.c | 2 | ||||
-rw-r--r-- | cmd/adc.c | 5 | ||||
-rw-r--r-- | cmd/addrmap.c | 1 | ||||
-rw-r--r-- | cmd/adtimg.c | 2 | ||||
-rw-r--r-- | cmd/aes.c | 2 | ||||
-rw-r--r-- | cmd/arm/exception.c | 5 | ||||
-rw-r--r-- | cmd/arm/exception64.c | 6 | ||||
-rw-r--r-- | cmd/armffa.c | 1 | ||||
-rw-r--r-- | cmd/armflash.c | 2 | ||||
-rw-r--r-- | cmd/axi.c | 1 | ||||
-rw-r--r-- | cmd/bcb.c | 6 | ||||
-rw-r--r-- | cmd/bdinfo.c | 8 | ||||
-rw-r--r-- | cmd/bind.c | 47 | ||||
-rw-r--r-- | cmd/binop.c | 2 | ||||
-rw-r--r-- | cmd/blk_common.c | 2 | ||||
-rw-r--r-- | cmd/blkcache.c | 2 | ||||
-rw-r--r-- | cmd/blkmap.c | 1 | ||||
-rw-r--r-- | cmd/blob.c | 6 | ||||
-rw-r--r-- | cmd/bloblist.c | 1 | ||||
-rw-r--r-- | cmd/bmp.c | 1 | ||||
-rw-r--r-- | cmd/boot.c | 2 | ||||
-rw-r--r-- | cmd/bootcount.c | 1 | ||||
-rw-r--r-- | cmd/bootdev.c | 1 | ||||
-rw-r--r-- | cmd/bootflow.c | 1 | ||||
-rw-r--r-- | cmd/booti.c | 3 | ||||
-rw-r--r-- | cmd/bootm.c | 3 | ||||
-rw-r--r-- | cmd/bootmenu.c | 1 | ||||
-rw-r--r-- | cmd/bootmeth.c | 1 | ||||
-rw-r--r-- | cmd/bootstage.c | 11 | ||||
-rw-r--r-- | cmd/bootz.c | 3 | ||||
-rw-r--r-- | cmd/broadcom/chimp_boot.c | 1 | ||||
-rw-r--r-- | cmd/broadcom/chimp_handshake.c | 1 | ||||
-rw-r--r-- | cmd/broadcom/nitro_image_load.c | 2 | ||||
-rw-r--r-- | cmd/btrfs.c | 1 | ||||
-rw-r--r-- | cmd/button.c | 1 | ||||
-rw-r--r-- | cmd/cache.c | 20 | ||||
-rw-r--r-- | cmd/cat.c | 1 | ||||
-rw-r--r-- | cmd/cbfs.c | 2 | ||||
-rw-r--r-- | cmd/cedit.c | 1 | ||||
-rw-r--r-- | cmd/cli.c | 9 | ||||
-rw-r--r-- | cmd/clk.c | 1 | ||||
-rw-r--r-- | cmd/clone.c | 2 | ||||
-rw-r--r-- | cmd/cls.c | 1 | ||||
-rw-r--r-- | cmd/config.c | 1 | ||||
-rw-r--r-- | cmd/conitrace.c | 1 | ||||
-rw-r--r-- | cmd/console.c | 2 | ||||
-rw-r--r-- | cmd/cpu.c | 45 | ||||
-rw-r--r-- | cmd/cramfs.c | 3 | ||||
-rw-r--r-- | cmd/cros_ec.c | 1 | ||||
-rw-r--r-- | cmd/cyclic.c | 15 | ||||
-rw-r--r-- | cmd/date.c | 33 | ||||
-rw-r--r-- | cmd/demo.c | 1 | ||||
-rw-r--r-- | cmd/dfu.c | 1 | ||||
-rw-r--r-- | cmd/diag.c | 1 | ||||
-rw-r--r-- | cmd/disk.c | 1 | ||||
-rw-r--r-- | cmd/dm.c | 1 | ||||
-rw-r--r-- | cmd/echo.c | 1 | ||||
-rw-r--r-- | cmd/eeprom.c | 307 | ||||
-rw-r--r-- | cmd/efi.c | 1 | ||||
-rw-r--r-- | cmd/efi_common.c | 1 | ||||
-rw-r--r-- | cmd/eficonfig.c | 84 | ||||
-rw-r--r-- | cmd/eficonfig_sbkey.c | 1 | ||||
-rw-r--r-- | cmd/efidebug.c | 130 | ||||
-rw-r--r-- | cmd/elf.c | 63 | ||||
-rw-r--r-- | cmd/ethsw.c | 2 | ||||
-rw-r--r-- | cmd/event.c | 1 | ||||
-rw-r--r-- | cmd/exit.c | 2 | ||||
-rw-r--r-- | cmd/ext2.c | 1 | ||||
-rw-r--r-- | cmd/ext4.c | 1 | ||||
-rw-r--r-- | cmd/extension_board.c | 2 | ||||
-rw-r--r-- | cmd/fastboot.c | 1 | ||||
-rw-r--r-- | cmd/fat.c | 2 | ||||
-rw-r--r-- | cmd/fdt.c | 1 | ||||
-rw-r--r-- | cmd/flash.c | 2 | ||||
-rw-r--r-- | cmd/font.c | 2 | ||||
-rw-r--r-- | cmd/fpga.c | 1 | ||||
-rw-r--r-- | cmd/fpgad.c | 2 | ||||
-rw-r--r-- | cmd/fs.c | 1 | ||||
-rw-r--r-- | cmd/fs_uuid.c | 1 | ||||
-rw-r--r-- | cmd/fuse.c | 2 | ||||
-rw-r--r-- | cmd/fwu_mdata.c | 40 | ||||
-rw-r--r-- | cmd/gettime.c | 2 | ||||
-rw-r--r-- | cmd/gpio.c | 1 | ||||
-rw-r--r-- | cmd/gpt.c | 6 | ||||
-rw-r--r-- | cmd/hash.c | 1 | ||||
-rw-r--r-- | cmd/help.c | 1 | ||||
-rw-r--r-- | cmd/history.c | 1 | ||||
-rw-r--r-- | cmd/host.c | 1 | ||||
-rw-r--r-- | cmd/i2c.c | 24 | ||||
-rw-r--r-- | cmd/ide.c | 1 | ||||
-rw-r--r-- | cmd/ini.c | 2 | ||||
-rw-r--r-- | cmd/io.c | 2 | ||||
-rw-r--r-- | cmd/iotrace.c | 2 | ||||
-rw-r--r-- | cmd/irq.c | 1 | ||||
-rw-r--r-- | cmd/itest.c | 2 | ||||
-rw-r--r-- | cmd/jffs2.c | 1 | ||||
-rw-r--r-- | cmd/kaslrseed.c | 52 | ||||
-rw-r--r-- | cmd/led.c | 11 | ||||
-rw-r--r-- | cmd/legacy-mtd-utils.c | 1 | ||||
-rw-r--r-- | cmd/legacy_led.c | 3 | ||||
-rw-r--r-- | cmd/license.c | 1 | ||||
-rw-r--r-- | cmd/load.c | 16 | ||||
-rw-r--r-- | cmd/log.c | 1 | ||||
-rw-r--r-- | cmd/lsblk.c | 1 | ||||
-rw-r--r-- | cmd/lzmadec.c | 2 | ||||
-rw-r--r-- | cmd/mbr.c | 2 | ||||
-rw-r--r-- | cmd/mdio.c | 1 | ||||
-rw-r--r-- | cmd/mem.c | 4 | ||||
-rw-r--r-- | cmd/meson/sm.c | 2 | ||||
-rw-r--r-- | cmd/mii.c | 1 | ||||
-rw-r--r-- | cmd/misc.c | 1 | ||||
-rw-r--r-- | cmd/mmc.c | 14 | ||||
-rw-r--r-- | cmd/mp.c | 3 | ||||
-rw-r--r-- | cmd/mtd.c | 1 | ||||
-rw-r--r-- | cmd/mtdparts.c | 5 | ||||
-rw-r--r-- | cmd/mux.c | 1 | ||||
-rw-r--r-- | cmd/mvebu/bubt.c | 1 | ||||
-rw-r--r-- | cmd/mvebu/comphy_rx_training.c | 1 | ||||
-rw-r--r-- | cmd/nand.c | 1 | ||||
-rw-r--r-- | cmd/net.c | 2 | ||||
-rw-r--r-- | cmd/nvedit.c | 2 | ||||
-rw-r--r-- | cmd/nvedit_efi.c | 1 | ||||
-rw-r--r-- | cmd/nvme.c | 1 | ||||
-rw-r--r-- | cmd/onenand.c | 1 | ||||
-rw-r--r-- | cmd/optee_rpmb.c | 1 | ||||
-rw-r--r-- | cmd/osd.c | 1 | ||||
-rw-r--r-- | cmd/panic.c | 2 | ||||
-rw-r--r-- | cmd/part.c | 2 | ||||
-rw-r--r-- | cmd/pcap.c | 2 | ||||
-rw-r--r-- | cmd/pci.c | 1 | ||||
-rw-r--r-- | cmd/pci_mps.c | 1 | ||||
-rw-r--r-- | cmd/pinmux.c | 1 | ||||
-rw-r--r-- | cmd/pmc.c | 1 | ||||
-rw-r--r-- | cmd/pmic.c | 1 | ||||
-rw-r--r-- | cmd/printf.c | 2 | ||||
-rw-r--r-- | cmd/pvblock.c | 1 | ||||
-rw-r--r-- | cmd/pxe.c | 2 | ||||
-rw-r--r-- | cmd/qfw.c | 1 | ||||
-rw-r--r-- | cmd/read.c | 2 | ||||
-rw-r--r-- | cmd/reginfo.c | 1 | ||||
-rw-r--r-- | cmd/regulator.c | 1 | ||||
-rw-r--r-- | cmd/remoteproc.c | 1 | ||||
-rw-r--r-- | cmd/riscv/exception.c | 5 | ||||
-rw-r--r-- | cmd/riscv/sbi.c | 1 | ||||
-rw-r--r-- | cmd/rkmtd.c | 1 | ||||
-rw-r--r-- | cmd/rng.c | 1 | ||||
-rw-r--r-- | cmd/rockusb.c | 1 | ||||
-rw-r--r-- | cmd/rtc.c | 1 | ||||
-rw-r--r-- | cmd/sata.c | 1 | ||||
-rw-r--r-- | cmd/sb.c | 7 | ||||
-rw-r--r-- | cmd/scmi.c | 5 | ||||
-rw-r--r-- | cmd/scp03.c | 1 | ||||
-rw-r--r-- | cmd/scsi.c | 1 | ||||
-rw-r--r-- | cmd/seama.c | 1 | ||||
-rw-r--r-- | cmd/setexpr.c | 3 | ||||
-rw-r--r-- | cmd/sf.c | 2 | ||||
-rw-r--r-- | cmd/sha1sum.c | 1 | ||||
-rw-r--r-- | cmd/sleep.c | 3 | ||||
-rw-r--r-- | cmd/smccc.c | 2 | ||||
-rw-r--r-- | cmd/sound.c | 3 | ||||
-rw-r--r-- | cmd/source.c | 1 | ||||
-rw-r--r-- | cmd/spi.c | 1 | ||||
-rw-r--r-- | cmd/spl.c | 2 | ||||
-rw-r--r-- | cmd/stackprot_test.c | 1 | ||||
-rw-r--r-- | cmd/strings.c | 2 | ||||
-rw-r--r-- | cmd/sysboot.c | 2 | ||||
-rw-r--r-- | cmd/temperature.c | 1 | ||||
-rw-r--r-- | cmd/terminal.c | 2 | ||||
-rw-r--r-- | cmd/test.c | 2 | ||||
-rw-r--r-- | cmd/thordown.c | 1 | ||||
-rw-r--r-- | cmd/ti/ddr3.c | 1 | ||||
-rw-r--r-- | cmd/ti/pd.c | 1 | ||||
-rw-r--r-- | cmd/time.c | 1 | ||||
-rw-r--r-- | cmd/timer.c | 2 | ||||
-rw-r--r-- | cmd/tlv_eeprom.c | 1 | ||||
-rw-r--r-- | cmd/tpm-common.c | 1 | ||||
-rw-r--r-- | cmd/tpm-v1.c | 2 | ||||
-rw-r--r-- | cmd/tpm-v2.c | 50 | ||||
-rw-r--r-- | cmd/tpm_test.c | 3 | ||||
-rw-r--r-- | cmd/trace.c | 2 | ||||
-rw-r--r-- | cmd/tsi148.c | 2 | ||||
-rw-r--r-- | cmd/ubi.c | 100 | ||||
-rw-r--r-- | cmd/ubifs.c | 3 | ||||
-rw-r--r-- | cmd/ufs.c | 2 | ||||
-rw-r--r-- | cmd/universe.c | 8 | ||||
-rw-r--r-- | cmd/unlz4.c | 6 | ||||
-rw-r--r-- | cmd/unzip.c | 2 | ||||
-rw-r--r-- | cmd/upl.c | 118 | ||||
-rw-r--r-- | cmd/usb.c | 6 | ||||
-rw-r--r-- | cmd/usb_gadget_sdp.c | 1 | ||||
-rw-r--r-- | cmd/usb_mass_storage.c | 1 | ||||
-rw-r--r-- | cmd/vbe.c | 1 | ||||
-rw-r--r-- | cmd/version.c | 1 | ||||
-rw-r--r-- | cmd/video.c | 1 | ||||
-rw-r--r-- | cmd/virtio.c | 1 | ||||
-rw-r--r-- | cmd/w1.c | 1 | ||||
-rw-r--r-- | cmd/wdt.c | 1 | ||||
-rw-r--r-- | cmd/wol.c | 2 | ||||
-rw-r--r-- | cmd/x86/cbsysinfo.c | 1 | ||||
-rw-r--r-- | cmd/x86/exception.c | 5 | ||||
-rw-r--r-- | cmd/x86/fsp.c | 1 | ||||
-rw-r--r-- | cmd/x86/hob.c | 1 | ||||
-rw-r--r-- | cmd/x86/mtrr.c | 2 | ||||
-rw-r--r-- | cmd/x86/zboot.c | 23 | ||||
-rw-r--r-- | cmd/ximg.c | 25 | ||||
-rw-r--r-- | cmd/xxd.c | 1 | ||||
-rw-r--r-- | cmd/yaffs2.c | 2 | ||||
-rw-r--r-- | cmd/zfs.c | 4 | ||||
-rw-r--r-- | cmd/zip.c | 2 |
214 files changed, 984 insertions, 730 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 b026439c773..43f78a5aeb1 100644 --- a/cmd/Kconfig +++ b/cmd/Kconfig @@ -271,7 +271,7 @@ config CMD_BOOTM_PRE_LOAD depends on CMD_BOOTM depends on IMAGE_PRE_LOAD help - Enable support of stage pre-load for the bootm command. + Enable support of stage pre-load for the bootm command. This stage allow to check or modify the image provided to the bootm command. @@ -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. @@ -321,6 +321,13 @@ config BOOTM_EFI help Support booting UEFI FIT images via the bootm command. +config BOOTM_ELF + bool "Support booting ELF images" + depends on CMD_BOOTM && LIB_ELF + default y if LIB_ELF + help + Support booting ELF images via the bootm command. + config CMD_BOOTZ bool "bootz" help @@ -381,6 +388,13 @@ config CMD_SEAMA help Support reading NAND Seattle Image (SEAMA) images. +config CMD_UPL + bool "upl - Universal Payload Specification" + help + Provides commands to deal with UPL payloads and handoff information. + U-Boot supports generating and accepting handoff information. The + mkimage tool will eventually support creating payloads. + config CMD_VBE bool "vbe - Verified Boot for Embedded" depends on BOOTMETH_VBE @@ -493,8 +507,7 @@ config CMD_ELF config CMD_ELF_FDT_SETUP bool "Flattened Device Tree setup in bootelf cmd" depends on CMD_ELF - select LIB_LIBFDT - select LMB + select OF_LIBFDT help Do FDT setup in bootelf command optionally by param -d, which allows to bring additional system info (e.g. /memory node) to @@ -539,6 +552,7 @@ config CMD_IMI config CMD_IMLS bool "imls" + depends on MTD_NOR_FLASH || FLASH_CFI_DRIVER help List all images found in flash @@ -621,7 +635,7 @@ config CMD_ZBOOT Consider using FIT in preference to this since it supports directly booting both 32- and 64-bit kernels, as well as secure boot. - Documentation is available in doc/uImage.FIT/x86-fit-boot.txt + Documentation is available in doc/usage/fit/x86-fit-boot.rst. endmenu @@ -803,9 +817,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 +852,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. @@ -897,9 +918,9 @@ config CMD_MX_CYCLIC bool "Enable cyclic md/mw commands" depends on CMD_MEMORY help - Add the "mdc" and "mwc" memory commands. These are cyclic - "md/mw" commands. - Examples: + Add the "mdc" and "mwc" memory commands. These are cyclic + "md/mw" commands. + Examples: => mdc.b 10 4 500 This command will print 4 bytes (10,11,12,13) each 500 ms. @@ -1023,8 +1044,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 +1188,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 +1624,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 +1638,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. @@ -1792,6 +1816,23 @@ config CMD_DHCP6 Will perform 4-message exchange with DHCPv6 server, requesting the minimum required options to TFTP boot. Complies with RFC 8415. +if CMD_DHCP6 + +config DHCP6_PXE_CLIENTARCH + hex + default 0x16 if ARM64 + default 0x15 if ARM + default 0xFF + +config DHCP6_PXE_DHCP_OPTION + bool "Request & store 'pxe_configfile' from DHCP6 server" + +config DHCP6_ENTERPRISE_ID + int "Enterprise ID to send in DHCPv6 Vendor Class Option" + default 0 + +endif + config BOOTP_MAY_FAIL bool "Allow for the BOOTP/DHCP server to not be found" depends on CMD_BOOTP @@ -1909,23 +1950,6 @@ config BOOTP_VCI_STRING default "U-Boot.arm" if ARM default "U-Boot" -if CMD_DHCP6 - -config DHCP6_PXE_CLIENTARCH - hex - default 0x16 if ARM64 - default 0x15 if ARM - default 0xFF - -config DHCP6_PXE_DHCP_OPTION - bool "Request & store 'pxe_configfile' from DHCP6 server" - -config DHCP6_ENTERPRISE_ID - int "Enterprise ID to send in DHCPv6 Vendor Class Option" - default 0 - -endif - config CMD_TFTPBOOT bool "tftpboot" default y @@ -1986,6 +2010,7 @@ config SYS_DISABLE_AUTOLOAD config CMD_WGET bool "wget" select PROT_TCP + default y if SANDBOX help wget is a simple command to download kernel, or other files, from a http server over TCP. @@ -2150,12 +2175,12 @@ config CMD_BLKMAP Example use-cases: - Treat a region of RAM as a block device, i.e. a RAM disk. This let's - you extract files from filesystem images stored in RAM (perhaps as a - result of a TFTP transfer). + you extract files from filesystem images stored in RAM (perhaps as a + result of a TFTP transfer). - Create a virtual partition on an existing device. This let's you - access filesystems that aren't stored at an exact partition - boundary. A common example is a filesystem image embedded in an FIT - image. + access filesystems that aren't stored at an exact partition + boundary. A common example is a filesystem image embedded in an FIT + image. config CMD_BUTTON bool "button" @@ -2934,7 +2959,7 @@ config CMD_UBI_RENAME bool "Enable rename" depends on CMD_UBI help - Enable a "ubi" command to rename ubi volume: + Enable a "ubi" command to rename ubi volume: ubi rename <oldname> <newname> config CMD_UBIFS diff --git a/cmd/Makefile b/cmd/Makefile index 87133cc27a8..91227f1249c 100644 --- a/cmd/Makefile +++ b/cmd/Makefile @@ -189,6 +189,7 @@ obj-$(CONFIG_CMD_UBIFS) += ubifs.o obj-$(CONFIG_CMD_UNIVERSE) += universe.o obj-$(CONFIG_CMD_UNLZ4) += unlz4.o obj-$(CONFIG_CMD_UNZIP) += unzip.o +obj-$(CONFIG_CMD_UPL) += upl.o obj-$(CONFIG_CMD_VIRTIO) += virtio.o obj-$(CONFIG_CMD_WDT) += wdt.o obj-$(CONFIG_CMD_LZMADEC) += lzmadec.o diff --git a/cmd/ab_select.c b/cmd/ab_select.c index bfb67b8236b..7c178c728ca 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> @@ -36,7 +35,6 @@ static int do_ab_select(struct cmd_tbl *cmdtp, int flag, int argc, return CMD_RET_FAILURE; } - ret = ab_select_slot(dev_desc, &part_info, dec_tries); if (ret < 0) { printf("Android boot failed, error %d.\n", ret); diff --git a/cmd/abootimg.c b/cmd/abootimg.c index 2653b555b10..ae7a1a7c83b 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,11 +22,26 @@ ulong get_abootimg_addr(void) return (_abootimg_addr == -1 ? image_load_addr : _abootimg_addr); } +void set_abootimg_addr(ulong addr) +{ + _abootimg_addr = addr; +} + +ulong get_ainit_bootimg_addr(void) +{ + return _ainit_bootimg_addr; +} + ulong get_avendor_bootimg_addr(void) { return _avendor_bootimg_addr; } +void set_avendor_bootimg_addr(ulong addr) +{ + _avendor_bootimg_addr = addr; +} + static int abootimg_get_ver(int argc, char *const argv[]) { const struct andr_boot_img_hdr_v0 *hdr; @@ -180,7 +195,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 +206,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 +269,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 +297,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..97a96c00964 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 { @@ -172,8 +172,8 @@ static int __bcb_initialize(const char *iface, int devnum, const char *partp) return CMD_RET_SUCCESS; err_read_fail: - printf("Error: %d %d:%s read failed (%d)\n", block->uclass_id, - block->devnum, partition->name, ret); + printf("Error: %s %d:%s read failed (%d)\n", iface, devnum, + partition->name, ret); __bcb_reset(); return CMD_RET_FAILURE; } diff --git a/cmd/bdinfo.c b/cmd/bdinfo.c index 79106caeec2..f6e534dd5bb 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> @@ -155,18 +154,13 @@ static int bdinfo_print_all(struct bd_info *bd) if (IS_ENABLED(CONFIG_CMD_NET)) print_eth(); bdinfo_print_num_l("fdt_blob", (ulong)map_to_sysmem(gd->fdt_blob)); - bdinfo_print_num_l("new_fdt", (ulong)map_to_sysmem(gd->new_fdt)); - bdinfo_print_num_l("fdt_size", (ulong)gd->fdt_size); if (IS_ENABLED(CONFIG_VIDEO)) show_video_info(); #if CONFIG_IS_ENABLED(MULTI_DTB_FIT) bdinfo_print_num_l("multi_dtb_fit", (ulong)gd->multi_dtb_fit); #endif if (IS_ENABLED(CONFIG_LMB) && gd->fdt_blob) { - struct lmb lmb; - - lmb_init_and_reserve(&lmb, gd->bd, (void *)gd->fdt_blob); - lmb_dump_all_force(&lmb); + lmb_dump_all_force(); if (IS_ENABLED(CONFIG_OF_REAL)) printf("devicetree = %s\n", fdtdec_get_srcname()); } diff --git a/cmd/bind.c b/cmd/bind.c index be0d4d2a711..c0d31f5eb16 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> @@ -11,8 +10,8 @@ #include <dm/root.h> #include <dm/uclass-internal.h> -static int bind_by_class_index(const char *uclass, int index, - const char *drv_name) +static int bind_by_class_seq(const char *uclass, int seq, + const char *drv_name) { static enum uclass_id uclass_id; struct udevice *dev; @@ -32,9 +31,9 @@ static int bind_by_class_index(const char *uclass, int index, return -EINVAL; } - ret = uclass_find_device(uclass_id, index, &parent); + ret = uclass_find_device_by_seq(uclass_id, seq, &parent); if (!parent || ret) { - printf("Cannot find device %d of class %s\n", index, uclass); + printf("Cannot find device %d of class %s\n", seq, uclass); return ret; } @@ -48,7 +47,7 @@ static int bind_by_class_index(const char *uclass, int index, return 0; } -static int find_dev(const char *uclass, int index, struct udevice **devp) +static int find_dev(const char *uclass, int seq, struct udevice **devp) { static enum uclass_id uclass_id; int rc; @@ -59,21 +58,21 @@ static int find_dev(const char *uclass, int index, struct udevice **devp) return -EINVAL; } - rc = uclass_find_device(uclass_id, index, devp); + rc = uclass_find_device_by_seq(uclass_id, seq, devp); if (!*devp || rc) { - printf("Cannot find device %d of class %s\n", index, uclass); + printf("Cannot find device %d of class %s\n", seq, uclass); return rc; } return 0; } -static int unbind_by_class_index(const char *uclass, int index) +static int unbind_by_class_seq(const char *uclass, int seq) { int ret; struct udevice *dev; - ret = find_dev(uclass, index, &dev); + ret = find_dev(uclass, seq, &dev); if (ret) return ret; @@ -92,8 +91,8 @@ static int unbind_by_class_index(const char *uclass, int index) return 0; } -static int unbind_child_by_class_index(const char *uclass, int index, - const char *drv_name) +static int unbind_child_by_class_seq(const char *uclass, int seq, + const char *drv_name) { struct udevice *parent; int ret; @@ -105,7 +104,7 @@ static int unbind_child_by_class_index(const char *uclass, int index, return -ENOENT; } - ret = find_dev(uclass, index, &parent); + ret = find_dev(uclass, seq, &parent); if (ret) return ret; @@ -218,19 +217,19 @@ static int do_bind_unbind(struct cmd_tbl *cmdtp, int flag, int argc, return CMD_RET_USAGE; ret = unbind_by_node_path(argv[1]); } else if (!by_node && bind) { - int index = (argc > 2) ? dectoul(argv[2], NULL) : 0; + int seq = (argc > 2) ? dectoul(argv[2], NULL) : 0; if (argc != 4) return CMD_RET_USAGE; - ret = bind_by_class_index(argv[1], index, argv[3]); + ret = bind_by_class_seq(argv[1], seq, argv[3]); } else if (!by_node && !bind) { - int index = (argc > 2) ? dectoul(argv[2], NULL) : 0; + int seq = (argc > 2) ? dectoul(argv[2], NULL) : 0; if (argc == 3) - ret = unbind_by_class_index(argv[1], index); + ret = unbind_by_class_seq(argv[1], seq); else if (argc == 4) - ret = unbind_child_by_class_index(argv[1], index, - argv[3]); + ret = unbind_child_by_class_seq(argv[1], seq, + argv[3]); else return CMD_RET_USAGE; } @@ -245,17 +244,17 @@ U_BOOT_CMD( bind, 4, 0, do_bind_unbind, "Bind a device to a driver", "<node path> <driver>\n" - "bind <class> <index> <driver>\n" + "bind <class> <seq> <driver>\n" "Use 'dm tree' to list all devices registered in the driver model,\n" - "their path, class, index and current driver.\n" + "their path, class, sequence and current driver.\n" ); U_BOOT_CMD( unbind, 4, 0, do_bind_unbind, "Unbind a device from a driver", "<node path>\n" - "unbind <class> <index>\n" - "unbind <class> <index> <driver>\n" + "unbind <class> <seq>\n" + "unbind <class> <seq> <driver>\n" "Use 'dm tree' to list all devices registered in the driver model,\n" - "their path, class, index and current driver.\n" + "their path, class, sequence and current driver.\n" ); 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..6018cbacf0a 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> @@ -88,7 +87,7 @@ static int booti_start(struct bootm_info *bmi) images->os.start = relocated_addr; images->os.end = relocated_addr + image_size; - lmb_reserve(&images->lmb, images->ep, le32_to_cpu(image_size)); + lmb_reserve(images->ep, le32_to_cpu(image_size)); /* * Handle the BOOTM_STATE_FINDOTHER state ourselves as we do not diff --git a/cmd/bootm.c b/cmd/bootm.c index 9737a2d28c0..bee683d0580 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> @@ -257,7 +256,6 @@ U_BOOT_CMD( #endif - /*******************************************************************/ /* iminfo - print header info for a requested image */ /*******************************************************************/ @@ -362,7 +360,6 @@ U_BOOT_CMD( ); #endif - /*******************************************************************/ /* imls - list all images found in flash */ /*******************************************************************/ 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..8248c41ca82 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[]) @@ -15,6 +15,7 @@ static int do_bootstage_report(struct cmd_tbl *cmdtp, int flag, int argc, return 0; } +#if IS_ENABLED(CONFIG_BOOTSTAGE_STASH) static int get_base_size(int argc, char *const argv[], ulong *basep, ulong *sizep) { @@ -58,11 +59,14 @@ static int do_bootstage_stash(struct cmd_tbl *cmdtp, int flag, int argc, return 0; } +#endif static struct cmd_tbl cmd_bootstage_sub[] = { U_BOOT_CMD_MKENT(report, 2, 1, do_bootstage_report, "", ""), +#if IS_ENABLED(CONFIG_BOOTSTAGE_STASH) U_BOOT_CMD_MKENT(stash, 4, 0, do_bootstage_stash, "", ""), U_BOOT_CMD_MKENT(unstash, 4, 0, do_bootstage_stash, "", ""), +#endif }; /* @@ -86,11 +90,12 @@ static int do_boostage(struct cmd_tbl *cmdtp, int flag, int argc, return CMD_RET_USAGE; } - U_BOOT_CMD(bootstage, 4, 1, do_boostage, "Boot stage command", " - check boot progress and timing\n" "report - Print a report\n" +#if IS_ENABLED(CONFIG_BOOTSTAGE_STASH) "stash [<start> [<size>]] - Stash data into memory\n" - "unstash [<start> [<size>]] - Unstash data from memory" + "unstash [<start> [<size>]] - Unstash data from memory\n" +#endif ); diff --git a/cmd/bootz.c b/cmd/bootz.c index b6bb4aae72d..787203f5bd7 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> @@ -57,7 +56,7 @@ static int bootz_start(struct cmd_tbl *cmdtp, int flag, int argc, if (ret != 0) return 1; - lmb_reserve(&images->lmb, images->ep, zi_end - zi_start); + lmb_reserve(images->ep, zi_end - zi_start); /* * Handle the BOOTM_STATE_FINDOTHER state ourselves as we do not 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..3049f5c305f 100644 --- a/cmd/cache.c +++ b/cmd/cache.c @@ -7,23 +7,12 @@ /* * Cache support: switch on or off, get status */ -#include <common.h> #include <command.h> #include <cpu_func.h> #include <linux/compiler.h> static int parse_argv(const char *); -void __weak invalidate_icache_all(void) -{ - /* please define arch specific invalidate_icache_all */ - puts("No arch specific invalidate_icache_all available!\n"); -} - -__weak void noncached_set_region(void) -{ -} - static int do_icache(struct cmd_tbl *cmdtp, int flag, int argc, char *const argv[]) { @@ -53,12 +42,6 @@ static int do_icache(struct cmd_tbl *cmdtp, int flag, int argc, return 0; } -void __weak flush_dcache_all(void) -{ - puts("No arch specific flush_dcache_all available!\n"); - /* please define arch specific flush_dcache_all */ -} - static int do_dcache(struct cmd_tbl *cmdtp, int flag, int argc, char *const argv[]) { @@ -70,7 +53,9 @@ static int do_dcache(struct cmd_tbl *cmdtp, int flag, int argc, break; case 1: dcache_enable(); +#ifdef CONFIG_SYS_NONCACHED_MEMORY noncached_set_region(); +#endif break; case 2: flush_dcache_all(); @@ -101,7 +86,6 @@ static int parse_argv(const char *s) return -1; } - U_BOOT_CMD( icache, 2, 1, do_icache, "enable or disable instruction cache", 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..a8133ee3fa3 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> @@ -48,7 +47,6 @@ static int do_coninfo(struct cmd_tbl *cmd, int flag, int argc, return 0; } - /***************************************************/ U_BOOT_CMD( diff --git a/cmd/cpu.c b/cmd/cpu.c index 245a82fa3eb..27552507564 100644 --- a/cmd/cpu.c +++ b/cmd/cpu.c @@ -3,9 +3,9 @@ * Copyright (c) 2015 Google, Inc * Written by Simon Glass <sjg@chromium.org> * Copyright (c) 2017 Álvaro Fernández Rojas <noltari@gmail.com> + * Copyright 2024 NXP */ -#include <common.h> #include <command.h> #include <cpu.h> #include <display_options.h> @@ -19,6 +19,19 @@ static const char *cpu_feature_name[CPU_FEAT_COUNT] = { "Device ID", }; +static struct udevice *cpu_find_device(unsigned long cpu_id) +{ + struct udevice *dev; + + for (uclass_first_device(UCLASS_CPU, &dev); dev; + uclass_next_device(&dev)) { + if (cpu_id == dev_seq(dev)) + return dev; + } + + return NULL; +} + static int print_cpu_list(bool detail) { struct udevice *dev; @@ -83,10 +96,36 @@ static int do_cpu_detail(struct cmd_tbl *cmdtp, int flag, int argc, return 0; } +static int do_cpu_release(struct cmd_tbl *cmdtp, int flag, int argc, + char *const argv[]) +{ + struct udevice *dev; + unsigned long cpu_id; + unsigned long long boot_addr; + + if (argc != 3) + return CMD_RET_USAGE; + + cpu_id = dectoul(argv[1], NULL); + dev = cpu_find_device(cpu_id); + if (!dev) + return CMD_RET_FAILURE; + + boot_addr = simple_strtoull(argv[2], NULL, 16); + + if (cpu_release_core(dev, boot_addr)) + return CMD_RET_FAILURE; + + return 0; +} + U_BOOT_LONGHELP(cpu, "list - list available CPUs\n" - "cpu detail - show CPU detail"); + "cpu detail - show CPU detail\n" + "cpu release <core ID> <addr> - Release CPU <core ID> at <addr>\n" + " <core ID>: the sequence number in list subcommand outputs"); U_BOOT_CMD_WITH_SUBCMDS(cpu, "display information about CPUs", cpu_help_text, U_BOOT_SUBCMD_MKENT(list, 1, 1, do_cpu_list), - U_BOOT_SUBCMD_MKENT(detail, 1, 0, do_cpu_detail)); + U_BOOT_SUBCMD_MKENT(detail, 1, 0, do_cpu_detail), + U_BOOT_SUBCMD_MKENT(release, 3, 0, do_cpu_release)); diff --git a/cmd/cramfs.c b/cmd/cramfs.c index 57e2afa2472..baff50d1bd6 100644 --- a/cmd/cramfs.c +++ b/cmd/cramfs.c @@ -6,11 +6,9 @@ * Add support for a CRAMFS located in RAM */ - /* * CRAMFS support */ -#include <common.h> #include <command.h> #include <env.h> #include <image.h> @@ -33,7 +31,6 @@ # define DEBUGF(fmt, args...) #endif - #ifndef CONFIG_MTD_NOR_FLASH # define OFFSET_ADJUSTMENT 0 #else 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..8614f022761 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> @@ -32,7 +31,6 @@ static int do_date(struct cmd_tbl *cmdtp, int flag, int argc, int old_bus __maybe_unused; /* switch to correct I2C bus */ -#ifdef CONFIG_DM_RTC struct udevice *dev; rcode = uclass_get_device_by_seq(UCLASS_RTC, 0, &dev); @@ -43,35 +41,19 @@ static int do_date(struct cmd_tbl *cmdtp, int flag, int argc, return CMD_RET_FAILURE; } } -#elif CONFIG_IS_ENABLED(SYS_I2C_LEGACY) - old_bus = i2c_get_bus_num(); - i2c_set_bus_num(CFG_SYS_RTC_BUS_NUM); -#else - old_bus = I2C_GET_BUS(); - I2C_SET_BUS(CFG_SYS_RTC_BUS_NUM); -#endif switch (argc) { case 2: /* set date & time */ if (strcmp(argv[1],"reset") == 0) { puts ("Reset RTC...\n"); -#ifdef CONFIG_DM_RTC rcode = dm_rtc_reset(dev); if (!rcode) rcode = dm_rtc_set(dev, &default_tm); -#else - rtc_reset(); - rcode = rtc_set(&default_tm); -#endif if (rcode) puts("## Failed to set date after RTC reset\n"); } else { /* initialize tm with current time */ -#ifdef CONFIG_DM_RTC rcode = dm_rtc_get(dev, &tm); -#else - rcode = rtc_get(&tm); -#endif if (!rcode) { /* insert new date & time */ if (mk_date(argv[1], &tm) != 0) { @@ -79,11 +61,7 @@ static int do_date(struct cmd_tbl *cmdtp, int flag, int argc, break; } /* and write to RTC */ -#ifdef CONFIG_DM_RTC rcode = dm_rtc_set(dev, &tm); -#else - rcode = rtc_set(&tm); -#endif if (rcode) { printf("## Set date failed: err=%d\n", rcode); @@ -94,11 +72,7 @@ static int do_date(struct cmd_tbl *cmdtp, int flag, int argc, } fallthrough; case 1: /* get date & time */ -#ifdef CONFIG_DM_RTC rcode = dm_rtc_get(dev, &tm); -#else - rcode = rtc_get(&tm); -#endif if (rcode) { puts("## Get date failed\n"); break; @@ -115,13 +89,6 @@ static int do_date(struct cmd_tbl *cmdtp, int flag, int argc, rcode = CMD_RET_USAGE; } - /* switch back to original I2C bus */ -#if CONFIG_IS_ENABLED(SYS_I2C_LEGACY) - i2c_set_bus_num(old_bus); -#elif !defined(CONFIG_DM_RTC) - I2C_SET_BUS(old_bus); -#endif - return rcode ? CMD_RET_FAILURE : 0; } 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..f07e344a596 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,39 +63,39 @@ 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)) + fdt_set_totalsize((void *)fdt_addr, + fdt_totalsize(fdt_addr) + CONFIG_SYS_FDT_PAD); + if (image_setup_libfdt(&img, (void *)fdt_addr, false)) return 1; } #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..6c14d0ddebd 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> @@ -99,7 +98,6 @@ static int extension_scan(bool show) return extension_num; } - static int do_extension_scan(struct cmd_tbl *cmdtp, int flag, int argc, char *const argv[]) { 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..1655e80e945 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> @@ -33,7 +32,6 @@ int do_fat_fsload(struct cmd_tbl *cmdtp, int flag, int argc, char *const argv[]) return do_load(cmdtp, flag, argc, argv, FS_TYPE_FAT); } - U_BOOT_CMD( fatload, 7, 0, do_fat_fsload, "load binary file from a dos filesystem", 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..eb13fb12f79 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> @@ -78,7 +77,6 @@ static int do_font_size(struct cmd_tbl *cmdtp, int flag, int argc, return 0; } - U_BOOT_LONGHELP(font, "list - list available fonts\n" "font select <name> [<size>] - select font to use\n" 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..86b7701886a 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> @@ -117,6 +116,7 @@ static char *extract_val(const char *str, const char *key) k = strsep(&v, "="); if (!k) break; + k += strspn(k, " \t"); if (strcmp(k, key) == 0) { new = strdup(v); break; @@ -151,6 +151,7 @@ static bool found_key(const char *str, const char *key) k = strsep(&s, ","); if (!k) break; + k += strspn(k, " \t"); if (strcmp(k, key) == 0) { result = true; break; @@ -683,7 +684,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..7246c4fa3e7 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> @@ -1699,18 +1698,6 @@ static int do_i2c_show_bus(struct cmd_tbl *cmdtp, int flag, int argc, for (i = 0; i < CFG_SYS_NUM_I2C_BUSES; i++) { printf("Bus %d:\t%s", i, I2C_ADAP_NR(i)->name); -#ifndef CFG_SYS_I2C_DIRECT_BUS - int j; - - for (j = 0; j < CFG_SYS_I2C_MAX_HOPS; j++) { - if (i2c_bus[i].next_hop[j].chip == 0) - break; - printf("->%s@0x%2x:%d", - i2c_bus[i].next_hop[j].mux.name, - i2c_bus[i].next_hop[j].chip, - i2c_bus[i].next_hop[j].channel); - } -#endif printf("\n"); } #endif @@ -1735,17 +1722,6 @@ static int do_i2c_show_bus(struct cmd_tbl *cmdtp, int flag, int argc, return -1; } printf("Bus %d:\t%s", i, I2C_ADAP_NR(i)->name); -#ifndef CFG_SYS_I2C_DIRECT_BUS - int j; - for (j = 0; j < CFG_SYS_I2C_MAX_HOPS; j++) { - if (i2c_bus[i].next_hop[j].chip == 0) - break; - printf("->%s@0x%2x:%d", - i2c_bus[i].next_hop[j].mux.name, - i2c_bus[i].next_hop[j].chip, - i2c_bus[i].next_hop[j].channel); - } -#endif printf("\n"); #endif } 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..91fb856ee59 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> @@ -16,9 +15,7 @@ static const char *const state_label[] = { [LEDST_OFF] = "off", [LEDST_ON] = "on", [LEDST_TOGGLE] = "toggle", -#ifdef CONFIG_LED_BLINK [LEDST_BLINK] = "blink", -#endif }; enum led_state_t get_led_cmd(char *var) @@ -76,9 +73,7 @@ int do_led(struct cmd_tbl *cmdtp, int flag, int argc, char *const argv[]) enum led_state_t cmd; const char *led_label; struct udevice *dev; -#ifdef CONFIG_LED_BLINK int freq_ms = 0; -#endif int ret; /* Validate arguments */ @@ -89,13 +84,11 @@ int do_led(struct cmd_tbl *cmdtp, int flag, int argc, char *const argv[]) return list_leds(); cmd = argc > 2 ? get_led_cmd(argv[2]) : LEDST_COUNT; -#ifdef CONFIG_LED_BLINK if (cmd == LEDST_BLINK) { if (argc < 4) return CMD_RET_USAGE; freq_ms = dectoul(argv[3], NULL); } -#endif ret = led_get_by_label(led_label, &dev); if (ret) { printf("LED '%s' not found (err=%d)\n", led_label, ret); @@ -107,13 +100,11 @@ int do_led(struct cmd_tbl *cmdtp, int flag, int argc, char *const argv[]) case LEDST_TOGGLE: ret = led_set_state(dev, cmd); break; -#ifdef CONFIG_LED_BLINK case LEDST_BLINK: ret = led_set_period(dev, freq_ms); if (!ret) ret = led_set_state(dev, LEDST_BLINK); break; -#endif case LEDST_COUNT: printf("LED '%s': ", led_label); ret = show_led_state(dev); @@ -127,7 +118,7 @@ int do_led(struct cmd_tbl *cmdtp, int flag, int argc, char *const argv[]) return 0; } -#ifdef CONFIG_LED_BLINK +#if defined(CONFIG_LED_BLINK) || defined(CONFIG_LED_SW_BLINK) #define BLINK "|blink [blink-freq in ms]" #else #define BLINK "" 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..20d802502ae 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> @@ -142,7 +141,6 @@ static int do_load_serial(struct cmd_tbl *cmdtp, int flag, int argc, static ulong load_serial(long offset) { - struct lmb lmb; char record[SREC_MAXRECLEN + 1]; /* buffer for one S-Record */ char binbuf[SREC_MAXBINLEN]; /* buffer for binary data */ int binlen; /* no. of data bytes in S-Rec. */ @@ -155,8 +153,6 @@ static ulong load_serial(long offset) int line_count = 0; long ret; - lmb_init_and_reserve(&lmb, gd->bd, (void *)gd->fdt_blob); - while (read_record(record, SREC_MAXRECLEN + 1) >= 0) { type = srec_decode(record, &binlen, &addr, binbuf); @@ -183,7 +179,7 @@ static ulong load_serial(long offset) { void *dst; - ret = lmb_reserve(&lmb, store_addr, binlen); + ret = lmb_reserve(store_addr, binlen); if (ret) { printf("\nCannot overwrite reserved area (%08lx..%08lx)\n", store_addr, store_addr + binlen); @@ -192,7 +188,7 @@ static ulong load_serial(long offset) dst = map_sysmem(store_addr, binlen); memcpy(dst, binbuf, binlen); unmap_sysmem(dst); - lmb_free(&lmb, store_addr, binlen); + lmb_free(store_addr, binlen); } if ((store_addr) < start_addr) start_addr = store_addr; @@ -418,7 +414,6 @@ static int write_record(char *buf) #endif - #if defined(CONFIG_CMD_LOADB) /* * loadb command (load binary) included @@ -442,7 +437,6 @@ static void set_kerm_bin_mode(unsigned long *); static int k_recv(void); static ulong load_serial_bin(ulong offset); - static char his_eol; /* character he needs at end of packet */ static int his_pad_count; /* number of pad chars he needs */ static char his_pad_char; /* pad chars he needs */ @@ -558,7 +552,6 @@ static int do_load_serial_bin(struct cmd_tbl *cmdtp, int flag, int argc, return rcode; } - static ulong load_serial_bin(ulong offset) { int size, i; @@ -653,7 +646,6 @@ static void send_nack(int n) s1_sendpacket(a_b); } - static void (*os_data_init)(void); static void (*os_data_char)(char new_char); static int os_data_state, os_data_state_saved; @@ -694,7 +686,6 @@ static void set_kerm_bin_mode(unsigned long *addr) os_data_char = bin_data_char; } - /* k_data_* simply handles the kermit escape translations */ static int k_data_escape, k_data_escape_saved; static void k_data_init(void) @@ -1067,7 +1058,6 @@ static ulong load_serial_ymodem(ulong offset, int mode) xyzModem_stream_terminate(false, &getcxmodem); xyzModem_stream_close(&err); - flush_cache(offset, ALIGN(size, ARCH_DMA_MINALIGN)); printf("## Total Size = 0x%08x = %d Bytes\n", size, size); @@ -1142,7 +1132,6 @@ U_BOOT_CMD( * SAVES always requires LOADS support, but not vice versa */ - #if defined(CONFIG_CMD_SAVES) #ifdef CONFIG_SYS_LOADS_BAUD_CHANGE U_BOOT_CMD( @@ -1163,7 +1152,6 @@ U_BOOT_CMD( #endif /* CONFIG_CMD_SAVES */ #endif /* CONFIG_CMD_LOADS */ - #if defined(CONFIG_CMD_LOADB) U_BOOT_CMD( loadb, 3, 0, do_load_serial_bin, 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..274348068c2 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> @@ -1316,14 +1316,12 @@ U_BOOT_CMD( "[.b, .w, .l" HELP_Q "] address [# of objects]" ); - U_BOOT_CMD( mm, 2, 1, do_mem_mm, "memory modify (auto-incrementing address)", "[.b, .w, .l" HELP_Q "] address" ); - U_BOOT_CMD( nm, 2, 1, do_mem_nm, "memory modify (constant address)", 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 02316796ba4..9a841c25d3d 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> #include <linux/ctype.h> static int curr_device = -1; @@ -239,7 +239,7 @@ static int do_mmcrpmb_read(struct cmd_tbl *cmdtp, int flag, if (argc == 5) key_addr = (void *)hextoul(argv[4], NULL); - printf("\nMMC RPMB read: dev # %d, block # %d, count %d ... ", + printf("MMC RPMB read: dev # %d, block # %d, count %d ... ", curr_device, blk, cnt); n = mmc_rpmb_read(mmc, addr, blk, cnt, key_addr); @@ -266,7 +266,7 @@ static int do_mmcrpmb_write(struct cmd_tbl *cmdtp, int flag, cnt = hextoul(argv[3], NULL); key_addr = (void *)hextoul(argv[4], NULL); - printf("\nMMC RPMB write: dev # %d, block # %d, count %d ... ", + printf("MMC RPMB write: dev # %d, block # %d, count %d ... ", curr_device, blk, cnt); n = mmc_rpmb_write(mmc, addr, blk, cnt, key_addr); @@ -363,7 +363,7 @@ static int do_mmc_read(struct cmd_tbl *cmdtp, int flag, if (!mmc) return CMD_RET_FAILURE; - printf("\nMMC read: dev # %d, block # %d, count %d ... ", + printf("MMC read: dev # %d, block # %d, count %d ... ", curr_device, blk, cnt); n = blk_dread(mmc_get_blk_desc(mmc), blk, cnt, addr); @@ -412,7 +412,7 @@ static int do_mmc_sparse_write(struct cmd_tbl *cmdtp, int flag, if (!mmc) return CMD_RET_FAILURE; - printf("\nMMC Sparse write: dev # %d, block # %d ... ", + printf("MMC Sparse write: dev # %d, block # %d ... ", curr_device, blk); if (mmc_getwp(mmc) == 1) { @@ -456,7 +456,7 @@ static int do_mmc_write(struct cmd_tbl *cmdtp, int flag, if (!mmc) return CMD_RET_FAILURE; - printf("\nMMC write: dev # %d, block # %d, count %d ... ", + printf("MMC write: dev # %d, block # %d, count %d ... ", curr_device, blk, cnt); if (mmc_getwp(mmc) == 1) { @@ -485,7 +485,7 @@ static int do_mmc_erase(struct cmd_tbl *cmdtp, int flag, if (!mmc) return CMD_RET_FAILURE; - printf("\nMMC erase: dev # %d, block # %d, count %d ... ", + printf("MMC erase: dev # %d, block # %d, count %d ... ", curr_device, blk, cnt); if (mmc_getwp(mmc) == 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) { @@ -42,7 +42,6 @@ cpu_cmd(struct cmd_tbl *cmdtp, int flag, int argc, char *const argv[]) return 1; } - if (argc == 3) { if (strncmp(argv[2], "reset", 5) == 0) cpu_reset(cpuid); 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..a021b2d198d 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> @@ -292,7 +291,6 @@ static void current_save(void) index_partitions(); } - /** * Produce a mtd_info given a type and num. * @@ -402,7 +400,6 @@ static int part_validate_eraseblock(struct mtdids *id, struct part_info *part) return 0; } - /** * Performs sanity check for supplied partition. Offset and size are * verified to be within valid range. Partition type is checked and @@ -1129,7 +1126,6 @@ static int generate_mtdparts(char *buf, u32 buflen) p += len; maxlen -= len; - /* add offset only when there is a gap between * partitions */ if ((!prev_part && (offset != 0)) || @@ -1710,7 +1706,6 @@ static int parse_mtdids(const char *const ids) return 0; } - /** * Parse and initialize global mtdids mapping and create global * device/partition list. 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 1e3f5bf7add..5e4ffc40d72 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..53ce2bc5d0c 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> @@ -98,7 +97,6 @@ U_BOOT_CMD( ); #endif - #ifdef CONFIG_CMD_RARP int do_rarpb(struct cmd_tbl *cmdtp, int flag, int argc, char *const argv[]) { 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/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> @@ -15,8 +14,10 @@ static int do_sb_handoff(struct cmd_tbl *cmdtp, int flag, int argc, char *const argv[]) { #if CONFIG_IS_ENABLED(HANDOFF) - if (gd->spl_handoff) - printf("SPL handoff magic %lx\n", gd->spl_handoff->arch.magic); + struct spl_handoff *handoff = handoff_get(); + + if (handoff) + printf("SPL handoff magic %lx\n", handoff->arch.magic); else printf("SPL handoff info not received\n"); 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 0b7f9599716..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> @@ -99,7 +98,7 @@ U_BOOT_CMD( sound, INT_MAX, 1, do_sound, "sound sub-system", "init - initialise the sound driver\n" - "sound play [[[-q|-s] len [freq]] ...] - play sounds\n" + "sound play [len [freq [len [freq ...]]]] - play sounds\n" " len - duration in ms\n" " freq - frequency in Hz\n" ); 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..76fe33762df 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> @@ -67,7 +66,6 @@ static int call_bootm(int argc, char *const argv[], const char *subcommand[]) bootm_argv[2] = argv[0]; /* kernel addr */ } - /* * - do the work - * exec subcommands of do_bootm to init the images 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..d803bc6c896 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> @@ -67,7 +66,6 @@ int do_terminal(struct cmd_tbl *cmd, int flag, int argc, char *const argv[]) return 0; } - /***************************************************/ U_BOOT_CMD( 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 7e479b9dfe3..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> @@ -99,11 +98,19 @@ static int do_tpm2_pcr_extend(struct cmd_tbl *cmdtp, int flag, int argc, struct tpm_chip_priv *priv; u32 index = simple_strtoul(argv[1], NULL, 0); void *digest = map_sysmem(simple_strtoul(argv[2], NULL, 0), 0); + int algo = TPM2_ALG_SHA256; + int algo_len; int ret; u32 rc; - if (argc != 3) + if (argc < 3 || argc > 4) return CMD_RET_USAGE; + if (argc == 4) { + algo = tpm2_name_to_algorithm(argv[3]); + if (algo < 0) + return CMD_RET_FAILURE; + } + algo_len = tpm2_algorithm_to_len(algo); ret = get_tpm(&dev); if (ret) @@ -116,8 +123,12 @@ static int do_tpm2_pcr_extend(struct cmd_tbl *cmdtp, int flag, int argc, if (index >= priv->pcr_count) return -EINVAL; - rc = tpm2_pcr_extend(dev, index, TPM2_ALG_SHA256, digest, - TPM2_DIGEST_LEN); + rc = tpm2_pcr_extend(dev, index, algo, digest, algo_len); + if (!rc) { + printf("PCR #%u extended with %d byte %s digest\n", index, + algo_len, tpm2_algorithm_name(algo)); + print_byte_string(digest, algo_len); + } unmap_sysmem(digest); @@ -127,15 +138,23 @@ static int do_tpm2_pcr_extend(struct cmd_tbl *cmdtp, int flag, int argc, static int do_tpm_pcr_read(struct cmd_tbl *cmdtp, int flag, int argc, char *const argv[]) { + enum tpm2_algorithms algo = TPM2_ALG_SHA256; struct udevice *dev; struct tpm_chip_priv *priv; u32 index, rc; + int algo_len; unsigned int updates; void *data; int ret; - if (argc != 3) + if (argc < 3 || argc > 4) return CMD_RET_USAGE; + if (argc == 4) { + algo = tpm2_name_to_algorithm(argv[3]); + if (algo < 0) + return CMD_RET_FAILURE; + } + algo_len = tpm2_algorithm_to_len(algo); ret = get_tpm(&dev); if (ret) @@ -151,11 +170,12 @@ static int do_tpm_pcr_read(struct cmd_tbl *cmdtp, int flag, int argc, data = map_sysmem(simple_strtoul(argv[2], NULL, 0), 0); - rc = tpm2_pcr_read(dev, index, priv->pcr_select_min, TPM2_ALG_SHA256, - data, TPM2_DIGEST_LEN, &updates); + rc = tpm2_pcr_read(dev, index, priv->pcr_select_min, algo, + data, algo_len, &updates); if (!rc) { - printf("PCR #%u content (%u known updates):\n", index, updates); - print_byte_string(data, TPM2_DIGEST_LEN); + printf("PCR #%u %s %d byte content (%u known updates):\n", index, + tpm2_algorithm_name(algo), algo_len, updates); + print_byte_string(data, algo_len); } unmap_sysmem(data); @@ -415,14 +435,14 @@ U_BOOT_CMD(tpm2, CONFIG_SYS_MAXARGS, 1, do_tpm, "Issue a TPMv2.x command", " <hierarchy> is one of:\n" " * TPM2_RH_LOCKOUT\n" " * TPM2_RH_PLATFORM\n" -"pcr_extend <pcr> <digest_addr>\n" -" Extend PCR #<pcr> with digest at <digest_addr>.\n" +"pcr_extend <pcr> <digest_addr> [<digest_algo>]\n" +" Extend PCR #<pcr> with digest at <digest_addr> with digest_algo.\n" " <pcr>: index of the PCR\n" -" <digest_addr>: address of a 32-byte SHA256 digest\n" -"pcr_read <pcr> <digest_addr>\n" -" Read PCR #<pcr> to memory address <digest_addr>.\n" +" <digest_addr>: address of digest of digest_algo type (defaults to SHA256)\n" +"pcr_read <pcr> <digest_addr> [<digest_algo>]\n" +" Read PCR #<pcr> to memory address <digest_addr> with <digest_algo>.\n" " <pcr>: index of the PCR\n" -" <digest_addr>: address to store the a 32-byte SHA256 digest\n" +" <digest_addr>: address of digest of digest_algo type (defaults to SHA256)\n" "get_capability <capability> <property> <addr> <count>\n" " Read and display <count> entries indexed by <capability>/<property>.\n" " Values are 4 bytes long and are written at <addr>.\n" diff --git a/cmd/tpm_test.c b/cmd/tpm_test.c index c7fa6e775f5..af83d78c3fe 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" @@ -424,7 +424,6 @@ static int test_startup(struct udevice *dev) } \ } while (0) - static int test_timing(struct udevice *dev) { uint8_t in[20], out[20]; 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..0e62e449327 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> @@ -249,7 +248,7 @@ static int ubi_create_vol(char *volume, int64_t size, int dynamic, int vol_id, static struct ubi_volume *ubi_find_volume(char *volume) { - struct ubi_volume *vol = NULL; + struct ubi_volume *vol; int i; for (i = 0; i < ubi->vtbl_slots; i++) { @@ -356,13 +355,18 @@ static int ubi_rename_vol(char *oldname, char *newname) static int ubi_volume_continue_write(char *volume, void *buf, size_t size) { - int err = 1; + int err; struct ubi_volume *vol; vol = ubi_find_volume(volume); if (vol == NULL) return ENODEV; + if (!vol->updating) { + printf("UBI volume update was not initiated\n"); + return EINVAL; + } + err = ubi_more_update_data(ubi, vol, buf, size); if (err < 0) { printf("Couldnt or partially wrote data\n"); @@ -392,8 +396,8 @@ static int ubi_volume_continue_write(char *volume, void *buf, size_t size) int ubi_volume_begin_write(char *volume, void *buf, size_t size, size_t full_size) { - int err = 1; - int rsvd_bytes = 0; + int err; + int rsvd_bytes; struct ubi_volume *vol; vol = ubi_find_volume(volume); @@ -412,21 +416,91 @@ int ubi_volume_begin_write(char *volume, void *buf, size_t size, return -err; } + /* The volume is just wiped out */ + if (!full_size) + return 0; + return ubi_volume_continue_write(volume, buf, size); } -int ubi_volume_write(char *volume, void *buf, size_t size) +static int ubi_volume_offset_write(char *volume, void *buf, loff_t offset, + size_t size) +{ + int len, tbuf_size, ret; + u64 lnum; + struct ubi_volume *vol; + loff_t off = offset; + void *tbuf; + + vol = ubi_find_volume(volume); + if (!vol) + return -ENODEV; + + if (size > vol->reserved_pebs * (ubi->leb_size - vol->data_pad)) + return -EINVAL; + + tbuf_size = vol->usable_leb_size; + tbuf = malloc_cache_aligned(tbuf_size); + if (!tbuf) + return -ENOMEM; + + lnum = off; + off = do_div(lnum, vol->usable_leb_size); + + do { + struct ubi_volume_desc desc = { + .vol = vol, + .mode = UBI_READWRITE, + }; + + len = size > tbuf_size ? tbuf_size : size; + if (off + len >= vol->usable_leb_size) + len = vol->usable_leb_size - off; + + ret = ubi_read(&desc, (int)lnum, tbuf, 0, tbuf_size); + if (ret) { + pr_err("Failed to read leb %lld (%d)\n", lnum, ret); + goto exit; + } + + memcpy(tbuf + off, buf, len); + + ret = ubi_leb_change(&desc, (int)lnum, tbuf, tbuf_size); + if (ret) { + pr_err("Failed to write leb %lld (%d)\n", lnum, ret); + goto exit; + } + + off += len; + if (off >= vol->usable_leb_size) { + lnum++; + off -= vol->usable_leb_size; + } + + buf += len; + size -= len; + } while (size); + +exit: + free(tbuf); + return ret; +} + +int ubi_volume_write(char *volume, void *buf, loff_t offset, size_t size) { - return ubi_volume_begin_write(volume, buf, size, size); + if (!offset) + return ubi_volume_begin_write(volume, buf, size, size); + + return ubi_volume_offset_write(volume, buf, offset, size); } -int ubi_volume_read(char *volume, char *buf, size_t size) +int ubi_volume_read(char *volume, char *buf, loff_t offset, size_t size) { int err, lnum, off, len, tbuf_size; void *tbuf; unsigned long long tmp; struct ubi_volume *vol; - loff_t offp = 0; + loff_t offp = offset; size_t len_read; vol = ubi_find_volume(volume); @@ -574,7 +648,7 @@ static int ubi_detach(void) int ubi_part(char *part_name, const char *vid_header_offset) { struct mtd_info *mtd; - int err = 0; + int err; if (ubi && ubi->mtd && !strcmp(ubi->mtd->name, part_name)) { printf("UBI partition '%s' already selected\n", part_name); @@ -605,7 +679,7 @@ int ubi_part(char *part_name, const char *vid_header_offset) static int do_ubi(struct cmd_tbl *cmdtp, int flag, int argc, char *const argv[]) { - int64_t size = 0; + int64_t size; ulong addr = 0; bool skipcheck = false; @@ -761,7 +835,7 @@ static int do_ubi(struct cmd_tbl *cmdtp, int flag, int argc, char *const argv[]) (void *)addr, size, full_size); } } else { - ret = ubi_volume_write(argv[3], (void *)addr, size); + ret = ubi_volume_write(argv[3], (void *)addr, 0, size); } if (!ret) { printf("%lld bytes written to volume %s\n", size, @@ -787,7 +861,7 @@ static int do_ubi(struct cmd_tbl *cmdtp, int flag, int argc, char *const argv[]) } if (argc == 3) { - return ubi_volume_read(argv[3], (char *)addr, size); + return ubi_volume_read(argv[3], (char *)addr, 0, size); } } diff --git a/cmd/ubifs.c b/cmd/ubifs.c index 2a035bc7ae6..22e95db8ca5 100644 --- a/cmd/ubifs.c +++ b/cmd/ubifs.c @@ -4,18 +4,17 @@ * Stefan Roese, DENX Software Engineering, sr@denx.de. */ - /* * UBIFS command support */ #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..1445d5301f2 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> @@ -14,7 +14,6 @@ #define PCI_VENDOR PCI_VENDOR_ID_TUNDRA #define PCI_DEVICE PCI_DEVICE_ID_TUNDRA_CA91C042 - typedef struct _UNI_DEV UNI_DEV; struct _UNI_DEV { @@ -26,7 +25,6 @@ struct _UNI_DEV { static UNI_DEV *dev; - int universe_init(void) { int j, result; @@ -112,7 +110,6 @@ int universe_init(void) return result; } - /* * Create pci slave window (access: pci -> vme) */ @@ -209,7 +206,6 @@ int universe_pci_slave_window(unsigned int pciAddr, unsigned int vmeAddr, int si return -result; } - /* * Create vme slave window (access: vme -> pci) */ @@ -294,7 +290,6 @@ int universe_vme_slave_window(unsigned int vmeAddr, unsigned int pciAddr, int si return -result; } - /* * Tundra Universe configuration */ @@ -342,7 +337,6 @@ int do_universe(struct cmd_tbl *cmdtp, int flag, int argc, char *const argv[]) return 0; } - U_BOOT_CMD( universe, 8, 1, do_universe, "initialize and configure Turndra Universe", diff --git a/cmd/unlz4.c b/cmd/unlz4.c index 5f20838e899..2eadc753e6c 100644 --- a/cmd/unlz4.c +++ b/cmd/unlz4.c @@ -4,9 +4,10 @@ * FUJITSU COMPUTERTECHNOLOGIES LIMITED. All rights reserved. */ -#include <common.h> #include <command.h> #include <env.h> +#include <mapmem.h> +#include <vsprintf.h> #include <u-boot/lz4.h> static int do_unlz4(struct cmd_tbl *cmdtp, int flag, int argc, @@ -26,7 +27,8 @@ static int do_unlz4(struct cmd_tbl *cmdtp, int flag, int argc, return CMD_RET_USAGE; } - ret = ulz4fn((void *)src, src_len, (void *)dst, &dst_len); + ret = ulz4fn(map_sysmem(src, 0), src_len, map_sysmem(dst, dst_len), + &dst_len); if (ret) { printf("Uncompressed err :%d\n", ret); return 1; 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/upl.c b/cmd/upl.c new file mode 100644 index 00000000000..c9745886507 --- /dev/null +++ b/cmd/upl.c @@ -0,0 +1,118 @@ +// SPDX-License-Identifier: GPL-2.0+ +/* + * Commands for UPL handoff generation + * + * Copyright 2024 Google LLC + * Written by Simon Glass <sjg@chromium.org> + */ + +#define LOG_CATEGORY UCLASS_BOOTSTD + +#include <abuf.h> +#include <alist.h> +#include <command.h> +#include <display_options.h> +#include <mapmem.h> +#include <string.h> +#include <upl.h> +#include <dm/ofnode.h> +#include <test/ut.h> + +DECLARE_GLOBAL_DATA_PTR; + +static int do_upl_info(struct cmd_tbl *cmdtp, int flag, int argc, + char *const argv[]) +{ + const struct upl *upl = gd_upl(); + + printf("UPL state: %sactive\n", upl ? "" : "in"); + if (!upl) + return 0; + if (argc > 1 && !strcmp("-v", argv[1])) { + int i; + + printf("fit %lx\n", upl->fit); + printf("conf_offset %x\n", upl->conf_offset); + for (i = 0; i < upl->image.count; i++) { + const struct upl_image *img = + alist_get(&upl->image, i, struct upl_image); + + printf("image %d: load %lx size %lx offset %x: %s\n", i, + img->load, img->size, img->offset, + img->description); + } + } + + return 0; +} + +static int do_upl_write(struct cmd_tbl *cmdtp, int flag, int argc, + char *const argv[]) +{ + struct upl s_upl, *upl = &s_upl; + struct unit_test_state uts; + struct abuf buf; + oftree tree; + ulong addr; + int ret; + + upl_get_test_data(&uts, upl); + + log_debug("Writing UPL\n"); + ret = upl_create_handoff_tree(upl, &tree); + if (ret) { + log_err("Failed to write (err=%dE)\n", ret); + return CMD_RET_FAILURE; + } + + log_debug("Flattening\n"); + ret = oftree_to_fdt(tree, &buf); + if (ret) { + log_err("Failed to write (err=%dE)\n", ret); + return CMD_RET_FAILURE; + } + addr = map_to_sysmem(abuf_data(&buf)); + printf("UPL handoff written to %lx size %lx\n", addr, abuf_size(&buf)); + if (env_set_hex("upladdr", addr) || + env_set_hex("uplsize", abuf_size(&buf))) { + printf("Cannot set env var\n"); + return CMD_RET_FAILURE; + } + + log_debug("done\n"); + + return 0; +} + +static int do_upl_read(struct cmd_tbl *cmdtp, int flag, int argc, + char *const argv[]) +{ + struct upl s_upl, *upl = &s_upl; + oftree tree; + ulong addr; + int ret; + + if (argc < 1) + return CMD_RET_USAGE; + addr = hextoul(argv[1], NULL); + + printf("Reading UPL at %lx\n", addr); + tree = oftree_from_fdt(map_sysmem(addr, 0)); + ret = upl_read_handoff(upl, tree); + if (ret) { + log_err("Failed to read (err=%dE)\n", ret); + return CMD_RET_FAILURE; + } + + return 0; +} + +U_BOOT_LONGHELP(upl, + "info [-v] - Check UPL status\n" + "upl read <addr> - Read handoff information\n" + "upl write - Write handoff information"); + +U_BOOT_CMD_WITH_SUBCMDS(upl, "Universal Payload support", upl_help_text, + U_BOOT_SUBCMD_MKENT(info, 2, 1, do_upl_info), + U_BOOT_SUBCMD_MKENT(read, 2, 1, do_upl_read), + U_BOOT_SUBCMD_MKENT(write, 1, 1, do_upl_write)); diff --git a/cmd/usb.c b/cmd/usb.c index 23253f22231..16c081bf128 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> @@ -26,9 +25,6 @@ #ifdef CONFIG_USB_STORAGE static int usb_stor_curr_dev = -1; /* current device */ #endif -#if defined(CONFIG_USB_HOST_ETHER) && !defined(CONFIG_DM_ETH) -static int __maybe_unused usb_ether_curr_dev = -1; /* current ethernet device */ -#endif /* some display routines (info command) */ static char *usb_get_class_desc(unsigned char dclass) @@ -553,7 +549,6 @@ static int usb_test(struct usb_device *dev, int port, char* arg) } } - /****************************************************************************** * usb boot command intepreter. Derived from diskboot */ @@ -741,7 +736,6 @@ U_BOOT_CMD( #endif /* CONFIG_USB_STORAGE */ ); - #ifdef CONFIG_USB_STORAGE U_BOOT_CMD( usbboot, 3, 1, do_usbboot, 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..1c96f5a0a1f 100644 --- a/cmd/ximg.c +++ b/cmd/ximg.c @@ -7,15 +7,16 @@ * Kai-Uwe Bloem, Auerswald GmbH & Co KG, <linux-development@auerswald.de> */ - /* * 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 +239,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..daa44abeb72 100644 --- a/cmd/yaffs2.c +++ b/cmd/yaffs2.c @@ -13,8 +13,6 @@ * ... */ -#include <common.h> - #include <config.h> #include <command.h> diff --git a/cmd/zfs.c b/cmd/zfs.c index 6ef1b56ab10..471c63f2150 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> @@ -120,7 +119,6 @@ static int do_zfs_load(struct cmd_tbl *cmdtp, int flag, int argc, return 0; } - int zfs_print(const char *entry, const struct zfs_dirhook_info *data) { printf("%s %s\n", @@ -129,7 +127,6 @@ int zfs_print(const char *entry, const struct zfs_dirhook_info *data) return 0; /* 0 continue, 1 stop */ } - static int do_zfs_ls(struct cmd_tbl *cmdtp, int flag, int argc, char *const argv[]) { @@ -158,7 +155,6 @@ static int do_zfs_ls(struct cmd_tbl *cmdtp, int flag, int argc, return 0; } - U_BOOT_CMD(zfsls, 4, 1, do_zfs_ls, "list files in a directory (default /)", "<interface> <dev[:part]> [directory]\n" 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[]) { |