DistroKit Mailinglist
 help / color / mirror / Atom feed
From: Juergen Borleis <jbe@pengutronix.de>
To: distrokit@pengutronix.de
Subject: [DistroKit] [PATCH 3/3] arch: bootloader: enable 'fastboot' support over USB and network
Date: Tue,  2 May 2023 10:06:46 +0200	[thread overview]
Message-ID: <20230502080646.94539-3-jbe@pengutronix.de> (raw)
In-Reply-To: <20230502080646.94539-1-jbe@pengutronix.de>

Enabling:

 - CONFIG_BOOTM_INITRD = y
 - CONFIG_USB_GADGET = y
 - CONFIG_USB_GADGET_FASTBOOT = y
 - CONFIG_NET_FASTBOOT = y
 - CONFIG_FASTBOOT_SPARSE = y
 - CONFIG_FASTBOOT_CMD_OEM = y

Signed-off-by: Jürgen Borleis <jbe@pengutronix.de>
---
 configs/platform-mips/barebox-ar9331.config   |  27 ++-
 .../platform-mips/barebox-ar9331.config.diff  |   2 +-
 configs/platform-mips/barebox-malta.config    |  27 ++-
 .../platform-mips/barebox-malta.config.diff   |   2 +-
 configs/platform-mips/barebox.config          |  27 ++-
 configs/platform-v7a/barebox-am335x.config    |   2 +-
 .../platform-v7a/barebox-am335x.config.diff   |   2 +-
 configs/platform-v7a/barebox-at91.config      |  27 ++-
 configs/platform-v7a/barebox-at91.config.diff |  19 +-
 configs/platform-v7a/barebox-mx6.config       |   2 +-
 configs/platform-v7a/barebox-mx6.config.diff  |   2 +-
 configs/platform-v7a/barebox-rpi2.config      |  25 ++-
 configs/platform-v7a/barebox-rpi2.config.diff |  17 +-
 configs/platform-v7a/barebox-stm32mp.config   |   7 +-
 .../platform-v7a/barebox-stm32mp.config.diff  |   5 +-
 configs/platform-v7a/barebox-vexpress.config  |   2 +-
 .../platform-v7a/barebox-vexpress.config.diff |   2 +-
 configs/platform-v7a/barebox.config           |   2 +-
 .../platform-v7a_noneon/barebox-at91.config   |  34 +++-
 .../barebox-at91.config.diff                  |  17 +-
 .../barebox-vexpress.config                   |  13 +-
 .../barebox-vexpress.config.diff              |   3 +-
 configs/platform-v7a_noneon/barebox.config    |  15 +-
 configs/platform-v8a/barebox-imx8m.config     |   9 +-
 configs/platform-v8a/barebox-rockchip.config  |   5 +-
 doc/index.rst                                 |   1 +
 doc/testing.rst                               | 163 ++++++++++++++++++
 27 files changed, 372 insertions(+), 87 deletions(-)
 create mode 100644 doc/testing.rst

diff --git a/configs/platform-mips/barebox-ar9331.config b/configs/platform-mips/barebox-ar9331.config
index 4f75964..2e72041 100644
--- a/configs/platform-mips/barebox-ar9331.config
+++ b/configs/platform-mips/barebox-ar9331.config
@@ -62,7 +62,10 @@ CONFIG_BINFMT=y
 CONFIG_UIMAGE=y
 CONFIG_LOGBUF=y
 CONFIG_STDDEV=y
+CONFIG_FILE_LIST=y
+CONFIG_USBGADGET_START=y
 CONFIG_BOOT=y
+CONFIG_FASTBOOT_BASE=y
 
 #
 # General Settings
@@ -125,7 +128,7 @@ CONFIG_TIMESTAMP=y
 CONFIG_BOOTM=y
 # CONFIG_BOOTM_SHOW_TYPE is not set
 # CONFIG_BOOTM_VERBOSE is not set
-# CONFIG_BOOTM_INITRD is not set
+CONFIG_BOOTM_INITRD=y
 # CONFIG_BOOTM_OFTREE is not set
 CONFIG_BOOTM_ELF=y
 # CONFIG_BLSPEC is not set
@@ -161,6 +164,13 @@ CONFIG_POLLER=y
 # OP-TEE loading
 #
 # end of OP-TEE loading
+
+#
+# Android Fastboot
+#
+CONFIG_FASTBOOT_SPARSE=y
+CONFIG_FASTBOOT_CMD_OEM=y
+# end of Android Fastboot
 # end of General Settings
 
 #
@@ -326,6 +336,7 @@ CONFIG_CMD_LED=y
 CONFIG_CMD_POWEROFF=y
 CONFIG_CMD_SPI=y
 CONFIG_CMD_LED_TRIGGER=y
+CONFIG_CMD_USBGADGET=y
 # end of Hardware manipulation
 
 #
@@ -357,7 +368,7 @@ CONFIG_NET_RESOLV=y
 CONFIG_NET_IFUP=y
 CONFIG_NET_DHCP=y
 CONFIG_NET_SNTP=y
-# CONFIG_NET_FASTBOOT is not set
+CONFIG_NET_FASTBOOT=y
 
 #
 # Drivers
@@ -464,8 +475,17 @@ CONFIG_MTD_SPI_NOR=y
 # CONFIG_SPI_CADENCE_QUADSPI is not set
 # CONFIG_MTD_UBI is not set
 # CONFIG_DISK is not set
+CONFIG_USB=y
 # CONFIG_USB_HOST is not set
-# CONFIG_USB_GADGET is not set
+CONFIG_USB_GADGET=y
+CONFIG_USB_GADGET_AUTOSTART=y
+
+#
+# USB Gadget drivers
+#
+# CONFIG_USB_GADGET_DFU is not set
+# CONFIG_USB_GADGET_SERIAL is not set
+CONFIG_USB_GADGET_FASTBOOT=y
 # CONFIG_USB_MUSB is not set
 # CONFIG_VIDEO is not set
 # CONFIG_MCI is not set
@@ -644,6 +664,7 @@ CONFIG_PROCESS_ESCAPE_SEQUENCE=y
 CONFIG_FNMATCH=y
 CONFIG_QSORT=y
 CONFIG_XYMODEM=y
+CONFIG_IMAGE_SPARSE=y
 # CONFIG_RATP is not set
 # CONFIG_ALLOW_PRNG_FALLBACK is not set
 # CONFIG_CRC_CCITT is not set
diff --git a/configs/platform-mips/barebox-ar9331.config.diff b/configs/platform-mips/barebox-ar9331.config.diff
index bb718c1..524a3cc 100644
--- a/configs/platform-mips/barebox-ar9331.config.diff
+++ b/configs/platform-mips/barebox-ar9331.config.diff
@@ -1,4 +1,4 @@
-0045135ec222c1efe0b77eb6a3b7e8ec
+969c2d8bca570a40257c2a71b4e37c8d
 # CONFIG_BOARD_8DEVICES_LIMA is not set
 # CONFIG_BOARD_TPLINK_WDR4300 is not set
 # CONFIG_SOC_QCA_AR9344 is undefined
diff --git a/configs/platform-mips/barebox-malta.config b/configs/platform-mips/barebox-malta.config
index 1f9ab39..9433c0a 100644
--- a/configs/platform-mips/barebox-malta.config
+++ b/configs/platform-mips/barebox-malta.config
@@ -59,7 +59,10 @@ CONFIG_BINFMT=y
 CONFIG_UIMAGE=y
 CONFIG_LOGBUF=y
 CONFIG_STDDEV=y
+CONFIG_FILE_LIST=y
+CONFIG_USBGADGET_START=y
 CONFIG_BOOT=y
+CONFIG_FASTBOOT_BASE=y
 
 #
 # General Settings
@@ -128,7 +131,7 @@ CONFIG_TIMESTAMP=y
 CONFIG_BOOTM=y
 CONFIG_BOOTM_SHOW_TYPE=y
 # CONFIG_BOOTM_VERBOSE is not set
-# CONFIG_BOOTM_INITRD is not set
+CONFIG_BOOTM_INITRD=y
 # CONFIG_BOOTM_OFTREE is not set
 CONFIG_BOOTM_ELF=y
 # CONFIG_BLSPEC is not set
@@ -165,6 +168,13 @@ CONFIG_POLLER=y
 # OP-TEE loading
 #
 # end of OP-TEE loading
+
+#
+# Android Fastboot
+#
+CONFIG_FASTBOOT_SPARSE=y
+CONFIG_FASTBOOT_CMD_OEM=y
+# end of Android Fastboot
 # end of General Settings
 
 #
@@ -334,6 +344,7 @@ CONFIG_CMD_FLASH=y
 CONFIG_CMD_GPIO=y
 CONFIG_CMD_I2C=y
 # CONFIG_CMD_POWEROFF is not set
+CONFIG_CMD_USBGADGET=y
 # end of Hardware manipulation
 
 #
@@ -365,7 +376,7 @@ CONFIG_NET_RESOLV=y
 CONFIG_NET_IFUP=y
 CONFIG_NET_DHCP=y
 # CONFIG_NET_SNTP is not set
-# CONFIG_NET_FASTBOOT is not set
+CONFIG_NET_FASTBOOT=y
 
 #
 # Drivers
@@ -478,8 +489,17 @@ CONFIG_CFI_BUFFER_WRITE=y
 # CONFIG_MTD_SPI_NOR is not set
 # CONFIG_MTD_UBI is not set
 # CONFIG_DISK is not set
+CONFIG_USB=y
 # CONFIG_USB_HOST is not set
-# CONFIG_USB_GADGET is not set
+CONFIG_USB_GADGET=y
+CONFIG_USB_GADGET_AUTOSTART=y
+
+#
+# USB Gadget drivers
+#
+# CONFIG_USB_GADGET_DFU is not set
+# CONFIG_USB_GADGET_SERIAL is not set
+CONFIG_USB_GADGET_FASTBOOT=y
 # CONFIG_USB_MUSB is not set
 # CONFIG_VIDEO is not set
 # CONFIG_MCI is not set
@@ -682,6 +702,7 @@ CONFIG_PROCESS_ESCAPE_SEQUENCE=y
 CONFIG_FNMATCH=y
 CONFIG_QSORT=y
 CONFIG_XYMODEM=y
+CONFIG_IMAGE_SPARSE=y
 # CONFIG_RATP is not set
 # CONFIG_ALLOW_PRNG_FALLBACK is not set
 # CONFIG_CRC_CCITT is not set
diff --git a/configs/platform-mips/barebox-malta.config.diff b/configs/platform-mips/barebox-malta.config.diff
index 763c0a9..596f178 100644
--- a/configs/platform-mips/barebox-malta.config.diff
+++ b/configs/platform-mips/barebox-malta.config.diff
@@ -1,4 +1,4 @@
-0045135ec222c1efe0b77eb6a3b7e8ec
+969c2d8bca570a40257c2a71b4e37c8d
 # CONFIG_AT803X_PHY is not set
 CONFIG_BAREBOX_MAX_IMAGE_SIZE=0x400000
 CONFIG_BAUDRATE=38400
diff --git a/configs/platform-mips/barebox.config b/configs/platform-mips/barebox.config
index 6398994..689e6bc 100644
--- a/configs/platform-mips/barebox.config
+++ b/configs/platform-mips/barebox.config
@@ -64,7 +64,10 @@ CONFIG_BINFMT=y
 CONFIG_UIMAGE=y
 CONFIG_LOGBUF=y
 CONFIG_STDDEV=y
+CONFIG_FILE_LIST=y
+CONFIG_USBGADGET_START=y
 CONFIG_BOOT=y
+CONFIG_FASTBOOT_BASE=y
 
 #
 # General Settings
@@ -127,7 +130,7 @@ CONFIG_TIMESTAMP=y
 CONFIG_BOOTM=y
 # CONFIG_BOOTM_SHOW_TYPE is not set
 # CONFIG_BOOTM_VERBOSE is not set
-# CONFIG_BOOTM_INITRD is not set
+CONFIG_BOOTM_INITRD=y
 # CONFIG_BOOTM_OFTREE is not set
 CONFIG_BOOTM_ELF=y
 # CONFIG_BLSPEC is not set
@@ -163,6 +166,13 @@ CONFIG_POLLER=y
 # OP-TEE loading
 #
 # end of OP-TEE loading
+
+#
+# Android Fastboot
+#
+CONFIG_FASTBOOT_SPARSE=y
+CONFIG_FASTBOOT_CMD_OEM=y
+# end of Android Fastboot
 # end of General Settings
 
 #
@@ -328,6 +338,7 @@ CONFIG_CMD_LED=y
 CONFIG_CMD_POWEROFF=y
 CONFIG_CMD_SPI=y
 CONFIG_CMD_LED_TRIGGER=y
+CONFIG_CMD_USBGADGET=y
 # end of Hardware manipulation
 
 #
@@ -359,7 +370,7 @@ CONFIG_NET_RESOLV=y
 CONFIG_NET_IFUP=y
 CONFIG_NET_DHCP=y
 CONFIG_NET_SNTP=y
-# CONFIG_NET_FASTBOOT is not set
+CONFIG_NET_FASTBOOT=y
 
 #
 # Drivers
@@ -466,8 +477,17 @@ CONFIG_MTD_SPI_NOR=y
 # CONFIG_SPI_CADENCE_QUADSPI is not set
 # CONFIG_MTD_UBI is not set
 # CONFIG_DISK is not set
+CONFIG_USB=y
 # CONFIG_USB_HOST is not set
-# CONFIG_USB_GADGET is not set
+CONFIG_USB_GADGET=y
+CONFIG_USB_GADGET_AUTOSTART=y
+
+#
+# USB Gadget drivers
+#
+# CONFIG_USB_GADGET_DFU is not set
+# CONFIG_USB_GADGET_SERIAL is not set
+CONFIG_USB_GADGET_FASTBOOT=y
 # CONFIG_USB_MUSB is not set
 # CONFIG_VIDEO is not set
 # CONFIG_MCI is not set
@@ -646,6 +666,7 @@ CONFIG_PROCESS_ESCAPE_SEQUENCE=y
 CONFIG_FNMATCH=y
 CONFIG_QSORT=y
 CONFIG_XYMODEM=y
+CONFIG_IMAGE_SPARSE=y
 # CONFIG_RATP is not set
 # CONFIG_ALLOW_PRNG_FALLBACK is not set
 # CONFIG_CRC_CCITT is not set
diff --git a/configs/platform-v7a/barebox-am335x.config b/configs/platform-v7a/barebox-am335x.config
index 647d716..3d95040 100644
--- a/configs/platform-v7a/barebox-am335x.config
+++ b/configs/platform-v7a/barebox-am335x.config
@@ -463,7 +463,7 @@ CONFIG_NET_RESOLV=y
 CONFIG_NET_IFUP=y
 CONFIG_NET_DHCP=y
 # CONFIG_NET_SNTP is not set
-# CONFIG_NET_FASTBOOT is not set
+CONFIG_NET_FASTBOOT=y
 
 #
 # Drivers
diff --git a/configs/platform-v7a/barebox-am335x.config.diff b/configs/platform-v7a/barebox-am335x.config.diff
index 20ab680..f3f08c1 100644
--- a/configs/platform-v7a/barebox-am335x.config.diff
+++ b/configs/platform-v7a/barebox-am335x.config.diff
@@ -1,4 +1,4 @@
-68457081af06bd8377bc38ef02c7d415
+cae3c1d7fff409368cf71da28bce089f
 # CONFIG_32BIT is undefined
 # CONFIG_64BIT is undefined
 # CONFIG_AM33XX_NET_BOOT is not set
diff --git a/configs/platform-v7a/barebox-at91.config b/configs/platform-v7a/barebox-at91.config
index b9f129a..754552b 100644
--- a/configs/platform-v7a/barebox-at91.config
+++ b/configs/platform-v7a/barebox-at91.config
@@ -115,7 +115,9 @@ CONFIG_LOGBUF=y
 CONFIG_STDDEV=y
 CONFIG_MENUTREE=y
 CONFIG_UBIFORMAT=y
+CONFIG_USBGADGET_START=y
 CONFIG_BOOT=y
+CONFIG_FASTBOOT_BASE=y
 
 #
 # General Settings
@@ -232,6 +234,13 @@ CONFIG_EXTERNAL_DTS_FRAGMENTS=""
 # CONFIG_BOOTM_OPTEE is not set
 # CONFIG_PBL_OPTEE is not set
 # end of OP-TEE loading
+
+#
+# Android Fastboot
+#
+CONFIG_FASTBOOT_SPARSE=y
+CONFIG_FASTBOOT_CMD_OEM=y
+# end of Android Fastboot
 # end of General Settings
 
 #
@@ -434,6 +443,7 @@ CONFIG_CMD_NAND=y
 # CONFIG_CMD_POWEROFF is not set
 CONFIG_CMD_SPI=y
 CONFIG_CMD_LED_TRIGGER=y
+CONFIG_CMD_USBGADGET=y
 CONFIG_CMD_WD=y
 CONFIG_CMD_WD_DEFAULT_TIMOUT=0
 # end of Hardware manipulation
@@ -469,7 +479,7 @@ CONFIG_NET_RESOLV=y
 CONFIG_NET_IFUP=y
 CONFIG_NET_DHCP=y
 # CONFIG_NET_SNTP is not set
-# CONFIG_NET_FASTBOOT is not set
+CONFIG_NET_FASTBOOT=y
 
 #
 # Drivers
@@ -621,8 +631,20 @@ CONFIG_DISK_WRITE=y
 # interface types
 #
 # CONFIG_DISK_INTF_PLATFORM_IDE is not set
+CONFIG_USB=y
 # CONFIG_USB_HOST is not set
-# CONFIG_USB_GADGET is not set
+CONFIG_USB_GADGET=y
+CONFIG_USB_GADGET_DUALSPEED=y
+CONFIG_USB_GADGET_DRIVER_AT91=y
+CONFIG_USB_GADGET_AUTOSTART=y
+
+#
+# USB Gadget drivers
+#
+# CONFIG_USB_GADGET_DFU is not set
+# CONFIG_USB_GADGET_SERIAL is not set
+CONFIG_USB_GADGET_FASTBOOT=y
+# CONFIG_USB_GADGET_MASS_STORAGE is not set
 # CONFIG_USB_MUSB is not set
 # CONFIG_VIDEO is not set
 # CONFIG_SOUND is not set
@@ -904,6 +926,7 @@ CONFIG_FNMATCH=y
 CONFIG_QSORT=y
 CONFIG_LIBSCAN=y
 CONFIG_LIBUBIGEN=y
+CONFIG_IMAGE_SPARSE=y
 # CONFIG_RATP is not set
 # CONFIG_ALLOW_PRNG_FALLBACK is not set
 # CONFIG_CRC_CCITT is not set
diff --git a/configs/platform-v7a/barebox-at91.config.diff b/configs/platform-v7a/barebox-at91.config.diff
index 2b7b71b..e7550cc 100644
--- a/configs/platform-v7a/barebox-at91.config.diff
+++ b/configs/platform-v7a/barebox-at91.config.diff
@@ -1,4 +1,4 @@
-68457081af06bd8377bc38ef02c7d415
+cae3c1d7fff409368cf71da28bce089f
 # CONFIG_32BIT is undefined
 # CONFIG_64BIT is undefined
 CONFIG_ARCH_AT91=y
@@ -29,7 +29,6 @@ CONFIG_CMD_NAND=y
 CONFIG_CMD_UBI=y
 CONFIG_CMD_UBIFORMAT=y
 # CONFIG_CMD_USB is undefined
-# CONFIG_CMD_USBGADGET is undefined
 CONFIG_COMMON_CLK_AT91=y
 CONFIG_COMPILE_LOGLEVEL=6
 # CONFIG_CPU_SUPPORTS_32BIT_KERNEL is undefined
@@ -46,9 +45,6 @@ CONFIG_DRIVER_SERIAL_ATMEL=y
 # CONFIG_DRIVER_SPI_GPIO is not set
 # CONFIG_EEPROM_93XX46 is not set
 CONFIG_EEPROM_AT24=y
-# CONFIG_FASTBOOT_BASE is undefined
-# CONFIG_FASTBOOT_CMD_OEM is undefined
-# CONFIG_FASTBOOT_SPARSE is undefined
 CONFIG_FS_UBIFS=y
 # CONFIG_FS_UBIFS_COMPRESSION_LZO is not set
 # CONFIG_FS_UBIFS_COMPRESSION_ZLIB is not set
@@ -74,7 +70,6 @@ CONFIG_I2C_AT91=y
 # CONFIG_I2C_GPIO is not set
 # CONFIG_IMAGE_COMPRESSION_LZO is not set
 CONFIG_IMAGE_COMPRESSION_NONE=y
-# CONFIG_IMAGE_SPARSE is undefined
 CONFIG_IMD_TARGET=y
 # CONFIG_KEYBOARD_USB is undefined
 # CONFIG_LIBFDT is undefined
@@ -152,18 +147,14 @@ CONFIG_SRAM=y
 # CONFIG_SYSCON_REBOOT_MODE is not set
 # CONFIG_THUMB2_BAREBOX is undefined
 CONFIG_UBIFORMAT=y
-# CONFIG_USB is undefined
-# CONFIG_USBGADGET_START is undefined
 # CONFIG_USB_DWC2_GADGET is undefined
 # CONFIG_USB_DWC2_HOST is undefined
 # CONFIG_USB_DWC3 is undefined
 # CONFIG_USB_EHCI is undefined
-# CONFIG_USB_GADGET is not set
-# CONFIG_USB_GADGET_AUTOSTART is undefined
-# CONFIG_USB_GADGET_DFU is undefined
-# CONFIG_USB_GADGET_FASTBOOT is undefined
-# CONFIG_USB_GADGET_MASS_STORAGE is undefined
-# CONFIG_USB_GADGET_SERIAL is undefined
+CONFIG_USB_GADGET_DRIVER_AT91=y
+CONFIG_USB_GADGET_DUALSPEED=y
+# CONFIG_USB_GADGET_MASS_STORAGE is not set
+# CONFIG_USB_GADGET_SERIAL is not set
 # CONFIG_USB_HOST is not set
 # CONFIG_USB_HUB_USB251XB is undefined
 # CONFIG_USB_NET_AX88179_178A is undefined
diff --git a/configs/platform-v7a/barebox-mx6.config b/configs/platform-v7a/barebox-mx6.config
index f6a1003..c2e6cc1 100644
--- a/configs/platform-v7a/barebox-mx6.config
+++ b/configs/platform-v7a/barebox-mx6.config
@@ -543,7 +543,7 @@ CONFIG_NET_RESOLV=y
 CONFIG_NET_IFUP=y
 CONFIG_NET_DHCP=y
 # CONFIG_NET_SNTP is not set
-# CONFIG_NET_FASTBOOT is not set
+CONFIG_NET_FASTBOOT=y
 
 #
 # Drivers
diff --git a/configs/platform-v7a/barebox-mx6.config.diff b/configs/platform-v7a/barebox-mx6.config.diff
index 0ff150f..40a9a4f 100644
--- a/configs/platform-v7a/barebox-mx6.config.diff
+++ b/configs/platform-v7a/barebox-mx6.config.diff
@@ -1,4 +1,4 @@
-68457081af06bd8377bc38ef02c7d415
+cae3c1d7fff409368cf71da28bce089f
 # CONFIG_32BIT is undefined
 # CONFIG_64BIT is undefined
 # CONFIG_ARCH_BCM283X is not set
diff --git a/configs/platform-v7a/barebox-rpi2.config b/configs/platform-v7a/barebox-rpi2.config
index 96b416f..d562d30 100644
--- a/configs/platform-v7a/barebox-rpi2.config
+++ b/configs/platform-v7a/barebox-rpi2.config
@@ -102,7 +102,9 @@ CONFIG_UIMAGE=y
 CONFIG_LOGBUF=y
 CONFIG_STDDEV=y
 CONFIG_MENUTREE=y
+CONFIG_USBGADGET_START=y
 CONFIG_BOOT=y
+CONFIG_FASTBOOT_BASE=y
 
 #
 # General Settings
@@ -219,6 +221,13 @@ CONFIG_EXTERNAL_DTS_FRAGMENTS=""
 #
 # CONFIG_BOOTM_OPTEE is not set
 # end of OP-TEE loading
+
+#
+# Android Fastboot
+#
+CONFIG_FASTBOOT_SPARSE=y
+CONFIG_FASTBOOT_CMD_OEM=y
+# end of Android Fastboot
 # end of General Settings
 
 #
@@ -414,6 +423,7 @@ CONFIG_CMD_LED=y
 CONFIG_CMD_SPI=y
 CONFIG_CMD_LED_TRIGGER=y
 CONFIG_CMD_USB=y
+CONFIG_CMD_USBGADGET=y
 CONFIG_CMD_WD=y
 CONFIG_CMD_WD_DEFAULT_TIMOUT=0
 # end of Hardware manipulation
@@ -449,7 +459,7 @@ CONFIG_NET_RESOLV=y
 CONFIG_NET_IFUP=y
 CONFIG_NET_DHCP=y
 # CONFIG_NET_SNTP is not set
-# CONFIG_NET_FASTBOOT is not set
+CONFIG_NET_FASTBOOT=y
 
 #
 # Drivers
@@ -590,6 +600,7 @@ CONFIG_USB=y
 CONFIG_USB_HOST=y
 CONFIG_USB_DWC2=y
 CONFIG_USB_DWC2_HOST=y
+# CONFIG_USB_DWC2_GADGET is not set
 # CONFIG_USB_DWC3 is not set
 # CONFIG_USB_EHCI is not set
 # CONFIG_USB_XHCI is not set
@@ -601,7 +612,16 @@ CONFIG_USB_STORAGE=y
 # USB Miscellaneous drivers
 #
 # CONFIG_USB_HUB_USB251XB is not set
-# CONFIG_USB_GADGET is not set
+CONFIG_USB_GADGET=y
+CONFIG_USB_GADGET_AUTOSTART=y
+
+#
+# USB Gadget drivers
+#
+# CONFIG_USB_GADGET_DFU is not set
+# CONFIG_USB_GADGET_SERIAL is not set
+CONFIG_USB_GADGET_FASTBOOT=y
+# CONFIG_USB_GADGET_MASS_STORAGE is not set
 # CONFIG_USB_MUSB is not set
 # CONFIG_VIDEO is not set
 # CONFIG_SOUND is not set
@@ -884,6 +904,7 @@ CONFIG_PROCESS_ESCAPE_SEQUENCE=y
 CONFIG_LZO_DECOMPRESS=y
 CONFIG_FNMATCH=y
 CONFIG_QSORT=y
+CONFIG_IMAGE_SPARSE=y
 CONFIG_LIBFDT=y
 # CONFIG_RATP is not set
 # CONFIG_ALLOW_PRNG_FALLBACK is not set
diff --git a/configs/platform-v7a/barebox-rpi2.config.diff b/configs/platform-v7a/barebox-rpi2.config.diff
index 852c271..e3a2666 100644
--- a/configs/platform-v7a/barebox-rpi2.config.diff
+++ b/configs/platform-v7a/barebox-rpi2.config.diff
@@ -1,19 +1,14 @@
-68457081af06bd8377bc38ef02c7d415
+cae3c1d7fff409368cf71da28bce089f
 CONFIG_ARM_ASM_UNIFIED=y
 # CONFIG_CMD_NVMEM is not set
-# CONFIG_CMD_USBGADGET is undefined
 CONFIG_DRIVER_NET_BCMGENET=y
 CONFIG_DRIVER_SERIAL_NS16550=y
 # CONFIG_EEPROM_93XX46 is not set
-# CONFIG_FASTBOOT_BASE is undefined
-# CONFIG_FASTBOOT_CMD_OEM is undefined
-# CONFIG_FASTBOOT_SPARSE is undefined
 CONFIG_GENERIC_PHY=y
 CONFIG_GPIO_RASPBERRYPI_EXP=y
 # CONFIG_HWRNG is not set
 # CONFIG_I2C_ALGOBIT is undefined
 # CONFIG_I2C_GPIO is not set
-# CONFIG_IMAGE_SPARSE is undefined
 CONFIG_MACH_RPI2=y
 CONFIG_MACH_RPI4=y
 CONFIG_MACH_RPI_CM3=y
@@ -35,17 +30,11 @@ CONFIG_PINCTRL_BCM283X=y
 CONFIG_PROMPT="R-Pi> "
 CONFIG_SERIAL_AMBA_PL011=y
 CONFIG_THUMB2_BAREBOX=y
-# CONFIG_USBGADGET_START is undefined
 CONFIG_USB_DWC2=y
-# CONFIG_USB_DWC2_GADGET is undefined
 CONFIG_USB_DWC2_HOST=y
 # CONFIG_USB_EHCI is not set
-# CONFIG_USB_GADGET is not set
-# CONFIG_USB_GADGET_AUTOSTART is undefined
-# CONFIG_USB_GADGET_DFU is undefined
-# CONFIG_USB_GADGET_FASTBOOT is undefined
-# CONFIG_USB_GADGET_MASS_STORAGE is undefined
-# CONFIG_USB_GADGET_SERIAL is undefined
+# CONFIG_USB_GADGET_MASS_STORAGE is not set
+# CONFIG_USB_GADGET_SERIAL is not set
 CONFIG_USB_NOP_XCEIV=y
 CONFIG_USB_OTGDEV=y
 CONFIG_WATCHDOG_BCM2835=y
diff --git a/configs/platform-v7a/barebox-stm32mp.config b/configs/platform-v7a/barebox-stm32mp.config
index 8a6f6d9..85a40d3 100644
--- a/configs/platform-v7a/barebox-stm32mp.config
+++ b/configs/platform-v7a/barebox-stm32mp.config
@@ -218,8 +218,8 @@ CONFIG_EXTERNAL_DTS_FRAGMENTS=""
 #
 # Android Fastboot
 #
-# CONFIG_FASTBOOT_SPARSE is not set
-# CONFIG_FASTBOOT_CMD_OEM is not set
+CONFIG_FASTBOOT_SPARSE=y
+CONFIG_FASTBOOT_CMD_OEM=y
 # end of Android Fastboot
 # end of General Settings
 
@@ -451,7 +451,7 @@ CONFIG_NET_RESOLV=y
 CONFIG_NET_IFUP=y
 CONFIG_NET_DHCP=y
 # CONFIG_NET_SNTP is not set
-# CONFIG_NET_FASTBOOT is not set
+CONFIG_NET_FASTBOOT=y
 
 #
 # Drivers
@@ -868,6 +868,7 @@ CONFIG_PROCESS_ESCAPE_SEQUENCE=y
 CONFIG_LZO_DECOMPRESS=y
 CONFIG_FNMATCH=y
 CONFIG_QSORT=y
+CONFIG_IMAGE_SPARSE=y
 # CONFIG_RATP is not set
 # CONFIG_ALLOW_PRNG_FALLBACK is not set
 # CONFIG_CRC_CCITT is not set
diff --git a/configs/platform-v7a/barebox-stm32mp.config.diff b/configs/platform-v7a/barebox-stm32mp.config.diff
index 4295076..284be0e 100644
--- a/configs/platform-v7a/barebox-stm32mp.config.diff
+++ b/configs/platform-v7a/barebox-stm32mp.config.diff
@@ -1,4 +1,4 @@
-68457081af06bd8377bc38ef02c7d415
+cae3c1d7fff409368cf71da28bce089f
 # CONFIG_32BIT is undefined
 # CONFIG_64BIT is undefined
 # CONFIG_ARCH_BCM283X is not set
@@ -49,8 +49,6 @@ CONFIG_DRIVER_SERIAL_STM32=y
 # CONFIG_DRIVER_SPI_LITEX_SPIFLASH is undefined
 CONFIG_EEPROM_AT24=y
 # CONFIG_EEPROM_AT25 is undefined
-# CONFIG_FASTBOOT_CMD_OEM is not set
-# CONFIG_FASTBOOT_SPARSE is not set
 # CONFIG_FIRMWARE_ALTERA_SERIAL is undefined
 # CONFIG_FS_JFFS2 is undefined
 CONFIG_GENERIC_PHY=y
@@ -61,7 +59,6 @@ CONFIG_GENERIC_PHY=y
 # CONFIG_I2C_BCM283X is undefined
 # CONFIG_I2C_GPIO is not set
 CONFIG_I2C_STM32=y
-# CONFIG_IMAGE_SPARSE is undefined
 CONFIG_LED_PWM=y
 # CONFIG_LED_TRIGGERS is not set
 # CONFIG_LIBFDT is undefined
diff --git a/configs/platform-v7a/barebox-vexpress.config b/configs/platform-v7a/barebox-vexpress.config
index 80d446c..b85f665 100644
--- a/configs/platform-v7a/barebox-vexpress.config
+++ b/configs/platform-v7a/barebox-vexpress.config
@@ -436,7 +436,7 @@ CONFIG_NET_RESOLV=y
 CONFIG_NET_IFUP=y
 CONFIG_NET_DHCP=y
 # CONFIG_NET_SNTP is not set
-# CONFIG_NET_FASTBOOT is not set
+CONFIG_NET_FASTBOOT=y
 
 #
 # Drivers
diff --git a/configs/platform-v7a/barebox-vexpress.config.diff b/configs/platform-v7a/barebox-vexpress.config.diff
index abbea1a..d323768 100644
--- a/configs/platform-v7a/barebox-vexpress.config.diff
+++ b/configs/platform-v7a/barebox-vexpress.config.diff
@@ -1,4 +1,4 @@
-68457081af06bd8377bc38ef02c7d415
+cae3c1d7fff409368cf71da28bce089f
 # CONFIG_32BIT is undefined
 # CONFIG_64BIT is undefined
 CONFIG_AMBA_SP804=y
diff --git a/configs/platform-v7a/barebox.config b/configs/platform-v7a/barebox.config
index 2e1d844..e8989d4 100644
--- a/configs/platform-v7a/barebox.config
+++ b/configs/platform-v7a/barebox.config
@@ -458,7 +458,7 @@ CONFIG_NET_RESOLV=y
 CONFIG_NET_IFUP=y
 CONFIG_NET_DHCP=y
 # CONFIG_NET_SNTP is not set
-# CONFIG_NET_FASTBOOT is not set
+CONFIG_NET_FASTBOOT=y
 
 #
 # Drivers
diff --git a/configs/platform-v7a_noneon/barebox-at91.config b/configs/platform-v7a_noneon/barebox-at91.config
index 16f7bc4..9c18061 100644
--- a/configs/platform-v7a_noneon/barebox-at91.config
+++ b/configs/platform-v7a_noneon/barebox-at91.config
@@ -107,7 +107,9 @@ CONFIG_BINFMT=y
 CONFIG_UIMAGE=y
 CONFIG_LOGBUF=y
 CONFIG_STDDEV=y
+CONFIG_USBGADGET_START=y
 CONFIG_BOOT=y
+CONFIG_FASTBOOT_BASE=y
 
 #
 # General Settings
@@ -170,7 +172,7 @@ CONFIG_TIMESTAMP=y
 CONFIG_BOOTM=y
 CONFIG_BOOTM_SHOW_TYPE=y
 # CONFIG_BOOTM_VERBOSE is not set
-# CONFIG_BOOTM_INITRD is not set
+CONFIG_BOOTM_INITRD=y
 CONFIG_BOOTM_OFTREE=y
 CONFIG_BOOTM_OFTREE_UIMAGE=y
 # CONFIG_BOOTM_AIMAGE is not set
@@ -180,7 +182,7 @@ CONFIG_BLSPEC=y
 CONFIG_FLEXIBLE_BOOTARGS=y
 # CONFIG_MMCBLKDEV_ROOTARG is not set
 CONFIG_BAREBOX_UPDATE=y
-# CONFIG_SYSTEM_PARTITIONS is not set
+CONFIG_SYSTEM_PARTITIONS=y
 CONFIG_IMD=y
 CONFIG_CONSOLE_FULL=y
 # CONFIG_CONSOLE_SIMPLE is not set
@@ -205,7 +207,7 @@ CONFIG_DEFAULT_ENVIRONMENT_GENERIC_NEW=y
 CONFIG_DEFAULT_ENVIRONMENT_PATH="$(objtree)/.ptxdist-defaultenv"
 CONFIG_HAS_SCHED=y
 CONFIG_POLLER=y
-# CONFIG_BTHREAD is not set
+CONFIG_BTHREAD=y
 # CONFIG_STATE is not set
 # CONFIG_BOOTCHOOSER is not set
 CONFIG_RESET_SOURCE=y
@@ -217,6 +219,13 @@ CONFIG_EXTERNAL_DTS_FRAGMENTS=""
 # CONFIG_BOOTM_OPTEE is not set
 # CONFIG_PBL_OPTEE is not set
 # end of OP-TEE loading
+
+#
+# Android Fastboot
+#
+CONFIG_FASTBOOT_SPARSE=y
+CONFIG_FASTBOOT_CMD_OEM=y
+# end of Android Fastboot
 # end of General Settings
 
 #
@@ -271,6 +280,7 @@ CONFIG_CMD_VERSION=y
 # CONFIG_CMD_MMC is not set
 # CONFIG_CMD_MMC_EXTCSD is not set
 # CONFIG_CMD_POLLER is not set
+# CONFIG_CMD_BTHREAD is not set
 # CONFIG_CMD_SLICE is not set
 # end of Information
 
@@ -407,6 +417,7 @@ CONFIG_CMD_LED=y
 # CONFIG_CMD_POWEROFF is not set
 CONFIG_CMD_SPI=y
 CONFIG_CMD_LED_TRIGGER=y
+CONFIG_CMD_USBGADGET=y
 # end of Hardware manipulation
 
 #
@@ -438,7 +449,7 @@ CONFIG_NET_RESOLV=y
 CONFIG_NET_IFUP=y
 CONFIG_NET_DHCP=y
 # CONFIG_NET_SNTP is not set
-# CONFIG_NET_FASTBOOT is not set
+CONFIG_NET_FASTBOOT=y
 
 #
 # Drivers
@@ -564,8 +575,20 @@ CONFIG_DISK_WRITE=y
 # interface types
 #
 # CONFIG_DISK_INTF_PLATFORM_IDE is not set
+CONFIG_USB=y
 # CONFIG_USB_HOST is not set
-# CONFIG_USB_GADGET is not set
+CONFIG_USB_GADGET=y
+CONFIG_USB_GADGET_DUALSPEED=y
+CONFIG_USB_GADGET_DRIVER_AT91=y
+CONFIG_USB_GADGET_AUTOSTART=y
+
+#
+# USB Gadget drivers
+#
+# CONFIG_USB_GADGET_DFU is not set
+CONFIG_USB_GADGET_SERIAL=y
+CONFIG_USB_GADGET_FASTBOOT=y
+# CONFIG_USB_GADGET_MASS_STORAGE is not set
 # CONFIG_USB_MUSB is not set
 # CONFIG_VIDEO is not set
 # CONFIG_SOUND is not set
@@ -824,6 +847,7 @@ CONFIG_PROCESS_ESCAPE_SEQUENCE=y
 CONFIG_LZO_DECOMPRESS=y
 CONFIG_FNMATCH=y
 CONFIG_QSORT=y
+CONFIG_IMAGE_SPARSE=y
 # CONFIG_RATP is not set
 # CONFIG_ALLOW_PRNG_FALLBACK is not set
 # CONFIG_CRC_CCITT is not set
diff --git a/configs/platform-v7a_noneon/barebox-at91.config.diff b/configs/platform-v7a_noneon/barebox-at91.config.diff
index 81bd006..d4bd071 100644
--- a/configs/platform-v7a_noneon/barebox-at91.config.diff
+++ b/configs/platform-v7a_noneon/barebox-at91.config.diff
@@ -1,4 +1,4 @@
-ce8c602a388050a3575dc69e4399836d
+503a2995018ed6b994350193b131ee59
 CONFIG_ARCH_AT91=y
 # CONFIG_ARCH_BCM283X is not set
 CONFIG_ARCH_TEXT_BASE=0x23f00000
@@ -15,7 +15,6 @@ CONFIG_AT91_MULTI_BOARDS=y
 # CONFIG_BOARD_GENERIC_DT is undefined
 CONFIG_BOOTM_OFTREE_UIMAGE=y
 # CONFIG_BOOTM_VERBOSE is not set
-# CONFIG_BTHREAD is not set
 # CONFIG_BZLIB is not set
 CONFIG_CLOCKSOURCE_ATMEL_PIT=y
 # CONFIG_CLOCKSOURCE_BCM283X is undefined
@@ -23,7 +22,7 @@ CONFIG_CLOCKSOURCE_ATMEL_PIT=y
 CONFIG_CMD_AT91CLK=y
 CONFIG_CMD_AT91_BOOT_TEST=y
 # CONFIG_CMD_BOOTZ is not set
-# CONFIG_CMD_BTHREAD is undefined
+# CONFIG_CMD_BTHREAD is not set
 # CONFIG_CMD_CLK is not set
 # CONFIG_CMD_I2C is undefined
 # CONFIG_CMD_IMD is not set
@@ -43,7 +42,6 @@ CONFIG_CMD_AT91_BOOT_TEST=y
 # CONFIG_CMD_TFTP is not set
 # CONFIG_CMD_UNCOMPRESS is not set
 # CONFIG_CMD_USB is undefined
-# CONFIG_CMD_USBGADGET is undefined
 # CONFIG_CMD_WD is undefined
 # CONFIG_CMD_WD_DEFAULT_TIMOUT is undefined
 CONFIG_COMMON_CLK_AT91=y
@@ -158,19 +156,14 @@ CONFIG_SPI_MEM=y
 # CONFIG_STATE_DRV is undefined
 # CONFIG_SYSCON_REBOOT_MODE is not set
 # CONFIG_SYSTEMD_OF_WATCHDOG is undefined
+CONFIG_SYSTEM_PARTITIONS=y
 # CONFIG_THUMB2_BAREBOX is undefined
-# CONFIG_USB is undefined
-# CONFIG_USBGADGET_START is undefined
 # CONFIG_USB_DWC2_GADGET is undefined
 # CONFIG_USB_DWC2_HOST is undefined
 # CONFIG_USB_DWC3 is undefined
 # CONFIG_USB_EHCI is undefined
-# CONFIG_USB_GADGET is not set
-# CONFIG_USB_GADGET_AUTOSTART is undefined
-# CONFIG_USB_GADGET_DFU is undefined
-# CONFIG_USB_GADGET_FASTBOOT is undefined
-# CONFIG_USB_GADGET_MASS_STORAGE is undefined
-# CONFIG_USB_GADGET_SERIAL is undefined
+CONFIG_USB_GADGET_DRIVER_AT91=y
+CONFIG_USB_GADGET_DUALSPEED=y
 # CONFIG_USB_HOST is not set
 # CONFIG_USB_HUB_USB251XB is undefined
 # CONFIG_USB_NET_AX88179_178A is undefined
diff --git a/configs/platform-v7a_noneon/barebox-vexpress.config b/configs/platform-v7a_noneon/barebox-vexpress.config
index c6037b4..2caf92d 100644
--- a/configs/platform-v7a_noneon/barebox-vexpress.config
+++ b/configs/platform-v7a_noneon/barebox-vexpress.config
@@ -84,6 +84,7 @@ CONFIG_STDDEV=y
 CONFIG_MENUTREE=y
 CONFIG_USBGADGET_START=y
 CONFIG_BOOT=y
+CONFIG_FASTBOOT_BASE=y
 
 #
 # General Settings
@@ -203,6 +204,13 @@ CONFIG_EXTERNAL_DTS_FRAGMENTS=""
 # CONFIG_BOOTM_OPTEE is not set
 # CONFIG_PBL_OPTEE is not set
 # end of OP-TEE loading
+
+#
+# Android Fastboot
+#
+CONFIG_FASTBOOT_SPARSE=y
+CONFIG_FASTBOOT_CMD_OEM=y
+# end of Android Fastboot
 # end of General Settings
 
 #
@@ -428,7 +436,7 @@ CONFIG_NET_RESOLV=y
 CONFIG_NET_IFUP=y
 CONFIG_NET_DHCP=y
 # CONFIG_NET_SNTP is not set
-# CONFIG_NET_FASTBOOT is not set
+CONFIG_NET_FASTBOOT=y
 
 #
 # Drivers
@@ -588,7 +596,7 @@ CONFIG_USB_GADGET_AUTOSTART=y
 #
 # CONFIG_USB_GADGET_DFU is not set
 CONFIG_USB_GADGET_SERIAL=y
-# CONFIG_USB_GADGET_FASTBOOT is not set
+CONFIG_USB_GADGET_FASTBOOT=y
 # CONFIG_USB_GADGET_MASS_STORAGE is not set
 # CONFIG_USB_MUSB is not set
 # CONFIG_VIDEO is not set
@@ -826,6 +834,7 @@ CONFIG_PROCESS_ESCAPE_SEQUENCE=y
 CONFIG_LZO_DECOMPRESS=y
 CONFIG_FNMATCH=y
 CONFIG_QSORT=y
+CONFIG_IMAGE_SPARSE=y
 CONFIG_LIBFDT=y
 # CONFIG_RATP is not set
 # CONFIG_ALLOW_PRNG_FALLBACK is not set
diff --git a/configs/platform-v7a_noneon/barebox-vexpress.config.diff b/configs/platform-v7a_noneon/barebox-vexpress.config.diff
index b08aa3f..ea72472 100644
--- a/configs/platform-v7a_noneon/barebox-vexpress.config.diff
+++ b/configs/platform-v7a_noneon/barebox-vexpress.config.diff
@@ -1,11 +1,10 @@
-ce8c602a388050a3575dc69e4399836d
+503a2995018ed6b994350193b131ee59
 CONFIG_AMBA_SP804=y
 # CONFIG_ARCH_BCM283X is not set
 CONFIG_ARCH_VEXPRESS=y
 # CONFIG_ARM_SCMI_PROTOCOL is undefined
 # CONFIG_ARM_SECURE_MONITOR is undefined
 # CONFIG_ARM_SMCCC is undefined
-CONFIG_BOOTM_INITRD=y
 # CONFIG_CFI_BUFFER_WRITE is not set
 # CONFIG_CLOCKSOURCE_BCM283X is undefined
 # CONFIG_CMD_GPIO is undefined
diff --git a/configs/platform-v7a_noneon/barebox.config b/configs/platform-v7a_noneon/barebox.config
index 1384d1a..8b3a2f4 100644
--- a/configs/platform-v7a_noneon/barebox.config
+++ b/configs/platform-v7a_noneon/barebox.config
@@ -96,6 +96,7 @@ CONFIG_STDDEV=y
 CONFIG_MENUTREE=y
 CONFIG_USBGADGET_START=y
 CONFIG_BOOT=y
+CONFIG_FASTBOOT_BASE=y
 
 #
 # General Settings
@@ -160,7 +161,7 @@ CONFIG_TIMESTAMP=y
 CONFIG_BOOTM=y
 CONFIG_BOOTM_SHOW_TYPE=y
 CONFIG_BOOTM_VERBOSE=y
-# CONFIG_BOOTM_INITRD is not set
+CONFIG_BOOTM_INITRD=y
 CONFIG_BOOTM_OFTREE=y
 # CONFIG_BOOTM_OFTREE_UIMAGE is not set
 # CONFIG_BOOTM_AIMAGE is not set
@@ -215,6 +216,13 @@ CONFIG_EXTERNAL_DTS_FRAGMENTS=""
 # CONFIG_BOOTM_OPTEE is not set
 # CONFIG_PBL_OPTEE is not set
 # end of OP-TEE loading
+
+#
+# Android Fastboot
+#
+CONFIG_FASTBOOT_SPARSE=y
+CONFIG_FASTBOOT_CMD_OEM=y
+# end of Android Fastboot
 # end of General Settings
 
 #
@@ -442,7 +450,7 @@ CONFIG_NET_RESOLV=y
 CONFIG_NET_IFUP=y
 CONFIG_NET_DHCP=y
 # CONFIG_NET_SNTP is not set
-# CONFIG_NET_FASTBOOT is not set
+CONFIG_NET_FASTBOOT=y
 
 #
 # Drivers
@@ -600,7 +608,7 @@ CONFIG_USB_GADGET_AUTOSTART=y
 #
 # CONFIG_USB_GADGET_DFU is not set
 CONFIG_USB_GADGET_SERIAL=y
-# CONFIG_USB_GADGET_FASTBOOT is not set
+CONFIG_USB_GADGET_FASTBOOT=y
 # CONFIG_USB_GADGET_MASS_STORAGE is not set
 # CONFIG_USB_MUSB is not set
 # CONFIG_VIDEO is not set
@@ -873,6 +881,7 @@ CONFIG_PROCESS_ESCAPE_SEQUENCE=y
 CONFIG_LZO_DECOMPRESS=y
 CONFIG_FNMATCH=y
 CONFIG_QSORT=y
+CONFIG_IMAGE_SPARSE=y
 CONFIG_LIBFDT=y
 # CONFIG_RATP is not set
 # CONFIG_ALLOW_PRNG_FALLBACK is not set
diff --git a/configs/platform-v8a/barebox-imx8m.config b/configs/platform-v8a/barebox-imx8m.config
index d28f475..ae53d93 100644
--- a/configs/platform-v8a/barebox-imx8m.config
+++ b/configs/platform-v8a/barebox-imx8m.config
@@ -246,7 +246,7 @@ CONFIG_BLSPEC=y
 CONFIG_FLEXIBLE_BOOTARGS=y
 CONFIG_MMCBLKDEV_ROOTARG=y
 CONFIG_BAREBOX_UPDATE=y
-# CONFIG_SYSTEM_PARTITIONS is not set
+CONFIG_SYSTEM_PARTITIONS=y
 CONFIG_IMD=y
 CONFIG_CONSOLE_FULL=y
 # CONFIG_CONSOLE_SIMPLE is not set
@@ -275,7 +275,7 @@ CONFIG_DEFAULT_ENVIRONMENT_GENERIC_NEW_MENU=y
 CONFIG_DEFAULT_ENVIRONMENT_PATH="$(objtree)/.ptxdist-defaultenv"
 CONFIG_HAS_SCHED=y
 CONFIG_POLLER=y
-# CONFIG_BTHREAD is not set
+CONFIG_BTHREAD=y
 # CONFIG_STATE is not set
 # CONFIG_BOOTCHOOSER is not set
 CONFIG_RESET_SOURCE=y
@@ -293,7 +293,7 @@ CONFIG_EXTERNAL_DTS_FRAGMENTS=""
 # Android Fastboot
 #
 CONFIG_FASTBOOT_SPARSE=y
-# CONFIG_FASTBOOT_CMD_OEM is not set
+CONFIG_FASTBOOT_CMD_OEM=y
 # end of Android Fastboot
 # end of General Settings
 
@@ -351,6 +351,7 @@ CONFIG_CMD_VERSION=y
 # CONFIG_CMD_MMC is not set
 CONFIG_CMD_MMC_EXTCSD=y
 # CONFIG_CMD_POLLER is not set
+# CONFIG_CMD_BTHREAD is not set
 # CONFIG_CMD_SLICE is not set
 # end of Information
 
@@ -525,7 +526,7 @@ CONFIG_NET_RESOLV=y
 CONFIG_NET_IFUP=y
 CONFIG_NET_DHCP=y
 # CONFIG_NET_SNTP is not set
-# CONFIG_NET_FASTBOOT is not set
+CONFIG_NET_FASTBOOT=y
 
 #
 # Drivers
diff --git a/configs/platform-v8a/barebox-rockchip.config b/configs/platform-v8a/barebox-rockchip.config
index c063a97..60c8517 100644
--- a/configs/platform-v8a/barebox-rockchip.config
+++ b/configs/platform-v8a/barebox-rockchip.config
@@ -226,7 +226,7 @@ CONFIG_EXTERNAL_DTS_FRAGMENTS=""
 #
 # Android Fastboot
 #
-# CONFIG_FASTBOOT_SPARSE is not set
+CONFIG_FASTBOOT_SPARSE=y
 CONFIG_FASTBOOT_CMD_OEM=y
 # end of Android Fastboot
 # end of General Settings
@@ -458,7 +458,7 @@ CONFIG_NET_RESOLV=y
 CONFIG_NET_IFUP=y
 CONFIG_NET_DHCP=y
 # CONFIG_NET_SNTP is not set
-# CONFIG_NET_FASTBOOT is not set
+CONFIG_NET_FASTBOOT=y
 
 #
 # Drivers
@@ -869,6 +869,7 @@ CONFIG_PROCESS_ESCAPE_SEQUENCE=y
 # CONFIG_LZO_DECOMPRESS is not set
 CONFIG_FNMATCH=y
 CONFIG_QSORT=y
+CONFIG_IMAGE_SPARSE=y
 # CONFIG_RATP is not set
 # CONFIG_ALLOW_PRNG_FALLBACK is not set
 # CONFIG_CRC_CCITT is not set
diff --git a/doc/index.rst b/doc/index.rst
index 2ce9c75..f76f48c 100644
--- a/doc/index.rst
+++ b/doc/index.rst
@@ -9,6 +9,7 @@ Welcome to DistroKit
    intro
    hardware
    guru
+   testing
 
 * :ref:`search`
 * :ref:`genindex`
diff --git a/doc/testing.rst b/doc/testing.rst
new file mode 100644
index 0000000..afa1be8
--- /dev/null
+++ b/doc/testing.rst
@@ -0,0 +1,163 @@
+Fast development
+================
+
+Sometimes a quick test should be done: a new kernel feature or a tool
+should be tested on a real target.
+
+If the target suports USB OTG (or peripheral mode) or network, 'fastboot'
+can be an easy to use solution.
+
+'fastboot' support
+------------------
+
+For a fast development or testing cycle you can use 'fastboot' via
+USB or networt to transfer the required parts to the target system.
+
+Here we want to run a Linux kernel and a corresponding root filesystem,
+without writing target system local memories againg and again for each
+development or test cycle.
+
+In this text, we transfer the required files to the target system
+which only needs to run a 'fastboot' capable bootloader.
+
+Since we want to use an initramfs as the kernel's root filesystem, we
+have some requirements to the target system's free memory. The bootloader
+keeps up to 512 MiB of memory to add files to its own RAM disk. The
+512 MiB is valid for a physical memory size of 1 GiB and above. With less
+physical memory it is always 50 % of the available physical memory.
+Keep an eye on the size of the initramfs file if it fits onto the
+bootloader's RAM disk. Reduce its size on demand.
+
+Note: the 50 % rule is only valid for the time the bootloader runs. After
+      starting the Linux kernel, 100 % of the physical memory is available.
+
+Some settings are required to make it work smoothly.
+
+Linux kernel
+------------
+
+- CONFIG_BLK_DEV_INITRD=y
+
+And one of the supported decompressors:
+
+- CONFIG_RD_GZIP
+
+Note: the required decompressor depends on the used compression method for the
+      initramfs selected in the BSP. See below.
+
+Bootloader
+----------
+
+The 'bootm' command must support initrd/initramfs:
+
+- CONFIG_BOOTM_INITRD = y
+
+If your target system has an OTG connector, you should enable 'fastboot' on
+the gadget interface:
+
+- CONFIG_USB_GADGET = y
+- CONFIG_USB_GADGET_FASTBOOT = y
+- CONFIG_CMD_USBGADGET = y
+
+If you want to use 'fastboot' via network instead (or in addition) to the
+USB interface, you should enable this channel as well:
+
+- CONFIG_NET_FASTBOOT = y
+
+Since we want to transfer large initrd/initramfs files, 'fastboot' requires
+'sparse' feature support:
+
+- CONFIG_FASTBOOT_SPARSE = y
+
+And we want run the downloaded files, so we need:
+
+- CONFIG_FASTBOOT_CMD_OEM = y
+
+BSP
+---
+
+Create a initramf of the root filesystem:
+
+- PTXCONF_IMAGE_ROOT_CPIO = y
+
+You need to select a compression method for the initramfs file in relation to
+the selected decompression support in the Linux kernel. See notes above.
+
+- PTXCONF_IMAGE_ROOT_CPIO_COMPRESSION_MODE_GZ = y
+
+The generic behaviour changes when the Linux kernel starts an initrd/initramfs
+and it tries to start '/init' instead of an init processes in subdirectories.
+If you can change the kernel's command line, you can restore the generic behaviour
+by adding 'rdinit=/sbin/init'. If not, you can create a softlink at '/init' pointing
+to '/sbin/init via:
+
+- PTXCONF_ROOTFS_INIT_LINK
+
+Optimisation
+------------
+
+Some BPS settings do not make sense regarding used in an initramfs instead
+of a persistent target system local memory. For development or testing some
+settings should be changed, to reduce the file sizes and boot time.
+
+The Linux kernel will be transfered separately, so it makes less sense to
+have it in the root filesystem as well. This will reduce the size of the
+initramfs.
+
+- PTXCONF_KERNEL_INSTALL = n
+
+Some 'rc-once' jobs are useless in an initramfs and only increase the
+boot time again and again:
+
+- PTXCONF_GLIBC_LDCONFIG_RC_ONCE = n
+- PTXCONF_MACHINE_ID_RC_ONCE = n
+
+If possible, disable the whole rc-once step:
+
+- PTXCONF_RC_ONCE = n
+
+If you don't need ssh, you can disable its key generation as well:
+
+- PTXCONF_OPENSSH_SSHD_GENKEYS = n
+
+Preparations
+------------
+
+'fastboot' requires to divide large files into smaller chunks, if their
+size hits some threshold. In this case, there are some additional requirements
+to the size of the file itself: its size must be a multiple of 4 kiB.
+
+Note: if this additional requirement isn't met, the error message is
+      missleading and states about an 'invalid value' after the first
+      transfer.
+
+Most of the time the initramfs file hits the threshold. Thus, it must
+be 4 kiB aligned::
+
+   dd if=<platform-dir>/images/root.cpio.gz of=cpio.gz conv=sync bs=4096
+
+Target
+------
+
+Enable the 'fastboot' feature on the target system::
+
+   usbgadget -a -A /kernel(kernel)c,/devicetree(devicetree)c,/initrd(initrd)c
+
+Host
+----
+
+Download the three parts into the target system::
+
+   fastboot -i 7531 flash kernel <platform-dir>/images/linuximage
+   fastboot -i 7531 flash devicetree <platform-dir>/images/<devicetree>
+   fastboot -i 7531 flash initrd cpio.gz
+
+If you have no '/init' in your root filesystem, you need to define the
+init executable to be run by the Linux kernel::
+
+   fastboot -i 7531 oem exec 'global linux.bootargs.ramfs=rdinit=/sbin/init'
+
+In the final step, just start the already downloaded files::
+
+   fastboot -i 7531 oem exec -- bootm -o /devicetree -r /initrd /kernel
+
-- 
2.30.2




  parent reply	other threads:[~2023-05-02  8:06 UTC|newest]

Thread overview: 4+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2023-05-02  8:06 [DistroKit] [PATCH 1/3] mips: linux: adapt the build rules regarding the tool 'pahole' Juergen Borleis
2023-05-02  8:06 ` [DistroKit] [PATCH 2/3] mips: linux: fixup kernel configuration Juergen Borleis
2023-05-02  8:06 ` Juergen Borleis [this message]
2023-05-08  8:08 ` [DistroKit] [PATCH 1/3] mips: linux: adapt the build rules regarding the tool 'pahole' Robert Schwebel

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=20230502080646.94539-3-jbe@pengutronix.de \
    --to=jbe@pengutronix.de \
    --cc=distrokit@pengutronix.de \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox