From da91be14c1302d17b20d9a5d53bc99e9ad34c270 Mon Sep 17 00:00:00 2001 From: Heinrich Schuchardt Date: Sun, 28 Jun 2026 10:28:08 +0200 Subject: qfw: fix RSDP ext_checksum recomputation table_compute_checksum() returns the value that makes the byte sum of the buffer zero. If the ext_checksum field already contains a non-zero value (as QEMU's firmware-provided RSDP does), adding that existing value into the sum produces an incorrect complement. Zero the field before calling table_compute_checksum() so the calculation starts from a clean state, matching the pattern used in acpi_write_rsdp(). Reviewed-by: Simon Glass Reviewed-by: Ilias Apalodimas Signed-off-by: Heinrich Schuchardt --- drivers/misc/qfw_acpi.c | 1 + 1 file changed, 1 insertion(+) diff --git a/drivers/misc/qfw_acpi.c b/drivers/misc/qfw_acpi.c index 721f42ecbc3..afa3b820395 100644 --- a/drivers/misc/qfw_acpi.c +++ b/drivers/misc/qfw_acpi.c @@ -265,6 +265,7 @@ out: struct acpi_rsdp *rsdp = ctx->rsdp; rsdp->length = sizeof(*rsdp); + rsdp->ext_checksum = 0; rsdp->ext_checksum = table_compute_checksum((u8 *)rsdp, sizeof(*rsdp)); gd_set_acpi_start(acpi_get_rsdp_addr()); -- cgit v1.3.1 From b96d3bbb6d8b8047d660c96fd24af4ef59a55c36 Mon Sep 17 00:00:00 2001 From: Karl Chan Date: Fri, 12 Jun 2026 03:28:11 +0800 Subject: doc: boards: amlogic: update documentation for Beelink GT1 Ultimate fix formatting Signed-off-by: Karl Chan The patch replaces Unicode NO-BREAK-SPACE U+00A2 by SPACE U+0020. Reviewed-by: Heinrich Schuchardt --- doc/board/amlogic/beelink-gt1-ultimate.rst | 104 ++++++++++++++--------------- 1 file changed, 52 insertions(+), 52 deletions(-) diff --git a/doc/board/amlogic/beelink-gt1-ultimate.rst b/doc/board/amlogic/beelink-gt1-ultimate.rst index a78a1a2ff25..22afae0ed40 100644 --- a/doc/board/amlogic/beelink-gt1-ultimate.rst +++ b/doc/board/amlogic/beelink-gt1-ultimate.rst @@ -30,19 +30,19 @@ U-Boot Compilation .. code-block:: bash -    $ export CROSS_COMPILE=aarch64-none-elf- -    $ make beelink-gt1-ultimate_defconfig -    $ make + $ export CROSS_COMPILE=aarch64-none-elf- + $ make beelink-gt1-ultimate_defconfig + $ make U-Boot Signing with Pre-Built FIP repo -------------------------------------- .. code-block:: bash -    $ git clone https://github.com/LibreELEC/amlogic-boot-fip --depth=1 -    $ cd amlogic-boot-fip -    $ mkdir my-output-dir -    $ ./build-fip.sh beelink-gt1 /path/to/u-boot/u-boot.bin my-output-dir + $ git clone https://github.com/LibreELEC/amlogic-boot-fip --depth=1 + $ cd amlogic-boot-fip + $ mkdir my-output-dir + $ ./build-fip.sh beelink-gt1 /path/to/u-boot/u-boot.bin my-output-dir U-Boot Manual Signing --------------------- @@ -53,58 +53,58 @@ for signing. However you can download them from the amlogic-fip-repo. .. code-block:: bash -    $ git clone https://github.com/LibreELEC/amlogic-boot-fip --depth=1 -    $ cd amlogic-boot-fip/beelink-gt1 -    $ export FIPDIR=$PWD + $ git clone https://github.com/LibreELEC/amlogic-boot-fip --depth=1 + $ cd amlogic-boot-fip/beelink-gt1 + $ export FIPDIR=$PWD Go back to the mainline U-Boot source tree then: .. code-block:: bash -    $ mkdir fip -    $ cp $FIPDIR/bl2.bin fip/ -    $ cp $FIPDIR/acs.bin fip/ -    $ cp $FIPDIR/bl21.bin fip/ -    $ cp $FIPDIR/bl30.bin fip/ -    $ cp $FIPDIR/bl301.bin fip/ -    $ cp $FIPDIR/bl31.img fip/ -    $ cp u-boot.bin fip/bl33.bin - -    $ $FIPDIR/blx_fix.sh \ -              fip/bl30.bin \ -              fip/zero_tmp \ -              fip/bl30_zero.bin \ -              fip/bl301.bin \ -              fip/bl301_zero.bin \ -              fip/bl30_new.bin \ -              bl30 - -    $ python $FIPDIR/acs_tool.pyc fip/bl2.bin fip/bl2_acs.bin fip/acs.bin 0 - -    $ $FIPDIR/blx_fix.sh \ -              fip/bl2_acs.bin \ -              fip/zero_tmp \ -              fip/bl2_zero.bin \ -              fip/bl21.bin \ -              fip/bl21_zero.bin \ -              fip/bl2_new.bin \ -              bl2 - -    $ $FIPDIR/aml_encrypt_gxl --bl3enc --input fip/bl30_new.bin -    $ $FIPDIR/aml_encrypt_gxl --bl3enc --input fip/bl31.img -    $ $FIPDIR/aml_encrypt_gxl --bl3enc --input fip/bl33.bin -    $ $FIPDIR/aml_encrypt_gxl --bl2sig --input fip/bl2_new.bin --output fip/bl2.n.bin.sig -    $ $FIPDIR/aml_encrypt_gxl --bootmk \ -                              --output fip/u-boot.bin \ -                              --bl2 fip/bl2.n.bin.sig \ -                              --bl30 fip/bl30_new.bin.enc \ -                              --bl31 fip/bl31.img.enc \ -                              --bl33 fip/bl33.bin.enc + $ mkdir fip + $ cp $FIPDIR/bl2.bin fip/ + $ cp $FIPDIR/acs.bin fip/ + $ cp $FIPDIR/bl21.bin fip/ + $ cp $FIPDIR/bl30.bin fip/ + $ cp $FIPDIR/bl301.bin fip/ + $ cp $FIPDIR/bl31.img fip/ + $ cp u-boot.bin fip/bl33.bin + + $ $FIPDIR/blx_fix.sh \ +           fip/bl30.bin \ +           fip/zero_tmp \ +           fip/bl30_zero.bin \ +           fip/bl301.bin \ +           fip/bl301_zero.bin \ +           fip/bl30_new.bin \ +           bl30 + + $ python $FIPDIR/acs_tool.pyc fip/bl2.bin fip/bl2_acs.bin fip/acs.bin 0 + + $ $FIPDIR/blx_fix.sh \ +           fip/bl2_acs.bin \ +           fip/zero_tmp \ +           fip/bl2_zero.bin \ +           fip/bl21.bin \ +           fip/bl21_zero.bin \ +           fip/bl2_new.bin \ +           bl2 + + $ $FIPDIR/aml_encrypt_gxl --bl3enc --input fip/bl30_new.bin + $ $FIPDIR/aml_encrypt_gxl --bl3enc --input fip/bl31.img + $ $FIPDIR/aml_encrypt_gxl --bl3enc --input fip/bl33.bin + $ $FIPDIR/aml_encrypt_gxl --bl2sig --input fip/bl2_new.bin --output fip/bl2.n.bin.sig + $ $FIPDIR/aml_encrypt_gxl --bootmk \ +                           --output fip/u-boot.bin \ +                           --bl2 fip/bl2.n.bin.sig \ +                           --bl30 fip/bl30_new.bin.enc \ +                           --bl31 fip/bl31.img.enc \ +                           --bl33 fip/bl33.bin.enc Then write U-Boot to SD or eMMC with: .. code-block:: bash -    $ DEV=/dev/boot_device -    $ dd if=fip/u-boot.bin.sd.bin of=$DEV conv=fsync,notrunc bs=512 skip=1 seek=1 -    $ dd if=fip/u-boot.bin.sd.bin of=$DEV conv=fsync,notrunc bs=1 count=440 + $ DEV=/dev/boot_device + $ dd if=fip/u-boot.bin.sd.bin of=$DEV conv=fsync,notrunc bs=512 skip=1 seek=1 + $ dd if=fip/u-boot.bin.sd.bin of=$DEV conv=fsync,notrunc bs=1 count=440 -- cgit v1.3.1 From 4df21944bd0d29e3916c7270dfddb31ed6373847 Mon Sep 17 00:00:00 2001 From: Vincent Stehlé Date: Thu, 18 Jun 2026 18:09:30 +0200 Subject: efi_loader: fix missing EFI_EXIT in efi_disconnect_controller MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit We are missing a call to EFI_EXIT() when returning from efi_disconnect_controller(), which we need after having called EFI_ENTRY(). Fix this by jumping to the common error path, which does call EFI_EXIT(). Even though the common error path may try to free child_handle_buffer, this cannot harm in our case as it always NULL. This is inspired by a barebox fix. [1] Link: https://git.pengutronix.de/cgit/barebox/commit/?id=080db65e39a877b000baaf843c997a69821dfe69 [1] Fixes: 314bed6c854e ("efi_loader: fix DisconnectController() for sole child") Signed-off-by: Vincent Stehlé Cc: Heinrich Schuchardt Cc: Ilias Apalodimas Cc: Tom Rini Reviewed-by: Ilias Apalodimas Reviewed-by: Heinrich Schuchardt --- lib/efi_loader/efi_boottime.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/lib/efi_loader/efi_boottime.c b/lib/efi_loader/efi_boottime.c index de57823bd44..bcb01c92cf4 100644 --- a/lib/efi_loader/efi_boottime.c +++ b/lib/efi_loader/efi_boottime.c @@ -3895,7 +3895,7 @@ efi_status_t EFIAPI efi_disconnect_controller( &number_of_children, &child_handle_buffer); if (r != EFI_SUCCESS) - return r; + goto out; sole_child = (number_of_children == 1); if (child_handle) { -- cgit v1.3.1 From bbc19c6bcf0d15e9fa6068b721d833bc2a84a39f Mon Sep 17 00:00:00 2001 From: Marek Vasut Date: Tue, 23 Jun 2026 03:38:27 +0200 Subject: doc: board: renesas: Document SH/Aarch32/Aarch64 toolchain setup Add documents which briefly outline how to set up the SH4/Aarch32/Aarch64 toolchains, for future use in Renesas documentation. Reference all these documents in the renesas list of boards "Arch" column. Signed-off-by: Marek Vasut --- doc/board/renesas/build-env-aarch32.rst | 25 ++++++++++ doc/board/renesas/build-env-aarch64.rst | 25 ++++++++++ doc/board/renesas/build-env-sh.rst | 25 ++++++++++ doc/board/renesas/index.rst | 3 ++ doc/board/renesas/renesas.rst | 86 ++++++++++++++++----------------- 5 files changed, 121 insertions(+), 43 deletions(-) create mode 100644 doc/board/renesas/build-env-aarch32.rst create mode 100644 doc/board/renesas/build-env-aarch64.rst create mode 100644 doc/board/renesas/build-env-sh.rst diff --git a/doc/board/renesas/build-env-aarch32.rst b/doc/board/renesas/build-env-aarch32.rst new file mode 100644 index 00000000000..5120a042ccb --- /dev/null +++ b/doc/board/renesas/build-env-aarch32.rst @@ -0,0 +1,25 @@ +.. SPDX-License-Identifier: GPL-2.0+ + +Renesas 32-bit ARM SoC build environment setup +============================================== + +In order to cross-compile U-Boot for the ARM 32-bit target, it is necessary +to install a suitable toolchain. The toolchain is available in various +distribution repositories as ``arm-linux-gnueabi-*`` or similar package. + +Debian example: + +.. code-block:: console + + $ apt install binutils-arm-linux-gnueabi cpp-arm-linux-gnueabi gcc-arm-linux-gnueabi + +Alternatively, it is possible to download prebuilt toolchain from +kernel.org cross-development toolchains page +https://www.kernel.org/pub/tools/crosstool/ . + +Once the toolchain is installed, add toolchain into ``PATH`` variable: + +.. code-block:: console + + $ export PATH=$PATH: + $ export CROSS_COMPILE=arm-linux-gnueabi- diff --git a/doc/board/renesas/build-env-aarch64.rst b/doc/board/renesas/build-env-aarch64.rst new file mode 100644 index 00000000000..979b599e951 --- /dev/null +++ b/doc/board/renesas/build-env-aarch64.rst @@ -0,0 +1,25 @@ +.. SPDX-License-Identifier: GPL-2.0+ + +Renesas 64-bit ARM SoC build environment setup +============================================== + +In order to cross-compile U-Boot for the aarch64 target, it is necessary +to install a suitable toolchain. The toolchain is available in various +distribution repositories as ``aarch64-linux-gnu-*`` or similar package. + +Debian example: + +.. code-block:: console + + $ apt install binutils-aarch64-linux-gnu cpp-aarch64-linux-gnu gcc-aarch64-linux-gnu + +Alternatively, it is possible to download prebuilt toolchain from +kernel.org cross-development toolchains page +https://www.kernel.org/pub/tools/crosstool/ . + +Once the toolchain is installed, add toolchain into ``PATH`` variable: + +.. code-block:: console + + $ export PATH=$PATH: + $ export CROSS_COMPILE=aarch64-linux-gnu- diff --git a/doc/board/renesas/build-env-sh.rst b/doc/board/renesas/build-env-sh.rst new file mode 100644 index 00000000000..52f5cff8198 --- /dev/null +++ b/doc/board/renesas/build-env-sh.rst @@ -0,0 +1,25 @@ +.. SPDX-License-Identifier: GPL-2.0+ + +Renesas 32-bit SH4 SoC build environment setup +============================================== + +In order to cross-compile U-Boot for the SH4 32-bit target, it is necessary +to install a suitable toolchain. The toolchain is available in various +distribution repositories as ``sh4-linux-gnu-*`` or similar package. + +Debian example: + +.. code-block:: console + + $ apt install binutils-sh4-linux-gnu cpp-sh4-linux-gnu gcc-sh4-linux-gnu + +Alternatively, it is possible to download prebuilt toolchain from +kernel.org cross-development toolchains page +https://www.kernel.org/pub/tools/crosstool/ . + +Once the toolchain is installed, add toolchain into ``PATH`` variable: + +.. code-block:: console + + $ export PATH=$PATH: + $ export CROSS_COMPILE=sh4-linux-gnu- diff --git a/doc/board/renesas/index.rst b/doc/board/renesas/index.rst index fb6558ec11b..ef2b856a77c 100644 --- a/doc/board/renesas/index.rst +++ b/doc/board/renesas/index.rst @@ -7,4 +7,7 @@ Renesas :maxdepth: 2 renesas + build-env-sh + build-env-aarch32 + build-env-aarch64 rzn1 diff --git a/doc/board/renesas/renesas.rst b/doc/board/renesas/renesas.rst index fcfd51aa19c..132605b0c33 100644 --- a/doc/board/renesas/renesas.rst +++ b/doc/board/renesas/renesas.rst @@ -27,241 +27,241 @@ Renesas is a SoC solutions provider for automotive and industrial applications. * - R2D - R2D-PLUS - SH7751 - - sh + - :doc:`sh ` - r2dplus_defconfig * - RZ/A1 - GR-PEACH - R7S72100 (RZ/A1H) - - arm + - :doc:`arm ` - grpeach_defconfig * - R-Car Gen2 - Lager - R8A7790 (H2) - - arm + - :doc:`arm ` - lager_defconfig * - - Stout - R8A7790 (H2) - - arm + - :doc:`arm ` - stout_defconfig * - - Koelsch - R8A7791 (M2-W) - - arm + - :doc:`arm ` - koelsch_defconfig * - - Porter - R8A7791 (M2-W) - - arm + - :doc:`arm ` - porter_defconfig * - - Blanche - R8A7792 (V2H) - - arm + - :doc:`arm ` - blanche_defconfig * - - Gose - R8A7793 (M2-N) - - arm + - :doc:`arm ` - gose_defconfig * - - Alt - R8A7794 (E2) - - arm + - :doc:`arm ` - alt_defconfig * - - Silk - R8A7794 (E2) - - arm + - :doc:`arm ` - silk_defconfig * - R-Car Gen3 - - Salvator-X(S) + - :doc:`Salvator-X(S) ` - R8A77951 (H3) - - arm64 + - :doc:`arm64 ` - rcar3_salvator-x_defconfig * - - ULCB - R8A77951 (H3) - - arm64 + - :doc:`arm64 ` - rcar3_ulcb_defconfig * - - - Salvator-X(S) + - :doc:`Salvator-X(S) ` - R8A77960 (M3-W) - - arm64 + - :doc:`arm64 ` - rcar3_salvator-x_defconfig * - - ULCB - R8A77960 (M3-W) - - arm64 + - :doc:`arm64 ` - rcar3_ulcb_defconfig * - - - Salvator-X(S) + - :doc:`Salvator-X(S) ` - R8A77965 (M3-N) - - arm64 + - :doc:`arm64 ` - rcar3_salvator-x_defconfig * - - ULCB - R8A77965 (M3-N) - - arm64 + - :doc:`arm64 ` - rcar3_ulcb_defconfig * - - Geist - R8A779MD (M3Le) - - arm64 + - :doc:`arm64 ` - r8a779md_geist_defconfig * - - Eagle - R8A77970 (V3M) - - arm64 + - :doc:`arm64 ` - r8a77970_eagle_defconfig * - - V3MSK - R8A77970 (V3M) - - arm64 + - :doc:`arm64 ` - r8a77970_v3msk_defconfig * - - Condor - R8A77980 (V3H) - - arm64 + - :doc:`arm64 ` - r8a77980_condor_defconfig * - - V3HSK - R8A77980 (V3H) - - arm64 + - :doc:`arm64 ` - r8a77980_v3hsk_defconfig * - - Ebisu - R8A77990 (E3) - - arm64 + - :doc:`arm64 ` - r8a77990_ebisu_defconfig * - - Draak - R8A77995 (D3) - - arm64 + - :doc:`arm64 ` - r8a77995_draak_defconfig * - R-Car Gen4 - Falcon - R8A779A0 (V3U) - - arm64 + - :doc:`arm64 ` - r8a779a0_falcon_defconfig * - - Spider - R8A779F0 (S4) - - arm64 + - :doc:`arm64 ` - r8a779f0_spider_defconfig * - - S4SK - R8A779F4 (S4) - - arm64 + - :doc:`arm64 ` - r8a779f4_s4sk_defconfig * - - White Hawk - R8A779G0 (V4H) - - arm64 + - :doc:`arm64 ` - r8a779g0_whitehawk_defconfig * - - Sparrow Hawk - R8A779G3 (V4H) - - arm64 + - :doc:`arm64 ` - r8a779g3_sparrowhawk_defconfig * - - Gray Hawk - R8A779H0 (V4M) - - arm64 + - :doc:`arm64 ` - r8a779h0_grayhawk_defconfig * - R-Car Gen5 - Ironhide (Cortex-A720AE application core) - R8A78000 (X5H) - - arm64 + - :doc:`arm64 ` - r8a78000_ironhide_defconfig * - - Ironhide (Cortex-M33 RSIP boot core) - R8A78000 (X5H) - - arm64 + - :doc:`arm64 ` - r8a78000_ironhide_cm33_defconfig * - RZ/G2 Family - Beacon EmbeddedWorks RZ/G2M SoM - R8A774A1 (RZ/G2M) - - arm64 + - :doc:`arm64 ` - rzg2_beacon_defconfig * - - HopeRun HiHope RZ/G2M - R8A774A1 (RZ/G2M) - - arm64 + - :doc:`arm64 ` - hihope_rzg2_defconfig * - - Beacon EmbeddedWorks RZ/G2N SoM - R8A774B1 (RZ/G2N) - - arm64 + - :doc:`arm64 ` - rzg2_beacon_defconfig * - - HopeRun HiHope RZ/G2N - R8A774B1 (RZ/G2N) - - arm64 + - :doc:`arm64 ` - hihope_rzg2_defconfig * - - Silicon Linux RZ/G2E evaluation kit (EK874) - R8A774C0 (RZ/G2E) - - arm64 + - :doc:`arm64 ` - silinux_ek874_defconfig * - - Beacon EmbeddedWorks RZ/G2H SoM - R8A774E1 (RZ/G2H) - - arm64 + - :doc:`arm64 ` - rzg2_beacon_defconfig * - - HopeRun HiHope RZ/G2H - R8A774E1 (RZ/G2H) - - arm64 + - :doc:`arm64 ` - hihope_rzg2_defconfig * - :doc:`RZ/N1 Family ` - Schneider RZ/N1D board - R9A06G032 (RZ/N1D) - - arm + - :doc:`arm ` - rzn1_snarc_defconfig * - - Schneider RZ/N1S board - R9A06G033 (RZ/N1S) - - arm + - :doc:`arm ` - rzn1_snarc_defconfig Build -- cgit v1.3.1 From 3debe4140ee17270e48732429cf06311d7e09d39 Mon Sep 17 00:00:00 2001 From: Marek Vasut Date: Tue, 23 Jun 2026 03:38:28 +0200 Subject: doc: board: renesas: Document Aarch32 toolchain setup in RZ/N1 Reference Aarch64 toolchain setup in RZ/N1 documentation. Signed-off-by: Marek Vasut --- doc/board/renesas/rzn1.rst | 2 ++ 1 file changed, 2 insertions(+) diff --git a/doc/board/renesas/rzn1.rst b/doc/board/renesas/rzn1.rst index e6d636b89e8..5f054e8c674 100644 --- a/doc/board/renesas/rzn1.rst +++ b/doc/board/renesas/rzn1.rst @@ -10,6 +10,8 @@ This document describes how to build and flash U-Boot for the RZ/N1. U-Boot ^^^^^^ +Please follow :doc:`Renesas 32-bit ARM SoC build environment setup ` +to correctly set up the build environment before attempting to build U-Boot. Clone the U-Boot repository and build it as follows: -- cgit v1.3.1 From cda3dec066b27557a658bf14cf057661e56b826e Mon Sep 17 00:00:00 2001 From: Marek Vasut Date: Tue, 23 Jun 2026 03:38:29 +0200 Subject: doc: board: renesas: Document Renesas R-Car Gen3 H3/M3-W/M3-N Salvator-X(S) board Add document which clarifies how to build and install U-Boot on Renesas R-Car Gen3 H3/M3-W/M3-N Salvator-X(S) board. Include generic and HyperFlash Renesas R-Car Gen3 installation procedure document. Signed-off-by: Marek Vasut --- doc/board/renesas/index.rst | 3 ++ doc/board/renesas/rcar-gen3-install-hf.rst | 76 ++++++++++++++++++++++++++++++ doc/board/renesas/rcar-gen3-install.rst | 30 ++++++++++++ doc/board/renesas/rcar-gen3-salvator-x.rst | 48 +++++++++++++++++++ 4 files changed, 157 insertions(+) create mode 100644 doc/board/renesas/rcar-gen3-install-hf.rst create mode 100644 doc/board/renesas/rcar-gen3-install.rst create mode 100644 doc/board/renesas/rcar-gen3-salvator-x.rst diff --git a/doc/board/renesas/index.rst b/doc/board/renesas/index.rst index ef2b856a77c..eca06a13d0c 100644 --- a/doc/board/renesas/index.rst +++ b/doc/board/renesas/index.rst @@ -10,4 +10,7 @@ Renesas build-env-sh build-env-aarch32 build-env-aarch64 + rcar-gen3-salvator-x + rcar-gen3-install + rcar-gen3-install-hf rzn1 diff --git a/doc/board/renesas/rcar-gen3-install-hf.rst b/doc/board/renesas/rcar-gen3-install-hf.rst new file mode 100644 index 00000000000..d3a753eb2eb --- /dev/null +++ b/doc/board/renesas/rcar-gen3-install-hf.rst @@ -0,0 +1,76 @@ +.. SPDX-License-Identifier: GPL-2.0+ + +Renesas R-Car Gen3 U-Boot HyperFlash installation +================================================= + +U-Boot can be installed on R-Car Gen3 systems into HyperFlash from U-Boot. + +.. note:: + + This update mechanism is only available in case the TFA has been built + with `RCAR_RPC_HYPERFLASH_LOCKED=0`. + +Install U-Boot into HyperFlash using NOR write from U-Boot +^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + +In order to install U-Boot using write into HyperFlash, first build U-Boot +for this target and collect ``u-boot.bin`` build artifact. Then start the +target, drop into U-Boot shell, and load the build artifact into DRAM at +well known address: + +.. code-block:: console + + => tftp 0x50000000 u-boot.bin + +Finally, write U-Boot into HyperFlash: + +.. code-block:: console + + => erase 0x8640000 +${filesize} && cp.w 0x50000000 0x8640000 0x80000 + +.. note:: + + The `cp.w` size parameter is in 16-bit short word units, not in Bytes. + The `cp.w` size parameter size in Bytes would be 0x100000 . + +Install U-Boot into HyperFlash using dfu_tftp update from U-Boot +^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + +In order to install U-Boot using dfu_tftp update, first build U-Boot for +this target and collect ``u-boot.bin`` build artifact. Then bundle this +``u-boot.bin`` into an update fitImage using the following fitImage source +file. The update fitImage source file is named ``update.its`` in this example: + +.. code-block:: dts + + // update.its + /dts-v1/; + + / { + description = "Update fitImage for U-Boot"; + + images { + bootparam { + description = "U-Boot"; + data = /incbin/("u-boot.bin"); + type = "standalone"; + os = "U-Boot"; + arch = "arm64"; + compression = "none"; + load = <0x8640000>; + }; + }; + }; + +Generate the update fitImage using the following command: + +.. code-block:: console + + $ mkimage -f update.its update.itb + +Then start the target, drop into U-Boot shell, and load the ``update.itb`` +artifact into DRAM at well known address: + +.. code-block:: console + + => tftp 0x50000000 update.itb && dfu tftp 0x50000000 diff --git a/doc/board/renesas/rcar-gen3-install.rst b/doc/board/renesas/rcar-gen3-install.rst new file mode 100644 index 00000000000..b53978edbf9 --- /dev/null +++ b/doc/board/renesas/rcar-gen3-install.rst @@ -0,0 +1,30 @@ +.. SPDX-License-Identifier: GPL-2.0+ + +Renesas R-Car Gen3 U-Boot installation +====================================== + +U-Boot can be installed on R-Car Gen3 systems in multiple ways. + +The generic installation method, which also requires physical hardware +access, is to install U-Boot using the `flash_writer`_ tool. This +procedure is documented below. + +Installation into the HyperFlash can be performed from U-Boot, please +refer to :doc:`Renesas R-Car Gen3 U-Boot HyperFlash installation ` +for details. + +.. note:: + + The maximum u-boot.bin size for this target is 1 MiB or 0x100000 Bytes + +Install U-Boot using flash_writer tool +^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + +In order to install U-Boot using flash_writer tool, first build U-Boot +for this target and collect ``u-boot-elf.srec`` build artifact. Then +follow the `application note`_ shipped together with the flash_writer +tool to install the ``u-boot-elf.srec`` artifact using `XLS2 command`_. + +.. _`flash_writer`: https://github.com/renesas-rcar/flash_writer +.. _`application note`: https://github.com/renesas-rcar/flash_writer/blob/rcar_gen3/docs/application-note.md +.. _`XLS2 command`: https://github.com/renesas-rcar/flash_writer/blob/rcar_gen3/docs/application-note.md#341-write-to-the-s-record-format-images-to-the-serial-flash diff --git a/doc/board/renesas/rcar-gen3-salvator-x.rst b/doc/board/renesas/rcar-gen3-salvator-x.rst new file mode 100644 index 00000000000..37f009452e5 --- /dev/null +++ b/doc/board/renesas/rcar-gen3-salvator-x.rst @@ -0,0 +1,48 @@ +.. SPDX-License-Identifier: GPL-2.0+ + +Renesas R-Car Gen3 H3/M3-W/M3-N Salvator-X(S) board +=================================================== + +- Renesas R-Car Gen3 Salvator-X board: https://elinux.org/R-Car/Boards/Salvator-X +- Renesas R-Car Gen3 Salvator-XS board: https://elinux.org/R-Car/Boards/Salvator-XS + +Build U-Boot +------------ + +Please follow :doc:`Renesas 64-bit ARM SoC build environment setup ` +to correctly set up the build environment before attempting to build U-Boot. + +Clone up to date U-Boot source code and change directory into the +newly cloned source directory: + +.. code-block:: console + + $ git clone https://source.denx.de/u-boot/u-boot.git/ + $ cd u-boot + +Configure U-Boot: + +.. code-block:: console + + $ make rcar3_salvator-x_defconfig + +Compile U-Boot: + +.. code-block:: console + + $ make + +To speed up build process, -jN option can be passed to make to start +multiple jobs at the same time, this is beneficial especially on SMP +systems. The following example starts up to number of CPUs in the +system jobs, which is the recommended amount: + +.. code-block:: console + + $ make -j$(nproc) + +Install U-Boot +-------------- + +Please follow :doc:`Renesas R-Car Gen3 U-Boot installation ` +to install U-Boot into HyperFlash. -- cgit v1.3.1 From 1054a3172ee387175313671c2f65ba0cb9b0ef2d Mon Sep 17 00:00:00 2001 From: Marek Vasut Date: Tue, 23 Jun 2026 03:38:30 +0200 Subject: doc: board: renesas: Document Renesas R-Car Gen3 H3/M3-W/M3-N ULCB board Add document which clarifies how to build and install U-Boot on Renesas R-Car Gen3 H3/M3-W/M3-N ULCB board. Signed-off-by: Marek Vasut --- doc/board/renesas/index.rst | 1 + doc/board/renesas/rcar-gen3-ulcb.rst | 49 ++++++++++++++++++++++++++++++++++++ doc/board/renesas/renesas.rst | 6 ++--- 3 files changed, 53 insertions(+), 3 deletions(-) create mode 100644 doc/board/renesas/rcar-gen3-ulcb.rst diff --git a/doc/board/renesas/index.rst b/doc/board/renesas/index.rst index eca06a13d0c..b9bbe1f82f6 100644 --- a/doc/board/renesas/index.rst +++ b/doc/board/renesas/index.rst @@ -11,6 +11,7 @@ Renesas build-env-aarch32 build-env-aarch64 rcar-gen3-salvator-x + rcar-gen3-ulcb rcar-gen3-install rcar-gen3-install-hf rzn1 diff --git a/doc/board/renesas/rcar-gen3-ulcb.rst b/doc/board/renesas/rcar-gen3-ulcb.rst new file mode 100644 index 00000000000..88ec2276a36 --- /dev/null +++ b/doc/board/renesas/rcar-gen3-ulcb.rst @@ -0,0 +1,49 @@ +.. SPDX-License-Identifier: GPL-2.0+ + +Renesas R-Car Gen3 H3/M3-W/M3-N ULCB board +========================================== + +- Renesas R-Car H3 ULCB board: https://elinux.org/R-Car/Boards/H3SK +- Renesas R-Car M3-W ULCB board: https://elinux.org/R-Car/Boards/M3SK +- Renesas R-Car M3-N ULCB board: https://elinux.org/R-Car/Boards/M3NSK + +Build U-Boot +------------ + +Please follow :doc:`Renesas 64-bit ARM SoC build environment setup ` +to correctly set up the build environment before attempting to build U-Boot. + +Clone up to date U-Boot source code and change directory into the +newly cloned source directory: + +.. code-block:: console + + $ git clone https://source.denx.de/u-boot/u-boot.git/ + $ cd u-boot + +Configure U-Boot: + +.. code-block:: console + + $ make rcar3_ulcb_defconfig + +Compile U-Boot: + +.. code-block:: console + + $ make + +To speed up build process, -jN option can be passed to make to start +multiple jobs at the same time, this is beneficial especially on SMP +systems. The following example starts up to number of CPUs in the +system jobs, which is the recommended amount: + +.. code-block:: console + + $ make -j$(nproc) + +Install U-Boot +-------------- + +Please follow :doc:`Renesas R-Car Gen3 U-Boot installation ` +to install U-Boot into HyperFlash. diff --git a/doc/board/renesas/renesas.rst b/doc/board/renesas/renesas.rst index 132605b0c33..7fcd0e455b3 100644 --- a/doc/board/renesas/renesas.rst +++ b/doc/board/renesas/renesas.rst @@ -91,7 +91,7 @@ Renesas is a SoC solutions provider for automotive and industrial applications. - rcar3_salvator-x_defconfig * - - - ULCB + - :doc:`ULCB ` - R8A77951 (H3) - :doc:`arm64 ` - rcar3_ulcb_defconfig @@ -103,7 +103,7 @@ Renesas is a SoC solutions provider for automotive and industrial applications. - rcar3_salvator-x_defconfig * - - - ULCB + - :doc:`ULCB ` - R8A77960 (M3-W) - :doc:`arm64 ` - rcar3_ulcb_defconfig @@ -115,7 +115,7 @@ Renesas is a SoC solutions provider for automotive and industrial applications. - rcar3_salvator-x_defconfig * - - - ULCB + - :doc:`ULCB ` - R8A77965 (M3-N) - :doc:`arm64 ` - rcar3_ulcb_defconfig -- cgit v1.3.1 From fd3fafe0a7c1f2ba084c611e0c6ad871816eb3cd Mon Sep 17 00:00:00 2001 From: Marek Vasut Date: Tue, 23 Jun 2026 03:38:31 +0200 Subject: doc: board: renesas: Document Renesas R-Car Gen3 M3Le Geist board Add document which clarifies how to build and install U-Boot on Renesas R-Car Gen3 M3Le Geist board. Include Renesas R-Car Gen3 SPI NOR installation procedure document. Signed-off-by: Marek Vasut --- doc/board/renesas/index.rst | 2 ++ doc/board/renesas/rcar-gen3-geist.rst | 45 ++++++++++++++++++++++++++++++ doc/board/renesas/rcar-gen3-install-sf.rst | 29 +++++++++++++++++++ doc/board/renesas/rcar-gen3-install.rst | 4 +++ doc/board/renesas/renesas.rst | 2 +- 5 files changed, 81 insertions(+), 1 deletion(-) create mode 100644 doc/board/renesas/rcar-gen3-geist.rst create mode 100644 doc/board/renesas/rcar-gen3-install-sf.rst diff --git a/doc/board/renesas/index.rst b/doc/board/renesas/index.rst index b9bbe1f82f6..a75c9f08a4c 100644 --- a/doc/board/renesas/index.rst +++ b/doc/board/renesas/index.rst @@ -12,6 +12,8 @@ Renesas build-env-aarch64 rcar-gen3-salvator-x rcar-gen3-ulcb + rcar-gen3-geist rcar-gen3-install rcar-gen3-install-hf + rcar-gen3-install-sf rzn1 diff --git a/doc/board/renesas/rcar-gen3-geist.rst b/doc/board/renesas/rcar-gen3-geist.rst new file mode 100644 index 00000000000..7bedb3a79cb --- /dev/null +++ b/doc/board/renesas/rcar-gen3-geist.rst @@ -0,0 +1,45 @@ +.. SPDX-License-Identifier: GPL-2.0+ + +Renesas R-Car Gen3 M3Le Geist board +=================================== + +Build U-Boot +------------ + +Please follow :doc:`Renesas 64-bit ARM SoC build environment setup ` +to correctly set up the build environment before attempting to build U-Boot. + +Clone up to date U-Boot source code and change directory into the +newly cloned source directory: + +.. code-block:: console + + $ git clone https://source.denx.de/u-boot/u-boot.git/ + $ cd u-boot + +Configure U-Boot: + +.. code-block:: console + + $ make r8a779md_geist_defconfig + +Compile U-Boot: + +.. code-block:: console + + $ make + +To speed up build process, -jN option can be passed to make to start +multiple jobs at the same time, this is beneficial especially on SMP +systems. The following example starts up to number of CPUs in the +system jobs, which is the recommended amount: + +.. code-block:: console + + $ make -j$(nproc) + +Install U-Boot +-------------- + +Please follow :doc:`Renesas R-Car Gen3 U-Boot installation ` +to install U-Boot into SPI NOR. diff --git a/doc/board/renesas/rcar-gen3-install-sf.rst b/doc/board/renesas/rcar-gen3-install-sf.rst new file mode 100644 index 00000000000..4e8667e1b48 --- /dev/null +++ b/doc/board/renesas/rcar-gen3-install-sf.rst @@ -0,0 +1,29 @@ +.. SPDX-License-Identifier: GPL-2.0+ + +Renesas R-Car Gen3 U-Boot SPI NOR installation +============================================== + +U-Boot can be installed on R-Car Gen3 systems into SPI NOR from U-Boot. + +.. note:: + + This update mechanism is only available in case the TFA has been built + with `RCAR_RPC_HYPERFLASH_LOCKED=0 SPD=none`. + +Install U-Boot into SPI NOR using write from U-Boot +^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + +In order to install U-Boot using write into SPI NOR, first build U-Boot +for this target and collect ``u-boot.bin`` build artifact. Then start the +target, drop into U-Boot shell, and load the build artifact into DRAM at +well known address: + +.. code-block:: console + + => tftp 0x50000000 u-boot.bin + +Finally, write U-Boot into SPI NOR: + +.. code-block:: console + + => sf probe && sf update 0x50000000 0x640000 $filesize diff --git a/doc/board/renesas/rcar-gen3-install.rst b/doc/board/renesas/rcar-gen3-install.rst index b53978edbf9..33189d9227b 100644 --- a/doc/board/renesas/rcar-gen3-install.rst +++ b/doc/board/renesas/rcar-gen3-install.rst @@ -13,6 +13,10 @@ Installation into the HyperFlash can be performed from U-Boot, please refer to :doc:`Renesas R-Car Gen3 U-Boot HyperFlash installation ` for details. +Installation into the SPI NOR can be performed from U-Boot, please +refer to :doc:`Renesas R-Car Gen3 U-Boot SPI NOR installation ` +for details. + .. note:: The maximum u-boot.bin size for this target is 1 MiB or 0x100000 Bytes diff --git a/doc/board/renesas/renesas.rst b/doc/board/renesas/renesas.rst index 7fcd0e455b3..e0c09798dbd 100644 --- a/doc/board/renesas/renesas.rst +++ b/doc/board/renesas/renesas.rst @@ -121,7 +121,7 @@ Renesas is a SoC solutions provider for automotive and industrial applications. - rcar3_ulcb_defconfig * - - - Geist + - :doc:`Geist ` - R8A779MD (M3Le) - :doc:`arm64 ` - r8a779md_geist_defconfig -- cgit v1.3.1 From 8f790fcfa84183e086c9d80b234714d8dbca6842 Mon Sep 17 00:00:00 2001 From: Marek Vasut Date: Tue, 23 Jun 2026 03:38:32 +0200 Subject: doc: board: renesas: Document Renesas R-Car Gen3 E3 Ebisu board Add document which clarifies how to build and install U-Boot on Renesas R-Car Gen3 E3 Ebisu board. Signed-off-by: Marek Vasut --- doc/board/renesas/index.rst | 1 + doc/board/renesas/rcar-gen3-ebisu.rst | 47 +++++++++++++++++++++++++++++++++++ doc/board/renesas/renesas.rst | 2 +- 3 files changed, 49 insertions(+), 1 deletion(-) create mode 100644 doc/board/renesas/rcar-gen3-ebisu.rst diff --git a/doc/board/renesas/index.rst b/doc/board/renesas/index.rst index a75c9f08a4c..21216912463 100644 --- a/doc/board/renesas/index.rst +++ b/doc/board/renesas/index.rst @@ -13,6 +13,7 @@ Renesas rcar-gen3-salvator-x rcar-gen3-ulcb rcar-gen3-geist + rcar-gen3-ebisu rcar-gen3-install rcar-gen3-install-hf rcar-gen3-install-sf diff --git a/doc/board/renesas/rcar-gen3-ebisu.rst b/doc/board/renesas/rcar-gen3-ebisu.rst new file mode 100644 index 00000000000..f9632705abc --- /dev/null +++ b/doc/board/renesas/rcar-gen3-ebisu.rst @@ -0,0 +1,47 @@ +.. SPDX-License-Identifier: GPL-2.0+ + +Renesas R-Car Gen3 E3 Ebisu board +================================= + +- Renesas R-Car E3 Ebisu board: https://elinux.org/R-Car/Boards/Ebisu + +Build U-Boot +------------ + +Please follow :doc:`Renesas 64-bit ARM SoC build environment setup ` +to correctly set up the build environment before attempting to build U-Boot. + +Clone up to date U-Boot source code and change directory into the +newly cloned source directory: + +.. code-block:: console + + $ git clone https://source.denx.de/u-boot/u-boot.git/ + $ cd u-boot + +Configure U-Boot: + +.. code-block:: console + + $ make r8a77990_ebisu_defconfig + +Compile U-Boot: + +.. code-block:: console + + $ make + +To speed up build process, -jN option can be passed to make to start +multiple jobs at the same time, this is beneficial especially on SMP +systems. The following example starts up to number of CPUs in the +system jobs, which is the recommended amount: + +.. code-block:: console + + $ make -j$(nproc) + +Install U-Boot +-------------- + +Please follow :doc:`Renesas R-Car Gen3 U-Boot installation ` +to install U-Boot into HyperFlash. diff --git a/doc/board/renesas/renesas.rst b/doc/board/renesas/renesas.rst index e0c09798dbd..8aa868760d8 100644 --- a/doc/board/renesas/renesas.rst +++ b/doc/board/renesas/renesas.rst @@ -151,7 +151,7 @@ Renesas is a SoC solutions provider for automotive and industrial applications. - r8a77980_v3hsk_defconfig * - - - Ebisu + - :doc:`Ebisu ` - R8A77990 (E3) - :doc:`arm64 ` - r8a77990_ebisu_defconfig -- cgit v1.3.1 From f6585506eb82f8c005e0fba11c97b5038b040ec6 Mon Sep 17 00:00:00 2001 From: Marek Vasut Date: Tue, 23 Jun 2026 03:38:33 +0200 Subject: doc: board: renesas: Document Renesas R-Car Gen3 D3 Draak board Add document which clarifies how to build and install U-Boot on Renesas R-Car Gen3 D3 Draak board. Signed-off-by: Marek Vasut --- doc/board/renesas/index.rst | 1 + doc/board/renesas/rcar-gen3-draak.rst | 47 +++++++++++++++++++++++++++++++++++ doc/board/renesas/renesas.rst | 2 +- 3 files changed, 49 insertions(+), 1 deletion(-) create mode 100644 doc/board/renesas/rcar-gen3-draak.rst diff --git a/doc/board/renesas/index.rst b/doc/board/renesas/index.rst index 21216912463..f04fd74cb17 100644 --- a/doc/board/renesas/index.rst +++ b/doc/board/renesas/index.rst @@ -14,6 +14,7 @@ Renesas rcar-gen3-ulcb rcar-gen3-geist rcar-gen3-ebisu + rcar-gen3-draak rcar-gen3-install rcar-gen3-install-hf rcar-gen3-install-sf diff --git a/doc/board/renesas/rcar-gen3-draak.rst b/doc/board/renesas/rcar-gen3-draak.rst new file mode 100644 index 00000000000..7b94eaa4b23 --- /dev/null +++ b/doc/board/renesas/rcar-gen3-draak.rst @@ -0,0 +1,47 @@ +.. SPDX-License-Identifier: GPL-2.0+ + +Renesas R-Car Gen3 D3 Draak board +================================= + +- Renesas R-Car D3 Draak board: https://elinux.org/R-Car/Boards/Draak + +Build U-Boot +------------ + +Please follow :doc:`Renesas 64-bit ARM SoC build environment setup ` +to correctly set up the build environment before attempting to build U-Boot. + +Clone up to date U-Boot source code and change directory into the +newly cloned source directory: + +.. code-block:: console + + $ git clone https://source.denx.de/u-boot/u-boot.git/ + $ cd u-boot + +Configure U-Boot: + +.. code-block:: console + + $ make r8a77995_draak_defconfig + +Compile U-Boot: + +.. code-block:: console + + $ make + +To speed up build process, -jN option can be passed to make to start +multiple jobs at the same time, this is beneficial especially on SMP +systems. The following example starts up to number of CPUs in the +system jobs, which is the recommended amount: + +.. code-block:: console + + $ make -j$(nproc) + +Install U-Boot +-------------- + +Please follow :doc:`Renesas R-Car Gen3 U-Boot installation ` +to install U-Boot into HyperFlash. diff --git a/doc/board/renesas/renesas.rst b/doc/board/renesas/renesas.rst index 8aa868760d8..6aaf1b13f29 100644 --- a/doc/board/renesas/renesas.rst +++ b/doc/board/renesas/renesas.rst @@ -157,7 +157,7 @@ Renesas is a SoC solutions provider for automotive and industrial applications. - r8a77990_ebisu_defconfig * - - - Draak + - :doc:`Draak ` - R8A77995 (D3) - :doc:`arm64 ` - r8a77995_draak_defconfig -- cgit v1.3.1 From 314847d16f75012925a0088db3d83d0b3df89c88 Mon Sep 17 00:00:00 2001 From: Marek Vasut Date: Tue, 23 Jun 2026 03:38:34 +0200 Subject: doc: board: renesas: Document Retronix R-Car Gen4 V4H Sparrow Hawk board Add document which clarifies how to build and install U-Boot on Retronix R-Car Gen4 V4H Sparrow Hawk board. Signed-off-by: Marek Vasut --- doc/board/renesas/index.rst | 1 + doc/board/renesas/rcar-gen4-sparrow-hawk.rst | 91 ++++++++++++++++++++++++++++ doc/board/renesas/renesas.rst | 2 +- 3 files changed, 93 insertions(+), 1 deletion(-) create mode 100644 doc/board/renesas/rcar-gen4-sparrow-hawk.rst diff --git a/doc/board/renesas/index.rst b/doc/board/renesas/index.rst index f04fd74cb17..68b11ebb455 100644 --- a/doc/board/renesas/index.rst +++ b/doc/board/renesas/index.rst @@ -18,4 +18,5 @@ Renesas rcar-gen3-install rcar-gen3-install-hf rcar-gen3-install-sf + rcar-gen4-sparrow-hawk rzn1 diff --git a/doc/board/renesas/rcar-gen4-sparrow-hawk.rst b/doc/board/renesas/rcar-gen4-sparrow-hawk.rst new file mode 100644 index 00000000000..a1b92ecab57 --- /dev/null +++ b/doc/board/renesas/rcar-gen4-sparrow-hawk.rst @@ -0,0 +1,91 @@ +.. SPDX-License-Identifier: GPL-2.0+ + +Retronix R-Car Gen4 V4H Sparrow Hawk board +========================================== + +- Retronix R-Car V4H Sparrow Hawk board: https://www.retronix.com.tw/en/product_sbc.html +- Retronix R-Car V4H Sparrow Hawk documenation: https://rcar-community.github.io/Sparrow-Hawk/index.html + +Build U-Boot +------------ + +Please follow :doc:`Renesas 64-bit ARM SoC build environment setup ` +to correctly set up the build environment before attempting to build U-Boot. + +Clone up to date U-Boot source code and change directory into the +newly cloned source directory: + +.. code-block:: console + + $ git clone https://source.denx.de/u-boot/u-boot.git/ + $ cd u-boot + +Configure U-Boot: + +.. code-block:: console + + $ make r8a779g3_sparrowhawk_defconfig + +Compile U-Boot: + +.. code-block:: console + + $ make + +To speed up build process, -jN option can be passed to make to start +multiple jobs at the same time, this is beneficial especially on SMP +systems. The following example starts up to number of CPUs in the +system jobs, which is the recommended amount: + +.. code-block:: console + + $ make -j$(nproc) + +Install U-Boot +-------------- + +In order to install U-Boot using write into SPI NOR, first build U-Boot +for this target and collect ``flash.bin`` build artifact. Then start the +target, drop into U-Boot shell, and load the build artifact into DRAM at +well known address: + +.. code-block:: console + + => tftp 0x50000000 flash.bin + +Finally, write U-Boot into SPI NOR: + +.. code-block:: console + + => sf probe && sf update 0x50000000 0 ${filesize} + +Bundle TFA BL31 into Linux kernel fitImage +------------------------------------------ + +The Retronix R-Car V4H Sparrow Hawk board starts both TFA BL31 and Linux +kernel from U-Boot. Both TFA BL31, Linux kernel and DT blob have to be +bundled into the fitImage. + +Perform the following steps to build TFA at least v2.14.y: + +.. code-block:: console + + $ git clone https://github.com/ARM-software/arm-trusted-firmware.git + $ cd arm-trusted-firmware + $ make -j$(nproc) bl31 \ + PLAT=rcar_gen4 ARCH=aarch64 LSI=V4H SPD=none \ + CTX_INCLUDE_AARCH32_REGS=0 MBEDTLS_COMMON_MK=1 \ + PTP_NONSECURE_ACCESS=1 LOG_LEVEL=20 DEBUG=0 \ + ENABLE_ASSERTIONS=0 + +The bundling is done using U-Boot ``mkimage`` tool: + +.. code-block:: console + + mkimage \ + -f auto -E -A arm64 -C none -e 0x50200000 -a 0x50200000 \ + -d /path/to/linux/arch/arm64/boot/Image \ + -b /path/to/linux/arch/arm64/boot/dts/renesas/r8a779g3-sparrow-hawk.dtb \ + -y /path/to/arm-trusted-firmware/build/rcar_gen4/*/bl31.bin \ + -Y 0x46400000 \ + /path/to/output/fitImage diff --git a/doc/board/renesas/renesas.rst b/doc/board/renesas/renesas.rst index 6aaf1b13f29..234094a4259 100644 --- a/doc/board/renesas/renesas.rst +++ b/doc/board/renesas/renesas.rst @@ -187,7 +187,7 @@ Renesas is a SoC solutions provider for automotive and industrial applications. - r8a779g0_whitehawk_defconfig * - - - Sparrow Hawk + - :doc:`Sparrow Hawk ` - R8A779G3 (V4H) - :doc:`arm64 ` - r8a779g3_sparrowhawk_defconfig -- cgit v1.3.1 From 994de839a2905b225c1a79cc9b180523c0203518 Mon Sep 17 00:00:00 2001 From: Marek Vasut Date: Tue, 23 Jun 2026 03:38:35 +0200 Subject: doc: board: renesas: Document Renesas R-Car Gen5 X5H Ironhide board Add document which clarifies how to build and install U-Boot on Renesas R-Car Gen5 X5H Ironhide board. Signed-off-by: Marek Vasut --- doc/board/renesas/index.rst | 1 + doc/board/renesas/rcar-gen5-ironhide.rst | 204 +++++++++++++++++++++++++++++++ doc/board/renesas/renesas.rst | 4 +- 3 files changed, 207 insertions(+), 2 deletions(-) create mode 100644 doc/board/renesas/rcar-gen5-ironhide.rst diff --git a/doc/board/renesas/index.rst b/doc/board/renesas/index.rst index 68b11ebb455..be932aa01fb 100644 --- a/doc/board/renesas/index.rst +++ b/doc/board/renesas/index.rst @@ -19,4 +19,5 @@ Renesas rcar-gen3-install-hf rcar-gen3-install-sf rcar-gen4-sparrow-hawk + rcar-gen5-ironhide rzn1 diff --git a/doc/board/renesas/rcar-gen5-ironhide.rst b/doc/board/renesas/rcar-gen5-ironhide.rst new file mode 100644 index 00000000000..39fbfdbfe00 --- /dev/null +++ b/doc/board/renesas/rcar-gen5-ironhide.rst @@ -0,0 +1,204 @@ +.. SPDX-License-Identifier: GPL-2.0+ + +Renesas R-Car Gen5 X5H Ironhide board +===================================== + +Renesas R-Car Gen5 X5H Ironhide board U-Boot can be built for two separate cores: + +- Cortex-M33 RSIP core, which is the boot core +- Cortex-A720AE core, which is the application core + +Cortex-A720AE target +^^^^^^^^^^^^^^^^^^^^ + +Build U-Boot +------------ + +Please follow :doc:`Renesas 64-bit ARM SoC build environment setup ` +to correctly set up the build environment before attempting to build U-Boot. + +Clone up to date U-Boot source code and change directory into the +newly cloned source directory: + +.. code-block:: console + + $ git clone https://source.denx.de/u-boot/u-boot.git/ + $ cd u-boot + +Configure U-Boot: + +.. code-block:: console + + $ make r8a78000_ironhide_defconfig + +Compile U-Boot: + +.. code-block:: console + + $ make + +To speed up build process, -jN option can be passed to make to start +multiple jobs at the same time, this is beneficial especially on SMP +systems. The following example starts up to number of CPUs in the +system jobs, which is the recommended amount: + +.. code-block:: console + + $ make -j$(nproc) + +Install U-Boot +-------------- + +In order to install U-Boot for Cortex-A720AE into UFS, first build U-Boot +for this target and collect ``u-boot-elf.srec`` build artifact. + +Next, configure the board for SCIF loader boot. Upload IPL flash_writer +mot binary. Use the tool to write ``u-boot-elf.srec`` into HyperFlash +at offset 0x8e300000 . Finally, power off the board and configure the +board back to HyperFlash boot mode. + +Cortex-M33 RSIP target +^^^^^^^^^^^^^^^^^^^^^^ + +Build U-Boot +------------ + +Please follow :doc:`Renesas 32-bit ARM SoC build environment setup ` +to correctly set up the build environment before attempting to build U-Boot. + +Clone up to date U-Boot source code and change directory into the +newly cloned source directory: + +.. code-block:: console + + $ git clone https://source.denx.de/u-boot/u-boot.git/ + $ cd u-boot + +Configure U-Boot: + +.. code-block:: console + + $ make r8a78000_ironhide_cm33_defconfig + +Compile U-Boot: + +.. code-block:: console + + $ make + +To speed up build process, -jN option can be passed to make to start +multiple jobs at the same time, this is beneficial especially on SMP +systems. The following example starts up to number of CPUs in the +system jobs, which is the recommended amount: + +.. code-block:: console + + $ make -j$(nproc) + +Install U-Boot +-------------- + +In order to install U-Boot for RSIP into HyperFlash, first build U-Boot +for this target and collect ``u-boot-elf.shdr`` and ``u-boot-elf.srec`` +build artifacts. + +Next, configure the board for SCIF loader boot. Upload IPL flash_writer +mot binary. Use the tool to write ``u-boot-elf.shdr`` into HyperFlash +at offset 0, and ``u-boot-elf.srec`` into HyperFlash at offset 0x40000 . +Finally, power off the board and configure the board back to HyperFlash +boot mode. + +Power on the board, U-Boot on RSIP will start. Interaction with U-Boot +on RSIP is possible via HSCIF1, which is the second serial console that +is available on the USB-to-Serial adapter port. HSCIF1 is used in order +to avoid interference with software running on the Cortex-A720AE cores, +which uses HSCIF0. + +Ethernet boot of bootloader components +-------------------------------------- + +The U-Boot for RSIP is capable of ethernet access, which allows download +of bootloader components via TFTP. This is useful during development and +can be used for fast iterative testing of either SCP firmware, TFA BL31, +OPTEE-OS, U-Boot or Linux on the SCP core and Cortex-A720AE cores +respectively. + +An example U-Boot environment applicable to ``include/configs/rcar-gen5-common.h`` +or executable manually is listed below. The environment script ``rsip_ipl_boot_ca0`` +implements download of SCP firmware ``scp.bin``, TFA BL31 ``bl31.bin``, +U-Boot ``u-boot.bin`` and Linux ``fitImage`` from TFTP server at address +``192.168.1.1/24`` and starts those components on the SCP and Cortex-A720AE +cores respectively. OPTEE-OS is loaded from UFS to retain at least this +example of UFS loading, however, it perfectly fine to download OPTEE-OS +via TFTP in the same manner as the other components are downloaded: + +.. code-block:: console + + rsip_ipl_params_base=0x8c100000 + rsip_ipl_params_optee=0x8c100088 + rsip_ipl_params_uboot=0x8c100030 + rsip_ipl_scp_ep=0x8c180000 + rsip_ipl_optee_ep=0x8c400000 + rsip_ipl_tfa_ep=0x8c200000 + rsip_ipl_uboot_ep=0x8e300000 + rsip_ipl_linux_ep=0x91000000 + + rsip_ipl_params_write= /* Build handoff structure */ \ + base ${rsip_ipl_params_base} ; \ + mw 0x00 0 0x9e ; /* Clear the area */ \ + mw 0x00 0x00300103 ; /* type, version, size */ \ + mw 0x20 0x${rsip_ipl_params_uboot} ; /* U-Boot descriptor */ \ + \ + base ${rsip_ipl_params_uboot} ; \ + mw 0x00 0x00580101 ; /* type, version, size */ \ + mw 0x04 0x00000001 ; /* attr */ \ + mw 0x08 ${rsip_ipl_uboot_ep} ; /* U-Boot entry point */ \ + mw 0x10 0x000003c5 ; /* SPSR */ \ + \ + base ${rsip_ipl_params_optee} ; \ + mw 0x00 0x00580201 ; /* type, version, size */ \ + mw 0x04 0x00000008 ; /* attr */ \ + mw 0x08 ${rsip_ipl_optee_ep} ; /* OPTEE-OS entry point */ \ + mw 0x10 0x000003c5 ; /* SPSR */ \ + \ + base 0 + + rsip_ipl_boot_ca0= /* Start TFA BL31, OPTEE-OS, U-Boot, Linux on Cortex-A720AE core 0 */ \ + setenv ipaddr 192.168.1.10 && \ + setenv serverip 192.168.1.1 && \ + setenv netmask 255.255.255.0 && \ + \ + tftp ${rsip_ipl_scp_ep} scp.bin && \ + tftp ${rsip_ipl_tfa_ep} bl31.bin && \ + tftp ${rsip_ipl_uboot_ep} u-boot.bin && \ + tftp ${rsip_ipl_linux_ep} fitImage && \ + \ + scsi scan && /* Scan for UFS devices */ \ + rproc init && /* Start remoteproc */ \ + rproc load 0 ${rsip_ipl_scp_ep} 0x60000 && /* Load SCP STCM */ \ + rproc start 0 && /* Start SCP */ \ + scsi read ${rsip_ipl_optee_ep} 0x5200 0x200 && /* Load OPTEE-OS from UFS */ \ + run rsip_ipl_params_write && /* Write entry point descriptors */ \ + \ + rproc load 13 ${rsip_ipl_tfa_ep} 4 && /* Set up Cortex-A720AE Core 0 */ \ + rproc start 13 /* Start Cortex-A720AE Core 0 */ + + +.. note:: + + U-Boot on RSIP environment is not persistent across reboots, + but this will likely change in the upcoming U-Boot release. + +.. note:: + + U-Boot on RSIP can start the SCP core via rproc command, but + it can not stop SCP after it was started. This was intended + as a safety mechanism, since SCP is central component of the + system, however, this will likely change in the upcoming U-Boot + release. + +.. note:: + + U-Boot on RSIP can start non-SCP cores via ``rproc`` command only + after the SCP got started, because those cores are started via + SCMI calls to the SCP. diff --git a/doc/board/renesas/renesas.rst b/doc/board/renesas/renesas.rst index 234094a4259..ef04a4478e1 100644 --- a/doc/board/renesas/renesas.rst +++ b/doc/board/renesas/renesas.rst @@ -199,13 +199,13 @@ Renesas is a SoC solutions provider for automotive and industrial applications. - r8a779h0_grayhawk_defconfig * - R-Car Gen5 - - Ironhide (Cortex-A720AE application core) + - :doc:`Ironhide (Cortex-A720AE application core) ` - R8A78000 (X5H) - :doc:`arm64 ` - r8a78000_ironhide_defconfig * - - - Ironhide (Cortex-M33 RSIP boot core) + - :doc:`Ironhide (Cortex-M33 RSIP boot core) ` - R8A78000 (X5H) - :doc:`arm64 ` - r8a78000_ironhide_cm33_defconfig -- cgit v1.3.1 From f6999c9cb07191d1d717c74d5ce9f1e4307ef04e Mon Sep 17 00:00:00 2001 From: Marek Vasut Date: Tue, 23 Jun 2026 03:38:36 +0200 Subject: doc: board: renesas: Update Renesas generic build section Update the Build section and note that it is only applicable in case the table above does not contain any board specific instructions. Include information that the Architecture column now contains toolchain setup instruction links. Signed-off-by: Marek Vasut --- doc/board/renesas/renesas.rst | 15 +++++++++++---- 1 file changed, 11 insertions(+), 4 deletions(-) diff --git a/doc/board/renesas/renesas.rst b/doc/board/renesas/renesas.rst index ef04a4478e1..41272c6e32a 100644 --- a/doc/board/renesas/renesas.rst +++ b/doc/board/renesas/renesas.rst @@ -264,11 +264,18 @@ Renesas is a SoC solutions provider for automotive and industrial applications. - :doc:`arm ` - rzn1_snarc_defconfig -Build ------ +Generic build procedure +----------------------- -Locate the appropriate defconfig in the table above. Then apply standard build -procedure:: +This procedure applies only unless the ``Board`` column in +the table above does not contain a link to board specific +details. + +Locate the appropriate defconfig in the table above. +Follow toolchain setup procedure in ``Architecture`` column. +Finally, apply standard build procedure: + +.. code-block:: console make make -- cgit v1.3.1 From dfa9a68ab7533a97cbc69594021960d62b0dfa46 Mon Sep 17 00:00:00 2001 From: Marek Vasut Date: Tue, 23 Jun 2026 03:38:37 +0200 Subject: doc: board: renesas: Convert Renesas board support table to grid table The list-table layout does not allow grouping columns together, convert the table into grid-table layout instead and rework it such that SoC families, generations, architectures and SoCs are grouped together. Include SoC column to group SoCs together, and Core column which is useful on SoC like the R-Car X5H where U-Boot can run on multiple cores in the SoC. Signed-off-by: Marek Vasut --- doc/board/renesas/renesas.rst | 334 +++++++++++------------------------------- 1 file changed, 85 insertions(+), 249 deletions(-) diff --git a/doc/board/renesas/renesas.rst b/doc/board/renesas/renesas.rst index 41272c6e32a..c0cefc15dd8 100644 --- a/doc/board/renesas/renesas.rst +++ b/doc/board/renesas/renesas.rst @@ -14,255 +14,91 @@ Renesas SoC based boards Renesas is a SoC solutions provider for automotive and industrial applications. -.. list-table:: Supported Renesas SoC based boards - :widths: 10, 25, 15, 10, 25 - :header-rows: 1 - - * - Family - - Board - - SoC - - Arch - - defconfig - - * - R2D - - R2D-PLUS - - SH7751 - - :doc:`sh ` - - r2dplus_defconfig - - * - RZ/A1 - - GR-PEACH - - R7S72100 (RZ/A1H) - - :doc:`arm ` - - grpeach_defconfig - - * - R-Car Gen2 - - Lager - - R8A7790 (H2) - - :doc:`arm ` - - lager_defconfig - - * - - - Stout - - R8A7790 (H2) - - :doc:`arm ` - - stout_defconfig - - * - - - Koelsch - - R8A7791 (M2-W) - - :doc:`arm ` - - koelsch_defconfig - - * - - - Porter - - R8A7791 (M2-W) - - :doc:`arm ` - - porter_defconfig - - * - - - Blanche - - R8A7792 (V2H) - - :doc:`arm ` - - blanche_defconfig - - * - - - Gose - - R8A7793 (M2-N) - - :doc:`arm ` - - gose_defconfig - - * - - - Alt - - R8A7794 (E2) - - :doc:`arm ` - - alt_defconfig - - * - - - Silk - - R8A7794 (E2) - - :doc:`arm ` - - silk_defconfig - - * - R-Car Gen3 - - :doc:`Salvator-X(S) ` - - R8A77951 (H3) - - :doc:`arm64 ` - - rcar3_salvator-x_defconfig - - * - - - :doc:`ULCB ` - - R8A77951 (H3) - - :doc:`arm64 ` - - rcar3_ulcb_defconfig - - * - - - :doc:`Salvator-X(S) ` - - R8A77960 (M3-W) - - :doc:`arm64 ` - - rcar3_salvator-x_defconfig - - * - - - :doc:`ULCB ` - - R8A77960 (M3-W) - - :doc:`arm64 ` - - rcar3_ulcb_defconfig - - * - - - :doc:`Salvator-X(S) ` - - R8A77965 (M3-N) - - :doc:`arm64 ` - - rcar3_salvator-x_defconfig - - * - - - :doc:`ULCB ` - - R8A77965 (M3-N) - - :doc:`arm64 ` - - rcar3_ulcb_defconfig - - * - - - :doc:`Geist ` - - R8A779MD (M3Le) - - :doc:`arm64 ` - - r8a779md_geist_defconfig - - * - - - Eagle - - R8A77970 (V3M) - - :doc:`arm64 ` - - r8a77970_eagle_defconfig - - * - - - V3MSK - - R8A77970 (V3M) - - :doc:`arm64 ` - - r8a77970_v3msk_defconfig - - * - - - Condor - - R8A77980 (V3H) - - :doc:`arm64 ` - - r8a77980_condor_defconfig - - * - - - V3HSK - - R8A77980 (V3H) - - :doc:`arm64 ` - - r8a77980_v3hsk_defconfig - - * - - - :doc:`Ebisu ` - - R8A77990 (E3) - - :doc:`arm64 ` - - r8a77990_ebisu_defconfig - - * - - - :doc:`Draak ` - - R8A77995 (D3) - - :doc:`arm64 ` - - r8a77995_draak_defconfig - - * - R-Car Gen4 - - Falcon - - R8A779A0 (V3U) - - :doc:`arm64 ` - - r8a779a0_falcon_defconfig - - * - - - Spider - - R8A779F0 (S4) - - :doc:`arm64 ` - - r8a779f0_spider_defconfig - - * - - - S4SK - - R8A779F4 (S4) - - :doc:`arm64 ` - - r8a779f4_s4sk_defconfig - - * - - - White Hawk - - R8A779G0 (V4H) - - :doc:`arm64 ` - - r8a779g0_whitehawk_defconfig - - * - - - :doc:`Sparrow Hawk ` - - R8A779G3 (V4H) - - :doc:`arm64 ` - - r8a779g3_sparrowhawk_defconfig - - * - - - Gray Hawk - - R8A779H0 (V4M) - - :doc:`arm64 ` - - r8a779h0_grayhawk_defconfig - - * - R-Car Gen5 - - :doc:`Ironhide (Cortex-A720AE application core) ` - - R8A78000 (X5H) - - :doc:`arm64 ` - - r8a78000_ironhide_defconfig - - * - - - :doc:`Ironhide (Cortex-M33 RSIP boot core) ` - - R8A78000 (X5H) - - :doc:`arm64 ` - - r8a78000_ironhide_cm33_defconfig - - * - RZ/G2 Family - - Beacon EmbeddedWorks RZ/G2M SoM - - R8A774A1 (RZ/G2M) - - :doc:`arm64 ` - - rzg2_beacon_defconfig - - * - - - HopeRun HiHope RZ/G2M - - R8A774A1 (RZ/G2M) - - :doc:`arm64 ` - - hihope_rzg2_defconfig - - * - - - Beacon EmbeddedWorks RZ/G2N SoM - - R8A774B1 (RZ/G2N) - - :doc:`arm64 ` - - rzg2_beacon_defconfig - - * - - - HopeRun HiHope RZ/G2N - - R8A774B1 (RZ/G2N) - - :doc:`arm64 ` - - hihope_rzg2_defconfig - - * - - - Silicon Linux RZ/G2E evaluation kit (EK874) - - R8A774C0 (RZ/G2E) - - :doc:`arm64 ` - - silinux_ek874_defconfig - - * - - - Beacon EmbeddedWorks RZ/G2H SoM - - R8A774E1 (RZ/G2H) - - :doc:`arm64 ` - - rzg2_beacon_defconfig - - * - - - HopeRun HiHope RZ/G2H - - R8A774E1 (RZ/G2H) - - :doc:`arm64 ` - - hihope_rzg2_defconfig - - * - :doc:`RZ/N1 Family ` - - Schneider RZ/N1D board - - R9A06G032 (RZ/N1D) - - :doc:`arm ` - - rzn1_snarc_defconfig - - * - - - Schneider RZ/N1S board - - R9A06G033 (RZ/N1S) - - :doc:`arm ` - - rzn1_snarc_defconfig +.. table:: Supported Renesas SoC based boards + + +--------+------------------+----------------------------------+--------------------+--------------------+----------------------------------------------+----------------------------------+ + | Family | Generation | Architecture | SoC | Core | Board | defconfig | + +========+==================+==================================+====================+====================+==============================================+==================================+ + | R2D | | :doc:`SH ` | SH7751 | SH4 | R2D-PLUS | r2dplus_defconfig | + +--------+------------------+----------------------------------+--------------------+--------------------+----------------------------------------------+----------------------------------+ + | R-Car | | | | | Lager | lager_defconfig | + | | | | R8A7790 (H2) | Cortex A7 or A15 +----------------------------------------------+----------------------------------+ + | | | | | | Stout | stout_defconfig | + | | | +--------------------+--------------------+----------------------------------------------+----------------------------------+ + | | | | | | Koelsch | koelsch_defconfig | + | | | | R8A7791 (M2-W) | +----------------------------------------------+----------------------------------+ + | | | | | Cortex A15 | Porter | porter_defconfig | + | | Gen2 | :doc:`arm ` +--------------------+ +----------------------------------------------+----------------------------------+ + | | | | R8A7792 (V2H) | | Blanche | blanche_defconfig | + | | | +--------------------+--------------------+----------------------------------------------+----------------------------------+ + | | | | R8A7793 (M2-N) | Cortex A7 or A15 | Gose | gose_defconfig | + | | | +--------------------+--------------------+----------------------------------------------+----------------------------------+ + | | | | | | Alt | alt_defconfig | + | | | | R8A7794 (E2) | Cortex A7 +----------------------------------------------+----------------------------------+ + | | | | | | Silk | silk_defconfig | + | +------------------+----------------------------------+--------------------+--------------------+----------------------------------------------+----------------------------------+ + | | | | | | :doc:`Salvator-X(S) ` | rcar3_salvator-x_defconfig | + | | | | R8A77951 (H3) | +----------------------------------------------+----------------------------------+ + | | | | | | :doc:`ULCB ` | rcar3_ulcb_defconfig | + | | | +--------------------+ +----------------------------------------------+----------------------------------+ + | | | | | | :doc:`Salvator-X(S) ` | rcar3_salvator-x_defconfig | + | | | | R8A77960 (M3-W) | Cortex A53 or A57 +----------------------------------------------+----------------------------------+ + | | | | | | :doc:`ULCB ` | rcar3_ulcb_defconfig | + | | | +--------------------+ +----------------------------------------------+----------------------------------+ + | | | | | | :doc:`Salvator-X(S) ` | rcar3_salvator-x_defconfig | + | | | | R8A77965 (M3-N) | +----------------------------------------------+----------------------------------+ + | | | | | | :doc:`ULCB ` | rcar3_ulcb_defconfig | + | | | +--------------------+--------------------+----------------------------------------------+----------------------------------+ + | | Gen3 | :doc:`arm64 ` | R8A779MD (M3Le) | Cortex A57 | :doc:`Geist ` | r8a779md_geist_defconfig | + | | | +--------------------+--------------------+----------------------------------------------+----------------------------------+ + | | | | | | Eagle | r8a77970_eagle_defconfig | + | | | | R8A77970 (V3M) | +----------------------------------------------+----------------------------------+ + | | | | | | V3MSK | r8a77970_v3msk_defconfig | + | | | +--------------------+ +----------------------------------------------+----------------------------------+ + | | | | | | Condor | r8a77980_condor_defconfig | + | | | | R8A77980 (V3H) | Cortex A53 +----------------------------------------------+----------------------------------+ + | | | | | | V3HSK | r8a77980_v3hsk_defconfig | + | | | +--------------------+ +----------------------------------------------+----------------------------------+ + | | | | R8A77990 (E3) | | :doc:`Ebisu ` | r8a77990_ebisu_defconfig | + | | | +--------------------+ +----------------------------------------------+----------------------------------+ + | | | | R8A77995 (D3) | | :doc:`Draak ` | r8a77995_draak_defconfig | + | +------------------+----------------------------------+--------------------+--------------------+----------------------------------------------+----------------------------------+ + | | | | R8A779A0 (V3U) | Cortex A76 | Falcon | r8a779a0_falcon_defconfig | + | | | +--------------------+--------------------+----------------------------------------------+----------------------------------+ + | | | | | | Spider | r8a779f0_spider_defconfig | + | | | | R8A779F0 (S4) | Cortex A55 +----------------------------------------------+----------------------------------+ + | | | | | | S4SK | r8a779f4_s4sk_defconfig | + | | Gen4 | :doc:`arm64 ` +--------------------+--------------------+----------------------------------------------+----------------------------------+ + | | | | | | White Hawk | r8a779g0_whitehawk_defconfig | + | | | | R8A779G3 (V4H) | +----------------------------------------------+----------------------------------+ + | | | | | Cortex A76 | :doc:`Sparrow Hawk ` | r8a779g3_sparrowhawk_defconfig | + | | | +--------------------+ +----------------------------------------------+----------------------------------+ + | | | | R8A779H0 (V4M) | | Gray Hawk | r8a779h0_grayhawk_defconfig | + | +------------------+----------------------------------+--------------------+--------------------+----------------------------------------------+----------------------------------+ + | | | :doc:`arm ` | | Cortex M33 RSIP | | r8a78000_ironhide_cm33_defconfig | + | | Gen5 +----------------------------------+ R8A78000 (X5H) +--------------------+ :doc:`Ironhide ` +----------------------------------+ + | | | :doc:`arm64 ` | | Cortex A720AE | | r8a78000_ironhide_defconfig | + +--------+------------------+----------------------------------+--------------------+--------------------+----------------------------------------------+----------------------------------+ + | RZ | A1 | :doc:`arm ` | R7S72100 (RZ/A1H) | Cortex A9 | GR-PEACH | grpeach_defconfig | + | +------------------+----------------------------------+--------------------+--------------------+----------------------------------------------+----------------------------------+ + | | | | | | Beacon EmbeddedWorks RZ/G2M SoM | rzg2_beacon_defconfig | + | | | | R8A774A1 (RZ/G2M) | Cortex A53 or A57 +----------------------------------------------+----------------------------------+ + | | | | | | HopeRun HiHope RZ/G2M | hihope_rzg2_defconfig | + | | | +--------------------+--------------------+----------------------------------------------+----------------------------------+ + | | | | | | Beacon EmbeddedWorks RZ/G2N SoM | rzg2_beacon_defconfig | + | | G2 | :doc:`arm64 ` | R8A774B1 (RZ/G2N) | Cortex A57 +----------------------------------------------+----------------------------------+ + | | | | | | HopeRun HiHope RZ/G2N | hihope_rzg2_defconfig | + | | | +--------------------+--------------------+----------------------------------------------+----------------------------------+ + | | | | R8A774C0 (RZ/G2E) | Cortex A53 | Silicon Linux RZ/G2E evaluation kit (EK874) | silinux_ek874_defconfig | + | | | +--------------------+--------------------+----------------------------------------------+----------------------------------+ + | | | | | | Beacon EmbeddedWorks RZ/G2H SoM | rzg2_beacon_defconfig | + | | | | R8A774E1 (RZ/G2H) | Cortex A53 or A57 +----------------------------------------------+----------------------------------+ + | | | | | | HopeRun HiHope RZ/G2H | hihope_rzg2_defconfig | + +--------+------------------+----------------------------------+--------------------+--------------------+----------------------------------------------+----------------------------------+ + | | | | R9A06G032 (RZ/N1D) | | Schneider RZ/N1D board | rzn1_snarc_defconfig | + | | :doc:`N1 ` | :doc:`arm ` +--------------------+ Cortex A7 +----------------------------------------------+----------------------------------+ + | | | | R9A06G033 (RZ/N1S) | | Schneider RZ/N1S board | rzn1_snarc_defconfig | + +--------+------------------+----------------------------------+--------------------+--------------------+----------------------------------------------+----------------------------------+ Generic build procedure ----------------------- -- cgit v1.3.1 From 9a695a5fe9b29211e7d56eef9c801656aed37b71 Mon Sep 17 00:00:00 2001 From: Heinrich Schuchardt Date: Wed, 24 Jun 2026 07:48:19 +0200 Subject: efi_loader: fix building with CONFIG_EFI_VARIABLES_PRESEED=y Since commit bd3f9ee679b4 ("kbuild: Bump the build system to 6.1") out-of-tree builds with CONFIG_EFI_VARIABLES_PRESEED=y fail with errors like: ../lib/efi_loader/efi_var_seed.S:14: Error: file not found: ubootefi.var For out-of-tree build we cannot use CONFIG_EFI_VAR_SEED_FILE in the .incbin statement of file efi_var_seed.S. * We have to prepend $(srctree) if the path is relative. * We must not prepend $(srctree) if the path is absolute. Fixes: bd3f9ee679b4 ("kbuild: Bump the build system to 6.1") Reported-by: Jon Mason Closes: https://lore.kernel.org/u-boot/CAPoiz9zg4OXgHo5J3WtJHKOEuWOdCDrugWfAt6Z+d71j=+q8oA@mail.gmail.com/T/#mffaca10a9e812d03eceafad59999a02e57258b9a Tested-by: Nora Schiffer Reviewed-by: Ilias Apalodimas Tested-by: Ilias Apalodimas Signed-off-by: Heinrich Schuchardt --- lib/efi_loader/Makefile | 7 +++++-- lib/efi_loader/efi_var_seed.S | 4 +--- 2 files changed, 6 insertions(+), 5 deletions(-) diff --git a/lib/efi_loader/Makefile b/lib/efi_loader/Makefile index d73ad43951b..567db518a8f 100644 --- a/lib/efi_loader/Makefile +++ b/lib/efi_loader/Makefile @@ -74,8 +74,11 @@ obj-$(CONFIG_EFI_SIGNATURE_SUPPORT) += efi_signature.o obj-$(CONFIG_EFI_ECPT) += efi_conformance.o obj-$(CONFIG_EFI_DEBUG_SUPPORT) += efi_debug_support.o -EFI_VAR_SEED_FILE := $(subst $\",,$(CONFIG_EFI_VAR_SEED_FILE)) -$(obj)/efi_var_seed.o: $(srctree)/$(EFI_VAR_SEED_FILE) +TMP_VAR_SEED := $(subst $\",,$(CONFIG_EFI_VAR_SEED_FILE)) +EFI_VAR_SEED_FILE := $(if $(filter /% ,$(TMP_VAR_SEED)) \ + ,$(TMP_VAR_SEED),$(srctree)/$(TMP_VAR_SEED)) +AFLAGS_efi_var_seed.o := -DEFI_VAR_SEED_FILE=\"$(EFI_VAR_SEED_FILE)\" +$(obj)/efi_var_seed.o: $(EFI_VAR_SEED_FILE) ifeq ($(CONFIG_EFI_CAPSULE_AUTHENTICATE),y) capsule_crt_path=($(subst $(quote),,$(CONFIG_EFI_CAPSULE_CRT_FILE))) diff --git a/lib/efi_loader/efi_var_seed.S b/lib/efi_loader/efi_var_seed.S index e0a40cf46c8..008a505d19e 100644 --- a/lib/efi_loader/efi_var_seed.S +++ b/lib/efi_loader/efi_var_seed.S @@ -5,13 +5,11 @@ * Copyright (c) 2020, Heinrich Schuchardt */ -#include - .section .rodata.efi_seed.init,"a" .balign 16 .global __efi_var_file_begin __efi_var_file_begin: -.incbin CONFIG_EFI_VAR_SEED_FILE +.incbin EFI_VAR_SEED_FILE .global __efi_var_file_end __efi_var_file_end: .balign 16 -- cgit v1.3.1 From 226a73bf1b08747d09869d8c95b3a2a0ec5eebed Mon Sep 17 00:00:00 2001 From: Vincent Stehlé Date: Fri, 26 Jun 2026 16:47:58 +0200 Subject: efi_selftest: free handles on teardown() MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit In the block device selftest, make the handles pointer global and free it also in teardown(), to simplify error handling. We also need to nullify the pointer after freeing it on the normal path, to avoid freeing it a second time during teardown(). Signed-off-by: Vincent Stehlé Reviewed-by: Heinrich Schuchardt --- lib/efi_selftest/efi_selftest_block_device.c | 14 +++++++++++++- 1 file changed, 13 insertions(+), 1 deletion(-) diff --git a/lib/efi_selftest/efi_selftest_block_device.c b/lib/efi_selftest/efi_selftest_block_device.c index 9c4be834eeb..b5f6f9353cd 100644 --- a/lib/efi_selftest/efi_selftest_block_device.c +++ b/lib/efi_selftest/efi_selftest_block_device.c @@ -58,6 +58,9 @@ static const struct compressed_disk_image img = EFI_ST_DISK_IMG; /* Decompressed disk image */ static u8 *image; +/* Handles buffer */ +static efi_handle_t *handles; + /* * Reset service of the block IO protocol. * @@ -276,6 +279,15 @@ static int teardown(void) return EFI_ST_FAILURE; } } + + if (handles) { + r = boottime->free_pool(handles); + if (r != EFI_SUCCESS) { + efi_st_error("Failed to free handles\n"); + return EFI_ST_FAILURE; + } + } + return r; } @@ -303,7 +315,6 @@ static int execute(void) { efi_status_t ret; efi_uintn_t no_handles, i, len; - efi_handle_t *handles; efi_handle_t handle_partition = NULL; struct efi_device_path *dp_partition; struct efi_block_io *block_io_protocol; @@ -372,6 +383,7 @@ static int execute(void) break; } ret = boottime->free_pool(handles); + handles = NULL; /* Avoid double free on teardown(). */ if (ret != EFI_SUCCESS) { efi_st_error("Failed to free pool memory\n"); return EFI_ST_FAILURE; -- cgit v1.3.1 From 650dcf4520ac451db7a4dd3298034224181564e8 Mon Sep 17 00:00:00 2001 From: Vincent Stehlé Date: Fri, 26 Jun 2026 16:47:59 +0200 Subject: efi_selftest: test block io revision and pointers MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Enhance the unit test to verify all Revision fields and all pointers of all the EFI_BLOCK_IO_PROTOCOL structures. As the unit test registers its own block io protocol for test purposes, make sure to initialize its revision properly, as it will be verified as well. This can run on the sandbox with the following command: ./u-boot -T -c 'setenv efi_selftest block device; bootefi selftest' Suggested-by: Heinrich Schuchardt Signed-off-by: Vincent Stehlé Cc: Ilias Apalodimas Cc: Tom Rini Reviewed-by: Heinrich Schuchardt --- lib/efi_selftest/efi_selftest_block_device.c | 63 ++++++++++++++++++++++++++++ 1 file changed, 63 insertions(+) diff --git a/lib/efi_selftest/efi_selftest_block_device.c b/lib/efi_selftest/efi_selftest_block_device.c index b5f6f9353cd..847d93693ee 100644 --- a/lib/efi_selftest/efi_selftest_block_device.c +++ b/lib/efi_selftest/efi_selftest_block_device.c @@ -173,6 +173,7 @@ static efi_status_t decompress(u8 **image) static struct efi_block_io_media media; static struct efi_block_io block_io = { + .revision = EFI_BLOCK_IO_PROTOCOL_REVISION3, .media = &media, .reset = reset, .read_blocks = read_blocks, @@ -615,6 +616,68 @@ static int execute(void) return EFI_ST_FAILURE; } + /* Get all handles with block io. */ + ret = boottime->locate_handle_buffer(BY_PROTOCOL, + &block_io_protocol_guid, NULL, + &no_handles, &handles); + switch (ret) { + case EFI_SUCCESS: + if (!no_handles || !handles) { + efi_st_error("Locate handle buffer bad handles\n"); + return EFI_ST_FAILURE; + } + break; + case EFI_NOT_FOUND: + efi_st_error("No block IO protocol found though one installed in setup\n"); + return EFI_ST_FAILURE; + default: + efi_st_error("Locate handle buffer failed\n"); + return EFI_ST_FAILURE; + } + + /* Verify all handles with block io. */ + for (i = 0; i < no_handles; ++i) { + u64 rev; + + ret = boottime->open_protocol(handles[i], + &block_io_protocol_guid, + (void *)&block_io_protocol, + NULL, NULL, + EFI_OPEN_PROTOCOL_GET_PROTOCOL); + if (ret != EFI_SUCCESS) { + efi_st_error("Failed to open block io protocol %d\n", + (unsigned int)i); + return EFI_ST_FAILURE; + } + + /* Verify block io revision. */ + rev = block_io_protocol->revision; + if (rev != EFI_BLOCK_IO_PROTOCOL_REVISION2 && + rev != EFI_BLOCK_IO_PROTOCOL_REVISION3) { + efi_st_error("Bad block io revision %u\n", + (unsigned int)rev); + return EFI_ST_FAILURE; + } + + /* Verify block io pointers. */ + if (!block_io_protocol->media || + !block_io_protocol->reset || + !block_io_protocol->read_blocks || + !block_io_protocol->write_blocks || + !block_io_protocol->flush_blocks) { + efi_st_error("Bad block io pointer\n"); + return EFI_ST_FAILURE; + } + } + + /* Free handles buffer. */ + ret = boottime->free_pool(handles); + handles = NULL; /* Avoid double free on teardown(). */ + if (ret != EFI_SUCCESS) { + efi_st_error("Failed to free block io handles\n"); + return EFI_ST_FAILURE; + } + return EFI_ST_SUCCESS; } -- cgit v1.3.1 From 8611cbc7916898e688b29207f53a47291eb8c2e4 Mon Sep 17 00:00:00 2001 From: Heinrich Schuchardt Date: Tue, 30 Jun 2026 01:35:13 +0200 Subject: efi_loader: fix buffer overrun in efi_sigstore_parse_siglist In efi_sigstore_parse_siglist() sigdata is allocated. But instead of an allocation matching the size of sigdata, tainted external data was used to calculate the allocation size. This may lead to buffer overflows. * Correct the allocation size. * Follow the man-page. Use the structure size as second argument for calloc. Reviewed-by: Ilias Apalodimas Signed-off-by: Heinrich Schuchardt --- lib/efi_loader/efi_signature.c | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/lib/efi_loader/efi_signature.c b/lib/efi_loader/efi_signature.c index 93a4f257016..f99a0c29d2b 100644 --- a/lib/efi_loader/efi_signature.c +++ b/lib/efi_loader/efi_signature.c @@ -703,8 +703,7 @@ efi_sigstore_parse_siglist(struct efi_signature_list *esl) goto err; } - sig_data = calloc(esl->signature_size - - sizeof(esd->signature_owner), 1); + sig_data = calloc(1, sizeof(*sig_data)); if (!sig_data) { EFI_PRINT("Out of memory\n"); goto err; -- cgit v1.3.1 From 650c2e6203b5ff654d9f5d00ccf7ee1162a30c24 Mon Sep 17 00:00:00 2001 From: Ilias Apalodimas Date: Fri, 3 Jul 2026 15:40:28 +0300 Subject: efi_loader: Correctly count the size on DTB measurements When doing a sha256_update() for the measured DT, the size arguments for fdt_size_dt_struct() and fdt_size_dt_strings() are inversed. Signed-off-by: Ilias Apalodimas Acked-by: Heinrich Schuchardt --- lib/efi_loader/efi_tcg2.c | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/lib/efi_loader/efi_tcg2.c b/lib/efi_loader/efi_tcg2.c index 1860dc50238..1d52a04ca48 100644 --- a/lib/efi_loader/efi_tcg2.c +++ b/lib/efi_loader/efi_tcg2.c @@ -1343,8 +1343,8 @@ efi_status_t efi_tcg2_measure_dtb(void *dtb) header = dtb; sha256_starts(&hash_ctx); sha256_update(&hash_ctx, (u8 *)header, sizeof(struct fdt_header)); - sha256_update(&hash_ctx, (u8 *)dtb + fdt_off_dt_struct(dtb), fdt_size_dt_strings(dtb)); - sha256_update(&hash_ctx, (u8 *)dtb + fdt_off_dt_strings(dtb), fdt_size_dt_struct(dtb)); + sha256_update(&hash_ctx, (u8 *)dtb + fdt_off_dt_struct(dtb), fdt_size_dt_struct(dtb)); + sha256_update(&hash_ctx, (u8 *)dtb + fdt_off_dt_strings(dtb), fdt_size_dt_strings(dtb)); sha256_update(&hash_ctx, (u8 *)dtb + fdt_off_mem_rsvmap(dtb), rsvmap_size); sha256_finish(&hash_ctx, blob->data + blob->blob_description_size); -- cgit v1.3.1 From 1f4c391428e5ef17249ccf7af7f4648a73846e51 Mon Sep 17 00:00:00 2001 From: Ilias Apalodimas Date: Fri, 3 Jul 2026 15:46:35 +0300 Subject: efi_loader: Change the return values if a TPM is missing during GetEventLog The function defined by the TCG spec looks like: typedef EFI_STATUS (EFIAPI *EFI_TCG2_GET_EVENT_LOG) ( IN EFI_TCG2_PROTOCOL *This, IN EFI_TCG2_EVENT_LOG_FORMAT EventLogFormat, OUT EFI_PHYSICAL_ADDRESS *EventLogLocation, OUT EFI_PHYSICAL_ADDRESS *EventLogLastEntry, OUT BOOLEAN *EventLogTruncated ); and the spec mandates that "If no TPM is present, the function SHALL set the following values and return EFI_SUCCESS: EventLogLocation = NULL EventLogLastEntry = NULL EventLogTruncated = FALSE" However, if we set it to NULL the local assignment is discarded when the function returns. Set it to 0, although on some platforms that's a valid address. Signed-off-by: Ilias Apalodimas Reviewed-by: Heinrich Schuchardt --- lib/efi_loader/efi_tcg2.c | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/lib/efi_loader/efi_tcg2.c b/lib/efi_loader/efi_tcg2.c index 1d52a04ca48..07637df7660 100644 --- a/lib/efi_loader/efi_tcg2.c +++ b/lib/efi_loader/efi_tcg2.c @@ -352,8 +352,8 @@ efi_tcg2_get_eventlog(struct efi_tcg2_protocol *this, } if (tcg2_platform_get_tpm2(&dev)) { - event_log_location = NULL; - event_log_last_entry = NULL; + *event_log_location = 0; + *event_log_last_entry = 0; *event_log_truncated = false; ret = EFI_SUCCESS; goto out; -- cgit v1.3.1 From e39e67c436e4c4bc416b3ce993a6def65fa2f75d Mon Sep 17 00:00:00 2001 From: Ilias Apalodimas Date: Fri, 3 Jul 2026 16:01:37 +0300 Subject: efi_loader: Measure secure boot variables in the correct PCR if DeployedMode is set PK, KEK, db, dbx etc must always be measured in PCR7. DeployedMode and AuditMode should be measured in PCR1 if DeployedMode is set and PCR7 otherwise. Fix the u16_strcmp to only change the PCR value for those two variables. Signed-off-by: Ilias Apalodimas Acked-by: Heinrich Schuchardt --- lib/efi_loader/efi_tcg2.c | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/lib/efi_loader/efi_tcg2.c b/lib/efi_loader/efi_tcg2.c index 07637df7660..5f9bbe97455 100644 --- a/lib/efi_loader/efi_tcg2.c +++ b/lib/efi_loader/efi_tcg2.c @@ -1535,9 +1535,9 @@ static efi_status_t tcg2_measure_secure_boot_variable(struct udevice *dev) if (!data && !secure_variables[i].accept_empty) continue; - if (u16_strcmp(u"DeployedMode", secure_variables[i].name)) + if (!u16_strcmp(u"DeployedMode", secure_variables[i].name)) secure_variables[i].pcr_index = deployed_audit_pcr_index; - if (u16_strcmp(u"AuditMode", secure_variables[i].name)) + if (!u16_strcmp(u"AuditMode", secure_variables[i].name)) secure_variables[i].pcr_index = deployed_audit_pcr_index; ret = tcg2_measure_variable(dev, secure_variables[i].pcr_index, -- cgit v1.3.1 From 0a2ad17254a2d0c935a78ffab49f107e0d7c1077 Mon Sep 17 00:00:00 2001 From: Quentin Schulz Date: Wed, 8 Jul 2026 19:21:13 +0200 Subject: doc: CONTRIBUTE: use internal link instead of hardcoded external URL This way we don't need to make sure this link still points to something that exists, as Sphinx will enforce it at build time. It also has the added benefit that if someone builds the docs they will point at their docs (though that is debatable whether that's useful, but at least you stay on the same website). Signed-off-by: Quentin Schulz Reviewed-by: Simon Glass Reviewed-by: Tom Rini --- doc/CONTRIBUTE.rst | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/doc/CONTRIBUTE.rst b/doc/CONTRIBUTE.rst index a6e1cd1fb68..0179d55dbcc 100644 --- a/doc/CONTRIBUTE.rst +++ b/doc/CONTRIBUTE.rst @@ -21,8 +21,7 @@ Repository The official U-Boot repository is located at https://source.denx.de/u-boot/u-boot -Further more detailed documentation can be found at the following link: -https://docs.u-boot-project.org/en/latest/index.html +Further more detailed documentation can be found at the following link: :doc:`/index`. Contributions ------------- -- cgit v1.3.1 From 06f014394594d70102b0c98e48a3cc6116cc434f Mon Sep 17 00:00:00 2001 From: Quentin Schulz Date: Wed, 8 Jul 2026 19:21:14 +0200 Subject: doc: CONTRIBUTE: tell people reviewing *is* contributing We are "a bit" struggling with reviewing things and it's most of the time maintainers or long time contributors reviewing patches on the mailing list. Hint that reviewing is also contributing to the project and that even if you don't feel you're an expert, your review is still welcome and can help us catch bugs before they are merged. Signed-off-by: Quentin Schulz Reviewed-by: Tom Rini --- doc/CONTRIBUTE.rst | 9 +++++++++ 1 file changed, 9 insertions(+) diff --git a/doc/CONTRIBUTE.rst b/doc/CONTRIBUTE.rst index 0179d55dbcc..cd9a381a3eb 100644 --- a/doc/CONTRIBUTE.rst +++ b/doc/CONTRIBUTE.rst @@ -38,6 +38,15 @@ script. Please don't send patches as attachments, and ensure corporate mail systems don't reformat patches, append disclaimers or other unnecessary notes. The b4 tool automates a number of components mentioned above. +Code is not the only thing you can contribute to the project. As most +open-source projects, the U-Boot project suffers from a lack of reviewers. +Consider spending some time reading patches on `the mailing list archive +`_ and providing feedback to +contributors when something could be improved or if you have questions. Contrary +to what's most often believed, you do not need to be an expert to review patches +and the project will benefit from people with different skillsets and experience +looking at the same patches and each catch different bugs. + Patch Series ------------ -- cgit v1.3.1 From cb4c530f7f229659d2d62a0f52fb1789a9c54ad6 Mon Sep 17 00:00:00 2001 From: Quentin Schulz Date: Wed, 8 Jul 2026 19:21:15 +0200 Subject: doc: CONTRIBUTE: explicitly list tests and documentation as welcome contributions We don't have too many people looking at those at the moment, so having people getting into the project by adding tests or documentation is I believe a good thing so let's encourage those specific contributions. Signed-off-by: Quentin Schulz Reviewed-by: Simon Glass Reviewed-by: Tom Rini --- doc/CONTRIBUTE.rst | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/doc/CONTRIBUTE.rst b/doc/CONTRIBUTE.rst index cd9a381a3eb..e8fa595ed4a 100644 --- a/doc/CONTRIBUTE.rst +++ b/doc/CONTRIBUTE.rst @@ -47,6 +47,13 @@ to what's most often believed, you do not need to be an expert to review patches and the project will benefit from people with different skillsets and experience looking at the same patches and each catch different bugs. +The project would also benefit from more :ref:`develop/index:testing`. + +New sections or updates to the documentation are most welcome, e.g. +:ref:`usage/index:shell commands`. See :doc:`/develop/docstyle`. + +Thank you for your help! + Patch Series ------------ -- cgit v1.3.1