mirror of
https://github.com/AsahiLinux/u-boot
synced 2024-11-10 15:14:43 +00:00
Prepare v2021.04-rc5
-----BEGIN PGP SIGNATURE----- iQGzBAABCgAdFiEEGjx/cOCPqxcHgJu/FHw5/5Y0tywFAmBiRbMACgkQFHw5/5Y0 tyz0KAv/T8glQGL6L2CYeLuwbs9tndQoaH2YNb3teNUJrqehBleJAQ6ubHP30d87 rHrokJ4Zu3TC15sACrK4GOMvsAVkeCuU/jIqFJA4ieDZr8g7yfUMOZMsDiIFdd36 Rdmi71Jtek/csyS5BfcUUYoXVbUCGQ8yAx7z0VrK0sqsqZYYJNwPmqgkR8U2ulNb FiLxwamFwH7+bsvcvHajO1dOyko0zR7GTisf/fOgmlHuF3BldqG4SDcNd528uEWb r3fXs2Ut6IaC/beCnmKUPVG3ZjdPtb+T230rRRhUOfjTwqR7SzXp5bTyzdgyw3gU rOgfi/mAGQPPG2E2fzPz0JCI1irbnkSE2fVJ4epaVUCoHIEsQQdy034aD3qLcHFY 65ihEpRvCM7s9jfKX8XeIG4rKFB4i60TX5orzdMvx7wV3rxmPE9qQmF9lkD+fEA+ TPuFtkjGmluSe+xWBVK7+6xuF6rcLEbNXuFWRi3qMSMgH8rtGfeJRonusOGPolwC jQ1T7szW =UJ/O -----END PGP SIGNATURE----- Merge tag 'v2021.04-rc5' into next Prepare v2021.04-rc5
This commit is contained in:
commit
1057b1be75
45 changed files with 712 additions and 619 deletions
|
@ -23,7 +23,7 @@ jobs:
|
||||||
%CD:~0,2%\msys64\usr\bin\bash -lc "pacman --noconfirm -Syyuu"
|
%CD:~0,2%\msys64\usr\bin\bash -lc "pacman --noconfirm -Syyuu"
|
||||||
displayName: 'Update MSYS2'
|
displayName: 'Update MSYS2'
|
||||||
- script: |
|
- script: |
|
||||||
%CD:~0,2%\msys64\usr\bin\bash -lc "pacman --noconfirm --needed -S make gcc bison flex diffutils openssl-devel"
|
%CD:~0,2%\msys64\usr\bin\bash -lc "pacman --noconfirm --needed -Sy make gcc bison flex diffutils openssl-devel"
|
||||||
displayName: 'Install Toolchain'
|
displayName: 'Install Toolchain'
|
||||||
- script: |
|
- script: |
|
||||||
echo make tools-only_defconfig tools-only NO_SDL=1 > build-tools.sh
|
echo make tools-only_defconfig tools-only NO_SDL=1 > build-tools.sh
|
||||||
|
|
|
@ -670,6 +670,7 @@ F: common/dfu.c
|
||||||
F: common/update.c
|
F: common/update.c
|
||||||
F: common/usb_storage.c
|
F: common/usb_storage.c
|
||||||
F: doc/api/dfu.rst
|
F: doc/api/dfu.rst
|
||||||
|
F: doc/usage/dfu.rst
|
||||||
F: drivers/dfu/
|
F: drivers/dfu/
|
||||||
F: drivers/usb/gadget/
|
F: drivers/usb/gadget/
|
||||||
F: include/dfu.h
|
F: include/dfu.h
|
||||||
|
|
163
Makefile
163
Makefile
|
@ -3,7 +3,7 @@
|
||||||
VERSION = 2021
|
VERSION = 2021
|
||||||
PATCHLEVEL = 04
|
PATCHLEVEL = 04
|
||||||
SUBLEVEL =
|
SUBLEVEL =
|
||||||
EXTRAVERSION = -rc4
|
EXTRAVERSION = -rc5
|
||||||
NAME =
|
NAME =
|
||||||
|
|
||||||
# *DOCUMENTATION*
|
# *DOCUMENTATION*
|
||||||
|
@ -328,11 +328,6 @@ HOSTCC = $(call os_x_before, 10, 5, "cc", "gcc")
|
||||||
KBUILD_HOSTCFLAGS += $(call os_x_before, 10, 4, "-traditional-cpp")
|
KBUILD_HOSTCFLAGS += $(call os_x_before, 10, 4, "-traditional-cpp")
|
||||||
KBUILD_HOSTLDFLAGS += $(call os_x_before, 10, 5, "-multiply_defined suppress")
|
KBUILD_HOSTLDFLAGS += $(call os_x_before, 10, 5, "-multiply_defined suppress")
|
||||||
|
|
||||||
# since Lion (10.7) ASLR is on by default, but we use linker generated lists
|
|
||||||
# in some host tools which is a problem then ... so disable ASLR for these
|
|
||||||
# tools
|
|
||||||
KBUILD_HOSTLDFLAGS += $(call os_x_before, 10, 7, "", "-Xlinker -no_pie")
|
|
||||||
|
|
||||||
# macOS Mojave (10.14.X)
|
# macOS Mojave (10.14.X)
|
||||||
# Undefined symbols for architecture x86_64: "_PyArg_ParseTuple"
|
# Undefined symbols for architecture x86_64: "_PyArg_ParseTuple"
|
||||||
KBUILD_HOSTLDFLAGS += $(call os_x_after, 10, 14, "-lpython -dynamclib", "")
|
KBUILD_HOSTLDFLAGS += $(call os_x_after, 10, 14, "-lpython -dynamclib", "")
|
||||||
|
@ -1021,6 +1016,33 @@ quiet_cmd_cfgcheck = CFGCHK $2
|
||||||
cmd_cfgcheck = $(srctree)/scripts/check-config.sh $2 \
|
cmd_cfgcheck = $(srctree)/scripts/check-config.sh $2 \
|
||||||
$(srctree)/scripts/config_whitelist.txt $(srctree)
|
$(srctree)/scripts/config_whitelist.txt $(srctree)
|
||||||
|
|
||||||
|
# Concat the value of all the CONFIGs (result is 'y' or 'yy', etc. )
|
||||||
|
got = $(foreach cfg,$(1),$($(cfg)))
|
||||||
|
|
||||||
|
# expected value 'y for each one
|
||||||
|
expect = $(foreach cfg,$(1),y)
|
||||||
|
|
||||||
|
# Show a deprecation message
|
||||||
|
# Args:
|
||||||
|
# 1: List of CONFIG_DM_... to migrate to (e.g. "CONFIG_DM_MMC CONFIG_BLK")
|
||||||
|
# 2: Name of component (e.g . "Ethernet drivers")
|
||||||
|
# 3: Release deadline (e.g. "v202.07")
|
||||||
|
# 4: Condition to require before checking (e.g. "$(CONFIG_NET)")
|
||||||
|
# Note: Script avoids bash construct, hence the strange double 'if'
|
||||||
|
# (patches welcome!)
|
||||||
|
define deprecated
|
||||||
|
if [ -n "$(strip $(4))" ]; then if [ "$(got)" != "$(expect)" ]; then \
|
||||||
|
echo >&2 "===================== WARNING ======================"; \
|
||||||
|
echo >&2 "This board does not use $(firstword $(1)) (Driver Model"; \
|
||||||
|
echo >&2 "for $(2)). Please update the board to use"; \
|
||||||
|
echo >&2 "$(firstword $(1)) before the $(3) release. Failure to"; \
|
||||||
|
echo >&2 "update by the deadline may result in board removal."; \
|
||||||
|
echo >&2 "See doc/driver-model/migration.rst for more info."; \
|
||||||
|
echo >&2 "===================================================="; \
|
||||||
|
fi; fi
|
||||||
|
|
||||||
|
endef
|
||||||
|
|
||||||
PHONY += inputs
|
PHONY += inputs
|
||||||
inputs: $(INPUTS-y)
|
inputs: $(INPUTS-y)
|
||||||
|
|
||||||
|
@ -1035,80 +1057,6 @@ endif
|
||||||
|
|
||||||
ifeq ($(CONFIG_DEPRECATED),y)
|
ifeq ($(CONFIG_DEPRECATED),y)
|
||||||
$(warning "You have deprecated configuration options enabled in your .config! Please check your configuration.")
|
$(warning "You have deprecated configuration options enabled in your .config! Please check your configuration.")
|
||||||
ifeq ($(CONFIG_SPI),y)
|
|
||||||
ifneq ($(CONFIG_DM_SPI)$(CONFIG_OF_CONTROL),yy)
|
|
||||||
$(warning "The relevant config item with associated code will remove in v2019.07 release.")
|
|
||||||
endif
|
|
||||||
endif
|
|
||||||
endif
|
|
||||||
ifneq ($(CONFIG_DM),y)
|
|
||||||
@echo >&2 "===================== WARNING ======================"
|
|
||||||
@echo >&2 "This board does not use CONFIG_DM. CONFIG_DM will be"
|
|
||||||
@echo >&2 "compulsory starting with the v2020.01 release."
|
|
||||||
@echo >&2 "Failure to update may result in board removal."
|
|
||||||
@echo >&2 "See doc/driver-model/migration.rst for more info."
|
|
||||||
@echo >&2 "===================================================="
|
|
||||||
endif
|
|
||||||
ifeq ($(CONFIG_MMC),y)
|
|
||||||
ifneq ($(CONFIG_DM_MMC)$(CONFIG_BLK),yy)
|
|
||||||
@echo >&2 "===================== WARNING ======================"
|
|
||||||
@echo >&2 "This board does not use CONFIG_DM_MMC. Please update"
|
|
||||||
@echo >&2 "the board to use CONFIG_DM_MMC before the v2019.04 release."
|
|
||||||
@echo >&2 "Failure to update by the deadline may result in board removal."
|
|
||||||
@echo >&2 "See doc/driver-model/migration.rst for more info."
|
|
||||||
@echo >&2 "===================================================="
|
|
||||||
endif
|
|
||||||
endif
|
|
||||||
ifeq ($(CONFIG_USB),y)
|
|
||||||
ifneq ($(CONFIG_DM_USB)$(CONFIG_OF_CONTROL)$(CONFIG_BLK),yyy)
|
|
||||||
@echo >&2 "===================== WARNING ======================"
|
|
||||||
@echo >&2 "This board does not use CONFIG_DM_USB. Please update"
|
|
||||||
@echo >&2 "the board to use CONFIG_DM_USB before the v2019.07 release."
|
|
||||||
@echo >&2 "Failure to update by the deadline may result in board removal."
|
|
||||||
@echo >&2 "See doc/driver-model/migration.rst for more info."
|
|
||||||
@echo >&2 "===================================================="
|
|
||||||
endif
|
|
||||||
endif
|
|
||||||
ifeq ($(CONFIG_MVSATA_IDE),y)
|
|
||||||
@echo >&2 "===================== WARNING ======================"
|
|
||||||
@echo >&2 "This board does use CONFIG_MVSATA_IDE which is not"
|
|
||||||
@echo >&2 "ported to driver-model (DM) yet. Please update the storage"
|
|
||||||
@echo >&2 "controller driver to use CONFIG_AHCI before the v2019.07"
|
|
||||||
@echo >&2 "release."
|
|
||||||
@echo >&2 "Failure to update by the deadline may result in board removal."
|
|
||||||
@echo >&2 "See doc/driver-model/migration.rst for more info."
|
|
||||||
@echo >&2 "===================================================="
|
|
||||||
endif
|
|
||||||
ifeq ($(CONFIG_LIBATA),y)
|
|
||||||
ifneq ($(CONFIG_AHCI),y)
|
|
||||||
@echo >&2 "===================== WARNING ======================"
|
|
||||||
@echo >&2 "This board does use CONFIG_LIBATA but has CONFIG_AHCI not"
|
|
||||||
@echo >&2 "enabled. Please update the storage controller driver to use"
|
|
||||||
@echo >&2 "CONFIG_AHCI before the v2019.07 release."
|
|
||||||
@echo >&2 "Failure to update by the deadline may result in board removal."
|
|
||||||
@echo >&2 "See doc/driver-model/migration.rst for more info."
|
|
||||||
@echo >&2 "===================================================="
|
|
||||||
endif
|
|
||||||
endif
|
|
||||||
ifeq ($(CONFIG_PCI),y)
|
|
||||||
ifneq ($(CONFIG_DM_PCI),y)
|
|
||||||
@echo >&2 "===================== WARNING ======================"
|
|
||||||
@echo >&2 "This board does not use CONFIG_DM_PCI Please update"
|
|
||||||
@echo >&2 "the board to use CONFIG_DM_PCI before the v2019.07 release."
|
|
||||||
@echo >&2 "Failure to update by the deadline may result in board removal."
|
|
||||||
@echo >&2 "See doc/driver-model/migration.rst for more info."
|
|
||||||
@echo >&2 "===================================================="
|
|
||||||
endif
|
|
||||||
endif
|
|
||||||
ifneq ($(CONFIG_LCD)$(CONFIG_VIDEO),)
|
|
||||||
ifneq ($(CONFIG_DM_VIDEO),y)
|
|
||||||
@echo >&2 "===================== WARNING ======================"
|
|
||||||
@echo >&2 "This board does not use CONFIG_DM_VIDEO Please update"
|
|
||||||
@echo >&2 "the board to use CONFIG_DM_VIDEO before the v2019.07 release."
|
|
||||||
@echo >&2 "Failure to update by the deadline may result in board removal."
|
|
||||||
@echo >&2 "See doc/driver-model/migration.rst for more info."
|
|
||||||
@echo >&2 "===================================================="
|
|
||||||
endif
|
|
||||||
endif
|
endif
|
||||||
ifeq ($(CONFIG_OF_EMBED),y)
|
ifeq ($(CONFIG_OF_EMBED),y)
|
||||||
@echo >&2 "===================== WARNING ======================"
|
@echo >&2 "===================== WARNING ======================"
|
||||||
|
@ -1118,38 +1066,6 @@ ifeq ($(CONFIG_OF_EMBED),y)
|
||||||
@echo >&2 "See doc/README.fdt-control for more info."
|
@echo >&2 "See doc/README.fdt-control for more info."
|
||||||
@echo >&2 "===================================================="
|
@echo >&2 "===================================================="
|
||||||
endif
|
endif
|
||||||
ifeq ($(CONFIG_SPI_FLASH),y)
|
|
||||||
ifneq ($(CONFIG_DM_SPI_FLASH)$(CONFIG_OF_CONTROL),yy)
|
|
||||||
@echo >&2 "===================== WARNING ======================"
|
|
||||||
@echo >&2 "This board does not use CONFIG_DM_SPI_FLASH. Please update"
|
|
||||||
@echo >&2 "the board to use CONFIG_SPI_FLASH before the v2019.07 release."
|
|
||||||
@echo >&2 "Failure to update by the deadline may result in board removal."
|
|
||||||
@echo >&2 "See doc/driver-model/migration.rst for more info."
|
|
||||||
@echo >&2 "===================================================="
|
|
||||||
endif
|
|
||||||
endif
|
|
||||||
ifneq ($(CONFIG_WATCHDOG)$(CONFIG_HW_WATCHDOG),)
|
|
||||||
ifneq ($(CONFIG_WDT),y)
|
|
||||||
@echo >&2 "===================== WARNING ======================"
|
|
||||||
@echo >&2 "This board does not use CONFIG_WDT (DM watchdog support)."
|
|
||||||
@echo >&2 "Please update the board to use CONFIG_WDT before the"
|
|
||||||
@echo >&2 "v2019.10 release."
|
|
||||||
@echo >&2 "Failure to update by the deadline may result in board removal."
|
|
||||||
@echo >&2 "See doc/driver-model/migration.rst for more info."
|
|
||||||
@echo >&2 "===================================================="
|
|
||||||
endif
|
|
||||||
endif
|
|
||||||
ifneq ($(CONFIG_NET),)
|
|
||||||
ifneq ($(CONFIG_DM_ETH),y)
|
|
||||||
@echo >&2 "===================== WARNING ======================"
|
|
||||||
@echo >&2 "This board does not use CONFIG_DM_ETH (Driver Model"
|
|
||||||
@echo >&2 "for Ethernet drivers). Please update the board to use"
|
|
||||||
@echo >&2 "CONFIG_DM_ETH before the v2020.07 release. Failure to"
|
|
||||||
@echo >&2 "update by the deadline may result in board removal."
|
|
||||||
@echo >&2 "See doc/driver-model/migration.rst for more info."
|
|
||||||
@echo >&2 "===================================================="
|
|
||||||
endif
|
|
||||||
endif
|
|
||||||
ifneq ($(CONFIG_SPL_FIT_GENERATOR),)
|
ifneq ($(CONFIG_SPL_FIT_GENERATOR),)
|
||||||
@echo >&2 "===================== WARNING ======================"
|
@echo >&2 "===================== WARNING ======================"
|
||||||
@echo >&2 "This board uses CONFIG_SPL_FIT_GENERATOR. Please migrate"
|
@echo >&2 "This board uses CONFIG_SPL_FIT_GENERATOR. Please migrate"
|
||||||
|
@ -1157,6 +1073,29 @@ ifneq ($(CONFIG_SPL_FIT_GENERATOR),)
|
||||||
@echo >&2 "arch-specific scripts with no tests."
|
@echo >&2 "arch-specific scripts with no tests."
|
||||||
@echo >&2 "===================================================="
|
@echo >&2 "===================================================="
|
||||||
endif
|
endif
|
||||||
|
ifneq ($(CONFIG_DM),y)
|
||||||
|
@echo >&2 "===================== WARNING ======================"
|
||||||
|
@echo >&2 "This board does not use CONFIG_DM. CONFIG_DM will be"
|
||||||
|
@echo >&2 "compulsory starting with the v2020.01 release."
|
||||||
|
@echo >&2 "Failure to update may result in board removal."
|
||||||
|
@echo >&2 "See doc/driver-model/migration.rst for more info."
|
||||||
|
@echo >&2 "===================================================="
|
||||||
|
endif
|
||||||
|
$(call deprecated,CONFIG_DM_MMC CONFIG_BLK,MMC,v2019.04,$(CONFIG_MMC))
|
||||||
|
$(call deprecated,CONFIG_DM_USB CONFIG_OF_CONTROL CONFIG_BLK,\
|
||||||
|
USB,v2019.07,$(CONFIG_USB))
|
||||||
|
$(call deprecated,CONFIG_AHCI,AHCI instead of CONFIG_MVSATA_IDE,v2019.07, \
|
||||||
|
$(CONFIG_MVSATA_IDE))
|
||||||
|
$(call deprecated,CONFIG_AHCI,AHCI,v2019.07, $(CONFIG_LIBATA))
|
||||||
|
$(call deprecated,CONFIG_DM_PCI,PCI,v2019.07,$(CONFIG_PCI))
|
||||||
|
$(call deprecated,CONFIG_DM_VIDEO,video,v2019.07,\
|
||||||
|
$(CONFIG_LCD)$(CONFIG_VIDEO))
|
||||||
|
$(call deprecated,CONFIG_DM_SPI_FLASH,SPI flash,v2019.07,\
|
||||||
|
$(CONFIG_SPI_FLASH))
|
||||||
|
$(call deprecated,CONFIG_WDT,DM watchdog,v2019.10,\
|
||||||
|
$(CONFIG_WATCHDOG)$(CONFIG_HW_WATCHDOG))
|
||||||
|
$(call deprecated,CONFIG_DM_ETH,Ethernet drivers,v2020.07,$(CONFIG_NET))
|
||||||
|
$(call deprecated,CONFIG_DM_I2C,I2C drivers,v2022.04,$(CONFIG_I2C))
|
||||||
@# Check that this build does not use CONFIG options that we do not
|
@# Check that this build does not use CONFIG options that we do not
|
||||||
@# know about unless they are in Kconfig. All the existing CONFIG
|
@# know about unless they are in Kconfig. All the existing CONFIG
|
||||||
@# options are whitelisted, so new ones should not be added.
|
@# options are whitelisted, so new ones should not be added.
|
||||||
|
|
|
@ -115,7 +115,8 @@ void board_fit_image_post_process(void **p_image, size_t *p_size)
|
||||||
#if !IS_ENABLED(CONFIG_SPL_BUILD) && IS_ENABLED(CONFIG_FIT)
|
#if !IS_ENABLED(CONFIG_SPL_BUILD) && IS_ENABLED(CONFIG_FIT)
|
||||||
void board_prep_linux(bootm_headers_t *images)
|
void board_prep_linux(bootm_headers_t *images)
|
||||||
{
|
{
|
||||||
if (!IS_ENABLED(CONFIG_SECURE_VAB_AUTH_ALLOW_NON_FIT_IMAGE)) {
|
if (IS_ENABLED(CONFIG_SOCFPGA_SECURE_VAB_AUTH) &&
|
||||||
|
!IS_ENABLED(CONFIG_SOCFPGA_SECURE_VAB_AUTH_ALLOW_NON_FIT_IMAGE)) {
|
||||||
/*
|
/*
|
||||||
* Ensure the OS is always booted from FIT and with
|
* Ensure the OS is always booted from FIT and with
|
||||||
* VAB signed certificate
|
* VAB signed certificate
|
||||||
|
|
|
@ -30,3 +30,11 @@
|
||||||
spi-max-frequency = <10000000>; /* input clock */
|
spi-max-frequency = <10000000>; /* input clock */
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
|
|
||||||
|
&i2c0 {
|
||||||
|
status = "okay";
|
||||||
|
rtc@68 {
|
||||||
|
compatible = "dallas,ds1339";
|
||||||
|
reg = <0x68>;
|
||||||
|
};
|
||||||
|
};
|
||||||
|
|
|
@ -34,6 +34,11 @@ T2080 includes the following functions and features:
|
||||||
- Support for hardware virtualization and partitioning enforcement
|
- Support for hardware virtualization and partitioning enforcement
|
||||||
- QorIQ Platform's Trust Architecture 2.0
|
- QorIQ Platform's Trust Architecture 2.0
|
||||||
|
|
||||||
|
User Guide
|
||||||
|
----------
|
||||||
|
The T2080RDB User Guide is available on the web at
|
||||||
|
https://www.nxp.com/docs/en/user-guide/T2080RDBPCUG.pdf
|
||||||
|
|
||||||
Differences between T2080 and T2081
|
Differences between T2080 and T2081
|
||||||
-----------------------------------
|
-----------------------------------
|
||||||
Feature T2080 T2081
|
Feature T2080 T2081
|
||||||
|
|
|
@ -369,7 +369,7 @@ static struct mmc_part *get_partition(AvbOps *ops, const char *partition)
|
||||||
}
|
}
|
||||||
|
|
||||||
ret = part_get_info_by_name(mmc_blk, partition, &part->info);
|
ret = part_get_info_by_name(mmc_blk, partition, &part->info);
|
||||||
if (!ret) {
|
if (ret < 0) {
|
||||||
printf("Can't find partition '%s'\n", partition);
|
printf("Can't find partition '%s'\n", partition);
|
||||||
goto err;
|
goto err;
|
||||||
}
|
}
|
||||||
|
|
|
@ -1655,7 +1655,7 @@ int fit_check_format(const void *fit, ulong size)
|
||||||
/* mandatory / node 'timestamp' property */
|
/* mandatory / node 'timestamp' property */
|
||||||
if (!fdt_getprop(fit, 0, FIT_TIMESTAMP_PROP, NULL)) {
|
if (!fdt_getprop(fit, 0, FIT_TIMESTAMP_PROP, NULL)) {
|
||||||
log_debug("Wrong FIT format: no timestamp\n");
|
log_debug("Wrong FIT format: no timestamp\n");
|
||||||
return -ENODATA;
|
return -EBADMSG;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -77,6 +77,8 @@ CONFIG_DM_PCI=y
|
||||||
CONFIG_DM_PCI_COMPAT=y
|
CONFIG_DM_PCI_COMPAT=y
|
||||||
CONFIG_PCIE_FSL=y
|
CONFIG_PCIE_FSL=y
|
||||||
CONFIG_SYS_QE_FMAN_FW_IN_NAND=y
|
CONFIG_SYS_QE_FMAN_FW_IN_NAND=y
|
||||||
|
CONFIG_DM_RTC=y
|
||||||
|
CONFIG_RTC_DS1307=y
|
||||||
CONFIG_SYS_NS16550=y
|
CONFIG_SYS_NS16550=y
|
||||||
CONFIG_SPI=y
|
CONFIG_SPI=y
|
||||||
CONFIG_DM_SPI=y
|
CONFIG_DM_SPI=y
|
||||||
|
|
|
@ -74,6 +74,8 @@ CONFIG_DM_PCI=y
|
||||||
CONFIG_DM_PCI_COMPAT=y
|
CONFIG_DM_PCI_COMPAT=y
|
||||||
CONFIG_PCIE_FSL=y
|
CONFIG_PCIE_FSL=y
|
||||||
CONFIG_SYS_QE_FMAN_FW_IN_MMC=y
|
CONFIG_SYS_QE_FMAN_FW_IN_MMC=y
|
||||||
|
CONFIG_DM_RTC=y
|
||||||
|
CONFIG_RTC_DS1307=y
|
||||||
CONFIG_SYS_NS16550=y
|
CONFIG_SYS_NS16550=y
|
||||||
CONFIG_SPI=y
|
CONFIG_SPI=y
|
||||||
CONFIG_DM_SPI=y
|
CONFIG_DM_SPI=y
|
||||||
|
|
|
@ -76,6 +76,8 @@ CONFIG_DM_PCI=y
|
||||||
CONFIG_DM_PCI_COMPAT=y
|
CONFIG_DM_PCI_COMPAT=y
|
||||||
CONFIG_PCIE_FSL=y
|
CONFIG_PCIE_FSL=y
|
||||||
CONFIG_SYS_QE_FMAN_FW_IN_SPIFLASH=y
|
CONFIG_SYS_QE_FMAN_FW_IN_SPIFLASH=y
|
||||||
|
CONFIG_DM_RTC=y
|
||||||
|
CONFIG_RTC_DS1307=y
|
||||||
CONFIG_SYS_NS16550=y
|
CONFIG_SYS_NS16550=y
|
||||||
CONFIG_SPI=y
|
CONFIG_SPI=y
|
||||||
CONFIG_DM_SPI=y
|
CONFIG_DM_SPI=y
|
||||||
|
|
|
@ -61,6 +61,8 @@ CONFIG_DM_PCI=y
|
||||||
CONFIG_DM_PCI_COMPAT=y
|
CONFIG_DM_PCI_COMPAT=y
|
||||||
CONFIG_PCIE_FSL=y
|
CONFIG_PCIE_FSL=y
|
||||||
CONFIG_SYS_QE_FMAN_FW_IN_NOR=y
|
CONFIG_SYS_QE_FMAN_FW_IN_NOR=y
|
||||||
|
CONFIG_DM_RTC=y
|
||||||
|
CONFIG_RTC_DS1307=y
|
||||||
CONFIG_SYS_NS16550=y
|
CONFIG_SYS_NS16550=y
|
||||||
CONFIG_SPI=y
|
CONFIG_SPI=y
|
||||||
CONFIG_DM_SPI=y
|
CONFIG_DM_SPI=y
|
||||||
|
|
|
@ -70,7 +70,7 @@ CONFIG_I2C_SET_DEFAULT_BUS_NUM=y
|
||||||
CONFIG_I2C_DEFAULT_BUS_NUMBER=0
|
CONFIG_I2C_DEFAULT_BUS_NUMBER=0
|
||||||
CONFIG_I2C_MUX=y
|
CONFIG_I2C_MUX=y
|
||||||
CONFIG_DM_MMC=y
|
CONFIG_DM_MMC=y
|
||||||
CONFIG_MMC_HS400_SUPPORT=y
|
CONFIG_MMC_HS200_SUPPORT=y
|
||||||
CONFIG_FSL_ESDHC=y
|
CONFIG_FSL_ESDHC=y
|
||||||
CONFIG_FSL_ESDHC_SUPPORT_ADMA2=y
|
CONFIG_FSL_ESDHC_SUPPORT_ADMA2=y
|
||||||
CONFIG_DM_SPI_FLASH=y
|
CONFIG_DM_SPI_FLASH=y
|
||||||
|
|
|
@ -49,8 +49,9 @@ CONFIG_DM_MMC=y
|
||||||
CONFIG_FSL_ESDHC=y
|
CONFIG_FSL_ESDHC=y
|
||||||
CONFIG_MTD=y
|
CONFIG_MTD=y
|
||||||
CONFIG_DM_SPI_FLASH=y
|
CONFIG_DM_SPI_FLASH=y
|
||||||
CONFIG_SPI_FLASH_SPANSION=y
|
CONFIG_SPI_FLASH_EON=y
|
||||||
CONFIG_SPI_FLASH_STMICRO=y
|
CONFIG_SPI_FLASH_STMICRO=y
|
||||||
|
CONFIG_SPI_FLASH_SST=y
|
||||||
# CONFIG_SPI_FLASH_USE_4K_SECTORS is not set
|
# CONFIG_SPI_FLASH_USE_4K_SECTORS is not set
|
||||||
CONFIG_PHYLIB=y
|
CONFIG_PHYLIB=y
|
||||||
CONFIG_PHY_AQUANTIA=y
|
CONFIG_PHY_AQUANTIA=y
|
||||||
|
|
|
@ -8,7 +8,7 @@ CONFIG_SYS_MEMTEST_START=0x80000000
|
||||||
CONFIG_SYS_MEMTEST_END=0x9fffffff
|
CONFIG_SYS_MEMTEST_END=0x9fffffff
|
||||||
CONFIG_ENV_SIZE=0x2000
|
CONFIG_ENV_SIZE=0x2000
|
||||||
CONFIG_ENV_OFFSET=0x500000
|
CONFIG_ENV_OFFSET=0x500000
|
||||||
CONFIG_ENV_SECT_SIZE=0x40000
|
CONFIG_ENV_SECT_SIZE=0x20000
|
||||||
CONFIG_DM_GPIO=y
|
CONFIG_DM_GPIO=y
|
||||||
CONFIG_FSPI_AHB_EN_4BYTE=y
|
CONFIG_FSPI_AHB_EN_4BYTE=y
|
||||||
CONFIG_ARMV8_SEC_FIRMWARE_SUPPORT=y
|
CONFIG_ARMV8_SEC_FIRMWARE_SUPPORT=y
|
||||||
|
@ -55,8 +55,9 @@ CONFIG_DM_MMC=y
|
||||||
CONFIG_FSL_ESDHC=y
|
CONFIG_FSL_ESDHC=y
|
||||||
CONFIG_MTD=y
|
CONFIG_MTD=y
|
||||||
CONFIG_DM_SPI_FLASH=y
|
CONFIG_DM_SPI_FLASH=y
|
||||||
CONFIG_SPI_FLASH_SPANSION=y
|
CONFIG_SPI_FLASH_EON=y
|
||||||
CONFIG_SPI_FLASH_STMICRO=y
|
CONFIG_SPI_FLASH_STMICRO=y
|
||||||
|
CONFIG_SPI_FLASH_SST=y
|
||||||
# CONFIG_SPI_FLASH_USE_4K_SECTORS is not set
|
# CONFIG_SPI_FLASH_USE_4K_SECTORS is not set
|
||||||
CONFIG_PHYLIB=y
|
CONFIG_PHYLIB=y
|
||||||
CONFIG_PHY_AQUANTIA=y
|
CONFIG_PHY_AQUANTIA=y
|
||||||
|
|
|
@ -7,7 +7,7 @@ CONFIG_SYS_MEMTEST_START=0x80000000
|
||||||
CONFIG_SYS_MEMTEST_END=0x9fffffff
|
CONFIG_SYS_MEMTEST_END=0x9fffffff
|
||||||
CONFIG_ENV_SIZE=0x2000
|
CONFIG_ENV_SIZE=0x2000
|
||||||
CONFIG_ENV_OFFSET=0x500000
|
CONFIG_ENV_OFFSET=0x500000
|
||||||
CONFIG_ENV_SECT_SIZE=0x40000
|
CONFIG_ENV_SECT_SIZE=0x20000
|
||||||
CONFIG_DM_GPIO=y
|
CONFIG_DM_GPIO=y
|
||||||
CONFIG_FSPI_AHB_EN_4BYTE=y
|
CONFIG_FSPI_AHB_EN_4BYTE=y
|
||||||
CONFIG_ARMV8_SEC_FIRMWARE_SUPPORT=y
|
CONFIG_ARMV8_SEC_FIRMWARE_SUPPORT=y
|
||||||
|
@ -55,8 +55,9 @@ CONFIG_DM_MMC=y
|
||||||
CONFIG_FSL_ESDHC=y
|
CONFIG_FSL_ESDHC=y
|
||||||
CONFIG_MTD=y
|
CONFIG_MTD=y
|
||||||
CONFIG_DM_SPI_FLASH=y
|
CONFIG_DM_SPI_FLASH=y
|
||||||
CONFIG_SPI_FLASH_SPANSION=y
|
CONFIG_SPI_FLASH_EON=y
|
||||||
CONFIG_SPI_FLASH_STMICRO=y
|
CONFIG_SPI_FLASH_STMICRO=y
|
||||||
|
CONFIG_SPI_FLASH_SST=y
|
||||||
# CONFIG_SPI_FLASH_USE_4K_SECTORS is not set
|
# CONFIG_SPI_FLASH_USE_4K_SECTORS is not set
|
||||||
CONFIG_PHYLIB=y
|
CONFIG_PHYLIB=y
|
||||||
CONFIG_PHY_AQUANTIA=y
|
CONFIG_PHY_AQUANTIA=y
|
||||||
|
|
|
@ -48,7 +48,6 @@ CONFIG_DM_MMC=y
|
||||||
CONFIG_FSL_ESDHC=y
|
CONFIG_FSL_ESDHC=y
|
||||||
CONFIG_MTD=y
|
CONFIG_MTD=y
|
||||||
CONFIG_DM_SPI_FLASH=y
|
CONFIG_DM_SPI_FLASH=y
|
||||||
CONFIG_SPI_FLASH_SPANSION=y
|
|
||||||
CONFIG_SPI_FLASH_STMICRO=y
|
CONFIG_SPI_FLASH_STMICRO=y
|
||||||
# CONFIG_SPI_FLASH_USE_4K_SECTORS is not set
|
# CONFIG_SPI_FLASH_USE_4K_SECTORS is not set
|
||||||
CONFIG_PHYLIB=y
|
CONFIG_PHYLIB=y
|
||||||
|
|
|
@ -8,7 +8,7 @@ CONFIG_SYS_MEMTEST_START=0x80000000
|
||||||
CONFIG_SYS_MEMTEST_END=0x9fffffff
|
CONFIG_SYS_MEMTEST_END=0x9fffffff
|
||||||
CONFIG_ENV_SIZE=0x2000
|
CONFIG_ENV_SIZE=0x2000
|
||||||
CONFIG_ENV_OFFSET=0x500000
|
CONFIG_ENV_OFFSET=0x500000
|
||||||
CONFIG_ENV_SECT_SIZE=0x40000
|
CONFIG_ENV_SECT_SIZE=0x20000
|
||||||
CONFIG_DM_GPIO=y
|
CONFIG_DM_GPIO=y
|
||||||
CONFIG_FSPI_AHB_EN_4BYTE=y
|
CONFIG_FSPI_AHB_EN_4BYTE=y
|
||||||
CONFIG_ARMV8_SEC_FIRMWARE_SUPPORT=y
|
CONFIG_ARMV8_SEC_FIRMWARE_SUPPORT=y
|
||||||
|
@ -54,7 +54,6 @@ CONFIG_DM_MMC=y
|
||||||
CONFIG_FSL_ESDHC=y
|
CONFIG_FSL_ESDHC=y
|
||||||
CONFIG_MTD=y
|
CONFIG_MTD=y
|
||||||
CONFIG_DM_SPI_FLASH=y
|
CONFIG_DM_SPI_FLASH=y
|
||||||
CONFIG_SPI_FLASH_SPANSION=y
|
|
||||||
CONFIG_SPI_FLASH_STMICRO=y
|
CONFIG_SPI_FLASH_STMICRO=y
|
||||||
# CONFIG_SPI_FLASH_USE_4K_SECTORS is not set
|
# CONFIG_SPI_FLASH_USE_4K_SECTORS is not set
|
||||||
CONFIG_PHYLIB=y
|
CONFIG_PHYLIB=y
|
||||||
|
|
|
@ -50,7 +50,6 @@ CONFIG_FSL_ESDHC=y
|
||||||
CONFIG_MTD=y
|
CONFIG_MTD=y
|
||||||
CONFIG_DM_SPI_FLASH=y
|
CONFIG_DM_SPI_FLASH=y
|
||||||
CONFIG_SPI_FLASH_EON=y
|
CONFIG_SPI_FLASH_EON=y
|
||||||
CONFIG_SPI_FLASH_SPANSION=y
|
|
||||||
CONFIG_SPI_FLASH_STMICRO=y
|
CONFIG_SPI_FLASH_STMICRO=y
|
||||||
CONFIG_SPI_FLASH_SST=y
|
CONFIG_SPI_FLASH_SST=y
|
||||||
# CONFIG_SPI_FLASH_USE_4K_SECTORS is not set
|
# CONFIG_SPI_FLASH_USE_4K_SECTORS is not set
|
||||||
|
|
|
@ -57,7 +57,6 @@ CONFIG_FSL_ESDHC=y
|
||||||
CONFIG_MTD=y
|
CONFIG_MTD=y
|
||||||
CONFIG_DM_SPI_FLASH=y
|
CONFIG_DM_SPI_FLASH=y
|
||||||
CONFIG_SPI_FLASH_EON=y
|
CONFIG_SPI_FLASH_EON=y
|
||||||
CONFIG_SPI_FLASH_SPANSION=y
|
|
||||||
CONFIG_SPI_FLASH_STMICRO=y
|
CONFIG_SPI_FLASH_STMICRO=y
|
||||||
CONFIG_SPI_FLASH_SST=y
|
CONFIG_SPI_FLASH_SST=y
|
||||||
# CONFIG_SPI_FLASH_USE_4K_SECTORS is not set
|
# CONFIG_SPI_FLASH_USE_4K_SECTORS is not set
|
||||||
|
|
|
@ -46,7 +46,6 @@ CONFIG_MMC_HS400_SUPPORT=y
|
||||||
CONFIG_FSL_ESDHC=y
|
CONFIG_FSL_ESDHC=y
|
||||||
CONFIG_MTD=y
|
CONFIG_MTD=y
|
||||||
CONFIG_DM_SPI_FLASH=y
|
CONFIG_DM_SPI_FLASH=y
|
||||||
CONFIG_SPI_FLASH_SPANSION=y
|
|
||||||
CONFIG_SPI_FLASH_STMICRO=y
|
CONFIG_SPI_FLASH_STMICRO=y
|
||||||
# CONFIG_SPI_FLASH_USE_4K_SECTORS is not set
|
# CONFIG_SPI_FLASH_USE_4K_SECTORS is not set
|
||||||
CONFIG_PHYLIB=y
|
CONFIG_PHYLIB=y
|
||||||
|
|
|
@ -55,7 +55,6 @@ CONFIG_MMC_HS400_SUPPORT=y
|
||||||
CONFIG_FSL_ESDHC=y
|
CONFIG_FSL_ESDHC=y
|
||||||
CONFIG_MTD=y
|
CONFIG_MTD=y
|
||||||
CONFIG_DM_SPI_FLASH=y
|
CONFIG_DM_SPI_FLASH=y
|
||||||
CONFIG_SPI_FLASH_SPANSION=y
|
|
||||||
CONFIG_SPI_FLASH_STMICRO=y
|
CONFIG_SPI_FLASH_STMICRO=y
|
||||||
# CONFIG_SPI_FLASH_USE_4K_SECTORS is not set
|
# CONFIG_SPI_FLASH_USE_4K_SECTORS is not set
|
||||||
CONFIG_PHYLIB=y
|
CONFIG_PHYLIB=y
|
||||||
|
|
|
@ -55,7 +55,6 @@ CONFIG_MMC_HS400_SUPPORT=y
|
||||||
CONFIG_FSL_ESDHC=y
|
CONFIG_FSL_ESDHC=y
|
||||||
CONFIG_MTD=y
|
CONFIG_MTD=y
|
||||||
CONFIG_DM_SPI_FLASH=y
|
CONFIG_DM_SPI_FLASH=y
|
||||||
CONFIG_SPI_FLASH_SPANSION=y
|
|
||||||
CONFIG_SPI_FLASH_STMICRO=y
|
CONFIG_SPI_FLASH_STMICRO=y
|
||||||
# CONFIG_SPI_FLASH_USE_4K_SECTORS is not set
|
# CONFIG_SPI_FLASH_USE_4K_SECTORS is not set
|
||||||
CONFIG_PHYLIB=y
|
CONFIG_PHYLIB=y
|
||||||
|
|
311
doc/README.dfu
311
doc/README.dfu
|
@ -1,311 +0,0 @@
|
||||||
# SPDX-License-Identifier: GPL-2.0+
|
|
||||||
|
|
||||||
Device Firmware Upgrade (DFU)
|
|
||||||
|
|
||||||
Overview:
|
|
||||||
|
|
||||||
The Device Firmware Upgrade (DFU) allows to download and upload firmware
|
|
||||||
to/from U-Boot connected over USB.
|
|
||||||
|
|
||||||
U-boot follows the Universal Serial Bus Device Class Specification for
|
|
||||||
Device Firmware Upgrade Version 1.1 the USB forum (DFU v1.1 in www.usb.org).
|
|
||||||
|
|
||||||
U-Boot implements this DFU capability (CONFIG_DFU) with the command dfu
|
|
||||||
(cmd/dfu.c / CONFIG_CMD_DFU) based on:
|
|
||||||
- the DFU stack (common/dfu.c and common/spl/spl_dfu.c), based on the
|
|
||||||
USB DFU download gadget (drivers/usb/gadget/f_dfu.c)
|
|
||||||
- The access to mediums is done in DFU backends (driver/dfu)
|
|
||||||
|
|
||||||
Today the supported DFU backends are:
|
|
||||||
- MMC (RAW or FAT / EXT2 / EXT3 / EXT4 file system / SKIP / SCRIPT)
|
|
||||||
- NAND
|
|
||||||
- RAM
|
|
||||||
- SF (serial flash)
|
|
||||||
- MTD (all MTD device: NAND, SPI-NOR, SPI-NAND,...)
|
|
||||||
- virtual
|
|
||||||
|
|
||||||
These DFU backends are also used by
|
|
||||||
- the dfutftp (see README.dfutftp)
|
|
||||||
- the thordown command (cmd/thordown.c and gadget/f_thor.c)
|
|
||||||
|
|
||||||
The "virtual" backend is a generic DFU backend to support a board specific
|
|
||||||
target (for example OTP), only based on the weak functions:
|
|
||||||
- dfu_write_medium_virt
|
|
||||||
- dfu_get_medium_size_virt
|
|
||||||
- dfu_read_medium_virt
|
|
||||||
|
|
||||||
Configuration Options:
|
|
||||||
CONFIG_DFU
|
|
||||||
CONFIG_DFU_OVER_USB
|
|
||||||
CONFIG_DFU_MMC
|
|
||||||
CONFIG_DFU_MTD
|
|
||||||
CONFIG_DFU_NAND
|
|
||||||
CONFIG_DFU_RAM
|
|
||||||
CONFIG_DFU_SF
|
|
||||||
CONFIG_DFU_SF_PART
|
|
||||||
CONFIG_DFU_TIMEOUT
|
|
||||||
CONFIG_DFU_VIRTUAL
|
|
||||||
CONFIG_CMD_DFU
|
|
||||||
|
|
||||||
Environment variables:
|
|
||||||
the dfu command uses 3 environments variables:
|
|
||||||
"dfu_alt_info" : the DFU setting for the USB download gadget with a semicolon
|
|
||||||
separated string of information on each alternate:
|
|
||||||
dfu_alt_info="<alt1>;<alt2>;....;<altN>"
|
|
||||||
|
|
||||||
when several devices are used, the format is:
|
|
||||||
- <interface> <dev>'='alternate list (';' separated)
|
|
||||||
- each interface is separated by '&'
|
|
||||||
dfu_alt_info=\
|
|
||||||
"<interface1> <dev1>=<alt1>;....;<altN>&"\
|
|
||||||
"<interface2> <dev2>=<altN+1>;....;<altM>&"\
|
|
||||||
...\
|
|
||||||
"<interfaceI> <devI>=<altY+1>;....;<altZ>&"
|
|
||||||
|
|
||||||
"dfu_bufsiz" : size of the DFU buffer, when absent, use
|
|
||||||
CONFIG_SYS_DFU_DATA_BUF_SIZE (8 MiB by default)
|
|
||||||
|
|
||||||
"dfu_hash_algo" : name of the hash algorithm to use
|
|
||||||
|
|
||||||
Commands:
|
|
||||||
dfu <USB_controller> [<interface> <dev>] list
|
|
||||||
list the alternate device defined in "dfu_alt_info"
|
|
||||||
|
|
||||||
dfu <USB_controller> [<interface> <dev>] [<timeout>]
|
|
||||||
start the dfu stack on the USB instance with the selected medium
|
|
||||||
backend and use the "dfu_alt_info" variable to configure the
|
|
||||||
alternate setting and link each one with the medium
|
|
||||||
The dfu command continue until receive a ^C in console or
|
|
||||||
a DFU detach transaction from HOST. If CONFIG_DFU_TIMEOUT option
|
|
||||||
is enabled and <timeout> parameter is present in the command line,
|
|
||||||
the DFU operation will be aborted automatically after <timeout>
|
|
||||||
seconds of waiting remote to initiate DFU session.
|
|
||||||
|
|
||||||
The possible values of <interface> are :
|
|
||||||
(with <USB controller> = 0 in the dfu command example)
|
|
||||||
|
|
||||||
"mmc" (for eMMC and SD card)
|
|
||||||
cmd: dfu 0 mmc <dev>
|
|
||||||
each element in "dfu_alt_info" =
|
|
||||||
<name> raw <offset> <size> [mmcpart <num>] raw access to mmc device
|
|
||||||
<name> part <dev> <part_id> [mmcpart <num>] raw access to partition
|
|
||||||
<name> fat <dev> <part_id> [mmcpart <num>] file in FAT partition
|
|
||||||
<name> ext4 <dev> <part_id> [mmcpart <num>] file in EXT4 partition
|
|
||||||
<name> skip 0 0 ignore flashed data
|
|
||||||
<name> script 0 0 execute commands in shell
|
|
||||||
|
|
||||||
with <partid> being the GPT or DOS partition index,
|
|
||||||
with <num> being the eMMC hardware partition number.
|
|
||||||
|
|
||||||
A value of environment variable dfu_alt_info for eMMC could be:
|
|
||||||
|
|
||||||
"u-boot raw 0x3e 0x800 mmcpart 1;bl2 raw 0x1e 0x1d mmcpart 1"
|
|
||||||
|
|
||||||
A value of environment variable dfu_alt_info for SD card could be:
|
|
||||||
|
|
||||||
"u-boot raw 0x80 0x800;uImage ext4 0 2"
|
|
||||||
|
|
||||||
If don't want to flash given image file to storage, use "skip" type
|
|
||||||
entity.
|
|
||||||
- It can be used to protect flashing wrong image for the specific board.
|
|
||||||
- Especailly, this layout will be useful when thor protocol is used,
|
|
||||||
which performs flashing in batch mode, where more than one file is
|
|
||||||
processed.
|
|
||||||
For example, if one makes a single tar file with support for the two
|
|
||||||
boards with u-boot-<board1>.bin and u-boot-<board2>.bin files, one
|
|
||||||
can use it to flash a proper u-boot image on both without a failure:
|
|
||||||
|
|
||||||
"u-boot-<board1>.bin raw 0x80 0x800; u-boot-<board2>.bin skip 0 0"
|
|
||||||
|
|
||||||
When flashing new system image requires do some more complex things
|
|
||||||
than just writing data to the storage medium, one can use 'script'
|
|
||||||
type. Data written to such entity will be executed as a command list
|
|
||||||
in the u-boot's shell. This for example allows to re-create partition
|
|
||||||
layout and even set new dfu_alt_info for the newly created paritions.
|
|
||||||
Such script would look like:
|
|
||||||
--->8---
|
|
||||||
setenv dfu_alt_info ...
|
|
||||||
setenv mbr_parts ...
|
|
||||||
mbr write ...
|
|
||||||
--->8---
|
|
||||||
Please note that this means that user will be able to execute any
|
|
||||||
arbitrary commands just like in the u-boot's shell.
|
|
||||||
|
|
||||||
"nand" (raw slc nand device)
|
|
||||||
cmd: dfu 0 nand <dev>
|
|
||||||
each element in "dfu_alt_info" =
|
|
||||||
<name> raw <offset> <size> raw access to mmc device
|
|
||||||
<name> part <dev> <part_id> raw acces to partition
|
|
||||||
<name> partubi <dev> <part_id> raw acces to ubi partition
|
|
||||||
|
|
||||||
with <partid> is the MTD partition index
|
|
||||||
|
|
||||||
"ram"
|
|
||||||
cmd: dfu 0 ram <dev>
|
|
||||||
(<dev> is not used for RAM target)
|
|
||||||
each element in "dfu_alt_info" =
|
|
||||||
<name> ram <offset> <size> raw access to ram
|
|
||||||
|
|
||||||
"sf" (serial flash : NOR)
|
|
||||||
cmd: dfu 0 sf <dev>
|
|
||||||
each element in "dfu_alt_info" =
|
|
||||||
<name> raw <offset> <size> raw access to sf device
|
|
||||||
<name> part <dev> <part_id> raw acces to partition
|
|
||||||
<name> partubi <dev> <part_id> raw acces to ubi partition
|
|
||||||
|
|
||||||
with <partid> is the MTD partition index
|
|
||||||
|
|
||||||
"mtd" (all MTD device: NAND, SPI-NOR, SPI-NAND,...)
|
|
||||||
cmd: dfu 0 mtd <dev>
|
|
||||||
with <dev> the mtd identifier as defined in mtd command
|
|
||||||
(nand0, nor0, spi-nand0,...)
|
|
||||||
each element in "dfu_alt_info" =
|
|
||||||
<name> raw <offset> <size> raw access to mtd device
|
|
||||||
<name> part <dev> <part_id> raw acces to partition
|
|
||||||
<name> partubi <dev> <part_id> raw acces to ubi partition
|
|
||||||
|
|
||||||
with <partid> is the MTD partition index
|
|
||||||
|
|
||||||
"virt"
|
|
||||||
cmd: dfu 0 virt <dev>
|
|
||||||
each element in "dfu_alt_info" =
|
|
||||||
<name>
|
|
||||||
|
|
||||||
<interface> and <dev> are absent:
|
|
||||||
the dfu command to use multiple devices
|
|
||||||
cmd: dfu 0 list
|
|
||||||
cmd: dfu 0
|
|
||||||
"dfu_alt_info" variable provides the list of <interface> <dev> with
|
|
||||||
alternate list separated by '&' with the same format for each <alt>
|
|
||||||
mmc <dev>=<alt1>;....;<altN>
|
|
||||||
nand <dev>=<alt1>;....;<altN>
|
|
||||||
ram <dev>=<alt1>;....;<altN>
|
|
||||||
sf <dev>=<alt1>;....;<altN>
|
|
||||||
mtd <dev>=<alt1>;....;<altN>
|
|
||||||
virt <dev>=<alt1>;....;<altN>
|
|
||||||
|
|
||||||
Callbacks:
|
|
||||||
The weak callback functions can be implemented to manage specific behavior
|
|
||||||
- dfu_initiated_callback : called when the DFU transaction is started,
|
|
||||||
used to initiase the device
|
|
||||||
- dfu_flush_callback : called at the end of the DFU write after DFU
|
|
||||||
manifestation, used to manage the device when
|
|
||||||
DFU transaction is closed
|
|
||||||
|
|
||||||
Host tools:
|
|
||||||
When U-Boot runs the dfu stack, the DFU host tools can be used
|
|
||||||
to send/receive firmwares on each configurated alternate.
|
|
||||||
|
|
||||||
For example dfu-util is a host side implementation of the DFU 1.1
|
|
||||||
specifications(http://dfu-util.sourceforge.net/) which works with U-Boot.
|
|
||||||
|
|
||||||
Usage:
|
|
||||||
Example 1: firmware located in eMMC or SD card, with:
|
|
||||||
- alternate 1 (alt=1) for SPL partition (GPT partition 1)
|
|
||||||
- alternate 2 (alt=2) for U-Boot partition (GPT partition 2)
|
|
||||||
|
|
||||||
The U-Boot configuration is:
|
|
||||||
|
|
||||||
U-Boot> env set dfu_alt_info "spl part 0 1;u-boot part 0 2"
|
|
||||||
|
|
||||||
U-Boot> dfu 0 mmc 0 list
|
|
||||||
DFU alt settings list:
|
|
||||||
dev: eMMC alt: 0 name: spl layout: RAW_ADDR
|
|
||||||
dev: eMMC alt: 1 name: u-boot layout: RAW_ADDR
|
|
||||||
|
|
||||||
Boot> dfu 0 mmc 0
|
|
||||||
|
|
||||||
On the Host side:
|
|
||||||
|
|
||||||
list the available alternate setting:
|
|
||||||
|
|
||||||
$> dfu-util -l
|
|
||||||
dfu-util 0.9
|
|
||||||
|
|
||||||
Copyright 2005-2009 Weston Schmidt, Harald Welte and OpenMoko Inc.
|
|
||||||
Copyright 2010-2016 Tormod Volden and Stefan Schmidt
|
|
||||||
This program is Free Software and has ABSOLUTELY NO WARRANTY
|
|
||||||
Please report bugs to http://sourceforge.net/p/dfu-util/tickets/
|
|
||||||
|
|
||||||
Found DFU: [0483:5720] ver=0200, devnum=45, cfg=1, intf=0, path="3-1.3.1", \
|
|
||||||
alt=1, name="u-boot", serial="003A00203438510D36383238"
|
|
||||||
Found DFU: [0483:5720] ver=0200, devnum=45, cfg=1, intf=0, path="3-1.3.1", \
|
|
||||||
alt=0, name="spl", serial="003A00203438510D36383238"
|
|
||||||
|
|
||||||
To download to U-Boot, use -D option
|
|
||||||
|
|
||||||
$> dfu-util -a 0 -D u-boot-spl.bin
|
|
||||||
$> dfu-util -a 1 -D u-boot.bin
|
|
||||||
|
|
||||||
To upload from U-Boot, use -U option
|
|
||||||
|
|
||||||
$> dfu-util -a 0 -U u-boot-spl.bin
|
|
||||||
$> dfu-util -a 1 -U u-boot.bin
|
|
||||||
|
|
||||||
To request a DFU detach and reset the USB connection:
|
|
||||||
$> dfu-util -a 0 -e -R
|
|
||||||
|
|
||||||
|
|
||||||
Example 2: firmware located in NOR (sf) and NAND, with:
|
|
||||||
- alternate 1 (alt=1) for SPL partition (NOR GPT partition 1)
|
|
||||||
- alternate 2 (alt=2) for U-Boot partition (NOR GPT partition 2)
|
|
||||||
- alternate 3 (alt=3) for U-Boot-env partition (NOR GPT partition 3)
|
|
||||||
- alternate 4 (alt=4) for UBI partition (NAND GPT partition 1)
|
|
||||||
|
|
||||||
U-Boot> env set dfu_alt_info \
|
|
||||||
"sf 0:0:10000000:0=spl part 0 1;u-boot part 0 2; \
|
|
||||||
u-boot-env part 0 3&nand 0=UBI partubi 0,1"
|
|
||||||
|
|
||||||
U-Boot> dfu 0 list
|
|
||||||
|
|
||||||
DFU alt settings list:
|
|
||||||
dev: SF alt: 0 name: spl layout: RAW_ADDR
|
|
||||||
dev: SF alt: 1 name: ssbl layout: RAW_ADDR
|
|
||||||
dev: SF alt: 2 name: u-boot-env layout: RAW_ADDR
|
|
||||||
dev: NAND alt: 3 name: UBI layout: RAW_ADDR
|
|
||||||
|
|
||||||
U-Boot> dfu 0
|
|
||||||
|
|
||||||
$> dfu-util -l
|
|
||||||
Found DFU: [0483:5720] ver=9999, devnum=96, cfg=1,\
|
|
||||||
intf=0, alt=3, name="UBI", serial="002700333338511934383330"
|
|
||||||
Found DFU: [0483:5720] ver=9999, devnum=96, cfg=1,\
|
|
||||||
intf=0, alt=2, name="u-boot-env", serial="002700333338511934383330"
|
|
||||||
Found DFU: [0483:5720] ver=9999, devnum=96, cfg=1,\
|
|
||||||
intf=0, alt=1, name="u-boot", serial="002700333338511934383330"
|
|
||||||
Found DFU: [0483:5720] ver=9999, devnum=96, cfg=1,\
|
|
||||||
intf=0, alt=0, name="spl", serial="002700333338511934383330"
|
|
||||||
|
|
||||||
Same example with MTD backend
|
|
||||||
|
|
||||||
U-Boot> env set dfu_alt_info \
|
|
||||||
"mtd nor0=spl part 1;u-boot part 2;u-boot-env part 3&"\
|
|
||||||
"mtd nand0=UBI partubi 1"
|
|
||||||
|
|
||||||
U-Boot> dfu 0 list
|
|
||||||
using id 'nor0,0'
|
|
||||||
using id 'nor0,1'
|
|
||||||
using id 'nor0,2'
|
|
||||||
using id 'nand0,0'
|
|
||||||
DFU alt settings list:
|
|
||||||
dev: MTD alt: 0 name: spl layout: RAW_ADDR
|
|
||||||
dev: MTD alt: 1 name: u-boot layout: RAW_ADDR
|
|
||||||
dev: MTD alt: 2 name: u-boot-env layout: RAW_ADDR
|
|
||||||
dev: MTD alt: 3 name: UBI layout: RAW_ADDR
|
|
||||||
|
|
||||||
Example 3: firmware located in SD Card (mmc) and virtual partition on
|
|
||||||
OTP and PMIC not volatile memory
|
|
||||||
- alternate 1 (alt=1) for scard
|
|
||||||
- alternate 2 (alt=2) for OTP (virtual)
|
|
||||||
- alternate 3 (alt=3) for PMIC NVM (virtual)
|
|
||||||
|
|
||||||
U-Boot> env set dfu_alt_info \
|
|
||||||
"mmc 0=sdcard raw 0 0x100000&"\
|
|
||||||
"virt 0=otp" \
|
|
||||||
"virt 1=pmic"
|
|
||||||
|
|
||||||
U-Boot> dfu 0 list
|
|
||||||
DFU alt settings list:
|
|
||||||
dev: eMMC alt: 0 name: sdcard layout: RAW_ADDR
|
|
||||||
dev: VIRT alt: 1 name: otp layout: RAW_ADDR
|
|
||||||
dev: VIRT alt: 2 name: pmic layout: RAW_ADDR
|
|
|
@ -99,3 +99,11 @@ Deadline: 2020.07
|
||||||
The network subsystem has supported the driver model since early 2015.
|
The network subsystem has supported the driver model since early 2015.
|
||||||
Maintainers should submit patches switching over to using CONFIG_DM_ETH and
|
Maintainers should submit patches switching over to using CONFIG_DM_ETH and
|
||||||
other base driver model options in time for inclusion in the 2020.07 release.
|
other base driver model options in time for inclusion in the 2020.07 release.
|
||||||
|
|
||||||
|
CONFIG_DM_I2C
|
||||||
|
-------------
|
||||||
|
Deadline: 2021.10
|
||||||
|
|
||||||
|
The I2C subsystem has supported the driver model since early 2015.
|
||||||
|
Maintainers should submit patches switching over to using CONFIG_DM_I2C and
|
||||||
|
other base driver model options in time for inclusion in the 2021.10 release.
|
||||||
|
|
404
doc/usage/dfu.rst
Normal file
404
doc/usage/dfu.rst
Normal file
|
@ -0,0 +1,404 @@
|
||||||
|
.. SPDX-License-Identifier: GPL-2.0+
|
||||||
|
|
||||||
|
Device Firmware Upgrade (DFU)
|
||||||
|
=============================
|
||||||
|
|
||||||
|
Overview
|
||||||
|
--------
|
||||||
|
|
||||||
|
The Device Firmware Upgrade (DFU) allows to download and upload firmware
|
||||||
|
to/from U-Boot connected over USB.
|
||||||
|
|
||||||
|
U-boot follows the Universal Serial Bus Device Class Specification for
|
||||||
|
Device Firmware Upgrade Version 1.1 the USB forum (DFU v1.1 in www.usb.org).
|
||||||
|
|
||||||
|
U-Boot implements this DFU capability (CONFIG_DFU) with the command dfu
|
||||||
|
(cmd/dfu.c / CONFIG_CMD_DFU) based on:
|
||||||
|
|
||||||
|
- the DFU stack (common/dfu.c and common/spl/spl_dfu.c), based on the
|
||||||
|
USB DFU download gadget (drivers/usb/gadget/f_dfu.c)
|
||||||
|
- The access to mediums is done in DFU backends (driver/dfu)
|
||||||
|
|
||||||
|
Today the supported DFU backends are:
|
||||||
|
|
||||||
|
- MMC (RAW or FAT / EXT2 / EXT3 / EXT4 file system / SKIP / SCRIPT)
|
||||||
|
- NAND
|
||||||
|
- RAM
|
||||||
|
- SF (serial flash)
|
||||||
|
- MTD (all MTD device: NAND, SPI-NOR, SPI-NAND,...)
|
||||||
|
- virtual
|
||||||
|
|
||||||
|
These DFU backends are also used by
|
||||||
|
|
||||||
|
- the dfutftp (see README.dfutftp)
|
||||||
|
- the thordown command (cmd/thordown.c and gadget/f_thor.c)
|
||||||
|
|
||||||
|
The "virtual" backend is a generic DFU backend to support a board specific
|
||||||
|
target (for example OTP), only based on the weak functions:
|
||||||
|
|
||||||
|
- dfu_write_medium_virt
|
||||||
|
- dfu_get_medium_size_virt
|
||||||
|
- dfu_read_medium_virt
|
||||||
|
|
||||||
|
Configuration Options
|
||||||
|
---------------------
|
||||||
|
|
||||||
|
The following configuration option are relevant for device firmware upgrade:
|
||||||
|
|
||||||
|
* CONFIG_DFU
|
||||||
|
* CONFIG_DFU_OVER_USB
|
||||||
|
* CONFIG_DFU_MMC
|
||||||
|
* CONFIG_DFU_MTD
|
||||||
|
* CONFIG_DFU_NAND
|
||||||
|
* CONFIG_DFU_RAM
|
||||||
|
* CONFIG_DFU_SF
|
||||||
|
* CONFIG_DFU_SF_PART
|
||||||
|
* CONFIG_DFU_TIMEOUT
|
||||||
|
* CONFIG_DFU_VIRTUAL
|
||||||
|
* CONFIG_CMD_DFU
|
||||||
|
|
||||||
|
Environment variables
|
||||||
|
---------------------
|
||||||
|
|
||||||
|
The dfu command uses 3 environments variables:
|
||||||
|
|
||||||
|
dfu_alt_info
|
||||||
|
The DFU setting for the USB download gadget with a semicolon separated
|
||||||
|
string of information on each alternate::
|
||||||
|
|
||||||
|
dfu_alt_info="<alt1>;<alt2>;....;<altN>"
|
||||||
|
|
||||||
|
When several devices are used, the format is:
|
||||||
|
|
||||||
|
- <interface> <dev>'='alternate list (';' separated)
|
||||||
|
- each interface is separated by '&'::
|
||||||
|
|
||||||
|
dfu_alt_info=\
|
||||||
|
"<interface1> <dev1>=<alt1>;....;<altN>&"\
|
||||||
|
"<interface2> <dev2>=<altN+1>;....;<altM>&"\
|
||||||
|
...\
|
||||||
|
"<interfaceI> <devI>=<altY+1>;....;<altZ>&"
|
||||||
|
|
||||||
|
dfu_bufsiz
|
||||||
|
size of the DFU buffer, when absent, defaults to
|
||||||
|
CONFIG_SYS_DFU_DATA_BUF_SIZE (8 MiB by default)
|
||||||
|
|
||||||
|
dfu_hash_algo
|
||||||
|
name of the hash algorithm to use
|
||||||
|
|
||||||
|
Commands
|
||||||
|
--------
|
||||||
|
|
||||||
|
dfu <USB_controller> [<interface> <dev>] list
|
||||||
|
list the alternate device defined in *dfu_alt_info*
|
||||||
|
|
||||||
|
dfu <USB_controller> [<interface> <dev>] [<timeout>]
|
||||||
|
start the dfu stack on the USB instance with the selected medium
|
||||||
|
backend and use the *dfu_alt_info* variable to configure the
|
||||||
|
alternate setting and link each one with the medium
|
||||||
|
The dfu command continue until receive a ^C in console or
|
||||||
|
a DFU detach transaction from HOST. If CONFIG_DFU_TIMEOUT option
|
||||||
|
is enabled and <timeout> parameter is present in the command line,
|
||||||
|
the DFU operation will be aborted automatically after <timeout>
|
||||||
|
seconds of waiting remote to initiate DFU session.
|
||||||
|
|
||||||
|
The possible values of <interface> are (with <USB controller> = 0 in the dfu
|
||||||
|
command example)
|
||||||
|
|
||||||
|
mmc
|
||||||
|
for eMMC and SD card::
|
||||||
|
|
||||||
|
dfu 0 mmc <dev>
|
||||||
|
|
||||||
|
each element in *dfu_alt_info* being
|
||||||
|
|
||||||
|
* <name> raw <offset> <size> [mmcpart <num>] raw access to mmc device
|
||||||
|
* <name> part <dev> <part_id> [mmcpart <num>] raw access to partition
|
||||||
|
* <name> fat <dev> <part_id> [mmcpart <num>] file in FAT partition
|
||||||
|
* <name> ext4 <dev> <part_id> [mmcpart <num>] file in EXT4 partition
|
||||||
|
* <name> skip 0 0 ignore flashed data
|
||||||
|
* <name> script 0 0 execute commands in shell
|
||||||
|
|
||||||
|
with
|
||||||
|
|
||||||
|
partid
|
||||||
|
being the GPT or DOS partition index,
|
||||||
|
num
|
||||||
|
being the eMMC hardware partition number.
|
||||||
|
|
||||||
|
A value of environment variable *dfu_alt_info* for eMMC could be::
|
||||||
|
|
||||||
|
u-boot raw 0x3e 0x800 mmcpart 1;bl2 raw 0x1e 0x1d mmcpart 1
|
||||||
|
|
||||||
|
A value of environment variable *dfu_alt_info* for SD card could be::
|
||||||
|
|
||||||
|
u-boot raw 0x80 0x800;uImage ext4 0 2
|
||||||
|
|
||||||
|
If don't want to flash given image file to storage, use "skip" type
|
||||||
|
entity.
|
||||||
|
|
||||||
|
- It can be used to protect flashing wrong image for the specific board.
|
||||||
|
- Especailly, this layout will be useful when thor protocol is used,
|
||||||
|
which performs flashing in batch mode, where more than one file is
|
||||||
|
processed.
|
||||||
|
|
||||||
|
For example, if one makes a single tar file with support for the two
|
||||||
|
boards with u-boot-<board1>.bin and u-boot-<board2>.bin files, one
|
||||||
|
can use it to flash a proper u-boot image on both without a failure::
|
||||||
|
|
||||||
|
u-boot-<board1>.bin raw 0x80 0x800; u-boot-<board2>.bin skip 0 0
|
||||||
|
|
||||||
|
When flashing new system image requires do some more complex things
|
||||||
|
than just writing data to the storage medium, one can use 'script'
|
||||||
|
type. Data written to such entity will be executed as a command list
|
||||||
|
in the u-boot's shell. This for example allows to re-create partition
|
||||||
|
layout and even set new *dfu_alt_info* for the newly created paritions.
|
||||||
|
Such script would look like::
|
||||||
|
|
||||||
|
setenv dfu_alt_info ...
|
||||||
|
setenv mbr_parts ...
|
||||||
|
mbr write ...
|
||||||
|
|
||||||
|
Please note that this means that user will be able to execute any
|
||||||
|
arbitrary commands just like in the u-boot's shell.
|
||||||
|
|
||||||
|
nand
|
||||||
|
raw slc nand device::
|
||||||
|
|
||||||
|
dfu 0 nand <dev>
|
||||||
|
|
||||||
|
each element in *dfu_alt_info* being either of
|
||||||
|
|
||||||
|
* <name> raw <offset> <size> raw access to mmc device
|
||||||
|
* <name> part <dev> <part_id> raw acces to partition
|
||||||
|
* <name> partubi <dev> <part_id> raw acces to ubi partition
|
||||||
|
|
||||||
|
with
|
||||||
|
|
||||||
|
partid
|
||||||
|
is the MTD partition index
|
||||||
|
|
||||||
|
ram
|
||||||
|
raw access to ram::
|
||||||
|
|
||||||
|
dfu 0 ram <dev>
|
||||||
|
|
||||||
|
dev
|
||||||
|
is not used for RAM target
|
||||||
|
|
||||||
|
each element in *dfu_alt_info* being::
|
||||||
|
|
||||||
|
<name> ram <offset> <size> raw access to ram
|
||||||
|
|
||||||
|
sf
|
||||||
|
serial flash : NOR::
|
||||||
|
|
||||||
|
cmd: dfu 0 sf <dev>
|
||||||
|
|
||||||
|
each element in *dfu_alt_info* being either of:
|
||||||
|
|
||||||
|
* <name> raw <offset> <size> raw access to sf device
|
||||||
|
* <name> part <dev> <part_id> raw acces to partition
|
||||||
|
* <name> partubi <dev> <part_id> raw acces to ubi partition
|
||||||
|
|
||||||
|
with
|
||||||
|
|
||||||
|
partid
|
||||||
|
is the MTD partition index
|
||||||
|
|
||||||
|
mtd
|
||||||
|
all MTD device: NAND, SPI-NOR, SPI-NAND,...::
|
||||||
|
|
||||||
|
cmd: dfu 0 mtd <dev>
|
||||||
|
|
||||||
|
with
|
||||||
|
|
||||||
|
dev
|
||||||
|
the mtd identifier as defined in mtd command
|
||||||
|
(nand0, nor0, spi-nand0,...)
|
||||||
|
|
||||||
|
each element in *dfu_alt_info* being either of:
|
||||||
|
|
||||||
|
* <name> raw <offset> <size> forraw access to mtd device
|
||||||
|
* <name> part <dev> <part_id> for raw acces to partition
|
||||||
|
* <name> partubi <dev> <part_id> for raw acces to ubi partition
|
||||||
|
|
||||||
|
with
|
||||||
|
|
||||||
|
partid
|
||||||
|
is the MTD partition index
|
||||||
|
|
||||||
|
virt
|
||||||
|
virtual flash back end for DFU
|
||||||
|
|
||||||
|
::
|
||||||
|
|
||||||
|
cmd: dfu 0 virt <dev>
|
||||||
|
|
||||||
|
each element in *dfu_alt_info* being:
|
||||||
|
|
||||||
|
* <name>
|
||||||
|
|
||||||
|
<interface> and <dev> are absent, the dfu command to use multiple devices::
|
||||||
|
|
||||||
|
cmd: dfu 0 list
|
||||||
|
cmd: dfu 0
|
||||||
|
|
||||||
|
*dfu_alt_info* variable provides the list of <interface> <dev> with
|
||||||
|
alternate list separated by '&' with the same format for each <alt>::
|
||||||
|
|
||||||
|
mmc <dev>=<alt1>;....;<altN>
|
||||||
|
nand <dev>=<alt1>;....;<altN>
|
||||||
|
ram <dev>=<alt1>;....;<altN>
|
||||||
|
sf <dev>=<alt1>;....;<altN>
|
||||||
|
mtd <dev>=<alt1>;....;<altN>
|
||||||
|
virt <dev>=<alt1>;....;<altN>
|
||||||
|
|
||||||
|
Callbacks
|
||||||
|
---------
|
||||||
|
|
||||||
|
The weak callback functions can be implemented to manage specific behavior
|
||||||
|
|
||||||
|
dfu_initiated_callback
|
||||||
|
called when the DFU transaction is started, used to initiase the device
|
||||||
|
|
||||||
|
dfu_flush_callback
|
||||||
|
called at the end of the DFU write after DFU manifestation, used to manage
|
||||||
|
the device when DFU transaction is closed
|
||||||
|
|
||||||
|
Host tools
|
||||||
|
----------
|
||||||
|
|
||||||
|
When U-Boot runs the dfu stack, the DFU host tools can be used
|
||||||
|
to send/receive firmwares on each configurated alternate.
|
||||||
|
|
||||||
|
For example dfu-util is a host side implementation of the DFU 1.1
|
||||||
|
specifications(http://dfu-util.sourceforge.net/) which works with U-Boot.
|
||||||
|
|
||||||
|
Usage
|
||||||
|
-----
|
||||||
|
|
||||||
|
Example 1: firmware located in eMMC or SD card, with:
|
||||||
|
|
||||||
|
- alternate 1 (alt=1) for SPL partition (GPT partition 1)
|
||||||
|
- alternate 2 (alt=2) for U-Boot partition (GPT partition 2)
|
||||||
|
|
||||||
|
The U-Boot configuration is::
|
||||||
|
|
||||||
|
U-Boot> env set dfu_alt_info "spl part 0 1;u-boot part 0 2"
|
||||||
|
|
||||||
|
U-Boot> dfu 0 mmc 0 list
|
||||||
|
DFU alt settings list:
|
||||||
|
dev: eMMC alt: 0 name: spl layout: RAW_ADDR
|
||||||
|
dev: eMMC alt: 1 name: u-boot layout: RAW_ADDR
|
||||||
|
|
||||||
|
Boot> dfu 0 mmc 0
|
||||||
|
|
||||||
|
On the Host side:
|
||||||
|
|
||||||
|
list the available alternate setting::
|
||||||
|
|
||||||
|
$> dfu-util -l
|
||||||
|
dfu-util 0.9
|
||||||
|
|
||||||
|
Copyright 2005-2009 Weston Schmidt, Harald Welte and OpenMoko Inc.
|
||||||
|
Copyright 2010-2016 Tormod Volden and Stefan Schmidt
|
||||||
|
This program is Free Software and has ABSOLUTELY NO WARRANTY
|
||||||
|
Please report bugs to http://sourceforge.net/p/dfu-util/tickets/
|
||||||
|
|
||||||
|
Found DFU: [0483:5720] ver=0200, devnum=45, cfg=1, intf=0, path="3-1.3.1", \
|
||||||
|
alt=1, name="u-boot", serial="003A00203438510D36383238"
|
||||||
|
Found DFU: [0483:5720] ver=0200, devnum=45, cfg=1, intf=0, path="3-1.3.1", \
|
||||||
|
alt=0, name="spl", serial="003A00203438510D36383238"
|
||||||
|
|
||||||
|
To download to U-Boot, use -D option
|
||||||
|
|
||||||
|
$> dfu-util -a 0 -D u-boot-spl.bin
|
||||||
|
$> dfu-util -a 1 -D u-boot.bin
|
||||||
|
|
||||||
|
To upload from U-Boot, use -U option
|
||||||
|
|
||||||
|
$> dfu-util -a 0 -U u-boot-spl.bin
|
||||||
|
$> dfu-util -a 1 -U u-boot.bin
|
||||||
|
|
||||||
|
To request a DFU detach and reset the USB connection:
|
||||||
|
$> dfu-util -a 0 -e -R
|
||||||
|
|
||||||
|
|
||||||
|
Example 2: firmware located in NOR (sf) and NAND, with:
|
||||||
|
|
||||||
|
- alternate 1 (alt=1) for SPL partition (NOR GPT partition 1)
|
||||||
|
- alternate 2 (alt=2) for U-Boot partition (NOR GPT partition 2)
|
||||||
|
- alternate 3 (alt=3) for U-Boot-env partition (NOR GPT partition 3)
|
||||||
|
- alternate 4 (alt=4) for UBI partition (NAND GPT partition 1)
|
||||||
|
|
||||||
|
::
|
||||||
|
|
||||||
|
U-Boot> env set dfu_alt_info \
|
||||||
|
"sf 0:0:10000000:0=spl part 0 1;u-boot part 0 2; \
|
||||||
|
u-boot-env part 0 3&nand 0=UBI partubi 0,1"
|
||||||
|
|
||||||
|
U-Boot> dfu 0 list
|
||||||
|
|
||||||
|
DFU alt settings list:
|
||||||
|
dev: SF alt: 0 name: spl layout: RAW_ADDR
|
||||||
|
dev: SF alt: 1 name: ssbl layout: RAW_ADDR
|
||||||
|
dev: SF alt: 2 name: u-boot-env layout: RAW_ADDR
|
||||||
|
dev: NAND alt: 3 name: UBI layout: RAW_ADDR
|
||||||
|
|
||||||
|
U-Boot> dfu 0
|
||||||
|
|
||||||
|
::
|
||||||
|
|
||||||
|
$> dfu-util -l
|
||||||
|
Found DFU: [0483:5720] ver=9999, devnum=96, cfg=1,\
|
||||||
|
intf=0, alt=3, name="UBI", serial="002700333338511934383330"
|
||||||
|
Found DFU: [0483:5720] ver=9999, devnum=96, cfg=1,\
|
||||||
|
intf=0, alt=2, name="u-boot-env", serial="002700333338511934383330"
|
||||||
|
Found DFU: [0483:5720] ver=9999, devnum=96, cfg=1,\
|
||||||
|
intf=0, alt=1, name="u-boot", serial="002700333338511934383330"
|
||||||
|
Found DFU: [0483:5720] ver=9999, devnum=96, cfg=1,\
|
||||||
|
intf=0, alt=0, name="spl", serial="002700333338511934383330"
|
||||||
|
|
||||||
|
Same example with MTD backend
|
||||||
|
|
||||||
|
::
|
||||||
|
|
||||||
|
U-Boot> env set dfu_alt_info \
|
||||||
|
"mtd nor0=spl part 1;u-boot part 2;u-boot-env part 3&"\
|
||||||
|
"mtd nand0=UBI partubi 1"
|
||||||
|
|
||||||
|
U-Boot> dfu 0 list
|
||||||
|
using id 'nor0,0'
|
||||||
|
using id 'nor0,1'
|
||||||
|
using id 'nor0,2'
|
||||||
|
using id 'nand0,0'
|
||||||
|
DFU alt settings list:
|
||||||
|
dev: MTD alt: 0 name: spl layout: RAW_ADDR
|
||||||
|
dev: MTD alt: 1 name: u-boot layout: RAW_ADDR
|
||||||
|
dev: MTD alt: 2 name: u-boot-env layout: RAW_ADDR
|
||||||
|
dev: MTD alt: 3 name: UBI layout: RAW_ADDR
|
||||||
|
|
||||||
|
Example 3
|
||||||
|
|
||||||
|
firmware located in SD Card (mmc) and virtual partition on OTP and PMIC not
|
||||||
|
volatile memory
|
||||||
|
|
||||||
|
- alternate 1 (alt=1) for scard
|
||||||
|
- alternate 2 (alt=2) for OTP (virtual)
|
||||||
|
- alternate 3 (alt=3) for PMIC NVM (virtual)
|
||||||
|
|
||||||
|
::
|
||||||
|
|
||||||
|
U-Boot> env set dfu_alt_info \
|
||||||
|
"mmc 0=sdcard raw 0 0x100000&"\
|
||||||
|
"virt 0=otp" \
|
||||||
|
"virt 1=pmic"
|
||||||
|
|
||||||
|
::
|
||||||
|
|
||||||
|
U-Boot> dfu 0 list
|
||||||
|
DFU alt settings list:
|
||||||
|
dev: eMMC alt: 0 name: sdcard layout: RAW_ADDR
|
||||||
|
dev: VIRT alt: 1 name: otp layout: RAW_ADDR
|
||||||
|
dev: VIRT alt: 2 name: pmic layout: RAW_ADDR
|
|
@ -4,6 +4,7 @@ Use U-Boot
|
||||||
.. toctree::
|
.. toctree::
|
||||||
:maxdepth: 1
|
:maxdepth: 1
|
||||||
|
|
||||||
|
dfu
|
||||||
fdt_overlays
|
fdt_overlays
|
||||||
fit
|
fit
|
||||||
netconsole
|
netconsole
|
||||||
|
|
|
@ -21,6 +21,7 @@
|
||||||
#include <sata.h>
|
#include <sata.h>
|
||||||
#include <scsi.h>
|
#include <scsi.h>
|
||||||
#include <syscon.h>
|
#include <syscon.h>
|
||||||
|
#include <dm/device_compat.h>
|
||||||
|
|
||||||
#define SYS_CFG 0x14
|
#define SYS_CFG 0x14
|
||||||
#define SYS_CFG_SATA_MSK GENMASK(31, 30)
|
#define SYS_CFG_SATA_MSK GENMASK(31, 30)
|
||||||
|
|
|
@ -1639,7 +1639,8 @@ static int msdc_drv_probe(struct udevice *dev)
|
||||||
else
|
else
|
||||||
cfg->f_min = host->src_clk_freq / (4 * 4095);
|
cfg->f_min = host->src_clk_freq / (4 * 4095);
|
||||||
|
|
||||||
cfg->f_max = host->src_clk_freq;
|
if (cfg->f_max < cfg->f_min || cfg->f_max > host->src_clk_freq)
|
||||||
|
cfg->f_max = host->src_clk_freq;
|
||||||
|
|
||||||
cfg->b_max = 1024;
|
cfg->b_max = 1024;
|
||||||
cfg->voltages = MMC_VDD_32_33 | MMC_VDD_33_34;
|
cfg->voltages = MMC_VDD_32_33 | MMC_VDD_33_34;
|
||||||
|
|
|
@ -411,9 +411,16 @@ static void fsl_ifc_cmdfunc(struct mtd_info *mtd, unsigned int command,
|
||||||
/* READID must read all possible bytes while CEB is active */
|
/* READID must read all possible bytes while CEB is active */
|
||||||
case NAND_CMD_READID:
|
case NAND_CMD_READID:
|
||||||
case NAND_CMD_PARAM: {
|
case NAND_CMD_PARAM: {
|
||||||
|
/*
|
||||||
|
* For READID, read 8 bytes that are currently used.
|
||||||
|
* For PARAM, read all 3 copies of 256-bytes pages.
|
||||||
|
*/
|
||||||
|
int len = 8;
|
||||||
int timing = IFC_FIR_OP_RB;
|
int timing = IFC_FIR_OP_RB;
|
||||||
if (command == NAND_CMD_PARAM)
|
if (command == NAND_CMD_PARAM) {
|
||||||
timing = IFC_FIR_OP_RBCD;
|
timing = IFC_FIR_OP_RBCD;
|
||||||
|
len = 256 * 3;
|
||||||
|
}
|
||||||
|
|
||||||
ifc_out32(&ifc->ifc_nand.nand_fir0,
|
ifc_out32(&ifc->ifc_nand.nand_fir0,
|
||||||
(IFC_FIR_OP_CW0 << IFC_NAND_FIR0_OP0_SHIFT) |
|
(IFC_FIR_OP_CW0 << IFC_NAND_FIR0_OP0_SHIFT) |
|
||||||
|
@ -423,12 +430,8 @@ static void fsl_ifc_cmdfunc(struct mtd_info *mtd, unsigned int command,
|
||||||
command << IFC_NAND_FCR0_CMD0_SHIFT);
|
command << IFC_NAND_FCR0_CMD0_SHIFT);
|
||||||
ifc_out32(&ifc->ifc_nand.row3, column);
|
ifc_out32(&ifc->ifc_nand.row3, column);
|
||||||
|
|
||||||
/*
|
ifc_out32(&ifc->ifc_nand.nand_fbcr, len);
|
||||||
* although currently it's 8 bytes for READID, we always read
|
ctrl->read_bytes = len;
|
||||||
* the maximum 256 bytes(for PARAM)
|
|
||||||
*/
|
|
||||||
ifc_out32(&ifc->ifc_nand.nand_fbcr, 256);
|
|
||||||
ctrl->read_bytes = 256;
|
|
||||||
|
|
||||||
set_addr(mtd, 0, 0, 0);
|
set_addr(mtd, 0, 0, 0);
|
||||||
fsl_ifc_run_command(mtd);
|
fsl_ifc_run_command(mtd);
|
||||||
|
|
|
@ -22,6 +22,8 @@
|
||||||
#define NVME_AQ_DEPTH 2
|
#define NVME_AQ_DEPTH 2
|
||||||
#define NVME_SQ_SIZE(depth) (depth * sizeof(struct nvme_command))
|
#define NVME_SQ_SIZE(depth) (depth * sizeof(struct nvme_command))
|
||||||
#define NVME_CQ_SIZE(depth) (depth * sizeof(struct nvme_completion))
|
#define NVME_CQ_SIZE(depth) (depth * sizeof(struct nvme_completion))
|
||||||
|
#define NVME_CQ_ALLOCATION ALIGN(NVME_CQ_SIZE(NVME_Q_DEPTH), \
|
||||||
|
ARCH_DMA_MINALIGN)
|
||||||
#define ADMIN_TIMEOUT 60
|
#define ADMIN_TIMEOUT 60
|
||||||
#define IO_TIMEOUT 30
|
#define IO_TIMEOUT 30
|
||||||
#define MAX_PRP_POOL 512
|
#define MAX_PRP_POOL 512
|
||||||
|
@ -144,8 +146,14 @@ static __le16 nvme_get_cmd_id(void)
|
||||||
|
|
||||||
static u16 nvme_read_completion_status(struct nvme_queue *nvmeq, u16 index)
|
static u16 nvme_read_completion_status(struct nvme_queue *nvmeq, u16 index)
|
||||||
{
|
{
|
||||||
u64 start = (ulong)&nvmeq->cqes[index];
|
/*
|
||||||
u64 stop = start + sizeof(struct nvme_completion);
|
* Single CQ entries are always smaller than a cache line, so we
|
||||||
|
* can't invalidate them individually. However CQ entries are
|
||||||
|
* read only by the CPU, so it's safe to always invalidate all of them,
|
||||||
|
* as the cache line should never become dirty.
|
||||||
|
*/
|
||||||
|
ulong start = (ulong)&nvmeq->cqes[0];
|
||||||
|
ulong stop = start + NVME_CQ_ALLOCATION;
|
||||||
|
|
||||||
invalidate_dcache_range(start, stop);
|
invalidate_dcache_range(start, stop);
|
||||||
|
|
||||||
|
@ -241,7 +249,7 @@ static struct nvme_queue *nvme_alloc_queue(struct nvme_dev *dev,
|
||||||
return NULL;
|
return NULL;
|
||||||
memset(nvmeq, 0, sizeof(*nvmeq));
|
memset(nvmeq, 0, sizeof(*nvmeq));
|
||||||
|
|
||||||
nvmeq->cqes = (void *)memalign(4096, NVME_CQ_SIZE(depth));
|
nvmeq->cqes = (void *)memalign(4096, NVME_CQ_ALLOCATION);
|
||||||
if (!nvmeq->cqes)
|
if (!nvmeq->cqes)
|
||||||
goto free_nvmeq;
|
goto free_nvmeq;
|
||||||
memset((void *)nvmeq->cqes, 0, NVME_CQ_SIZE(depth));
|
memset((void *)nvmeq->cqes, 0, NVME_CQ_SIZE(depth));
|
||||||
|
@ -339,7 +347,7 @@ static void nvme_init_queue(struct nvme_queue *nvmeq, u16 qid)
|
||||||
nvmeq->q_db = &dev->dbs[qid * 2 * dev->db_stride];
|
nvmeq->q_db = &dev->dbs[qid * 2 * dev->db_stride];
|
||||||
memset((void *)nvmeq->cqes, 0, NVME_CQ_SIZE(nvmeq->q_depth));
|
memset((void *)nvmeq->cqes, 0, NVME_CQ_SIZE(nvmeq->q_depth));
|
||||||
flush_dcache_range((ulong)nvmeq->cqes,
|
flush_dcache_range((ulong)nvmeq->cqes,
|
||||||
(ulong)nvmeq->cqes + NVME_CQ_SIZE(nvmeq->q_depth));
|
(ulong)nvmeq->cqes + NVME_CQ_ALLOCATION);
|
||||||
dev->online_queues++;
|
dev->online_queues++;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -481,6 +489,7 @@ int nvme_get_features(struct nvme_dev *dev, unsigned fid, unsigned nsid,
|
||||||
dma_addr_t dma_addr, u32 *result)
|
dma_addr_t dma_addr, u32 *result)
|
||||||
{
|
{
|
||||||
struct nvme_command c;
|
struct nvme_command c;
|
||||||
|
int ret;
|
||||||
|
|
||||||
memset(&c, 0, sizeof(c));
|
memset(&c, 0, sizeof(c));
|
||||||
c.features.opcode = nvme_admin_get_features;
|
c.features.opcode = nvme_admin_get_features;
|
||||||
|
@ -488,12 +497,20 @@ int nvme_get_features(struct nvme_dev *dev, unsigned fid, unsigned nsid,
|
||||||
c.features.prp1 = cpu_to_le64(dma_addr);
|
c.features.prp1 = cpu_to_le64(dma_addr);
|
||||||
c.features.fid = cpu_to_le32(fid);
|
c.features.fid = cpu_to_le32(fid);
|
||||||
|
|
||||||
|
ret = nvme_submit_admin_cmd(dev, &c, result);
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* TODO: add cache invalidate operation when the size of
|
* TODO: Add some cache invalidation when a DMA buffer is involved
|
||||||
* the DMA buffer is known
|
* in the request, here and before the command gets submitted. The
|
||||||
|
* buffer size varies by feature, also some features use a different
|
||||||
|
* field in the command packet to hold the buffer address.
|
||||||
|
* Section 5.21.1 (Set Features command) in the NVMe specification
|
||||||
|
* details the buffer requirements for each feature.
|
||||||
|
*
|
||||||
|
* At the moment there is no user of this function.
|
||||||
*/
|
*/
|
||||||
|
|
||||||
return nvme_submit_admin_cmd(dev, &c, result);
|
return ret;
|
||||||
}
|
}
|
||||||
|
|
||||||
int nvme_set_features(struct nvme_dev *dev, unsigned fid, unsigned dword11,
|
int nvme_set_features(struct nvme_dev *dev, unsigned fid, unsigned dword11,
|
||||||
|
@ -508,8 +525,14 @@ int nvme_set_features(struct nvme_dev *dev, unsigned fid, unsigned dword11,
|
||||||
c.features.dword11 = cpu_to_le32(dword11);
|
c.features.dword11 = cpu_to_le32(dword11);
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* TODO: add cache flush operation when the size of
|
* TODO: Add a cache clean (aka flush) operation when a DMA buffer is
|
||||||
* the DMA buffer is known
|
* involved in the request. The buffer size varies by feature, also
|
||||||
|
* some features use a different field in the command packet to hold
|
||||||
|
* the buffer address. Section 5.21.1 (Set Features command) in the
|
||||||
|
* NVMe specification details the buffer requirements for each
|
||||||
|
* feature.
|
||||||
|
* At the moment the only user of this function is not using
|
||||||
|
* any DMA buffer at all.
|
||||||
*/
|
*/
|
||||||
|
|
||||||
return nvme_submit_admin_cmd(dev, &c, result);
|
return nvme_submit_admin_cmd(dev, &c, result);
|
||||||
|
|
|
@ -244,7 +244,7 @@ static int ls_pcie_ep_probe(struct udevice *dev)
|
||||||
int ret;
|
int ret;
|
||||||
u32 svr;
|
u32 svr;
|
||||||
|
|
||||||
pcie = devm_kmalloc(dev, sizeof(*pcie), GFP_KERNEL);
|
pcie = devm_kzalloc(dev, sizeof(*pcie), GFP_KERNEL);
|
||||||
if (!pcie)
|
if (!pcie)
|
||||||
return -ENOMEM;
|
return -ENOMEM;
|
||||||
|
|
||||||
|
|
|
@ -254,7 +254,7 @@ static int ls_pcie_probe(struct udevice *dev)
|
||||||
|
|
||||||
pcie_rc->bus = dev;
|
pcie_rc->bus = dev;
|
||||||
|
|
||||||
pcie = devm_kmalloc(dev, sizeof(*pcie), GFP_KERNEL);
|
pcie = devm_kzalloc(dev, sizeof(*pcie), GFP_KERNEL);
|
||||||
if (!pcie)
|
if (!pcie)
|
||||||
return -ENOMEM;
|
return -ENOMEM;
|
||||||
|
|
||||||
|
|
|
@ -23,6 +23,7 @@
|
||||||
enum ds_type {
|
enum ds_type {
|
||||||
ds_1307,
|
ds_1307,
|
||||||
ds_1337,
|
ds_1337,
|
||||||
|
ds_1339,
|
||||||
ds_1340,
|
ds_1340,
|
||||||
m41t11,
|
m41t11,
|
||||||
mcp794xx,
|
mcp794xx,
|
||||||
|
@ -344,6 +345,7 @@ static const struct rtc_ops ds1307_rtc_ops = {
|
||||||
static const struct udevice_id ds1307_rtc_ids[] = {
|
static const struct udevice_id ds1307_rtc_ids[] = {
|
||||||
{ .compatible = "dallas,ds1307", .data = ds_1307 },
|
{ .compatible = "dallas,ds1307", .data = ds_1307 },
|
||||||
{ .compatible = "dallas,ds1337", .data = ds_1337 },
|
{ .compatible = "dallas,ds1337", .data = ds_1337 },
|
||||||
|
{ .compatible = "dallas,ds1339", .data = ds_1339 },
|
||||||
{ .compatible = "dallas,ds1340", .data = ds_1340 },
|
{ .compatible = "dallas,ds1340", .data = ds_1340 },
|
||||||
{ .compatible = "microchip,mcp7941x", .data = mcp794xx },
|
{ .compatible = "microchip,mcp7941x", .data = mcp794xx },
|
||||||
{ .compatible = "st,m41t11", .data = m41t11 },
|
{ .compatible = "st,m41t11", .data = m41t11 },
|
||||||
|
|
|
@ -70,12 +70,25 @@ struct sys_info {
|
||||||
int mr_no; /* number of memory regions */
|
int mr_no; /* number of memory regions */
|
||||||
};
|
};
|
||||||
|
|
||||||
#undef CONFIG_SYS_64BIT_LBA
|
/*
|
||||||
#ifdef CONFIG_SYS_64BIT_LBA
|
* FIXME: Previously this code was:
|
||||||
typedef u_int64_t lbasize_t;
|
*
|
||||||
#else
|
* #undef CONFIG_SYS_64BIT_LBA
|
||||||
|
* #ifdef CONFIG_SYS_64BIT_LBA
|
||||||
|
* typedef u_int64_t lbasize_t;
|
||||||
|
* #else
|
||||||
|
* typedef unsigned long lbasize_t;
|
||||||
|
* #endif
|
||||||
|
*
|
||||||
|
* But we cannot just undefine CONFIG_SYS_64BIT_LBA, because then in
|
||||||
|
* api/api_storage.c the type signature of lbaint_t will be different if
|
||||||
|
* CONFIG_SYS_64BIT_LBA is enabled for the board, which can result in various
|
||||||
|
* bugs.
|
||||||
|
* So simply define lbasize_t as an unsigned long, since this was what was done
|
||||||
|
* anyway for at least 13 years, but don't undefine CONFIG_SYS_64BIT_LBA.
|
||||||
|
*/
|
||||||
typedef unsigned long lbasize_t;
|
typedef unsigned long lbasize_t;
|
||||||
#endif
|
|
||||||
typedef unsigned long lbastart_t;
|
typedef unsigned long lbastart_t;
|
||||||
|
|
||||||
#define DEV_TYP_NONE 0x0000
|
#define DEV_TYP_NONE 0x0000
|
||||||
|
|
|
@ -81,12 +81,6 @@
|
||||||
#define CONFIG_SYS_SCSI_MAX_LUN 1
|
#define CONFIG_SYS_SCSI_MAX_LUN 1
|
||||||
#define CONFIG_SYS_SCSI_MAX_DEVICE (CONFIG_SYS_SCSI_MAX_SCSI_ID * \
|
#define CONFIG_SYS_SCSI_MAX_DEVICE (CONFIG_SYS_SCSI_MAX_SCSI_ID * \
|
||||||
CONFIG_SYS_SCSI_MAX_LUN)
|
CONFIG_SYS_SCSI_MAX_LUN)
|
||||||
/* DSPI */
|
|
||||||
#ifdef CONFIG_FSL_DSPI
|
|
||||||
#define CONFIG_SPI_FLASH_SST
|
|
||||||
#define CONFIG_SPI_FLASH_EON
|
|
||||||
#endif
|
|
||||||
|
|
||||||
#ifndef SPL_NO_ENV
|
#ifndef SPL_NO_ENV
|
||||||
#undef CONFIG_EXTRA_ENV_SETTINGS
|
#undef CONFIG_EXTRA_ENV_SETTINGS
|
||||||
#define CONFIG_EXTRA_ENV_SETTINGS \
|
#define CONFIG_EXTRA_ENV_SETTINGS \
|
||||||
|
|
|
@ -154,12 +154,6 @@
|
||||||
#endif
|
#endif
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
/* FlexSPI */
|
|
||||||
#ifdef CONFIG_NXP_FSPI
|
|
||||||
#define NXP_FSPI_FLASH_SIZE SZ_64M
|
|
||||||
#define NXP_FSPI_FLASH_NUM 1
|
|
||||||
#endif
|
|
||||||
|
|
||||||
/* GPIO */
|
/* GPIO */
|
||||||
#ifdef CONFIG_DM_GPIO
|
#ifdef CONFIG_DM_GPIO
|
||||||
#ifndef CONFIG_MPC8XXX_GPIO
|
#ifndef CONFIG_MPC8XXX_GPIO
|
||||||
|
|
|
@ -6,6 +6,8 @@
|
||||||
#ifndef __DM_TEST_H
|
#ifndef __DM_TEST_H
|
||||||
#define __DM_TEST_H
|
#define __DM_TEST_H
|
||||||
|
|
||||||
|
struct udevice;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* struct dm_test_cdata - configuration data for test instance
|
* struct dm_test_cdata - configuration data for test instance
|
||||||
*
|
*
|
||||||
|
|
|
@ -140,7 +140,7 @@
|
||||||
#define CSOR_NOR_ADM_SHIFT_SHIFT 13
|
#define CSOR_NOR_ADM_SHIFT_SHIFT 13
|
||||||
#define CSOR_NOR_ADM_SHIFT(n) ((n) << CSOR_NOR_ADM_SHIFT_SHIFT)
|
#define CSOR_NOR_ADM_SHIFT(n) ((n) << CSOR_NOR_ADM_SHIFT_SHIFT)
|
||||||
/* Type of the NOR device hooked */
|
/* Type of the NOR device hooked */
|
||||||
#define CSOR_NOR_NOR_MODE_AYSNC_NOR 0x00000000
|
#define CSOR_NOR_NOR_MODE_ASYNC_NOR 0x00000000
|
||||||
#define CSOR_NOR_NOR_MODE_AVD_NOR 0x00000020
|
#define CSOR_NOR_NOR_MODE_AVD_NOR 0x00000020
|
||||||
/* Time for Read Enable High to Output High Impedance */
|
/* Time for Read Enable High to Output High Impedance */
|
||||||
#define CSOR_NOR_TRHZ_MASK 0x0000001C
|
#define CSOR_NOR_TRHZ_MASK 0x0000001C
|
||||||
|
|
|
@ -1163,7 +1163,7 @@ int fit_image_check_comp(const void *fit, int noffset, uint8_t comp);
|
||||||
* @fit: pointer to the FIT format image header
|
* @fit: pointer to the FIT format image header
|
||||||
* @return 0 if OK, -ENOEXEC if not an FDT file, -EINVAL if the full FDT check
|
* @return 0 if OK, -ENOEXEC if not an FDT file, -EINVAL if the full FDT check
|
||||||
* failed (e.g. due to bad structure), -ENOMSG if the description is
|
* failed (e.g. due to bad structure), -ENOMSG if the description is
|
||||||
* missing, -ENODATA if the timestamp is missing, -ENOENT if the /images
|
* missing, -EBADMSG if the timestamp is missing, -ENOENT if the /images
|
||||||
* path is missing
|
* path is missing
|
||||||
*/
|
*/
|
||||||
int fit_check_format(const void *fit, ulong size);
|
int fit_check_format(const void *fit, ulong size);
|
||||||
|
|
File diff suppressed because it is too large
Load diff
|
@ -7,9 +7,7 @@
|
||||||
|
|
||||||
#include <common.h>
|
#include <common.h>
|
||||||
#include <command.h>
|
#include <command.h>
|
||||||
#if CONFIG_IS_ENABLED(EFI_LOADER) && !defined(API_BUILD)
|
|
||||||
#include <efi_api.h>
|
#include <efi_api.h>
|
||||||
#endif
|
|
||||||
#include <display_options.h>
|
#include <display_options.h>
|
||||||
#include <log.h>
|
#include <log.h>
|
||||||
#include <version.h>
|
#include <version.h>
|
||||||
|
|
|
@ -414,6 +414,8 @@ def mk_env_ext4(state_test_env):
|
||||||
if os.path.exists(persistent):
|
if os.path.exists(persistent):
|
||||||
c.log.action('Disk image file ' + persistent + ' already exists')
|
c.log.action('Disk image file ' + persistent + ' already exists')
|
||||||
else:
|
else:
|
||||||
|
# Some distributions do not add /sbin to the default PATH, where mkfs.ext4 lives
|
||||||
|
os.environ["PATH"] += os.pathsep + '/sbin'
|
||||||
try:
|
try:
|
||||||
u_boot_utils.run_and_log(c, 'dd if=/dev/zero of=%s bs=1M count=16' % persistent)
|
u_boot_utils.run_and_log(c, 'dd if=/dev/zero of=%s bs=1M count=16' % persistent)
|
||||||
u_boot_utils.run_and_log(c, 'mkfs.ext4 %s' % persistent)
|
u_boot_utils.run_and_log(c, 'mkfs.ext4 %s' % persistent)
|
||||||
|
|
|
@ -273,14 +273,14 @@ int rockchip_copy_image(int fd, struct image_tool_params *mparams);
|
||||||
|
|
||||||
#define INIT_SECTION(name) do { \
|
#define INIT_SECTION(name) do { \
|
||||||
unsigned long name ## _len; \
|
unsigned long name ## _len; \
|
||||||
char *__cat(pstart_, name) = getsectdata("__TEXT", \
|
char *__cat(pstart_, name) = getsectdata("__DATA", \
|
||||||
#name, &__cat(name, _len)); \
|
#name, &__cat(name, _len)); \
|
||||||
char *__cat(pstop_, name) = __cat(pstart_, name) + \
|
char *__cat(pstop_, name) = __cat(pstart_, name) + \
|
||||||
__cat(name, _len); \
|
__cat(name, _len); \
|
||||||
__cat(__start_, name) = (void *)__cat(pstart_, name); \
|
__cat(__start_, name) = (void *)__cat(pstart_, name); \
|
||||||
__cat(__stop_, name) = (void *)__cat(pstop_, name); \
|
__cat(__stop_, name) = (void *)__cat(pstop_, name); \
|
||||||
} while (0)
|
} while (0)
|
||||||
#define SECTION(name) __attribute__((section("__TEXT, " #name)))
|
#define SECTION(name) __attribute__((section("__DATA, " #name)))
|
||||||
|
|
||||||
struct image_type_params **__start_image_type, **__stop_image_type;
|
struct image_type_params **__start_image_type, **__stop_image_type;
|
||||||
#else
|
#else
|
||||||
|
|
|
@ -278,7 +278,7 @@ static int create_fwbin(char *path, char *bin, efi_guid_t *guid,
|
||||||
}
|
}
|
||||||
data = malloc(bin_stat.st_size);
|
data = malloc(bin_stat.st_size);
|
||||||
if (!data) {
|
if (!data) {
|
||||||
printf("cannot allocate memory: %lx\n", bin_stat.st_size);
|
printf("cannot allocate memory: %zx\n", (size_t)bin_stat.st_size);
|
||||||
goto err_1;
|
goto err_1;
|
||||||
}
|
}
|
||||||
f = fopen(path, "w");
|
f = fopen(path, "w");
|
||||||
|
@ -297,7 +297,7 @@ static int create_fwbin(char *path, char *bin, efi_guid_t *guid,
|
||||||
|
|
||||||
size = fwrite(&header, 1, sizeof(header), f);
|
size = fwrite(&header, 1, sizeof(header), f);
|
||||||
if (size < sizeof(header)) {
|
if (size < sizeof(header)) {
|
||||||
printf("write failed (%lx)\n", size);
|
printf("write failed (%zx)\n", size);
|
||||||
goto err_3;
|
goto err_3;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -306,13 +306,13 @@ static int create_fwbin(char *path, char *bin, efi_guid_t *guid,
|
||||||
capsule.payload_item_count = 1;
|
capsule.payload_item_count = 1;
|
||||||
size = fwrite(&capsule, 1, sizeof(capsule), f);
|
size = fwrite(&capsule, 1, sizeof(capsule), f);
|
||||||
if (size < (sizeof(capsule))) {
|
if (size < (sizeof(capsule))) {
|
||||||
printf("write failed (%lx)\n", size);
|
printf("write failed (%zx)\n", size);
|
||||||
goto err_3;
|
goto err_3;
|
||||||
}
|
}
|
||||||
offset = sizeof(capsule) + sizeof(u64);
|
offset = sizeof(capsule) + sizeof(u64);
|
||||||
size = fwrite(&offset, 1, sizeof(offset), f);
|
size = fwrite(&offset, 1, sizeof(offset), f);
|
||||||
if (size < sizeof(offset)) {
|
if (size < sizeof(offset)) {
|
||||||
printf("write failed (%lx)\n", size);
|
printf("write failed (%zx)\n", size);
|
||||||
goto err_3;
|
goto err_3;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -329,17 +329,17 @@ static int create_fwbin(char *path, char *bin, efi_guid_t *guid,
|
||||||
|
|
||||||
size = fwrite(&image, 1, sizeof(image), f);
|
size = fwrite(&image, 1, sizeof(image), f);
|
||||||
if (size < sizeof(image)) {
|
if (size < sizeof(image)) {
|
||||||
printf("write failed (%lx)\n", size);
|
printf("write failed (%zx)\n", size);
|
||||||
goto err_3;
|
goto err_3;
|
||||||
}
|
}
|
||||||
size = fread(data, 1, bin_stat.st_size, g);
|
size = fread(data, 1, bin_stat.st_size, g);
|
||||||
if (size < bin_stat.st_size) {
|
if (size < bin_stat.st_size) {
|
||||||
printf("read failed (%lx)\n", size);
|
printf("read failed (%zx)\n", size);
|
||||||
goto err_3;
|
goto err_3;
|
||||||
}
|
}
|
||||||
size = fwrite(data, 1, bin_stat.st_size, f);
|
size = fwrite(data, 1, bin_stat.st_size, f);
|
||||||
if (size < bin_stat.st_size) {
|
if (size < bin_stat.st_size) {
|
||||||
printf("write failed (%lx)\n", size);
|
printf("write failed (%zx)\n", size);
|
||||||
goto err_3;
|
goto err_3;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
Loading…
Reference in a new issue