Hi, On 2025-02-11 06:33, FUKAUMI Naoki wrote: > Boot the RK3588 from the USB OTG port using rkflashtool[1] or > rkusbboot[2] and dfu-util. > > 1a. Download the TPL and SPL using rkflashtool > > $ rkflashtool l < mkimage-in-simple-bin.mkimage-rockchip-tpl > $ rkflashtool L < mkimage-in-simple-bin.mkimage-u-boot-spl > > 1b. Download the TPL and SPL using rkusbboot > > $ rkusbboot \ > mkimage-in-simple-bin.mkimage-rockchip-tpl \ > mkimage-in-simple-bin.mkimage-u-boot-spl > > 2. Download the U-Boot > > $ dfu-util -a 0 -D u-boot.itb > > [1] https://github.com/linux-rockchip/rkflashtool > [2] https://github.com/RadxaNaoki/rkusbboot > > Signed-off-by: FUKAUMI Naoki <na...@radxa.com> > --- > arch/arm/dts/rk3588s-u-boot.dtsi | 5 +++++ > arch/arm/mach-rockchip/rk3588/rk3588.c | 1 + > configs/generic-rk3588_defconfig | 9 +++++++++ > include/configs/rk3588_common.h | 7 +++++++ > 4 files changed, 22 insertions(+) > > diff --git a/arch/arm/dts/rk3588s-u-boot.dtsi > b/arch/arm/dts/rk3588s-u-boot.dtsi > index 8880d162b11..1e961768341 100644 > --- a/arch/arm/dts/rk3588s-u-boot.dtsi > +++ b/arch/arm/dts/rk3588s-u-boot.dtsi > @@ -161,6 +161,11 @@ > bootph-all; > }; > > +&usb_host0_xhci { > + bootph-pre-ram;
Please wrap bootph-pre-ram in IS_ENABLED(CONFIG_SPL_DFU) or similar, we do not need or want to include the usb node in SPL unless SPL_DFU have been enabled for the build. > + bootph-some-ram; I do not think USB is needed in U-Boot proper pre-reloc phase, please drop bootph-some-ram. > +}; > + > &xin24m { > bootph-all; > }; > diff --git a/arch/arm/mach-rockchip/rk3588/rk3588.c > b/arch/arm/mach-rockchip/rk3588/rk3588.c > index c1dce3ee370..662b092d811 100644 > --- a/arch/arm/mach-rockchip/rk3588/rk3588.c > +++ b/arch/arm/mach-rockchip/rk3588/rk3588.c > @@ -53,6 +53,7 @@ const char * const boot_devices[BROM_LAST_BOOTSOURCE + 1] = > { > [BROM_BOOTSOURCE_FSPI_M1] = "/spi@fe2b0000/flash@0", > [BROM_BOOTSOURCE_FSPI_M2] = "/spi@fe2b0000/flash@0", > [BROM_BOOTSOURCE_SD] = "/mmc@fe2c0000", > + [BROM_BOOTSOURCE_USB] = "/usb@fc000000", > }; > > static struct mm_region rk3588_mem_map[] = { > diff --git a/configs/generic-rk3588_defconfig > b/configs/generic-rk3588_defconfig > index 51e31dce3a9..0dd64783bc0 100644 > --- a/configs/generic-rk3588_defconfig > +++ b/configs/generic-rk3588_defconfig > @@ -21,7 +21,9 @@ CONFIG_DEFAULT_FDT_FILE="rockchip/rk3588-generic.dtb" > CONFIG_SPL_MAX_SIZE=0x40000 > CONFIG_SPL_PAD_TO=0x7f8000 > # CONFIG_SPL_RAW_IMAGE_SUPPORT is not set > +CONFIG_SPL_ENV_SUPPORT=y > CONFIG_SPL_ATF=y > +CONFIG_CMD_DFU=y > CONFIG_CMD_GPIO=y > CONFIG_CMD_GPT=y > CONFIG_CMD_MISC=y > @@ -41,6 +43,9 @@ CONFIG_SPL_REGMAP=y > CONFIG_SPL_SYSCON=y > # CONFIG_ADC is not set > CONFIG_SPL_CLK=y > +CONFIG_DFU_RAM=y > +CONFIG_SYS_DFU_DATA_BUF_SIZE=0x100000 > +CONFIG_SYS_DFU_MAX_FILE_SIZE=0x200000 > # CONFIG_USB_FUNCTION_FASTBOOT is not set > CONFIG_ROCKCHIP_GPIO=y > CONFIG_MISC=y > @@ -60,9 +65,13 @@ CONFIG_SYS_NS16550_MEM32=y > CONFIG_SYSRESET=y > CONFIG_SYSRESET_PSCI=y > CONFIG_USB=y > +CONFIG_SPL_DM_USB_GADGET=y > CONFIG_USB_DWC3=y > CONFIG_USB_DWC3_GENERIC=y > +CONFIG_SPL_USB_DWC3_GENERIC=y > CONFIG_USB_GADGET=y > +CONFIG_SPL_USB_GADGET=y > CONFIG_USB_GADGET_DOWNLOAD=y > CONFIG_USB_FUNCTION_ROCKUSB=y > +CONFIG_SPL_DFU=y > CONFIG_ERRNO_STR=y > diff --git a/include/configs/rk3588_common.h b/include/configs/rk3588_common.h > index e6654c275ac..0fad6b37589 100644 > --- a/include/configs/rk3588_common.h > +++ b/include/configs/rk3588_common.h > @@ -26,11 +26,18 @@ > "ramdisk_addr_r=0x12180000\0" \ > "kernel_comp_size=0x8000000\0" > > +#if defined(CONFIG_SPL_DFU) && defined(CONFIG_XPL_BUILD) > +#define CFG_EXTRA_ENV_SETTINGS \ > + "dfu_alt_info_ram=u-boot.itb ram " \ > + __stringify(CONFIG_SPL_LOAD_FIT_ADDRESS) " " \ > + __stringify(CONFIG_SYS_DFU_MAX_FILE_SIZE) "\0" Is this not needed using DFU in U-Boot proper? And if we use this in U-Boot proper the load addresses may need to change to match other load addresses used for booting? Regards, Jonas > +#else > #define CFG_EXTRA_ENV_SETTINGS \ > "fdtfile=" CONFIG_DEFAULT_FDT_FILE "\0" \ > "partitions=" PARTS_DEFAULT \ > ENV_MEM_LAYOUT_SETTINGS \ > ROCKCHIP_DEVICE_SETTINGS \ > "boot_targets=" BOOT_TARGETS "\0" > +#endif > > #endif /* __CONFIG_RK3588_COMMON_H */