[PATCH v2 2/9] doc: board/qualcomm: Update RDP build instructions

Simon Glass sjg at chromium.org
Wed Apr 22 03:15:16 CEST 2026


Hi,

On Tue, 21 Apr 2026 at 08:33, Sumit Garg <sumit.garg at kernel.org> wrote:
>
> Adding Michael
>
> On Fri, Apr 10, 2026 at 02:41:47PM +0530, Varadarajan Narayanan wrote:
> > Add details about the SPL & U-Boot proper build steps, converting to
> > flashable images, source URLs for the needed binaries and scripts.
> >
> > Signed-off-by: Varadarajan Narayanan <varadarajan.narayanan at oss.qualcomm.com>
> > ---
> >  doc/board/qualcomm/rdp.rst | 69 ++++++++++++++++++++++++++++++++++++++
> >  1 file changed, 69 insertions(+)
> >
> > diff --git a/doc/board/qualcomm/rdp.rst b/doc/board/qualcomm/rdp.rst
> > index 99cf8eba57c..d09dba52044 100644
> > --- a/doc/board/qualcomm/rdp.rst
> > +++ b/doc/board/qualcomm/rdp.rst
> > @@ -42,6 +42,67 @@ on your device with::
> >
> >  U-Boot should be running after a reboot (``reset``).
> >
> > +Build steps for IPQ5210 based Qualcomm Dragonwing F8 & N8 Platforms:
> > +====================================================================
>
> Rather than just the build steps, please describe the overall boot flow.
> And since you have created a common SPL file for all the Qcom platforms,
> can you ellaborate on how the boot flow is going to be reused across
> Qcom platforms. Maybe we just need a dedicated spl.rst document here.
>
> Also, how does this series align with one for SPL support on SDM845 here
> [1]? Are there things that both SPL ports can reuse from each other?
>
> [1] https://lore.kernel.org/all/20260411-qcom_spl-v2-0-9609557cf562@seznam.cz/
>
> -Sumit
>
> > +
> > +Please refer to the following URLs for more details about the platforms.
> > +
> > +     F8: https://www.qualcomm.com/networking-infrastructure/products/f-series/f8-platform
> > +
> > +     N8: https://www.qualcomm.com/networking-infrastructure/products/n-series/n8-platform
> > +
> > +1. Since U-Boot SPL is enabled on these platforms, the build command generates
> > +   both the U-Boot SPL and U-Boot proper images. Assuming ${uboot_dir} is the
> > +   top of the U-Boot sources and ${out_dir} as the output directory,
> > +
> > +     $ cd ${uboot_dir}
> > +     $ export CROSS_COMPILE=<aarch64 toolchain prefix>
> > +     $ make -j8 O=${out_dir} qcom_ipq5210_mmc_defconfig
> > +     $ make -j8 O=${out_dir}
> > +
> > +   U-Boot SPL image: ${out_dir}/spl/u-boot-spl.wrap-elf
> > +   U-Boot image:     ${out_dir}/u-boot.elf
> > +
> > +2. Convert the SPL image to multi ELF
> > +
> > +     $ cd ${out_dir}/spl
> > +     $ python elftombn.py -f u-boot-spl.wrap-elf -o u-boot-spl.mbn -v7
> > +     $ python create_multielf.py -f u-boot-spl.mbn,tmel-ipq52xx-patch.elf \
> > +                                     -o u-boot-spl.melf
> > +
> > +   This u-boot-spl.melf should be flashed into 0:SPL partition.
> > +   Please see below for the location of ``tmel-ipq52xx-patch.elf``
> > +
> > +3. Convert the U-Boot image to bootloader image
> > +
> > +     $ cd ${out_dir}
> > +     $ python elftombn.py -f u-boot.elf -o u-boot.mbn -v7
> > +
> > +   The u-boot.mbn has to be combined with qc_config.elf, QCLib.elf, TFA and
> > +   OPTEE. Please see below for the location for these ELFs. TFA and OPTEE can be
> > +   built from the sources using the following commands
> > +
> > +   TFA:
> > +     $ make PLAT=ipq52xx QTISECLIB_PATH=path/to/libqtisec_dbg.a SPD=opteed
> > +
> > +   OPTEE:
> > +     $ make PLATFORM=qcom-ipq52xx -j16
> > +
> > +   These binaries can be combined into a flashable image using ``gen_its.py``.
> > +
> > +     $ python gen_its.py --arch ipq5210              \
> > +             --qclib_path QCLib.elf                  \
> > +             --qcconfig_path qc_config.elf           \
> > +             --tfa_bl31_path bl31.mbn                \
> > +             --uboot_path u-boot.mbn                 \
> > +             --optee_path tee-raw.mbn                \
> > +             -p qcconfig qclib                       \
> > +             -P tfa_bl31 uboot optee                 \
> > +             -o output/hm_503_test_uboot.img         \
> > +             --template template.its
> > +
> > +   This should be flashed into 0:BOOTLDR partition.
> > +
> >  .. WARNING
> >       Boards with newer software versions would automatically go the emergency
> >       download (EDL) mode if U-Boot is not functioning as expected. If its a
> > @@ -56,3 +117,11 @@ U-Boot should be running after a reboot (``reset``).
> >
> >  .. _elftombn.py: https://git.codelinaro.org/clo/qsdk/oss/system/tools/meta/-/tree/NHSS.QSDK.13.0.5.r2/scripts?ref_type=heads
> >  .. _edl: https://github.com/bkerler/edl
> > +.. _create_multielf.py: https://raw.githubusercontent.com/coreboot/coreboot/refs/heads/main/util/qualcomm/create_multielf.py
> > +.. _tmel-ipq52xx-patch.elf: https://softwarecenter.qualcomm.com/nexus/generic/product/chip/software-product/IPQ5210.NLQ.14.0/ipq5210.nlq.14.0-qca-oem-qartifact/r00036.1/TMEL.WNS.2.4/tmel-ipq52xx-patch.elf
> > +.. _libqtisec_dbg.a: https://softwarecenter.qualcomm.com/nexus/generic/product/chip/software-product/IPQ5210.NLQ.14.0/ipq5210.nlq.14.0-qca-oem-qartifact/r00036.1/WIN.TFA.1.0.R4/apss_proc/out/proprietary/qtiseclib/output/ipq52xx/release/libqtisec_dbg.a
> > +.. _qc_config.elf: https://softwarecenter.qualcomm.com/nexus/generic/product/chip/software-product/IPQ5210.NLQ.14.0/ipq5210.nlq.14.0-qca-oem-qartifact/r00036.1/BOOT.MXF.2.3.1.1/boot_images/boot/QcomPkg/SocPkg/Hermosa/Bin/LC/RELEASE/qc_config.elf
> > +.. _QCLib.elf: https://softwarecenter.qualcomm.com/nexus/generic/product/chip/software-product/IPQ5210.NLQ.14.0/ipq5210.nlq.14.0-qca-oem-qartifact/r00036.1/BOOT.MXF.2.3.1.1/boot_images/boot/QcomPkg/SocPkg/Hermosa/Bin/LC/RELEASE/QCLib.elf
> > +.. _gen_its.py: https://git.codelinaro.org/clo/qsdk/oss/system/tools/meta/-/tree/win.platform_tools.1.0.r34/scripts?ref_type=heads
> > +.. _TFA: https://git.codelinaro.org/clo/trusted-firmware/tf-a/trusted-firmware-a/-/tree/win.tfa.1.0.r4?ref_type=heads
> > +.. _OPTEE: https://git.codelinaro.org/clo/trusted-firmware/optee_os/optee_os/-/tree/win.optee.1.0?ref_type=heads
> > --
> > 2.34.1
> >

I really think this should use binman to produce the image. If needed
I can help write a new entry type, etc. But these sorts of steps and
complexity can be made a lot easier with Binman.

Regards,
Simon


More information about the U-Boot mailing list