El Mon, Jul 25, 2022 at 07:29:53PM +0200, Xavier Drudis Ferran deia:
> 
> I copy here the rockchip-u-boot.dtsi file and then 2 patches on top of yours.
>

Sorry I copied a dirty version that din't work. The patches were correct, the 
dtsi wasn't. 
 
> #else
>               collection {
>                       content = <&/binman/itb>;

It doesn't like this phandles nor just &itb. 

These patches were the real thing. Sorry for the noise.


> 
> >From 0f9cf7452a62268ec5978c80f46bf9323a269630 Mon Sep 17 00:00:00 2001
> From: Xavier Drudis Ferran <xdru...@tinet.cat>
> Date: Mon, 25 Jul 2022 17:35:27 +0200
> Subject: [PATCH] Align the fit images that binman produces to 8 bytes.
> 
> In commit 570c4636808 ("Makefile: Align fit-dtb.blob and u-boot.itb by
> 64bits") Michal Simek claims that according to the device tree spec,
> some things should be aligned to 4 bytes and some to 8, so passes -B 8
> to mkimage. Do the same when using binman so that we can try to
> replace make_fit_atf.py .
> 
> Should this be optional? I haven't found any uses of split-elf that I
> might be breaking, and Marek said it's from dt spec, so it should be
> always required. So I'm hard coding it until the need for being
> optional arises.
> ---
>  tools/binman/btool/mkimage.py | 4 +++-
>  tools/binman/etype/fit.py     | 1 +
>  2 files changed, 4 insertions(+), 1 deletion(-)
> 
> diff --git a/tools/binman/btool/mkimage.py b/tools/binman/btool/mkimage.py
> index c85bfe053c..d614d72d62 100644
> --- a/tools/binman/btool/mkimage.py
> +++ b/tools/binman/btool/mkimage.py
> @@ -22,7 +22,7 @@ class Bintoolmkimage(bintool.Bintool):
>  
>      # pylint: disable=R0913
>      def run(self, reset_timestamp=False, output_fname=None, external=False,
> -            pad=None, version=False):
> +            pad=None, version=False, align=None):
>          """Run mkimage
>  
>          Args:
> @@ -36,6 +36,8 @@ class Bintoolmkimage(bintool.Bintool):
>              version: True to get the mkimage version
>          """
>          args = []
> +        if align:
> +            args += ['-B', f'{align:x}']
>          if external:
>              args.append('-E')
>          if pad:
> diff --git a/tools/binman/etype/fit.py b/tools/binman/etype/fit.py
> index 12306623af..7b99b83fa3 100644
> --- a/tools/binman/etype/fit.py
> +++ b/tools/binman/etype/fit.py
> @@ -420,6 +420,7 @@ class Entry_fit(Entry_section):
>          ext_offset = self._fit_props.get('fit,external-offset')
>          if ext_offset is not None:
>              args = {
> +                'align': 8,
>                  'external': True,
>                  'pad': fdt_util.fdt32_to_cpu(ext_offset.value)
>                  }
> -- 
> 2.20.1
> 
> >From 9fc65a2eb55f742dd805ed96e3d2028b20078a03 Mon Sep 17 00:00:00 2001
> From: Xavier Drudis Ferran <xdru...@tinet.cat>
> Date: Mon, 25 Jul 2022 18:01:24 +0200
> Subject: [PATCH] Replace make_fit_atf.py with binman.
> 
> This boots my Rock Pi 4B, but likely needs more generalisation to
> cover more boards and configurations.
> ---
>  Makefile                           |  3 --
>  arch/arm/dts/rockchip-u-boot.dtsi  | 70 ++++++++++++++++++++++++++++++
>  configs/rock-pi-4-rk3399_defconfig |  1 +
>  3 files changed, 71 insertions(+), 3 deletions(-)
> 
> diff --git a/Makefile b/Makefile
> index 279aeacee3..ad739ef357 100644
> --- a/Makefile
> +++ b/Makefile
> @@ -997,9 +997,6 @@ endif
>  
>  ifeq ($(CONFIG_ARCH_ROCKCHIP)$(CONFIG_SPL),yy)
>  # Binman image dependencies
> -ifeq ($(CONFIG_ARM64),y)
> -INPUTS-y += u-boot.itb
> -endif
>  else
>  INPUTS-y += u-boot.img
>  endif
> diff --git a/arch/arm/dts/rockchip-u-boot.dtsi 
> b/arch/arm/dts/rockchip-u-boot.dtsi
> index 4c26caa92a..5a613650f5 100644
> --- a/arch/arm/dts/rockchip-u-boot.dtsi
> +++ b/arch/arm/dts/rockchip-u-boot.dtsi
> @@ -13,6 +13,75 @@
>  
>  #ifdef CONFIG_SPL
>  &binman {
> +     itb {
> +             filename = "u-boot.itb";
> +             fit {
> +                     filename = "u-boot.itb";
> +                     description = "U-Boot FIT";
> +                     fit,fdt-list = "of-list";
> +                     fit,external-offset=<0>;
> +
> +                     images {
> +                             uboot {
> +                                     description = "U-Boot (64-bit)";
> +                                     type = "standalone";
> +                                     os = "U-Boot";
> +                                     arch = "arm64";
> +                                     compression = "none";
> +                                     load = <CONFIG_SYS_TEXT_BASE>;
> +                                     u-boot-nodtb {
> +                                     };
> +                             };
> +#ifdef CONFIG_SPL_ATF
> +                             @atf_SEQ {
> +                                     fit,operation = "split-elf";
> +                                     description = "ARM Trusted Firmware";
> +                                     type = "firmware";
> +                                     arch = "arm64";
> +                                     os = "arm-trusted-firmware";
> +                                     compression = "none";
> +                                     fit,load;
> +                                     fit,entry;
> +                                     fit,data;
> +
> +                                     atf-bl31 {
> +                                     };
> +                             };
> +#endif
> +#ifdef CONFIG_TEE
> +                             @tee_SEQ {
> +                                     fit,operation = "split-elf";
> +                                     description = "TEE";
> +                                     type = "tee";
> +                                     arch = "arm64";
> +                                     os = "tee";
> +                                     compression = "none";
> +                                     fit,load;
> +                                     fit,entry;
> +                                     fit,data;
> +
> +                                     tee-os {
> +                                     };
> +                             };
> +#endif
> +                             @fdt_SEQ {
> +                                     description = "NAME.dtb";
> +                                     type = "flat_dt";
> +                                     compression = "none";
> +                             };
> +                     };
> +                     configurations {
> +                             default = "@config_DEFAULT-SEQ";
> +
> +                             @config_SEQ {
> +                                     description = "NAME.dtb";
> +                                     fdt = "fdt_SEQ";
> +                                     firmware = "atf_1";
> +                                     loadables = "uboot","atf_2","atf_3";
> +                             };
> +                     };
> +             };
> +     };
>       simple-bin {
>               filename = "u-boot-rockchip.bin";
>               pad-byte = <0xff>;
> @@ -62,6 +131,7 @@
>  #ifdef CONFIG_ARM64
>               blob {
>                       filename = "u-boot.itb";
> +
>  #else
>               u-boot-img {
>  #endif
> diff --git a/configs/rock-pi-4-rk3399_defconfig 
> b/configs/rock-pi-4-rk3399_defconfig
> index f12cf24cb4..1c07114528 100644
> --- a/configs/rock-pi-4-rk3399_defconfig
> +++ b/configs/rock-pi-4-rk3399_defconfig
> @@ -22,6 +22,7 @@ CONFIG_DEBUG_UART=y
>  CONFIG_HAS_CUSTOM_SYS_INIT_SP_ADDR=y
>  CONFIG_CUSTOM_SYS_INIT_SP_ADDR=0x3000000
>  CONFIG_TPL_SYS_MALLOC_F_LEN=0x4000
> +# CONFIG_USE_SPL_FIT_GENERATOR is not set
>  CONFIG_SYS_LOADADDR_ALIGN_DOWN_BITS=16
>  CONFIG_BOOTSTAGE=y
>  CONFIG_SPL_BOOTSTAGE=y
> -- 
> 2.20.1
> 

Reply via email to