mbox series

[v4,0/4] rockchip: Use external TPL binary to create a working firmware image

Message ID 20230219150629.4012377-1-jonas@kwiboo.se
Headers show
Series rockchip: Use external TPL binary to create a working firmware image | expand

Message

Jonas Karlman Feb. 19, 2023, 3:06 p.m. UTC
Rockchip SoCs typically use U-Boot TPL to initialize DRAM, then jumps
back to BootRom to load next stage, U-Boot SPL, into DRAM. BootRom then
jumps to U-Boot SPL to continue the boot flow.

For RK356x there is no support to initialize DRAM using U-Boot
TPL and instead an external TPL binary must be used to generate a
bootable u-boot-rockchip.bin image.

This adds a new rockchip-tpl entry to binman and make use of this new
entry in rockchip-u-boot.dtsi.

Build U-Boot with ROCKCHIP_TPL=/path/to/ddr.bin to generate a
bootable u-boot-rockchip.bin image for RK356x.

I have dropped the RFC patch that was related to showing a friendly
message instead of a generic file not found message when TPL blob is
missing in v3. Will address that in a follow-up series.

The last patch that updates evb-rk3568_defconfig was dropped in v4.
Will address that and more config options in a follow-up series.

Changes in v4:
- Only change init size limit for rk3328 and rk3568
- Drop update evb-rk3568_defconfig patch

Changes in v3:
- Move test function last
- Add help text to Kconfig option
- Add build step for rk3568 to documentation
- Resync init size limit table
- Drop missing message RFC patch

Changes in v2:
- Renamed external-tpl to rockchip-tpl
- Renamed EXTERNAL_TPL to ROCKCHIP_TPL
- Add CONFIG_ROCKCHIP_EXTERNAL_TPL Kconfig option
- New patch to sync init size limit in mkimage
- New RFC patch to improve allow-missing/fake-ext-blobs handling for
  binman mkimage entry

Jonas Karlman (4):
  binman: Add support for a rockchip-tpl entry
  rockchip: Use an external TPL binary on RK3568
  Revert "board: rockchip: Fix binman_init failure on EVB-RK3568"
  rockchip: mkimage: Update init size limit for RK3328 and RK3568

 Makefile                               |  1 +
 arch/arm/dts/rockchip-u-boot.dtsi      | 10 ++++++++--
 arch/arm/mach-rockchip/Kconfig         |  8 ++++++++
 configs/evb-rk3568_defconfig           |  1 -
 doc/board/rockchip/rockchip.rst        | 11 +++++++++++
 tools/binman/entries.rst               | 14 ++++++++++++++
 tools/binman/etype/rockchip_tpl.py     | 20 ++++++++++++++++++++
 tools/binman/ftest.py                  |  7 +++++++
 tools/binman/missing-blob-help         |  5 +++++
 tools/binman/test/277_rockchip_tpl.dts | 16 ++++++++++++++++
 tools/rkcommon.c                       |  4 ++--
 11 files changed, 92 insertions(+), 5 deletions(-)
 create mode 100644 tools/binman/etype/rockchip_tpl.py
 create mode 100644 tools/binman/test/277_rockchip_tpl.dts

Comments

Frank Wunderlich Feb. 22, 2023, 2:20 p.m. UTC | #1
Hi,

tested this series on top of 2023.04-rc2 on bananapi r2, works well if i disable CONFIG_OF_SYSTEM_SETUP

else i get this error:

LD u-boot
aarch64-linux-gnu-ld.bfd: boot/image-fdt.o: in function `image_setup_libfdt':
/media/data_nvme/git/uboot/u-boot/boot/image-fdt.c:661: undefined reference to `ft_system_setup'
aarch64-linux-gnu-ld.bfd: cmd/fdt.o: in function `do_fdt':
/media/data_nvme/git/uboot/u-boot/cmd/fdt.c:272: undefined reference to `ft_system_setup'
Segmentation fault (core dumped)
make: *** [Makefile:1753: u-boot] Error 139
make: *** Deleting file 'u-boot'
build failed!

because there is no implementation for this function for rockchip:

https://elixir.bootlin.com/u-boot/v2023.04-rc2/C/ident/ft_system_setup

i had this option set in my defconfig from 2022-04 before it was broken by binman patches, but do not remember why i have added it.

but basicly it works again, so

Tested-By: Frank Wunderlich <frank-w@public-files.de>

regards Frank


> Gesendet: Sonntag, 19. Februar 2023 um 16:06 Uhr
> Von: "Jonas Karlman" <jonas@kwiboo.se>
> An: "Simon Glass" <sjg@chromium.org>, "Philipp Tomsich" <philipp.tomsich@vrull.eu>, "Kever Yang" <kever.yang@rock-chips.com>, "Joseph Chen" <chenjh@rock-chips.com>, "Alper Nebi Yasak" <alpernebiyasak@gmail.com>
> Cc: "Quentin Schulz" <quentin.schulz@theobroma-systems.com>, "Jagan Teki" <jagan@edgeble.ai>, "Heinrich Schuchardt" <xypron.glpk@gmx.de>, u-boot@lists.denx.de, "Jonas Karlman" <jonas@kwiboo.se>
> Betreff: [PATCH v4 0/4] rockchip: Use external TPL binary to create a working firmware image
>
> Rockchip SoCs typically use U-Boot TPL to initialize DRAM, then jumps
> back to BootRom to load next stage, U-Boot SPL, into DRAM. BootRom then
> jumps to U-Boot SPL to continue the boot flow.
>
> For RK356x there is no support to initialize DRAM using U-Boot
> TPL and instead an external TPL binary must be used to generate a
> bootable u-boot-rockchip.bin image.
>
> This adds a new rockchip-tpl entry to binman and make use of this new
> entry in rockchip-u-boot.dtsi.
>
> Build U-Boot with ROCKCHIP_TPL=/path/to/ddr.bin to generate a
> bootable u-boot-rockchip.bin image for RK356x.
>
> I have dropped the RFC patch that was related to showing a friendly
> message instead of a generic file not found message when TPL blob is
> missing in v3. Will address that in a follow-up series.
>
> The last patch that updates evb-rk3568_defconfig was dropped in v4.
> Will address that and more config options in a follow-up series.
>
> Changes in v4:
> - Only change init size limit for rk3328 and rk3568
> - Drop update evb-rk3568_defconfig patch
>
> Changes in v3:
> - Move test function last
> - Add help text to Kconfig option
> - Add build step for rk3568 to documentation
> - Resync init size limit table
> - Drop missing message RFC patch
>
> Changes in v2:
> - Renamed external-tpl to rockchip-tpl
> - Renamed EXTERNAL_TPL to ROCKCHIP_TPL
> - Add CONFIG_ROCKCHIP_EXTERNAL_TPL Kconfig option
> - New patch to sync init size limit in mkimage
> - New RFC patch to improve allow-missing/fake-ext-blobs handling for
>   binman mkimage entry
>
> Jonas Karlman (4):
>   binman: Add support for a rockchip-tpl entry
>   rockchip: Use an external TPL binary on RK3568
>   Revert "board: rockchip: Fix binman_init failure on EVB-RK3568"
>   rockchip: mkimage: Update init size limit for RK3328 and RK3568
>
>  Makefile                               |  1 +
>  arch/arm/dts/rockchip-u-boot.dtsi      | 10 ++++++++--
>  arch/arm/mach-rockchip/Kconfig         |  8 ++++++++
>  configs/evb-rk3568_defconfig           |  1 -
>  doc/board/rockchip/rockchip.rst        | 11 +++++++++++
>  tools/binman/entries.rst               | 14 ++++++++++++++
>  tools/binman/etype/rockchip_tpl.py     | 20 ++++++++++++++++++++
>  tools/binman/ftest.py                  |  7 +++++++
>  tools/binman/missing-blob-help         |  5 +++++
>  tools/binman/test/277_rockchip_tpl.dts | 16 ++++++++++++++++
>  tools/rkcommon.c                       |  4 ++--
>  11 files changed, 92 insertions(+), 5 deletions(-)
>  create mode 100644 tools/binman/etype/rockchip_tpl.py
>  create mode 100644 tools/binman/test/277_rockchip_tpl.dts
>
> --
> 2.39.2
>
>