Merge tag 'v2021.04-rc5' into next

Prepare v2021.04-rc5
diff --git a/.azure-pipelines.yml b/.azure-pipelines.yml
index ec2f260..f358e46 100644
--- a/.azure-pipelines.yml
+++ b/.azure-pipelines.yml
@@ -23,7 +23,7 @@
           %CD:~0,2%\msys64\usr\bin\bash -lc "pacman --noconfirm -Syyuu"
         displayName: 'Update MSYS2'
       - 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'
       - script: |
           echo make tools-only_defconfig tools-only NO_SDL=1 > build-tools.sh
diff --git a/MAINTAINERS b/MAINTAINERS
index de49994..c6dd9bf 100644
--- a/MAINTAINERS
+++ b/MAINTAINERS
@@ -670,6 +670,7 @@
 F:	common/update.c
 F:	common/usb_storage.c
 F:	doc/api/dfu.rst
+F:	doc/usage/dfu.rst
 F:	drivers/dfu/
 F:	drivers/usb/gadget/
 F:	include/dfu.h
diff --git a/Makefile b/Makefile
index 5cfbfa9..94c31d1 100644
--- a/Makefile
+++ b/Makefile
@@ -3,7 +3,7 @@
 VERSION = 2021
 PATCHLEVEL = 04
 SUBLEVEL =
-EXTRAVERSION = -rc4
+EXTRAVERSION = -rc5
 NAME =
 
 # *DOCUMENTATION*
@@ -328,11 +328,6 @@
 KBUILD_HOSTCFLAGS  += $(call os_x_before, 10, 4, "-traditional-cpp")
 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) 
 # Undefined symbols for architecture x86_64: "_PyArg_ParseTuple"
 KBUILD_HOSTLDFLAGS += $(call os_x_after, 10, 14, "-lpython -dynamclib", "")
@@ -1021,6 +1016,33 @@
 cmd_cfgcheck = $(srctree)/scripts/check-config.sh $2 \
 		$(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
 inputs: $(INPUTS-y)
 
@@ -1035,80 +1057,6 @@
 
 ifeq ($(CONFIG_DEPRECATED),y)
 	$(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
 ifeq ($(CONFIG_OF_EMBED),y)
 	@echo >&2 "===================== WARNING ======================"
@@ -1118,38 +1066,6 @@
 	@echo >&2 "See doc/README.fdt-control for more info."
 	@echo >&2 "===================================================="
 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),)
 	@echo >&2 "===================== WARNING ======================"
 	@echo >&2 "This board uses CONFIG_SPL_FIT_GENERATOR. Please migrate"
@@ -1157,6 +1073,29 @@
 	@echo >&2 "arch-specific scripts with no tests."
 	@echo >&2 "===================================================="
 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
 	@# know about unless they are in Kconfig. All the existing CONFIG
 	@# options are whitelisted, so new ones should not be added.
diff --git a/arch/arm/mach-socfpga/board.c b/arch/arm/mach-socfpga/board.c
index 81aa07c..650122f 100644
--- a/arch/arm/mach-socfpga/board.c
+++ b/arch/arm/mach-socfpga/board.c
@@ -115,7 +115,8 @@
 #if !IS_ENABLED(CONFIG_SPL_BUILD) && IS_ENABLED(CONFIG_FIT)
 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
 		 * VAB signed certificate
diff --git a/arch/powerpc/dts/t2080rdb.dts b/arch/powerpc/dts/t2080rdb.dts
index 34ec6a7..74bbb20 100644
--- a/arch/powerpc/dts/t2080rdb.dts
+++ b/arch/powerpc/dts/t2080rdb.dts
@@ -30,3 +30,11 @@
 		spi-max-frequency = <10000000>; /* input clock */
 	};
 };
+
+&i2c0 {
+	status = "okay";
+	rtc@68 {
+		compatible = "dallas,ds1339";
+		reg = <0x68>;
+	};
+};
diff --git a/board/freescale/t208xrdb/README b/board/freescale/t208xrdb/README
index 9e4b28f..ec47c96 100644
--- a/board/freescale/t208xrdb/README
+++ b/board/freescale/t208xrdb/README
@@ -34,6 +34,11 @@
  - Support for hardware virtualization and partitioning enforcement
  - 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
 -----------------------------------
   Feature		T2080	 T2081
diff --git a/common/avb_verify.c b/common/avb_verify.c
index db10d0f..0520a71 100644
--- a/common/avb_verify.c
+++ b/common/avb_verify.c
@@ -369,7 +369,7 @@
 	}
 
 	ret = part_get_info_by_name(mmc_blk, partition, &part->info);
-	if (!ret) {
+	if (ret < 0) {
 		printf("Can't find partition '%s'\n", partition);
 		goto err;
 	}
diff --git a/common/image-fit.c b/common/image-fit.c
index 2d0ece6..b972042 100644
--- a/common/image-fit.c
+++ b/common/image-fit.c
@@ -1655,7 +1655,7 @@
 		/* mandatory / node 'timestamp' property */
 		if (!fdt_getprop(fit, 0, FIT_TIMESTAMP_PROP, NULL)) {
 			log_debug("Wrong FIT format: no timestamp\n");
-			return -ENODATA;
+			return -EBADMSG;
 		}
 	}
 
diff --git a/configs/T2080RDB_NAND_defconfig b/configs/T2080RDB_NAND_defconfig
index d7ccee2..543d34e 100644
--- a/configs/T2080RDB_NAND_defconfig
+++ b/configs/T2080RDB_NAND_defconfig
@@ -77,6 +77,8 @@
 CONFIG_DM_PCI_COMPAT=y
 CONFIG_PCIE_FSL=y
 CONFIG_SYS_QE_FMAN_FW_IN_NAND=y
+CONFIG_DM_RTC=y
+CONFIG_RTC_DS1307=y
 CONFIG_SYS_NS16550=y
 CONFIG_SPI=y
 CONFIG_DM_SPI=y
diff --git a/configs/T2080RDB_SDCARD_defconfig b/configs/T2080RDB_SDCARD_defconfig
index 99ea925..d947846 100644
--- a/configs/T2080RDB_SDCARD_defconfig
+++ b/configs/T2080RDB_SDCARD_defconfig
@@ -74,6 +74,8 @@
 CONFIG_DM_PCI_COMPAT=y
 CONFIG_PCIE_FSL=y
 CONFIG_SYS_QE_FMAN_FW_IN_MMC=y
+CONFIG_DM_RTC=y
+CONFIG_RTC_DS1307=y
 CONFIG_SYS_NS16550=y
 CONFIG_SPI=y
 CONFIG_DM_SPI=y
diff --git a/configs/T2080RDB_SPIFLASH_defconfig b/configs/T2080RDB_SPIFLASH_defconfig
index c820c2b..6f7b083 100644
--- a/configs/T2080RDB_SPIFLASH_defconfig
+++ b/configs/T2080RDB_SPIFLASH_defconfig
@@ -76,6 +76,8 @@
 CONFIG_DM_PCI_COMPAT=y
 CONFIG_PCIE_FSL=y
 CONFIG_SYS_QE_FMAN_FW_IN_SPIFLASH=y
+CONFIG_DM_RTC=y
+CONFIG_RTC_DS1307=y
 CONFIG_SYS_NS16550=y
 CONFIG_SPI=y
 CONFIG_DM_SPI=y
diff --git a/configs/T2080RDB_defconfig b/configs/T2080RDB_defconfig
index d20de34..9dd01bb 100644
--- a/configs/T2080RDB_defconfig
+++ b/configs/T2080RDB_defconfig
@@ -61,6 +61,8 @@
 CONFIG_DM_PCI_COMPAT=y
 CONFIG_PCIE_FSL=y
 CONFIG_SYS_QE_FMAN_FW_IN_NOR=y
+CONFIG_DM_RTC=y
+CONFIG_RTC_DS1307=y
 CONFIG_SYS_NS16550=y
 CONFIG_SPI=y
 CONFIG_DM_SPI=y
diff --git a/configs/kontron_sl28_defconfig b/configs/kontron_sl28_defconfig
index 1c781e0..0c6c191 100644
--- a/configs/kontron_sl28_defconfig
+++ b/configs/kontron_sl28_defconfig
@@ -70,7 +70,7 @@
 CONFIG_I2C_DEFAULT_BUS_NUMBER=0
 CONFIG_I2C_MUX=y
 CONFIG_DM_MMC=y
-CONFIG_MMC_HS400_SUPPORT=y
+CONFIG_MMC_HS200_SUPPORT=y
 CONFIG_FSL_ESDHC=y
 CONFIG_FSL_ESDHC_SUPPORT_ADMA2=y
 CONFIG_DM_SPI_FLASH=y
diff --git a/configs/ls1028aqds_tfa_SECURE_BOOT_defconfig b/configs/ls1028aqds_tfa_SECURE_BOOT_defconfig
index a2bc6c6..17daef8 100644
--- a/configs/ls1028aqds_tfa_SECURE_BOOT_defconfig
+++ b/configs/ls1028aqds_tfa_SECURE_BOOT_defconfig
@@ -49,8 +49,9 @@
 CONFIG_FSL_ESDHC=y
 CONFIG_MTD=y
 CONFIG_DM_SPI_FLASH=y
-CONFIG_SPI_FLASH_SPANSION=y
+CONFIG_SPI_FLASH_EON=y
 CONFIG_SPI_FLASH_STMICRO=y
+CONFIG_SPI_FLASH_SST=y
 # CONFIG_SPI_FLASH_USE_4K_SECTORS is not set
 CONFIG_PHYLIB=y
 CONFIG_PHY_AQUANTIA=y
diff --git a/configs/ls1028aqds_tfa_defconfig b/configs/ls1028aqds_tfa_defconfig
index 66e008b..cc38bd8 100644
--- a/configs/ls1028aqds_tfa_defconfig
+++ b/configs/ls1028aqds_tfa_defconfig
@@ -8,7 +8,7 @@
 CONFIG_SYS_MEMTEST_END=0x9fffffff
 CONFIG_ENV_SIZE=0x2000
 CONFIG_ENV_OFFSET=0x500000
-CONFIG_ENV_SECT_SIZE=0x40000
+CONFIG_ENV_SECT_SIZE=0x20000
 CONFIG_DM_GPIO=y
 CONFIG_FSPI_AHB_EN_4BYTE=y
 CONFIG_ARMV8_SEC_FIRMWARE_SUPPORT=y
@@ -55,8 +55,9 @@
 CONFIG_FSL_ESDHC=y
 CONFIG_MTD=y
 CONFIG_DM_SPI_FLASH=y
-CONFIG_SPI_FLASH_SPANSION=y
+CONFIG_SPI_FLASH_EON=y
 CONFIG_SPI_FLASH_STMICRO=y
+CONFIG_SPI_FLASH_SST=y
 # CONFIG_SPI_FLASH_USE_4K_SECTORS is not set
 CONFIG_PHYLIB=y
 CONFIG_PHY_AQUANTIA=y
diff --git a/configs/ls1028aqds_tfa_lpuart_defconfig b/configs/ls1028aqds_tfa_lpuart_defconfig
index cc82ed7..bc5f8f4 100644
--- a/configs/ls1028aqds_tfa_lpuart_defconfig
+++ b/configs/ls1028aqds_tfa_lpuart_defconfig
@@ -7,7 +7,7 @@
 CONFIG_SYS_MEMTEST_END=0x9fffffff
 CONFIG_ENV_SIZE=0x2000
 CONFIG_ENV_OFFSET=0x500000
-CONFIG_ENV_SECT_SIZE=0x40000
+CONFIG_ENV_SECT_SIZE=0x20000
 CONFIG_DM_GPIO=y
 CONFIG_FSPI_AHB_EN_4BYTE=y
 CONFIG_ARMV8_SEC_FIRMWARE_SUPPORT=y
@@ -55,8 +55,9 @@
 CONFIG_FSL_ESDHC=y
 CONFIG_MTD=y
 CONFIG_DM_SPI_FLASH=y
-CONFIG_SPI_FLASH_SPANSION=y
+CONFIG_SPI_FLASH_EON=y
 CONFIG_SPI_FLASH_STMICRO=y
+CONFIG_SPI_FLASH_SST=y
 # CONFIG_SPI_FLASH_USE_4K_SECTORS is not set
 CONFIG_PHYLIB=y
 CONFIG_PHY_AQUANTIA=y
diff --git a/configs/ls1028ardb_tfa_SECURE_BOOT_defconfig b/configs/ls1028ardb_tfa_SECURE_BOOT_defconfig
index dd18918..794632a 100644
--- a/configs/ls1028ardb_tfa_SECURE_BOOT_defconfig
+++ b/configs/ls1028ardb_tfa_SECURE_BOOT_defconfig
@@ -48,7 +48,6 @@
 CONFIG_FSL_ESDHC=y
 CONFIG_MTD=y
 CONFIG_DM_SPI_FLASH=y
-CONFIG_SPI_FLASH_SPANSION=y
 CONFIG_SPI_FLASH_STMICRO=y
 # CONFIG_SPI_FLASH_USE_4K_SECTORS is not set
 CONFIG_PHYLIB=y
diff --git a/configs/ls1028ardb_tfa_defconfig b/configs/ls1028ardb_tfa_defconfig
index 9f5116b..2ee57de 100644
--- a/configs/ls1028ardb_tfa_defconfig
+++ b/configs/ls1028ardb_tfa_defconfig
@@ -8,7 +8,7 @@
 CONFIG_SYS_MEMTEST_END=0x9fffffff
 CONFIG_ENV_SIZE=0x2000
 CONFIG_ENV_OFFSET=0x500000
-CONFIG_ENV_SECT_SIZE=0x40000
+CONFIG_ENV_SECT_SIZE=0x20000
 CONFIG_DM_GPIO=y
 CONFIG_FSPI_AHB_EN_4BYTE=y
 CONFIG_ARMV8_SEC_FIRMWARE_SUPPORT=y
@@ -54,7 +54,6 @@
 CONFIG_FSL_ESDHC=y
 CONFIG_MTD=y
 CONFIG_DM_SPI_FLASH=y
-CONFIG_SPI_FLASH_SPANSION=y
 CONFIG_SPI_FLASH_STMICRO=y
 # CONFIG_SPI_FLASH_USE_4K_SECTORS is not set
 CONFIG_PHYLIB=y
diff --git a/configs/lx2160aqds_tfa_SECURE_BOOT_defconfig b/configs/lx2160aqds_tfa_SECURE_BOOT_defconfig
index 7d6b74d..5a7ffe9 100644
--- a/configs/lx2160aqds_tfa_SECURE_BOOT_defconfig
+++ b/configs/lx2160aqds_tfa_SECURE_BOOT_defconfig
@@ -50,7 +50,6 @@
 CONFIG_MTD=y
 CONFIG_DM_SPI_FLASH=y
 CONFIG_SPI_FLASH_EON=y
-CONFIG_SPI_FLASH_SPANSION=y
 CONFIG_SPI_FLASH_STMICRO=y
 CONFIG_SPI_FLASH_SST=y
 # CONFIG_SPI_FLASH_USE_4K_SECTORS is not set
diff --git a/configs/lx2160aqds_tfa_defconfig b/configs/lx2160aqds_tfa_defconfig
index 4390b0d..ed6f78b 100644
--- a/configs/lx2160aqds_tfa_defconfig
+++ b/configs/lx2160aqds_tfa_defconfig
@@ -57,7 +57,6 @@
 CONFIG_MTD=y
 CONFIG_DM_SPI_FLASH=y
 CONFIG_SPI_FLASH_EON=y
-CONFIG_SPI_FLASH_SPANSION=y
 CONFIG_SPI_FLASH_STMICRO=y
 CONFIG_SPI_FLASH_SST=y
 # CONFIG_SPI_FLASH_USE_4K_SECTORS is not set
diff --git a/configs/lx2160ardb_tfa_SECURE_BOOT_defconfig b/configs/lx2160ardb_tfa_SECURE_BOOT_defconfig
index f5da144..bb92fcb 100644
--- a/configs/lx2160ardb_tfa_SECURE_BOOT_defconfig
+++ b/configs/lx2160ardb_tfa_SECURE_BOOT_defconfig
@@ -46,7 +46,6 @@
 CONFIG_FSL_ESDHC=y
 CONFIG_MTD=y
 CONFIG_DM_SPI_FLASH=y
-CONFIG_SPI_FLASH_SPANSION=y
 CONFIG_SPI_FLASH_STMICRO=y
 # CONFIG_SPI_FLASH_USE_4K_SECTORS is not set
 CONFIG_PHYLIB=y
diff --git a/configs/lx2160ardb_tfa_defconfig b/configs/lx2160ardb_tfa_defconfig
index c5a0410..1d3b59c 100644
--- a/configs/lx2160ardb_tfa_defconfig
+++ b/configs/lx2160ardb_tfa_defconfig
@@ -55,7 +55,6 @@
 CONFIG_FSL_ESDHC=y
 CONFIG_MTD=y
 CONFIG_DM_SPI_FLASH=y
-CONFIG_SPI_FLASH_SPANSION=y
 CONFIG_SPI_FLASH_STMICRO=y
 # CONFIG_SPI_FLASH_USE_4K_SECTORS is not set
 CONFIG_PHYLIB=y
diff --git a/configs/lx2160ardb_tfa_stmm_defconfig b/configs/lx2160ardb_tfa_stmm_defconfig
index ca1d5cb..1b06124 100644
--- a/configs/lx2160ardb_tfa_stmm_defconfig
+++ b/configs/lx2160ardb_tfa_stmm_defconfig
@@ -55,7 +55,6 @@
 CONFIG_FSL_ESDHC=y
 CONFIG_MTD=y
 CONFIG_DM_SPI_FLASH=y
-CONFIG_SPI_FLASH_SPANSION=y
 CONFIG_SPI_FLASH_STMICRO=y
 # CONFIG_SPI_FLASH_USE_4K_SECTORS is not set
 CONFIG_PHYLIB=y
diff --git a/doc/README.dfu b/doc/README.dfu
deleted file mode 100644
index eacd5bb..0000000
--- a/doc/README.dfu
+++ /dev/null
@@ -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
diff --git a/doc/develop/driver-model/migration.rst b/doc/develop/driver-model/migration.rst
index 2284e8a..8d0bb76 100644
--- a/doc/develop/driver-model/migration.rst
+++ b/doc/develop/driver-model/migration.rst
@@ -99,3 +99,11 @@
 The network subsystem has supported the driver model since early 2015.
 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.
+
+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.
diff --git a/doc/usage/dfu.rst b/doc/usage/dfu.rst
new file mode 100644
index 0000000..11c8807
--- /dev/null
+++ b/doc/usage/dfu.rst
@@ -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
diff --git a/doc/usage/index.rst b/doc/usage/index.rst
index fb83434..5faf279 100644
--- a/doc/usage/index.rst
+++ b/doc/usage/index.rst
@@ -4,6 +4,7 @@
 .. toctree::
    :maxdepth: 1
 
+   dfu
    fdt_overlays
    fit
    netconsole
diff --git a/drivers/ata/mtk_ahci.c b/drivers/ata/mtk_ahci.c
index 554175b..2c5227d 100644
--- a/drivers/ata/mtk_ahci.c
+++ b/drivers/ata/mtk_ahci.c
@@ -21,6 +21,7 @@
 #include <sata.h>
 #include <scsi.h>
 #include <syscon.h>
+#include <dm/device_compat.h>
 
 #define SYS_CFG			0x14
 #define SYS_CFG_SATA_MSK	GENMASK(31, 30)
diff --git a/drivers/mmc/mtk-sd.c b/drivers/mmc/mtk-sd.c
index 3b9c122..48a764b 100644
--- a/drivers/mmc/mtk-sd.c
+++ b/drivers/mmc/mtk-sd.c
@@ -1639,7 +1639,8 @@
 	else
 		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->voltages = MMC_VDD_32_33 | MMC_VDD_33_34;
diff --git a/drivers/mtd/nand/raw/fsl_ifc_nand.c b/drivers/mtd/nand/raw/fsl_ifc_nand.c
index cf20238..e5ff937 100644
--- a/drivers/mtd/nand/raw/fsl_ifc_nand.c
+++ b/drivers/mtd/nand/raw/fsl_ifc_nand.c
@@ -411,9 +411,16 @@
 	/* READID must read all possible bytes while CEB is active */
 	case NAND_CMD_READID:
 	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;
-		if (command == NAND_CMD_PARAM)
+		if (command == NAND_CMD_PARAM) {
 			timing = IFC_FIR_OP_RBCD;
+			len = 256 * 3;
+		}
 
 		ifc_out32(&ifc->ifc_nand.nand_fir0,
 			  (IFC_FIR_OP_CW0 << IFC_NAND_FIR0_OP0_SHIFT) |
@@ -423,12 +430,8 @@
 			  command << IFC_NAND_FCR0_CMD0_SHIFT);
 		ifc_out32(&ifc->ifc_nand.row3, column);
 
-		/*
-		 * although currently it's 8 bytes for READID, we always read
-		 * the maximum 256 bytes(for PARAM)
-		 */
-		ifc_out32(&ifc->ifc_nand.nand_fbcr, 256);
-		ctrl->read_bytes = 256;
+		ifc_out32(&ifc->ifc_nand.nand_fbcr, len);
+		ctrl->read_bytes = len;
 
 		set_addr(mtd, 0, 0, 0);
 		fsl_ifc_run_command(mtd);
diff --git a/drivers/nvme/nvme.c b/drivers/nvme/nvme.c
index 5d6331a..c61dab2 100644
--- a/drivers/nvme/nvme.c
+++ b/drivers/nvme/nvme.c
@@ -22,6 +22,8 @@
 #define NVME_AQ_DEPTH		2
 #define NVME_SQ_SIZE(depth)	(depth * sizeof(struct nvme_command))
 #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 IO_TIMEOUT		30
 #define MAX_PRP_POOL		512
@@ -144,8 +146,14 @@
 
 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);
 
@@ -241,7 +249,7 @@
 		return NULL;
 	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)
 		goto free_nvmeq;
 	memset((void *)nvmeq->cqes, 0, NVME_CQ_SIZE(depth));
@@ -339,7 +347,7 @@
 	nvmeq->q_db = &dev->dbs[qid * 2 * dev->db_stride];
 	memset((void *)nvmeq->cqes, 0, NVME_CQ_SIZE(nvmeq->q_depth));
 	flush_dcache_range((ulong)nvmeq->cqes,
-			   (ulong)nvmeq->cqes + NVME_CQ_SIZE(nvmeq->q_depth));
+			   (ulong)nvmeq->cqes + NVME_CQ_ALLOCATION);
 	dev->online_queues++;
 }
 
@@ -481,6 +489,7 @@
 		      dma_addr_t dma_addr, u32 *result)
 {
 	struct nvme_command c;
+	int ret;
 
 	memset(&c, 0, sizeof(c));
 	c.features.opcode = nvme_admin_get_features;
@@ -488,12 +497,20 @@
 	c.features.prp1 = cpu_to_le64(dma_addr);
 	c.features.fid = cpu_to_le32(fid);
 
+	ret = nvme_submit_admin_cmd(dev, &c, result);
+
 	/*
-	 * TODO: add cache invalidate operation when the size of
-	 * the DMA buffer is known
+	 * TODO: Add some cache invalidation when a DMA buffer is involved
+	 * 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,
@@ -508,8 +525,14 @@
 	c.features.dword11 = cpu_to_le32(dword11);
 
 	/*
-	 * TODO: add cache flush operation when the size of
-	 * the DMA buffer is known
+	 * TODO: Add a cache clean (aka flush) operation when a DMA buffer is
+	 * 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);
diff --git a/drivers/pci/pcie_layerscape_ep.c b/drivers/pci/pcie_layerscape_ep.c
index 14983cc..c723163 100644
--- a/drivers/pci/pcie_layerscape_ep.c
+++ b/drivers/pci/pcie_layerscape_ep.c
@@ -244,7 +244,7 @@
 	int ret;
 	u32 svr;
 
-	pcie = devm_kmalloc(dev, sizeof(*pcie), GFP_KERNEL);
+	pcie = devm_kzalloc(dev, sizeof(*pcie), GFP_KERNEL);
 	if (!pcie)
 		return -ENOMEM;
 
diff --git a/drivers/pci/pcie_layerscape_rc.c b/drivers/pci/pcie_layerscape_rc.c
index b055ed5..bd2c19f 100644
--- a/drivers/pci/pcie_layerscape_rc.c
+++ b/drivers/pci/pcie_layerscape_rc.c
@@ -254,7 +254,7 @@
 
 	pcie_rc->bus = dev;
 
-	pcie = devm_kmalloc(dev, sizeof(*pcie), GFP_KERNEL);
+	pcie = devm_kzalloc(dev, sizeof(*pcie), GFP_KERNEL);
 	if (!pcie)
 		return -ENOMEM;
 
diff --git a/drivers/rtc/ds1307.c b/drivers/rtc/ds1307.c
index 17344d4..2015ce9 100644
--- a/drivers/rtc/ds1307.c
+++ b/drivers/rtc/ds1307.c
@@ -23,6 +23,7 @@
 enum ds_type {
 	ds_1307,
 	ds_1337,
+	ds_1339,
 	ds_1340,
 	m41t11,
 	mcp794xx,
@@ -344,6 +345,7 @@
 static const struct udevice_id ds1307_rtc_ids[] = {
 	{ .compatible = "dallas,ds1307", .data = ds_1307 },
 	{ .compatible = "dallas,ds1337", .data = ds_1337 },
+	{ .compatible = "dallas,ds1339", .data = ds_1339 },
 	{ .compatible = "dallas,ds1340", .data = ds_1340 },
 	{ .compatible = "microchip,mcp7941x", .data = mcp794xx },
 	{ .compatible = "st,m41t11", .data = m41t11 },
diff --git a/include/api_public.h b/include/api_public.h
index def103c..5a4465e 100644
--- a/include/api_public.h
+++ b/include/api_public.h
@@ -70,12 +70,25 @@
 	int			mr_no;	/* number of memory regions */
 };
 
-#undef CONFIG_SYS_64BIT_LBA
-#ifdef CONFIG_SYS_64BIT_LBA
-typedef	u_int64_t lbasize_t;
-#else
+/*
+ * FIXME: Previously this code was:
+ *
+ *   #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;
-#endif
+
 typedef unsigned long lbastart_t;
 
 #define DEV_TYP_NONE	0x0000
diff --git a/include/configs/ls1028aqds.h b/include/configs/ls1028aqds.h
index 8ab943c..9ae37b9 100644
--- a/include/configs/ls1028aqds.h
+++ b/include/configs/ls1028aqds.h
@@ -81,12 +81,6 @@
 #define CONFIG_SYS_SCSI_MAX_LUN			1
 #define CONFIG_SYS_SCSI_MAX_DEVICE		(CONFIG_SYS_SCSI_MAX_SCSI_ID * \
 						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
 #undef CONFIG_EXTRA_ENV_SETTINGS
 #define CONFIG_EXTRA_ENV_SETTINGS \
diff --git a/include/configs/lx2160a_common.h b/include/configs/lx2160a_common.h
index 466484c..9f2b899 100644
--- a/include/configs/lx2160a_common.h
+++ b/include/configs/lx2160a_common.h
@@ -154,12 +154,6 @@
 #endif
 #endif
 
-/* FlexSPI */
-#ifdef CONFIG_NXP_FSPI
-#define NXP_FSPI_FLASH_SIZE		SZ_64M
-#define NXP_FSPI_FLASH_NUM		1
-#endif
-
 /* GPIO */
 #ifdef CONFIG_DM_GPIO
 #ifndef CONFIG_MPC8XXX_GPIO
diff --git a/include/dm/test.h b/include/dm/test.h
index 30f71ed..a9562b2 100644
--- a/include/dm/test.h
+++ b/include/dm/test.h
@@ -6,6 +6,8 @@
 #ifndef __DM_TEST_H
 #define __DM_TEST_H
 
+struct udevice;
+
 /**
  * struct dm_test_cdata - configuration data for test instance
  *
diff --git a/include/fsl_ifc.h b/include/fsl_ifc.h
index e1e6214..9f243cd 100644
--- a/include/fsl_ifc.h
+++ b/include/fsl_ifc.h
@@ -140,7 +140,7 @@
 #define CSOR_NOR_ADM_SHIFT_SHIFT	13
 #define CSOR_NOR_ADM_SHIFT(n)	((n) << CSOR_NOR_ADM_SHIFT_SHIFT)
 /* 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
 /* Time for Read Enable High to Output High Impedance */
 #define CSOR_NOR_TRHZ_MASK		0x0000001C
diff --git a/include/image.h b/include/image.h
index bcd126d..aeb0d37 100644
--- a/include/image.h
+++ b/include/image.h
@@ -1163,7 +1163,7 @@
  * @fit: pointer to the FIT format image header
  * @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
- *	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
  */
 int fit_check_format(const void *fit, ulong size);
diff --git a/include/video_font_data.h b/include/video_font_data.h
index ed5fd64..6e64198 100644
--- a/include/video_font_data.h
+++ b/include/video_font_data.h
@@ -2302,7 +2302,7 @@
 	0x00, /* 00000000 */
 	0x00, /* 00000000 */
 
-	/* 127 0x7f '' */
+	/* 127 0x7f */
 	0x00, /* 00000000 */
 	0x00, /* 00000000 */
 	0x00, /* 00000000 */
@@ -2320,7 +2320,7 @@
 	0x00, /* 00000000 */
 	0x00, /* 00000000 */
 
-	/* 128 0x80 '€' */
+	/* 128 0x80 */
 	0x00, /* 00000000 */
 	0x00, /* 00000000 */
 	0x3c, /* 00111100 */
@@ -2338,7 +2338,7 @@
 	0x00, /* 00000000 */
 	0x00, /* 00000000 */
 
-	/* 129 0x81 '' */
+	/* 129 0x81 */
 	0x00, /* 00000000 */
 	0x00, /* 00000000 */
 	0xcc, /* 11001100 */
@@ -2356,7 +2356,7 @@
 	0x00, /* 00000000 */
 	0x00, /* 00000000 */
 
-	/* 130 0x82 '‚' */
+	/* 130 0x82 */
 	0x00, /* 00000000 */
 	0x0c, /* 00001100 */
 	0x18, /* 00011000 */
@@ -2374,7 +2374,7 @@
 	0x00, /* 00000000 */
 	0x00, /* 00000000 */
 
-	/* 131 0x83 'ƒ' */
+	/* 131 0x83 */
 	0x00, /* 00000000 */
 	0x10, /* 00010000 */
 	0x38, /* 00111000 */
@@ -2392,7 +2392,7 @@
 	0x00, /* 00000000 */
 	0x00, /* 00000000 */
 
-	/* 132 0x84 '„' */
+	/* 132 0x84 */
 	0x00, /* 00000000 */
 	0x00, /* 00000000 */
 	0xcc, /* 11001100 */
@@ -2410,7 +2410,7 @@
 	0x00, /* 00000000 */
 	0x00, /* 00000000 */
 
-	/* 133 0x85 '…' */
+	/* 133 0x85 */
 	0x00, /* 00000000 */
 	0x60, /* 01100000 */
 	0x30, /* 00110000 */
@@ -2428,7 +2428,7 @@
 	0x00, /* 00000000 */
 	0x00, /* 00000000 */
 
-	/* 134 0x86 '†' */
+	/* 134 0x86 */
 	0x00, /* 00000000 */
 	0x38, /* 00111000 */
 	0x6c, /* 01101100 */
@@ -2446,7 +2446,7 @@
 	0x00, /* 00000000 */
 	0x00, /* 00000000 */
 
-	/* 135 0x87 '‡' */
+	/* 135 0x87 */
 	0x00, /* 00000000 */
 	0x00, /* 00000000 */
 	0x00, /* 00000000 */
@@ -2464,7 +2464,7 @@
 	0x00, /* 00000000 */
 	0x00, /* 00000000 */
 
-	/* 136 0x88 'ˆ' */
+	/* 136 0x88 */
 	0x00, /* 00000000 */
 	0x10, /* 00010000 */
 	0x38, /* 00111000 */
@@ -2482,7 +2482,7 @@
 	0x00, /* 00000000 */
 	0x00, /* 00000000 */
 
-	/* 137 0x89 '‰' */
+	/* 137 0x89 */
 	0x00, /* 00000000 */
 	0x00, /* 00000000 */
 	0xc6, /* 11000110 */
@@ -2500,7 +2500,7 @@
 	0x00, /* 00000000 */
 	0x00, /* 00000000 */
 
-	/* 138 0x8a 'Š' */
+	/* 138 0x8a */
 	0x00, /* 00000000 */
 	0x60, /* 01100000 */
 	0x30, /* 00110000 */
@@ -2518,7 +2518,7 @@
 	0x00, /* 00000000 */
 	0x00, /* 00000000 */
 
-	/* 139 0x8b '‹' */
+	/* 139 0x8b */
 	0x00, /* 00000000 */
 	0x00, /* 00000000 */
 	0x66, /* 01100110 */
@@ -2536,7 +2536,7 @@
 	0x00, /* 00000000 */
 	0x00, /* 00000000 */
 
-	/* 140 0x8c 'Œ' */
+	/* 140 0x8c */
 	0x00, /* 00000000 */
 	0x18, /* 00011000 */
 	0x3c, /* 00111100 */
@@ -2554,7 +2554,7 @@
 	0x00, /* 00000000 */
 	0x00, /* 00000000 */
 
-	/* 141 0x8d '' */
+	/* 141 0x8d */
 	0x00, /* 00000000 */
 	0x60, /* 01100000 */
 	0x30, /* 00110000 */
@@ -2572,7 +2572,7 @@
 	0x00, /* 00000000 */
 	0x00, /* 00000000 */
 
-	/* 142 0x8e 'Ž' */
+	/* 142 0x8e */
 	0x00, /* 00000000 */
 	0xc6, /* 11000110 */
 	0x00, /* 00000000 */
@@ -2590,7 +2590,7 @@
 	0x00, /* 00000000 */
 	0x00, /* 00000000 */
 
-	/* 143 0x8f '' */
+	/* 143 0x8f */
 	0x38, /* 00111000 */
 	0x6c, /* 01101100 */
 	0x38, /* 00111000 */
@@ -2608,7 +2608,7 @@
 	0x00, /* 00000000 */
 	0x00, /* 00000000 */
 
-	/* 144 0x90 '' */
+	/* 144 0x90 */
 	0x0c, /* 00001100 */
 	0x18, /* 00011000 */
 	0x00, /* 00000000 */
@@ -2626,7 +2626,7 @@
 	0x00, /* 00000000 */
 	0x00, /* 00000000 */
 
-	/* 145 0x91 '‘' */
+	/* 145 0x91 */
 	0x00, /* 00000000 */
 	0x00, /* 00000000 */
 	0x00, /* 00000000 */
@@ -2644,7 +2644,7 @@
 	0x00, /* 00000000 */
 	0x00, /* 00000000 */
 
-	/* 146 0x92 '’' */
+	/* 146 0x92 */
 	0x00, /* 00000000 */
 	0x00, /* 00000000 */
 	0x3e, /* 00111110 */
@@ -2662,7 +2662,7 @@
 	0x00, /* 00000000 */
 	0x00, /* 00000000 */
 
-	/* 147 0x93 '“' */
+	/* 147 0x93 */
 	0x00, /* 00000000 */
 	0x10, /* 00010000 */
 	0x38, /* 00111000 */
@@ -2680,7 +2680,7 @@
 	0x00, /* 00000000 */
 	0x00, /* 00000000 */
 
-	/* 148 0x94 '”' */
+	/* 148 0x94 */
 	0x00, /* 00000000 */
 	0x00, /* 00000000 */
 	0xc6, /* 11000110 */
@@ -2698,7 +2698,7 @@
 	0x00, /* 00000000 */
 	0x00, /* 00000000 */
 
-	/* 149 0x95 '•' */
+	/* 149 0x95 */
 	0x00, /* 00000000 */
 	0x60, /* 01100000 */
 	0x30, /* 00110000 */
@@ -2716,7 +2716,7 @@
 	0x00, /* 00000000 */
 	0x00, /* 00000000 */
 
-	/* 150 0x96 '–' */
+	/* 150 0x96 */
 	0x00, /* 00000000 */
 	0x30, /* 00110000 */
 	0x78, /* 01111000 */
@@ -2734,7 +2734,7 @@
 	0x00, /* 00000000 */
 	0x00, /* 00000000 */
 
-	/* 151 0x97 '—' */
+	/* 151 0x97 */
 	0x00, /* 00000000 */
 	0x60, /* 01100000 */
 	0x30, /* 00110000 */
@@ -2752,7 +2752,7 @@
 	0x00, /* 00000000 */
 	0x00, /* 00000000 */
 
-	/* 152 0x98 '˜' */
+	/* 152 0x98 */
 	0x00, /* 00000000 */
 	0x00, /* 00000000 */
 	0xc6, /* 11000110 */
@@ -2770,7 +2770,7 @@
 	0x78, /* 01111000 */
 	0x00, /* 00000000 */
 
-	/* 153 0x99 '™' */
+	/* 153 0x99 */
 	0x00, /* 00000000 */
 	0xc6, /* 11000110 */
 	0x00, /* 00000000 */
@@ -2788,7 +2788,7 @@
 	0x00, /* 00000000 */
 	0x00, /* 00000000 */
 
-	/* 154 0x9a 'š' */
+	/* 154 0x9a */
 	0x00, /* 00000000 */
 	0xc6, /* 11000110 */
 	0x00, /* 00000000 */
@@ -2806,7 +2806,7 @@
 	0x00, /* 00000000 */
 	0x00, /* 00000000 */
 
-	/* 155 0x9b '›' */
+	/* 155 0x9b */
 	0x00, /* 00000000 */
 	0x18, /* 00011000 */
 	0x18, /* 00011000 */
@@ -2824,7 +2824,7 @@
 	0x00, /* 00000000 */
 	0x00, /* 00000000 */
 
-	/* 156 0x9c 'œ' */
+	/* 156 0x9c */
 	0x00, /* 00000000 */
 	0x38, /* 00111000 */
 	0x6c, /* 01101100 */
@@ -2842,7 +2842,7 @@
 	0x00, /* 00000000 */
 	0x00, /* 00000000 */
 
-	/* 157 0x9d '' */
+	/* 157 0x9d */
 	0x00, /* 00000000 */
 	0x00, /* 00000000 */
 	0x66, /* 01100110 */
@@ -2860,7 +2860,7 @@
 	0x00, /* 00000000 */
 	0x00, /* 00000000 */
 
-	/* 158 0x9e 'ž' */
+	/* 158 0x9e */
 	0x00, /* 00000000 */
 	0xf8, /* 11111000 */
 	0xcc, /* 11001100 */
@@ -2878,7 +2878,7 @@
 	0x00, /* 00000000 */
 	0x00, /* 00000000 */
 
-	/* 159 0x9f 'Ÿ' */
+	/* 159 0x9f */
 	0x00, /* 00000000 */
 	0x0e, /* 00001110 */
 	0x1b, /* 00011011 */
@@ -2896,7 +2896,7 @@
 	0x00, /* 00000000 */
 	0x00, /* 00000000 */
 
-	/* 160 0xa0 ' ' */
+	/* 160 0xa0 */
 	0x00, /* 00000000 */
 	0x18, /* 00011000 */
 	0x30, /* 00110000 */
@@ -2914,7 +2914,7 @@
 	0x00, /* 00000000 */
 	0x00, /* 00000000 */
 
-	/* 161 0xa1 '¡' */
+	/* 161 0xa1 */
 	0x00, /* 00000000 */
 	0x0c, /* 00001100 */
 	0x18, /* 00011000 */
@@ -2932,7 +2932,7 @@
 	0x00, /* 00000000 */
 	0x00, /* 00000000 */
 
-	/* 162 0xa2 '¢' */
+	/* 162 0xa2 */
 	0x00, /* 00000000 */
 	0x18, /* 00011000 */
 	0x30, /* 00110000 */
@@ -2950,7 +2950,7 @@
 	0x00, /* 00000000 */
 	0x00, /* 00000000 */
 
-	/* 163 0xa3 '£' */
+	/* 163 0xa3 */
 	0x00, /* 00000000 */
 	0x18, /* 00011000 */
 	0x30, /* 00110000 */
@@ -2968,7 +2968,7 @@
 	0x00, /* 00000000 */
 	0x00, /* 00000000 */
 
-	/* 164 0xa4 '¤' */
+	/* 164 0xa4 */
 	0x00, /* 00000000 */
 	0x00, /* 00000000 */
 	0x76, /* 01110110 */
@@ -2986,7 +2986,7 @@
 	0x00, /* 00000000 */
 	0x00, /* 00000000 */
 
-	/* 165 0xa5 '¥' */
+	/* 165 0xa5 */
 	0x76, /* 01110110 */
 	0xdc, /* 11011100 */
 	0x00, /* 00000000 */
@@ -3004,7 +3004,7 @@
 	0x00, /* 00000000 */
 	0x00, /* 00000000 */
 
-	/* 166 0xa6 '¦' */
+	/* 166 0xa6 */
 	0x00, /* 00000000 */
 	0x00, /* 00000000 */
 	0x3c, /* 00111100 */
@@ -3022,7 +3022,7 @@
 	0x00, /* 00000000 */
 	0x00, /* 00000000 */
 
-	/* 167 0xa7 '§' */
+	/* 167 0xa7 */
 	0x00, /* 00000000 */
 	0x00, /* 00000000 */
 	0x38, /* 00111000 */
@@ -3040,7 +3040,7 @@
 	0x00, /* 00000000 */
 	0x00, /* 00000000 */
 
-	/* 168 0xa8 '¨' */
+	/* 168 0xa8 */
 	0x00, /* 00000000 */
 	0x00, /* 00000000 */
 	0x30, /* 00110000 */
@@ -3058,7 +3058,7 @@
 	0x00, /* 00000000 */
 	0x00, /* 00000000 */
 
-	/* 169 0xa9 '©' */
+	/* 169 0xa9 */
 	0x00, /* 00000000 */
 	0x00, /* 00000000 */
 	0x00, /* 00000000 */
@@ -3076,7 +3076,7 @@
 	0x00, /* 00000000 */
 	0x00, /* 00000000 */
 
-	/* 170 0xaa 'ª' */
+	/* 170 0xaa */
 	0x00, /* 00000000 */
 	0x00, /* 00000000 */
 	0x00, /* 00000000 */
@@ -3094,7 +3094,7 @@
 	0x00, /* 00000000 */
 	0x00, /* 00000000 */
 
-	/* 171 0xab '«' */
+	/* 171 0xab */
 	0x00, /* 00000000 */
 	0x60, /* 01100000 */
 	0xe0, /* 11100000 */
@@ -3112,7 +3112,7 @@
 	0x00, /* 00000000 */
 	0x00, /* 00000000 */
 
-	/* 172 0xac '¬' */
+	/* 172 0xac */
 	0x00, /* 00000000 */
 	0x60, /* 01100000 */
 	0xe0, /* 11100000 */
@@ -3130,7 +3130,7 @@
 	0x00, /* 00000000 */
 	0x00, /* 00000000 */
 
-	/* 173 0xad '­' */
+	/* 173 0xad */
 	0x00, /* 00000000 */
 	0x00, /* 00000000 */
 	0x18, /* 00011000 */
@@ -3148,7 +3148,7 @@
 	0x00, /* 00000000 */
 	0x00, /* 00000000 */
 
-	/* 174 0xae '®' */
+	/* 174 0xae */
 	0x00, /* 00000000 */
 	0x00, /* 00000000 */
 	0x00, /* 00000000 */
@@ -3166,7 +3166,7 @@
 	0x00, /* 00000000 */
 	0x00, /* 00000000 */
 
-	/* 175 0xaf '¯' */
+	/* 175 0xaf */
 	0x00, /* 00000000 */
 	0x00, /* 00000000 */
 	0x00, /* 00000000 */
@@ -3184,7 +3184,7 @@
 	0x00, /* 00000000 */
 	0x00, /* 00000000 */
 
-	/* 176 0xb0 '°' */
+	/* 176 0xb0 */
 	0x11, /* 00010001 */
 	0x44, /* 01000100 */
 	0x11, /* 00010001 */
@@ -3202,7 +3202,7 @@
 	0x11, /* 00010001 */
 	0x44, /* 01000100 */
 
-	/* 177 0xb1 '±' */
+	/* 177 0xb1 */
 	0x55, /* 01010101 */
 	0xaa, /* 10101010 */
 	0x55, /* 01010101 */
@@ -3220,7 +3220,7 @@
 	0x55, /* 01010101 */
 	0xaa, /* 10101010 */
 
-	/* 178 0xb2 '²' */
+	/* 178 0xb2 */
 	0xdd, /* 11011101 */
 	0x77, /* 01110111 */
 	0xdd, /* 11011101 */
@@ -3238,7 +3238,7 @@
 	0xdd, /* 11011101 */
 	0x77, /* 01110111 */
 
-	/* 179 0xb3 '³' */
+	/* 179 0xb3 */
 	0x18, /* 00011000 */
 	0x18, /* 00011000 */
 	0x18, /* 00011000 */
@@ -3256,7 +3256,7 @@
 	0x18, /* 00011000 */
 	0x18, /* 00011000 */
 
-	/* 180 0xb4 '´' */
+	/* 180 0xb4 */
 	0x18, /* 00011000 */
 	0x18, /* 00011000 */
 	0x18, /* 00011000 */
@@ -3274,7 +3274,7 @@
 	0x18, /* 00011000 */
 	0x18, /* 00011000 */
 
-	/* 181 0xb5 'µ' */
+	/* 181 0xb5 */
 	0x18, /* 00011000 */
 	0x18, /* 00011000 */
 	0x18, /* 00011000 */
@@ -3292,7 +3292,7 @@
 	0x18, /* 00011000 */
 	0x18, /* 00011000 */
 
-	/* 182 0xb6 '¶' */
+	/* 182 0xb6 */
 	0x36, /* 00110110 */
 	0x36, /* 00110110 */
 	0x36, /* 00110110 */
@@ -3310,7 +3310,7 @@
 	0x36, /* 00110110 */
 	0x36, /* 00110110 */
 
-	/* 183 0xb7 '·' */
+	/* 183 0xb7 */
 	0x00, /* 00000000 */
 	0x00, /* 00000000 */
 	0x00, /* 00000000 */
@@ -3328,7 +3328,7 @@
 	0x36, /* 00110110 */
 	0x36, /* 00110110 */
 
-	/* 184 0xb8 '¸' */
+	/* 184 0xb8 */
 	0x00, /* 00000000 */
 	0x00, /* 00000000 */
 	0x00, /* 00000000 */
@@ -3346,7 +3346,7 @@
 	0x18, /* 00011000 */
 	0x18, /* 00011000 */
 
-	/* 185 0xb9 '¹' */
+	/* 185 0xb9 */
 	0x36, /* 00110110 */
 	0x36, /* 00110110 */
 	0x36, /* 00110110 */
@@ -3364,7 +3364,7 @@
 	0x36, /* 00110110 */
 	0x36, /* 00110110 */
 
-	/* 186 0xba 'º' */
+	/* 186 0xba */
 	0x36, /* 00110110 */
 	0x36, /* 00110110 */
 	0x36, /* 00110110 */
@@ -3382,7 +3382,7 @@
 	0x36, /* 00110110 */
 	0x36, /* 00110110 */
 
-	/* 187 0xbb '»' */
+	/* 187 0xbb */
 	0x00, /* 00000000 */
 	0x00, /* 00000000 */
 	0x00, /* 00000000 */
@@ -3400,7 +3400,7 @@
 	0x36, /* 00110110 */
 	0x36, /* 00110110 */
 
-	/* 188 0xbc '¼' */
+	/* 188 0xbc */
 	0x36, /* 00110110 */
 	0x36, /* 00110110 */
 	0x36, /* 00110110 */
@@ -3418,7 +3418,7 @@
 	0x00, /* 00000000 */
 	0x00, /* 00000000 */
 
-	/* 189 0xbd '½' */
+	/* 189 0xbd */
 	0x36, /* 00110110 */
 	0x36, /* 00110110 */
 	0x36, /* 00110110 */
@@ -3436,7 +3436,7 @@
 	0x00, /* 00000000 */
 	0x00, /* 00000000 */
 
-	/* 190 0xbe '¾' */
+	/* 190 0xbe */
 	0x18, /* 00011000 */
 	0x18, /* 00011000 */
 	0x18, /* 00011000 */
@@ -3454,7 +3454,7 @@
 	0x00, /* 00000000 */
 	0x00, /* 00000000 */
 
-	/* 191 0xbf '¿' */
+	/* 191 0xbf */
 	0x00, /* 00000000 */
 	0x00, /* 00000000 */
 	0x00, /* 00000000 */
@@ -3472,7 +3472,7 @@
 	0x18, /* 00011000 */
 	0x18, /* 00011000 */
 
-	/* 192 0xc0 'À' */
+	/* 192 0xc0 */
 	0x18, /* 00011000 */
 	0x18, /* 00011000 */
 	0x18, /* 00011000 */
@@ -3490,7 +3490,7 @@
 	0x00, /* 00000000 */
 	0x00, /* 00000000 */
 
-	/* 193 0xc1 'Á' */
+	/* 193 0xc1 */
 	0x18, /* 00011000 */
 	0x18, /* 00011000 */
 	0x18, /* 00011000 */
@@ -3508,7 +3508,7 @@
 	0x00, /* 00000000 */
 	0x00, /* 00000000 */
 
-	/* 194 0xc2 'Â' */
+	/* 194 0xc2 */
 	0x00, /* 00000000 */
 	0x00, /* 00000000 */
 	0x00, /* 00000000 */
@@ -3526,7 +3526,7 @@
 	0x18, /* 00011000 */
 	0x18, /* 00011000 */
 
-	/* 195 0xc3 'Ã' */
+	/* 195 0xc3 */
 	0x18, /* 00011000 */
 	0x18, /* 00011000 */
 	0x18, /* 00011000 */
@@ -3544,7 +3544,7 @@
 	0x18, /* 00011000 */
 	0x18, /* 00011000 */
 
-	/* 196 0xc4 'Ä' */
+	/* 196 0xc4 */
 	0x00, /* 00000000 */
 	0x00, /* 00000000 */
 	0x00, /* 00000000 */
@@ -3562,7 +3562,7 @@
 	0x00, /* 00000000 */
 	0x00, /* 00000000 */
 
-	/* 197 0xc5 'Å' */
+	/* 197 0xc5 */
 	0x18, /* 00011000 */
 	0x18, /* 00011000 */
 	0x18, /* 00011000 */
@@ -3580,7 +3580,7 @@
 	0x18, /* 00011000 */
 	0x18, /* 00011000 */
 
-	/* 198 0xc6 'Æ' */
+	/* 198 0xc6 */
 	0x18, /* 00011000 */
 	0x18, /* 00011000 */
 	0x18, /* 00011000 */
@@ -3598,7 +3598,7 @@
 	0x18, /* 00011000 */
 	0x18, /* 00011000 */
 
-	/* 199 0xc7 'Ç' */
+	/* 199 0xc7 */
 	0x36, /* 00110110 */
 	0x36, /* 00110110 */
 	0x36, /* 00110110 */
@@ -3616,7 +3616,7 @@
 	0x36, /* 00110110 */
 	0x36, /* 00110110 */
 
-	/* 200 0xc8 'È' */
+	/* 200 0xc8 */
 	0x36, /* 00110110 */
 	0x36, /* 00110110 */
 	0x36, /* 00110110 */
@@ -3634,7 +3634,7 @@
 	0x00, /* 00000000 */
 	0x00, /* 00000000 */
 
-	/* 201 0xc9 'É' */
+	/* 201 0xc9 */
 	0x00, /* 00000000 */
 	0x00, /* 00000000 */
 	0x00, /* 00000000 */
@@ -3652,7 +3652,7 @@
 	0x36, /* 00110110 */
 	0x36, /* 00110110 */
 
-	/* 202 0xca 'Ê' */
+	/* 202 0xca */
 	0x36, /* 00110110 */
 	0x36, /* 00110110 */
 	0x36, /* 00110110 */
@@ -3670,7 +3670,7 @@
 	0x00, /* 00000000 */
 	0x00, /* 00000000 */
 
-	/* 203 0xcb 'Ë' */
+	/* 203 0xcb */
 	0x00, /* 00000000 */
 	0x00, /* 00000000 */
 	0x00, /* 00000000 */
@@ -3688,7 +3688,7 @@
 	0x36, /* 00110110 */
 	0x36, /* 00110110 */
 
-	/* 204 0xcc 'Ì' */
+	/* 204 0xcc */
 	0x36, /* 00110110 */
 	0x36, /* 00110110 */
 	0x36, /* 00110110 */
@@ -3706,7 +3706,7 @@
 	0x36, /* 00110110 */
 	0x36, /* 00110110 */
 
-	/* 205 0xcd 'Í' */
+	/* 205 0xcd */
 	0x00, /* 00000000 */
 	0x00, /* 00000000 */
 	0x00, /* 00000000 */
@@ -3724,7 +3724,7 @@
 	0x00, /* 00000000 */
 	0x00, /* 00000000 */
 
-	/* 206 0xce 'Î' */
+	/* 206 0xce */
 	0x36, /* 00110110 */
 	0x36, /* 00110110 */
 	0x36, /* 00110110 */
@@ -3742,7 +3742,7 @@
 	0x36, /* 00110110 */
 	0x36, /* 00110110 */
 
-	/* 207 0xcf 'Ï' */
+	/* 207 0xcf */
 	0x18, /* 00011000 */
 	0x18, /* 00011000 */
 	0x18, /* 00011000 */
@@ -3760,7 +3760,7 @@
 	0x00, /* 00000000 */
 	0x00, /* 00000000 */
 
-	/* 208 0xd0 'Ð' */
+	/* 208 0xd0 */
 	0x36, /* 00110110 */
 	0x36, /* 00110110 */
 	0x36, /* 00110110 */
@@ -3778,7 +3778,7 @@
 	0x00, /* 00000000 */
 	0x00, /* 00000000 */
 
-	/* 209 0xd1 'Ñ' */
+	/* 209 0xd1 */
 	0x00, /* 00000000 */
 	0x00, /* 00000000 */
 	0x00, /* 00000000 */
@@ -3796,7 +3796,7 @@
 	0x18, /* 00011000 */
 	0x18, /* 00011000 */
 
-	/* 210 0xd2 'Ò' */
+	/* 210 0xd2 */
 	0x00, /* 00000000 */
 	0x00, /* 00000000 */
 	0x00, /* 00000000 */
@@ -3814,7 +3814,7 @@
 	0x36, /* 00110110 */
 	0x36, /* 00110110 */
 
-	/* 211 0xd3 'Ó' */
+	/* 211 0xd3 */
 	0x36, /* 00110110 */
 	0x36, /* 00110110 */
 	0x36, /* 00110110 */
@@ -3832,7 +3832,7 @@
 	0x00, /* 00000000 */
 	0x00, /* 00000000 */
 
-	/* 212 0xd4 'Ô' */
+	/* 212 0xd4 */
 	0x18, /* 00011000 */
 	0x18, /* 00011000 */
 	0x18, /* 00011000 */
@@ -3850,7 +3850,7 @@
 	0x00, /* 00000000 */
 	0x00, /* 00000000 */
 
-	/* 213 0xd5 'Õ' */
+	/* 213 0xd5 */
 	0x00, /* 00000000 */
 	0x00, /* 00000000 */
 	0x00, /* 00000000 */
@@ -3868,7 +3868,7 @@
 	0x18, /* 00011000 */
 	0x18, /* 00011000 */
 
-	/* 214 0xd6 'Ö' */
+	/* 214 0xd6 */
 	0x00, /* 00000000 */
 	0x00, /* 00000000 */
 	0x00, /* 00000000 */
@@ -3886,7 +3886,7 @@
 	0x36, /* 00110110 */
 	0x36, /* 00110110 */
 
-	/* 215 0xd7 '×' */
+	/* 215 0xd7 */
 	0x36, /* 00110110 */
 	0x36, /* 00110110 */
 	0x36, /* 00110110 */
@@ -3904,7 +3904,7 @@
 	0x36, /* 00110110 */
 	0x36, /* 00110110 */
 
-	/* 216 0xd8 'Ø' */
+	/* 216 0xd8 */
 	0x18, /* 00011000 */
 	0x18, /* 00011000 */
 	0x18, /* 00011000 */
@@ -3922,7 +3922,7 @@
 	0x18, /* 00011000 */
 	0x18, /* 00011000 */
 
-	/* 217 0xd9 'Ù' */
+	/* 217 0xd9 */
 	0x18, /* 00011000 */
 	0x18, /* 00011000 */
 	0x18, /* 00011000 */
@@ -3940,7 +3940,7 @@
 	0x00, /* 00000000 */
 	0x00, /* 00000000 */
 
-	/* 218 0xda 'Ú' */
+	/* 218 0xda */
 	0x00, /* 00000000 */
 	0x00, /* 00000000 */
 	0x00, /* 00000000 */
@@ -3958,7 +3958,7 @@
 	0x18, /* 00011000 */
 	0x18, /* 00011000 */
 
-	/* 219 0xdb 'Û' */
+	/* 219 0xdb */
 	0xff, /* 11111111 */
 	0xff, /* 11111111 */
 	0xff, /* 11111111 */
@@ -3976,7 +3976,7 @@
 	0xff, /* 11111111 */
 	0xff, /* 11111111 */
 
-	/* 220 0xdc 'Ü' */
+	/* 220 0xdc */
 	0x00, /* 00000000 */
 	0x00, /* 00000000 */
 	0x00, /* 00000000 */
@@ -3994,7 +3994,7 @@
 	0xff, /* 11111111 */
 	0xff, /* 11111111 */
 
-	/* 221 0xdd 'Ý' */
+	/* 221 0xdd */
 	0xf0, /* 11110000 */
 	0xf0, /* 11110000 */
 	0xf0, /* 11110000 */
@@ -4012,7 +4012,7 @@
 	0xf0, /* 11110000 */
 	0xf0, /* 11110000 */
 
-	/* 222 0xde 'Þ' */
+	/* 222 0xde */
 	0x0f, /* 00001111 */
 	0x0f, /* 00001111 */
 	0x0f, /* 00001111 */
@@ -4030,7 +4030,7 @@
 	0x0f, /* 00001111 */
 	0x0f, /* 00001111 */
 
-	/* 223 0xdf 'ß' */
+	/* 223 0xdf */
 	0xff, /* 11111111 */
 	0xff, /* 11111111 */
 	0xff, /* 11111111 */
@@ -4048,7 +4048,7 @@
 	0x00, /* 00000000 */
 	0x00, /* 00000000 */
 
-	/* 224 0xe0 'à' */
+	/* 224 0xe0 */
 	0x00, /* 00000000 */
 	0x00, /* 00000000 */
 	0x00, /* 00000000 */
@@ -4066,7 +4066,7 @@
 	0x00, /* 00000000 */
 	0x00, /* 00000000 */
 
-	/* 225 0xe1 'á' */
+	/* 225 0xe1 */
 	0x00, /* 00000000 */
 	0x00, /* 00000000 */
 	0x78, /* 01111000 */
@@ -4084,7 +4084,7 @@
 	0x00, /* 00000000 */
 	0x00, /* 00000000 */
 
-	/* 226 0xe2 'â' */
+	/* 226 0xe2 */
 	0x00, /* 00000000 */
 	0x00, /* 00000000 */
 	0xfe, /* 11111110 */
@@ -4102,7 +4102,7 @@
 	0x00, /* 00000000 */
 	0x00, /* 00000000 */
 
-	/* 227 0xe3 'ã' */
+	/* 227 0xe3 */
 	0x00, /* 00000000 */
 	0x00, /* 00000000 */
 	0x00, /* 00000000 */
@@ -4120,7 +4120,7 @@
 	0x00, /* 00000000 */
 	0x00, /* 00000000 */
 
-	/* 228 0xe4 'ä' */
+	/* 228 0xe4 */
 	0x00, /* 00000000 */
 	0x00, /* 00000000 */
 	0xfe, /* 11111110 */
@@ -4138,7 +4138,7 @@
 	0x00, /* 00000000 */
 	0x00, /* 00000000 */
 
-	/* 229 0xe5 'å' */
+	/* 229 0xe5 */
 	0x00, /* 00000000 */
 	0x00, /* 00000000 */
 	0x00, /* 00000000 */
@@ -4156,7 +4156,7 @@
 	0x00, /* 00000000 */
 	0x00, /* 00000000 */
 
-	/* 230 0xe6 'æ' */
+	/* 230 0xe6 */
 	0x00, /* 00000000 */
 	0x00, /* 00000000 */
 	0x00, /* 00000000 */
@@ -4174,7 +4174,7 @@
 	0xc0, /* 11000000 */
 	0x00, /* 00000000 */
 
-	/* 231 0xe7 'ç' */
+	/* 231 0xe7 */
 	0x00, /* 00000000 */
 	0x00, /* 00000000 */
 	0x00, /* 00000000 */
@@ -4192,7 +4192,7 @@
 	0x00, /* 00000000 */
 	0x00, /* 00000000 */
 
-	/* 232 0xe8 'è' */
+	/* 232 0xe8 */
 	0x00, /* 00000000 */
 	0x00, /* 00000000 */
 	0x7e, /* 01111110 */
@@ -4210,7 +4210,7 @@
 	0x00, /* 00000000 */
 	0x00, /* 00000000 */
 
-	/* 233 0xe9 'é' */
+	/* 233 0xe9 */
 	0x00, /* 00000000 */
 	0x00, /* 00000000 */
 	0x38, /* 00111000 */
@@ -4228,7 +4228,7 @@
 	0x00, /* 00000000 */
 	0x00, /* 00000000 */
 
-	/* 234 0xea 'ê' */
+	/* 234 0xea */
 	0x00, /* 00000000 */
 	0x00, /* 00000000 */
 	0x38, /* 00111000 */
@@ -4246,7 +4246,7 @@
 	0x00, /* 00000000 */
 	0x00, /* 00000000 */
 
-	/* 235 0xeb 'ë' */
+	/* 235 0xeb */
 	0x00, /* 00000000 */
 	0x00, /* 00000000 */
 	0x1e, /* 00011110 */
@@ -4264,7 +4264,7 @@
 	0x00, /* 00000000 */
 	0x00, /* 00000000 */
 
-	/* 236 0xec 'ì' */
+	/* 236 0xec */
 	0x00, /* 00000000 */
 	0x00, /* 00000000 */
 	0x00, /* 00000000 */
@@ -4282,7 +4282,7 @@
 	0x00, /* 00000000 */
 	0x00, /* 00000000 */
 
-	/* 237 0xed 'í' */
+	/* 237 0xed */
 	0x00, /* 00000000 */
 	0x00, /* 00000000 */
 	0x00, /* 00000000 */
@@ -4300,7 +4300,7 @@
 	0x00, /* 00000000 */
 	0x00, /* 00000000 */
 
-	/* 238 0xee 'î' */
+	/* 238 0xee */
 	0x00, /* 00000000 */
 	0x00, /* 00000000 */
 	0x1c, /* 00011100 */
@@ -4318,7 +4318,7 @@
 	0x00, /* 00000000 */
 	0x00, /* 00000000 */
 
-	/* 239 0xef 'ï' */
+	/* 239 0xef */
 	0x00, /* 00000000 */
 	0x00, /* 00000000 */
 	0x00, /* 00000000 */
@@ -4336,7 +4336,7 @@
 	0x00, /* 00000000 */
 	0x00, /* 00000000 */
 
-	/* 240 0xf0 'ð' */
+	/* 240 0xf0 */
 	0x00, /* 00000000 */
 	0x00, /* 00000000 */
 	0x00, /* 00000000 */
@@ -4354,7 +4354,7 @@
 	0x00, /* 00000000 */
 	0x00, /* 00000000 */
 
-	/* 241 0xf1 'ñ' */
+	/* 241 0xf1 */
 	0x00, /* 00000000 */
 	0x00, /* 00000000 */
 	0x00, /* 00000000 */
@@ -4372,7 +4372,7 @@
 	0x00, /* 00000000 */
 	0x00, /* 00000000 */
 
-	/* 242 0xf2 'ò' */
+	/* 242 0xf2 */
 	0x00, /* 00000000 */
 	0x00, /* 00000000 */
 	0x00, /* 00000000 */
@@ -4390,7 +4390,7 @@
 	0x00, /* 00000000 */
 	0x00, /* 00000000 */
 
-	/* 243 0xf3 'ó' */
+	/* 243 0xf3 */
 	0x00, /* 00000000 */
 	0x00, /* 00000000 */
 	0x00, /* 00000000 */
@@ -4408,7 +4408,7 @@
 	0x00, /* 00000000 */
 	0x00, /* 00000000 */
 
-	/* 244 0xf4 'ô' */
+	/* 244 0xf4 */
 	0x00, /* 00000000 */
 	0x00, /* 00000000 */
 	0x0e, /* 00001110 */
@@ -4426,7 +4426,7 @@
 	0x18, /* 00011000 */
 	0x18, /* 00011000 */
 
-	/* 245 0xf5 'õ' */
+	/* 245 0xf5 */
 	0x18, /* 00011000 */
 	0x18, /* 00011000 */
 	0x18, /* 00011000 */
@@ -4444,7 +4444,7 @@
 	0x00, /* 00000000 */
 	0x00, /* 00000000 */
 
-	/* 246 0xf6 'ö' */
+	/* 246 0xf6 */
 	0x00, /* 00000000 */
 	0x00, /* 00000000 */
 	0x00, /* 00000000 */
@@ -4462,7 +4462,7 @@
 	0x00, /* 00000000 */
 	0x00, /* 00000000 */
 
-	/* 247 0xf7 '÷' */
+	/* 247 0xf7 */
 	0x00, /* 00000000 */
 	0x00, /* 00000000 */
 	0x00, /* 00000000 */
@@ -4480,7 +4480,7 @@
 	0x00, /* 00000000 */
 	0x00, /* 00000000 */
 
-	/* 248 0xf8 'ø' */
+	/* 248 0xf8 */
 	0x00, /* 00000000 */
 	0x38, /* 00111000 */
 	0x6c, /* 01101100 */
@@ -4498,7 +4498,7 @@
 	0x00, /* 00000000 */
 	0x00, /* 00000000 */
 
-	/* 249 0xf9 'ù' */
+	/* 249 0xf9 */
 	0x00, /* 00000000 */
 	0x00, /* 00000000 */
 	0x00, /* 00000000 */
@@ -4516,7 +4516,7 @@
 	0x00, /* 00000000 */
 	0x00, /* 00000000 */
 
-	/* 250 0xfa 'ú' */
+	/* 250 0xfa */
 	0x00, /* 00000000 */
 	0x00, /* 00000000 */
 	0x00, /* 00000000 */
@@ -4534,7 +4534,7 @@
 	0x00, /* 00000000 */
 	0x00, /* 00000000 */
 
-	/* 251 0xfb 'û' */
+	/* 251 0xfb */
 	0x00, /* 00000000 */
 	0x0f, /* 00001111 */
 	0x0c, /* 00001100 */
@@ -4552,7 +4552,7 @@
 	0x00, /* 00000000 */
 	0x00, /* 00000000 */
 
-	/* 252 0xfc 'ü' */
+	/* 252 0xfc */
 	0x00, /* 00000000 */
 	0x6c, /* 01101100 */
 	0x36, /* 00110110 */
@@ -4570,7 +4570,7 @@
 	0x00, /* 00000000 */
 	0x00, /* 00000000 */
 
-	/* 253 0xfd 'ý' */
+	/* 253 0xfd */
 	0x00, /* 00000000 */
 	0x3c, /* 00111100 */
 	0x66, /* 01100110 */
@@ -4588,7 +4588,7 @@
 	0x00, /* 00000000 */
 	0x00, /* 00000000 */
 
-	/* 254 0xfe 'þ' */
+	/* 254 0xfe */
 	0x00, /* 00000000 */
 	0x00, /* 00000000 */
 	0x00, /* 00000000 */
@@ -4606,7 +4606,7 @@
 	0x00, /* 00000000 */
 	0x00, /* 00000000 */
 
-	/* 255 0xff 'ÿ' */
+	/* 255 0xff */
 	0x00, /* 00000000 */
 	0x00, /* 00000000 */
 	0x00, /* 00000000 */
diff --git a/test/print_ut.c b/test/print_ut.c
index 61ea432..5b0a46d 100644
--- a/test/print_ut.c
+++ b/test/print_ut.c
@@ -7,9 +7,7 @@
 
 #include <common.h>
 #include <command.h>
-#if CONFIG_IS_ENABLED(EFI_LOADER) && !defined(API_BUILD)
 #include <efi_api.h>
-#endif
 #include <display_options.h>
 #include <log.h>
 #include <version.h>
diff --git a/test/py/tests/test_env.py b/test/py/tests/test_env.py
index 9402796..9bed2f4 100644
--- a/test/py/tests/test_env.py
+++ b/test/py/tests/test_env.py
@@ -414,6 +414,8 @@
     if os.path.exists(persistent):
         c.log.action('Disk image file ' + persistent + ' already exists')
     else:
+        # Some distributions do not add /sbin to the default PATH, where mkfs.ext4 lives
+        os.environ["PATH"] += os.pathsep + '/sbin'
         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, 'mkfs.ext4 %s' % persistent)
diff --git a/tools/imagetool.h b/tools/imagetool.h
index 8726792..2801ea9 100644
--- a/tools/imagetool.h
+++ b/tools/imagetool.h
@@ -273,14 +273,14 @@
 
 #define INIT_SECTION(name)  do {					\
 		unsigned long name ## _len;				\
-		char *__cat(pstart_, name) = getsectdata("__TEXT",	\
+		char *__cat(pstart_, name) = getsectdata("__DATA",	\
 			#name, &__cat(name, _len));			\
 		char *__cat(pstop_, name) = __cat(pstart_, name) +	\
 			__cat(name, _len);				\
 		__cat(__start_, name) = (void *)__cat(pstart_, name);	\
 		__cat(__stop_, name) = (void *)__cat(pstop_, name);	\
 	} 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;
 #else
diff --git a/tools/mkeficapsule.c b/tools/mkeficapsule.c
index 1613e74..f272512 100644
--- a/tools/mkeficapsule.c
+++ b/tools/mkeficapsule.c
@@ -278,7 +278,7 @@
 	}
 	data = malloc(bin_stat.st_size);
 	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;
 	}
 	f = fopen(path, "w");
@@ -297,7 +297,7 @@
 
 	size = fwrite(&header, 1, sizeof(header), f);
 	if (size < sizeof(header)) {
-		printf("write failed (%lx)\n", size);
+		printf("write failed (%zx)\n", size);
 		goto err_3;
 	}
 
@@ -306,13 +306,13 @@
 	capsule.payload_item_count = 1;
 	size = fwrite(&capsule, 1, sizeof(capsule), f);
 	if (size < (sizeof(capsule))) {
-		printf("write failed (%lx)\n", size);
+		printf("write failed (%zx)\n", size);
 		goto err_3;
 	}
 	offset = sizeof(capsule) + sizeof(u64);
 	size = fwrite(&offset, 1, sizeof(offset), f);
 	if (size < sizeof(offset)) {
-		printf("write failed (%lx)\n", size);
+		printf("write failed (%zx)\n", size);
 		goto err_3;
 	}
 
@@ -329,17 +329,17 @@
 
 	size = fwrite(&image, 1, sizeof(image), f);
 	if (size < sizeof(image)) {
-		printf("write failed (%lx)\n", size);
+		printf("write failed (%zx)\n", size);
 		goto err_3;
 	}
 	size = fread(data, 1, bin_stat.st_size, g);
 	if (size < bin_stat.st_size) {
-		printf("read failed (%lx)\n", size);
+		printf("read failed (%zx)\n", size);
 		goto err_3;
 	}
 	size = fwrite(data, 1, bin_stat.st_size, f);
 	if (size < bin_stat.st_size) {
-		printf("write failed (%lx)\n", size);
+		printf("write failed (%zx)\n", size);
 		goto err_3;
 	}