[PATCH v4 0/4] imx9{4,5,52}: Add Quickboot support

Kumar, Udit u-kumar1 at ti.com
Thu May 28 07:23:36 CEST 2026


Hi Simona

On 4/30/2026 2:03 PM, Simona Toaca (OSS) wrote:
> From: Simona Toaca <simona.toaca at nxp.com>
> 
> This patch series adds support for saving DDR training
> data to non-volatile memory on iMX94, iMX95 and iMX952 platforms.
> The purpose is running DDR Quickboot flow on next reboot.

First thanks for this series,
Since this is DDR IP feature, could you think to make this generic
instead of board/arch specific.
> The process is as follows:
> - OEI runs Training flow for the DDRPHY
> - OEI saves the data from training to volatile memory
> - U-Boot can then save it to non-volatile memory (e.g. SD)
> - OEI loads the data from NVM at cold reboot and runs Quickboot flow
> 
> By skipping training, a much lower boot time is achieved.
> 
> Changes for v4:
> - add IMX_QB macro to include qb.c based on the boot phase
> - change qb_ prefix to imx_qb_ for qb.c methods, to
> be more specific
> - add boot device macro to string conversion for the case
> where the device is not explicitly specified
> - pass quickboot args as strings and parse them in qb.c using
> blk_device_get_by_str/blk_device_part_str (if they are blk devices).
> This enables specifying mmc 0:2 for the boot1 partition of the eMMC
> device.
> - use blk device API instead of mmc-specific
> - use SPI DM methods for spi flash read/write
> - use malloc for storing container header instead of kmalloc
> - add eMMC hwpart usage to the documentation
> - sent the qb-unrelated patches separately
> 
> Changes for v3:
> - Rebased and added support for iMX952
> - Removed IMX_SNPS_DDR_PHY_QB_GEN macro, as it was not useful ->
> now CMD_QB is enabled by default on the supported boards
> - Removed unnecessary #ifdefs -> replaced with if (CONFIG..)
> - Replaced spi_flash_probe with udevice_first_device_err to
> avoid using SPI macros that needed ifdefs, since there is only
> one SPI flash device available.
> - Adnotated qb methods with qb_ to be easier to see in asm dump
> - Removed explicit pointer casts from (void *)
> - Replaced custom qb_crc32 with the U-Boot one
> - Made eveything snake_case
> - Enabled SFDP support for iMX943/95, as it is necessary for
> proper erase size parsing (and is already present in iMX952 config)
> - Improved documentation - explanation about the space in bootloader
> - Added commit fixing a style issue in Kconfig
> 
> Changes for v2:
> - Improved documentation to clarify the questions asked
> - Detailed log messages for all commits
> - Detailed Kconfig options for SPL_IMX_QB and CMD_IMX_QB
> - Fixed the mentioned coding style issues
> 
> Simona Toaca (4):
>   imx9: Add support for saving DDR training data to NVM
>   arm: mach-imx: Add command to expose QB functionality
>   board: nxp: imx9{4,5,52}_evk: Add qb save option in SPL
>   doc: board: nxp: Add Quickboot documentation
> 
>  arch/arm/include/asm/arch-imx9/ddr.h |  48 +++-
>  arch/arm/include/asm/mach-imx/qb.h   |  15 +
>  arch/arm/mach-imx/Kconfig            |  28 ++
>  arch/arm/mach-imx/Makefile           |   1 +
>  arch/arm/mach-imx/cmd_qb.c           | 102 +++++++
>  arch/arm/mach-imx/imx9/Makefile      |   6 +-
>  arch/arm/mach-imx/imx9/qb.c          | 403 +++++++++++++++++++++++++++
>  arch/arm/mach-imx/imx9/scmi/soc.c    |   7 +
>  board/nxp/imx94_evk/spl.c            |   6 +-
>  board/nxp/imx952_evk/spl.c           |   4 +
>  board/nxp/imx95_evk/spl.c            |   6 +-
>  doc/board/nxp/index.rst              |   1 +
>  doc/board/nxp/quickboot.rst          |  59 ++++
>  drivers/ddr/imx/imx9/Kconfig         |   7 +
>  14 files changed, 688 insertions(+), 5 deletions(-)
>  create mode 100644 arch/arm/include/asm/mach-imx/qb.h
>  create mode 100644 arch/arm/mach-imx/cmd_qb.c
>  create mode 100644 arch/arm/mach-imx/imx9/qb.c
>  create mode 100644 doc/board/nxp/quickboot.rst
> 



More information about the U-Boot mailing list