]> git.ipfire.org Git - thirdparty/u-boot.git/commitdiff
imx93_frdm: Add support for flashing board with UUU
authorMathieu Dubois-Briand <mathieu.dubois-briand@bootlin.com>
Mon, 15 Sep 2025 12:57:02 +0000 (14:57 +0200)
committerFabio Estevam <festevam@gmail.com>
Sat, 20 Sep 2025 20:46:40 +0000 (17:46 -0300)
Allow to flash a board using NXP UUU utility:
- Enable fastboot support on USB.
- Add fastboot partition aliases with names used by UUU. Also add extra
  environment variables used by UUU.
- Set 'dofastboot' environment variable based on boot device
  configuration, allowing to automatically enter fastboot when booting
  from USB.

Signed-off-by: Mathieu Dubois-Briand <mathieu.dubois-briand@bootlin.com>
board/freescale/imx93_frdm/imx93_frdm.c
board/freescale/imx93_frdm/imx93_frdm.env
configs/imx93_frdm_defconfig
doc/board/nxp/imx93_frdm.rst

index c74fd85712f4f1fea47df34a6118ecf8f4068dd1..c436ac6aa4791000c5eaee13f6190ad7d83bdc55 100644 (file)
@@ -10,6 +10,7 @@
 #include <asm/arch/sys_proto.h>
 #include <asm/arch-imx9/imx93_pins.h>
 #include <asm/arch/clock.h>
+#include <asm/mach-imx/boot_mode.h>
 #include <dm/device.h>
 #include <dm/uclass.h>
 
@@ -55,5 +56,10 @@ int board_late_init(void)
                env_set("board_rev", "iMX93");
        }
 
+       if (get_boot_device() == USB_BOOT) {
+               printf("USB boot detected. Will enter fasboot mode\n");
+               env_set_ulong("dofastboot", 1);
+       }
+
        return 0;
 }
index 528a953c8df10d56fb324dc9941c156173af3d33..111f38ed72a6a2bfdeafdb0f24d05849ce06d5b3 100644 (file)
@@ -19,8 +19,16 @@ kernel_addr_r=CONFIG_SYS_LOAD_ADDR
 loadimage=load mmc ${mmcdev}:${mmcpart} ${loadaddr} ${image}
 loadfdt=load mmc ${mmcdev}:${mmcpart} ${fdt_addr_r} ${fdtfile}
 boot_os=booti ${loadaddr} - ${fdt_addr_r}
+fastboot_partition_alias_all=0:0
+fastboot_partition_alias_bootloader=0.1
+emmc_dev=0
+sd_dev=1
+dofastboot=0
 
 bsp_bootcmd=
+       if test ${dofastboot} = 1; then
+               fastboot 0;
+       fi;
        echo Running BSP bootcmd ...;
        mmc dev ${mmcdev};
        run mmcargs;
index 4f837ca9282865565ab3d1debe4013f79d79e54c..eddd36c618d653ae4077c67bd47db8b21bf181ed 100644 (file)
@@ -30,6 +30,7 @@ CONFIG_EFI_VAR_BUF_SIZE=139264
 CONFIG_EFI_RUNTIME_UPDATE_CAPSULE=y
 CONFIG_EFI_CAPSULE_ON_DISK=y
 CONFIG_EFI_CAPSULE_FIRMWARE_RAW=y
+# CONFIG_ANDROID_BOOT_IMAGE is not set
 CONFIG_BOOTCOMMAND="bootflow scan -lb; run bsp_bootcmd"
 CONFIG_DEFAULT_FDT_FILE="imx93-11x11-frdm.dtb"
 CONFIG_SYS_CBSIZE=2048
@@ -58,6 +59,7 @@ CONFIG_CMD_ERASEENV=y
 CONFIG_CMD_NVEDIT_EFI=y
 # CONFIG_CMD_CRC32 is not set
 CONFIG_CMD_MEMTEST=y
+# CONFIG_CMD_BIND is not set
 CONFIG_CMD_CLK=y
 CONFIG_CMD_DFU=y
 CONFIG_CMD_FUSE=y
@@ -91,6 +93,11 @@ CONFIG_ADC_IMX93=y
 CONFIG_SPL_CLK_IMX93=y
 CONFIG_CLK_IMX93=y
 CONFIG_DFU_MMC=y
+CONFIG_USB_FUNCTION_FASTBOOT=y
+CONFIG_FASTBOOT_BUF_ADDR=0x82800000
+CONFIG_FASTBOOT_FLASH=y
+CONFIG_FASTBOOT_UUU_SUPPORT=y
+CONFIG_FASTBOOT_FLASH_MMC_DEV=0
 CONFIG_IMX_RGPIO2P=y
 CONFIG_DM_PCA953X=y
 CONFIG_DM_I2C=y
@@ -116,6 +123,13 @@ CONFIG_SYSRESET=y
 CONFIG_SYSRESET_CMD_POWEROFF=y
 CONFIG_SYSRESET_PSCI=y
 CONFIG_DM_THERMAL=y
+CONFIG_USB=y
+CONFIG_USB_EHCI_HCD=y
+CONFIG_USB_GADGET=y
+CONFIG_USB_GADGET_MANUFACTURER="FSL"
+CONFIG_USB_GADGET_VENDOR_NUM=0x0525
+CONFIG_USB_GADGET_PRODUCT_NUM=0x0152
+CONFIG_CI_UDC=y
 CONFIG_ULP_WATCHDOG=y
 CONFIG_WDT=y
 CONFIG_SHA384=y
index a1f526fd4cca473e7c1b3d28cb82773110c0e9a4..3c3e5f49b04048350138fc529ae80727a76500d8 100644 (file)
@@ -13,6 +13,7 @@ Quick Start
 - Get ahab-container.img
 - Build U-Boot
 - Boot from the SD card
+- Boot using USB serial download (uuu)
 
 Get and Build the ARM Trusted firmware
 --------------------------------------
@@ -73,3 +74,24 @@ Boot from the SD card
   at /dev/ttyACM0.
 - Power on the board by connecting a USB Type-C cable into the P1
   Power USB Port.
+
+Boot using USB serial download (uuu)
+------------------------------------
+
+- Configure SW1 boot switches to serial download boot mode:
+  0001 SW1[3:0] - ("Serial downloader (USB)" Boot Mode)
+- Plug USB Type-C cable into the P2 device port.
+- Connect a USB Type-C cable into the P16 Debug USB Port and connect
+  using a terminal emulator at 115200 bps, 8n1. The console will show up
+  at /dev/ttyACM0.
+- Power on the board by connecting a USB Type-C cable into the P1
+  Power USB Port.
+- Use NXP Universal Update Utility `NXP Universal Update Utility`_ to boot or
+  flash the device. E.g. following command can be used to flash an image onto
+  the eMMC storage:
+
+.. code-block:: bash
+
+   $ uuu -V -b emmc_all <image file>
+
+.. _`NXP Universal Update Utility`: https://github.com/nxp-imx/mfgtools