mirror of
https://github.com/u-boot/u-boot.git
synced 2025-04-19 19:34:35 +00:00
configs: meson64: add alternate USB DFU boot target
Add boot over DFU RAM as an alternate to running script at a fixed address like done today. The main culprit is that it's not possible to do that on G12A/Sm1 platforms due to changes in the USB boot protocol. With this, U-Boot will present a DFU device with a ram slot where the Host could write a fitImage or legacy U-Boot image, then with the detach command boot will continue trying to boot the uploaded image. Signed-off-by: Neil Armstrong <narmstrong@baylibre.com> Link: https://lore.kernel.org/r/20231023-usb-dfu-boot-v1-3-df9d121c67c1@linaro.org Signed-off-by: Neil Armstrong <neil.armstrong@linaro.org>
This commit is contained in:
parent
72f63d85fe
commit
4aa027b3f8
1 changed files with 26 additions and 0 deletions
|
@ -53,6 +53,30 @@
|
||||||
#define BOOTENV_DEV_NAME_ROMUSB(devtypeu, devtypel, instance) \
|
#define BOOTENV_DEV_NAME_ROMUSB(devtypeu, devtypel, instance) \
|
||||||
"romusb "
|
"romusb "
|
||||||
|
|
||||||
|
/*
|
||||||
|
* Fallback to "USB DFU" boot if script is not at scriptaddr
|
||||||
|
*
|
||||||
|
* DFU will expose the kernel_addr_r memory range as DFU entry,
|
||||||
|
* then with `dfu-util --detach`, booting the uploaded image
|
||||||
|
* will be attempted:
|
||||||
|
* $ dfu-util -a 0 -D fitImage
|
||||||
|
* $ dfu-util -a 0 -e
|
||||||
|
*/
|
||||||
|
#if CONFIG_IS_ENABLED(USB_GADGET) && CONFIG_IS_ENABLED(DFU_RAM)
|
||||||
|
#define BOOTENV_DEV_USB_DFU(devtypeu, devtypel, instance) \
|
||||||
|
"bootcmd_usbdfu=" \
|
||||||
|
"if test \"${boot_source}\" = \"usb\"; then " \
|
||||||
|
"dfu 0 ram 0 60;" \
|
||||||
|
"bootm ${kernel_addr_r};" \
|
||||||
|
"fi\0"
|
||||||
|
|
||||||
|
#define BOOTENV_DEV_NAME_USB_DFU(devtypeu, devtypel, instance) \
|
||||||
|
"usbdfu "
|
||||||
|
#else
|
||||||
|
#define BOOTENV_DEV_USB_DFU(devtypeu, devtypel, instance)
|
||||||
|
#define BOOTENV_DEV_NAME_USB_DFU(devtypeu, devtypel, instance)
|
||||||
|
#endif
|
||||||
|
|
||||||
#ifdef CONFIG_CMD_USB
|
#ifdef CONFIG_CMD_USB
|
||||||
#define BOOT_TARGET_DEVICES_USB(func) func(USB, usb, 0)
|
#define BOOT_TARGET_DEVICES_USB(func) func(USB, usb, 0)
|
||||||
#else
|
#else
|
||||||
|
@ -74,6 +98,7 @@
|
||||||
#ifndef BOOT_TARGET_DEVICES
|
#ifndef BOOT_TARGET_DEVICES
|
||||||
#define BOOT_TARGET_DEVICES(func) \
|
#define BOOT_TARGET_DEVICES(func) \
|
||||||
func(ROMUSB, romusb, na) \
|
func(ROMUSB, romusb, na) \
|
||||||
|
func(USB_DFU, usbdfu, na) \
|
||||||
func(MMC, mmc, 0) \
|
func(MMC, mmc, 0) \
|
||||||
func(MMC, mmc, 1) \
|
func(MMC, mmc, 1) \
|
||||||
func(MMC, mmc, 2) \
|
func(MMC, mmc, 2) \
|
||||||
|
@ -109,6 +134,7 @@
|
||||||
"fdtoverlay_addr_r=" FDTOVERLAY_ADDR_R "\0" \
|
"fdtoverlay_addr_r=" FDTOVERLAY_ADDR_R "\0" \
|
||||||
"ramdisk_addr_r=" RAMDISK_ADDR_R "\0" \
|
"ramdisk_addr_r=" RAMDISK_ADDR_R "\0" \
|
||||||
"fdtfile=amlogic/" CONFIG_DEFAULT_DEVICE_TREE ".dtb\0" \
|
"fdtfile=amlogic/" CONFIG_DEFAULT_DEVICE_TREE ".dtb\0" \
|
||||||
|
"dfu_alt_info=fitimage ram " KERNEL_ADDR_R " 0x4000000 \0" \
|
||||||
BOOTENV
|
BOOTENV
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
|
Loading…
Add table
Reference in a new issue