Re: [PATCH 2/3] rockchip: Require an external TPL binary when TPL is missing

2023-02-14 Thread Jonas Karlman
Hi Kever,
On 2023-02-14 04:45, Kever Yang wrote:
> Hi Jonas,
> 
> On 2023/2/6 20:51, Jonas Karlman wrote:
>> Hi Quentin,
>> On 2023-02-06 12:26, Quentin Schulz wrote:
>>> Hi Jonas,
>>>
>>> On 2/5/23 21:21, Jonas Karlman wrote:
 Rockchip SoCs typically use U-Boot TPL to initialize DRAM, then jumps
 back to boot-rom to load the next stage of the boot flow, U-Boot SPL.

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

 Use the new external-tpl entry unless CONFIG_TPL=y to indicate that an
 external TPL binary must be provided to generate a working firmware.

 Signed-off-by: Jonas Karlman 
 ---
Makefile  |  1 +
arch/arm/dts/rockchip-u-boot.dtsi | 16 
tools/binman/missing-blob-help|  5 +
3 files changed, 18 insertions(+), 4 deletions(-)

 diff --git a/Makefile b/Makefile
 index 7eaf45496c1c..7e9272be937f 100644
 --- a/Makefile
 +++ b/Makefile
 @@ -1332,6 +1332,7 @@ cmd_binman = $(srctree)/tools/binman/binman $(if 
 $(BINMAN_DEBUG),-D) \
-a opensbi-path=${OPENSBI} \
-a default-dt=$(default_dt) \
-a scp-path=$(SCP) \
 +  -a external-tpl-path=$(EXTERNAL_TPL) \
-a spl-bss-pad=$(if $(CONFIG_SPL_SEPARATE_BSS),,1) \
-a tpl-bss-pad=$(if $(CONFIG_TPL_SEPARATE_BSS),,1) \
-a spl-dtb=$(CONFIG_SPL_OF_REAL) \
 diff --git a/arch/arm/dts/rockchip-u-boot.dtsi 
 b/arch/arm/dts/rockchip-u-boot.dtsi
 index 6c662a72d4f9..bc3bc9bc3e37 100644
 --- a/arch/arm/dts/rockchip-u-boot.dtsi
 +++ b/arch/arm/dts/rockchip-u-boot.dtsi
 @@ -20,12 +20,16 @@
mkimage {
filename = "idbloader.img";
args = "-n", CONFIG_SYS_SOC, "-T", "rksd";
 -#ifdef CONFIG_TPL
multiple-data-files;

 +#ifdef CONFIG_TPL
u-boot-tpl {
 -  };
 +#else
 +  external-tpl {
 +  filename = "ddr.bin";
 +  missing-msg = "external-tpl-rockchip";
#endif
 +  };
>>> NACK. This forces the use of a TPL (either built by U-Boot or external)
>>> which is not always the case. There are still boards without a TPL which
>>> work perfectly fine (at least I would hope so :) ).
>>>
>>> Basically there are three possible cases:
>>> SPL
>>> TPL+SPL
>>> TPL(external blob)+SPL
>>>
>>> Here you remove the ability to have SPL only.
>>>
>>> Hence why I suggested we add a new Kconfig option for EXTERNAL_TPL, not
>>> for the path but to explicit this third possibility.
>> Thanks for the feedback, I will add a Kconfig option to make this explicit.
>> We could also add the optional prop in the external-tpl node to only include
>> the external TPL when it is provided. This will require also fixing the
>> missing/optional handling for the mkimage entry.
> 
> Could you help to send the new patchset with this update?
> 

I have now send out a v2 of this, see [1].

[1] 
https://patchwork.ozlabs.org/project/uboot/cover/20230214103300.690542-1-jo...@kwiboo.se/

Regards,
Jonas

> 
> Thanks,
> 
> - Kever
> 



Re: [PATCH 2/3] rockchip: Require an external TPL binary when TPL is missing

2023-02-13 Thread Kever Yang

Hi Jonas,

On 2023/2/6 20:51, Jonas Karlman wrote:

Hi Quentin,
On 2023-02-06 12:26, Quentin Schulz wrote:

Hi Jonas,

On 2/5/23 21:21, Jonas Karlman wrote:

Rockchip SoCs typically use U-Boot TPL to initialize DRAM, then jumps
back to boot-rom to load the next stage of the boot flow, U-Boot SPL.

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

Use the new external-tpl entry unless CONFIG_TPL=y to indicate that an
external TPL binary must be provided to generate a working firmware.

Signed-off-by: Jonas Karlman 
---
   Makefile  |  1 +
   arch/arm/dts/rockchip-u-boot.dtsi | 16 
   tools/binman/missing-blob-help|  5 +
   3 files changed, 18 insertions(+), 4 deletions(-)

diff --git a/Makefile b/Makefile
index 7eaf45496c1c..7e9272be937f 100644
--- a/Makefile
+++ b/Makefile
@@ -1332,6 +1332,7 @@ cmd_binman = $(srctree)/tools/binman/binman $(if 
$(BINMAN_DEBUG),-D) \
-a opensbi-path=${OPENSBI} \
-a default-dt=$(default_dt) \
-a scp-path=$(SCP) \
+   -a external-tpl-path=$(EXTERNAL_TPL) \
-a spl-bss-pad=$(if $(CONFIG_SPL_SEPARATE_BSS),,1) \
-a tpl-bss-pad=$(if $(CONFIG_TPL_SEPARATE_BSS),,1) \
-a spl-dtb=$(CONFIG_SPL_OF_REAL) \
diff --git a/arch/arm/dts/rockchip-u-boot.dtsi 
b/arch/arm/dts/rockchip-u-boot.dtsi
index 6c662a72d4f9..bc3bc9bc3e37 100644
--- a/arch/arm/dts/rockchip-u-boot.dtsi
+++ b/arch/arm/dts/rockchip-u-boot.dtsi
@@ -20,12 +20,16 @@
mkimage {
filename = "idbloader.img";
args = "-n", CONFIG_SYS_SOC, "-T", "rksd";
-#ifdef CONFIG_TPL
multiple-data-files;
   
+#ifdef CONFIG_TPL

u-boot-tpl {
-   };
+#else
+   external-tpl {
+   filename = "ddr.bin";
+   missing-msg = "external-tpl-rockchip";
   #endif
+   };

NACK. This forces the use of a TPL (either built by U-Boot or external)
which is not always the case. There are still boards without a TPL which
work perfectly fine (at least I would hope so :) ).

Basically there are three possible cases:
SPL
TPL+SPL
TPL(external blob)+SPL

Here you remove the ability to have SPL only.

Hence why I suggested we add a new Kconfig option for EXTERNAL_TPL, not
for the path but to explicit this third possibility.

Thanks for the feedback, I will add a Kconfig option to make this explicit.
We could also add the optional prop in the external-tpl node to only include
the external TPL when it is provided. This will require also fixing the
missing/optional handling for the mkimage entry.


Could you help to send the new patchset with this update?


Thanks,

- Kever



Re: [PATCH 2/3] rockchip: Require an external TPL binary when TPL is missing

2023-02-13 Thread Kever Yang



On 2023/2/9 00:06, Quentin Schulz wrote:

Hi Kever,

On 2/8/23 16:41, Kever Yang wrote:

Hi Quentin,

On 2023/2/6 19:26, Quentin Schulz wrote:

Hi Jonas,

On 2/5/23 21:21, Jonas Karlman wrote:

Rockchip SoCs typically use U-Boot TPL to initialize DRAM, then jumps
back to boot-rom to load the next stage of the boot flow, U-Boot SPL.

For RK356x there is currently no support to initialize DRAM using 
U-Boot

TPL and instead an external TPL binary must be used to generate a
working u-boot-rockchip.bin image.

Use the new external-tpl entry unless CONFIG_TPL=y to indicate that an
external TPL binary must be provided to generate a working firmware.

Signed-off-by: Jonas Karlman 
---
  Makefile  |  1 +
  arch/arm/dts/rockchip-u-boot.dtsi | 16 
  tools/binman/missing-blob-help    |  5 +
  3 files changed, 18 insertions(+), 4 deletions(-)

diff --git a/Makefile b/Makefile
index 7eaf45496c1c..7e9272be937f 100644
--- a/Makefile
+++ b/Makefile
@@ -1332,6 +1332,7 @@ cmd_binman = $(srctree)/tools/binman/binman 
$(if $(BINMAN_DEBUG),-D) \

  -a opensbi-path=${OPENSBI} \
  -a default-dt=$(default_dt) \
  -a scp-path=$(SCP) \
+    -a external-tpl-path=$(EXTERNAL_TPL) \
  -a spl-bss-pad=$(if $(CONFIG_SPL_SEPARATE_BSS),,1) \
  -a tpl-bss-pad=$(if $(CONFIG_TPL_SEPARATE_BSS),,1) \
  -a spl-dtb=$(CONFIG_SPL_OF_REAL) \
diff --git a/arch/arm/dts/rockchip-u-boot.dtsi 
b/arch/arm/dts/rockchip-u-boot.dtsi

index 6c662a72d4f9..bc3bc9bc3e37 100644
--- a/arch/arm/dts/rockchip-u-boot.dtsi
+++ b/arch/arm/dts/rockchip-u-boot.dtsi
@@ -20,12 +20,16 @@
  mkimage {
  filename = "idbloader.img";
  args = "-n", CONFIG_SYS_SOC, "-T", "rksd";
-#ifdef CONFIG_TPL
  multiple-data-files;
  +#ifdef CONFIG_TPL
  u-boot-tpl {
-    };
+#else
+    external-tpl {
+    filename = "ddr.bin";
+    missing-msg = "external-tpl-rockchip";
  #endif
+    };


NACK. This forces the use of a TPL (either built by U-Boot or 
external) which is not always the case. There are still boards 
without a TPL which work perfectly fine (at least I would hope so :) ).


Basically there are three possible cases:
SPL
TPL+SPL
TPL(external blob)+SPL


I'm afraid all the boards support by mainline U-Boot is using 
"TPL(U-Boot or external)+SPL+U-Boot" mode, and this mode also always 
used by rockchip vendor branch.




That seems to be incorrect.

for conf in $(git grep -l ARCH_ROCKCHIP configs); do
    make $(basename $conf) > /dev/null 2>&1
    if ! grep -q CONFIG_TPL=y .config; then
    echo $conf does not enable TPL;
    fi
done

returns:
configs/chromebit_mickey_defconfig does not enable TPL
configs/chromebook_bob_defconfig does not enable TPL
configs/chromebook_jerry_defconfig does not enable TPL
configs/chromebook_kevin_defconfig does not enable TPL
configs/chromebook_minnie_defconfig does not enable TPL
configs/chromebook_speedy_defconfig does not enable TPL
configs/elgin-rv1108_defconfig does not enable TPL
configs/evb-rk3036_defconfig does not enable TPL
configs/evb-rk3128_defconfig does not enable TPL
configs/evb-rk3308_defconfig does not enable TPL
configs/evb-rk3568_defconfig does not enable TPL
configs/evb-rv1108_defconfig does not enable TPL
configs/ficus-rk3399_defconfig does not enable TPL
configs/geekbox_defconfig does not enable TPL
configs/kylin-rk3036_defconfig does not enable TPL
configs/miqi-rk3288_defconfig does not enable TPL
configs/phycore-rk3288_defconfig does not enable TPL
configs/popmetal-rk3288_defconfig does not enable TPL
configs/roc-cc-rk3308_defconfig does not enable TPL
configs/rock2_defconfig does not enable TPL
configs/rock_defconfig does not enable TPL
configs/sheep-rk3368_defconfig does not enable TPL

is there something I'm missing?


Most of them use simple SPL+U-Boot(for 32bit processer) or have external 
TPL.


We can keep an option to support SPL only case for now.



For "SPL+U-Boot" use case, it only happen many years ago in some of 
rk3288 board and rk3399 board,


the SPL will need to support both sdram driver and storage(SPI, 
SDCard, eMMC) driver and without back to BootRom,


and other function may add to SPL, but the sram size limit is always 
there, so all the rk3288 and rk3399 board have migrate to use 
"TPL+SPL+U-Boot.itb" mode.




It seems not all have migrated.

The "TPL+SPL+U-Boot.itb" is much clear and easy to maintine for all 
the boards and will be the only accept mode for new board support in 
the future on rockchip platform:


- TPL for dram init;

- SPL for storage init and load next stage firmware, decode FIT image 
with ATF/OPTEE support, secure boot support and etc;


- U-Boot.itb including ATF and U-Boot proper, maybe also OPTEE.

This model can very easy to do the debug with replace the binary from 
rockchip  vendor tree during board bringup.




That's fine by me, but we currently have Rockchip boards in mai

Re: [PATCH 2/3] rockchip: Require an external TPL binary when TPL is missing

2023-02-08 Thread Quentin Schulz

Hi Kever,

On 2/8/23 16:41, Kever Yang wrote:

Hi Quentin,

On 2023/2/6 19:26, Quentin Schulz wrote:

Hi Jonas,

On 2/5/23 21:21, Jonas Karlman wrote:

Rockchip SoCs typically use U-Boot TPL to initialize DRAM, then jumps
back to boot-rom to load the next stage of the boot flow, U-Boot SPL.

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

Use the new external-tpl entry unless CONFIG_TPL=y to indicate that an
external TPL binary must be provided to generate a working firmware.

Signed-off-by: Jonas Karlman 
---
  Makefile  |  1 +
  arch/arm/dts/rockchip-u-boot.dtsi | 16 
  tools/binman/missing-blob-help    |  5 +
  3 files changed, 18 insertions(+), 4 deletions(-)

diff --git a/Makefile b/Makefile
index 7eaf45496c1c..7e9272be937f 100644
--- a/Makefile
+++ b/Makefile
@@ -1332,6 +1332,7 @@ cmd_binman = $(srctree)/tools/binman/binman 
$(if $(BINMAN_DEBUG),-D) \

  -a opensbi-path=${OPENSBI} \
  -a default-dt=$(default_dt) \
  -a scp-path=$(SCP) \
+    -a external-tpl-path=$(EXTERNAL_TPL) \
  -a spl-bss-pad=$(if $(CONFIG_SPL_SEPARATE_BSS),,1) \
  -a tpl-bss-pad=$(if $(CONFIG_TPL_SEPARATE_BSS),,1) \
  -a spl-dtb=$(CONFIG_SPL_OF_REAL) \
diff --git a/arch/arm/dts/rockchip-u-boot.dtsi 
b/arch/arm/dts/rockchip-u-boot.dtsi

index 6c662a72d4f9..bc3bc9bc3e37 100644
--- a/arch/arm/dts/rockchip-u-boot.dtsi
+++ b/arch/arm/dts/rockchip-u-boot.dtsi
@@ -20,12 +20,16 @@
  mkimage {
  filename = "idbloader.img";
  args = "-n", CONFIG_SYS_SOC, "-T", "rksd";
-#ifdef CONFIG_TPL
  multiple-data-files;
  +#ifdef CONFIG_TPL
  u-boot-tpl {
-    };
+#else
+    external-tpl {
+    filename = "ddr.bin";
+    missing-msg = "external-tpl-rockchip";
  #endif
+    };


NACK. This forces the use of a TPL (either built by U-Boot or 
external) which is not always the case. There are still boards without 
a TPL which work perfectly fine (at least I would hope so :) ).


Basically there are three possible cases:
SPL
TPL+SPL
TPL(external blob)+SPL


I'm afraid all the boards support by mainline U-Boot is using 
"TPL(U-Boot or external)+SPL+U-Boot" mode, and this mode also always 
used by rockchip vendor branch.




That seems to be incorrect.

for conf in $(git grep -l ARCH_ROCKCHIP configs); do
make $(basename $conf) > /dev/null 2>&1
if ! grep -q CONFIG_TPL=y .config; then
echo $conf does not enable TPL;
fi
done

returns:
configs/chromebit_mickey_defconfig does not enable TPL
configs/chromebook_bob_defconfig does not enable TPL
configs/chromebook_jerry_defconfig does not enable TPL
configs/chromebook_kevin_defconfig does not enable TPL
configs/chromebook_minnie_defconfig does not enable TPL
configs/chromebook_speedy_defconfig does not enable TPL
configs/elgin-rv1108_defconfig does not enable TPL
configs/evb-rk3036_defconfig does not enable TPL
configs/evb-rk3128_defconfig does not enable TPL
configs/evb-rk3308_defconfig does not enable TPL
configs/evb-rk3568_defconfig does not enable TPL
configs/evb-rv1108_defconfig does not enable TPL
configs/ficus-rk3399_defconfig does not enable TPL
configs/geekbox_defconfig does not enable TPL
configs/kylin-rk3036_defconfig does not enable TPL
configs/miqi-rk3288_defconfig does not enable TPL
configs/phycore-rk3288_defconfig does not enable TPL
configs/popmetal-rk3288_defconfig does not enable TPL
configs/roc-cc-rk3308_defconfig does not enable TPL
configs/rock2_defconfig does not enable TPL
configs/rock_defconfig does not enable TPL
configs/sheep-rk3368_defconfig does not enable TPL

is there something I'm missing?

For "SPL+U-Boot" use case, it only happen many years ago in some of 
rk3288 board and rk3399 board,


the SPL will need to support both sdram driver and storage(SPI, SDCard, 
eMMC) driver and without back to BootRom,


and other function may add to SPL, but the sram size limit is always 
there, so all the rk3288 and rk3399 board have migrate to use 
"TPL+SPL+U-Boot.itb" mode.




It seems not all have migrated.

The "TPL+SPL+U-Boot.itb" is much clear and easy to maintine for all the 
boards and will be the only accept mode for new board support in the 
future on rockchip platform:


- TPL for dram init;

- SPL for storage init and load next stage firmware, decode FIT image 
with ATF/OPTEE support, secure boot support and etc;


- U-Boot.itb including ATF and U-Boot proper, maybe also OPTEE.

This model can very easy to do the debug with replace the binary from 
rockchip  vendor tree during board bringup.




That's fine by me, but we currently have Rockchip boards in mainline 
which do NOT have TPL enabled, so we need to handle those properly, in 
binman since it's now the only way to generate the images.


The SPL+U-Boot mode can only happen for legacy 

Re: [PATCH 2/3] rockchip: Require an external TPL binary when TPL is missing

2023-02-08 Thread Kever Yang

Hi Quentin,

On 2023/2/6 19:26, Quentin Schulz wrote:

Hi Jonas,

On 2/5/23 21:21, Jonas Karlman wrote:

Rockchip SoCs typically use U-Boot TPL to initialize DRAM, then jumps
back to boot-rom to load the next stage of the boot flow, U-Boot SPL.

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

Use the new external-tpl entry unless CONFIG_TPL=y to indicate that an
external TPL binary must be provided to generate a working firmware.

Signed-off-by: Jonas Karlman 
---
  Makefile  |  1 +
  arch/arm/dts/rockchip-u-boot.dtsi | 16 
  tools/binman/missing-blob-help    |  5 +
  3 files changed, 18 insertions(+), 4 deletions(-)

diff --git a/Makefile b/Makefile
index 7eaf45496c1c..7e9272be937f 100644
--- a/Makefile
+++ b/Makefile
@@ -1332,6 +1332,7 @@ cmd_binman = $(srctree)/tools/binman/binman 
$(if $(BINMAN_DEBUG),-D) \

  -a opensbi-path=${OPENSBI} \
  -a default-dt=$(default_dt) \
  -a scp-path=$(SCP) \
+    -a external-tpl-path=$(EXTERNAL_TPL) \
  -a spl-bss-pad=$(if $(CONFIG_SPL_SEPARATE_BSS),,1) \
  -a tpl-bss-pad=$(if $(CONFIG_TPL_SEPARATE_BSS),,1) \
  -a spl-dtb=$(CONFIG_SPL_OF_REAL) \
diff --git a/arch/arm/dts/rockchip-u-boot.dtsi 
b/arch/arm/dts/rockchip-u-boot.dtsi

index 6c662a72d4f9..bc3bc9bc3e37 100644
--- a/arch/arm/dts/rockchip-u-boot.dtsi
+++ b/arch/arm/dts/rockchip-u-boot.dtsi
@@ -20,12 +20,16 @@
  mkimage {
  filename = "idbloader.img";
  args = "-n", CONFIG_SYS_SOC, "-T", "rksd";
-#ifdef CONFIG_TPL
  multiple-data-files;
  +#ifdef CONFIG_TPL
  u-boot-tpl {
-    };
+#else
+    external-tpl {
+    filename = "ddr.bin";
+    missing-msg = "external-tpl-rockchip";
  #endif
+    };


NACK. This forces the use of a TPL (either built by U-Boot or 
external) which is not always the case. There are still boards without 
a TPL which work perfectly fine (at least I would hope so :) ).


Basically there are three possible cases:
SPL
TPL+SPL
TPL(external blob)+SPL


I'm afraid all the boards support by mainline U-Boot is using 
"TPL(U-Boot or external)+SPL+U-Boot" mode, and this mode also always 
used by rockchip vendor branch.


For "SPL+U-Boot" use case, it only happen many years ago in some of 
rk3288 board and rk3399 board,


the SPL will need to support both sdram driver and storage(SPI, SDCard, 
eMMC) driver and without back to BootRom,


and other function may add to SPL, but the sram size limit is always 
there, so all the rk3288 and rk3399 board have migrate to use 
"TPL+SPL+U-Boot.itb" mode.


The "TPL+SPL+U-Boot.itb" is much clear and easy to maintine for all the 
boards and will be the only accept mode for new board support in the 
future on rockchip platform:


- TPL for dram init;

- SPL for storage init and load next stage firmware, decode FIT image 
with ATF/OPTEE support, secure boot support and etc;


- U-Boot.itb including ATF and U-Boot proper, maybe also OPTEE.

This model can very easy to do the debug with replace the binary from 
rockchip  vendor tree during board bringup.


The SPL+U-Boot mode can only happen for legacy board with only need 
U-Boot raw image instead of itb which including trust support,


this kind of board can get the image with only one mkimage command, I 
don't think it will need binman support because it only have one image.



Thanks,

- Kever



Here you remove the ability to have SPL only.

Hence why I suggested we add a new Kconfig option for EXTERNAL_TPL, 
not for the path but to explicit this third possibility.


Cheers,
Quentin


  u-boot-spl {
  };
  };
@@ -134,12 +138,16 @@
  mkimage {
  filename = "idbloader-spi.img";
  args = "-n", CONFIG_SYS_SOC, "-T", "rkspi";
-#ifdef CONFIG_TPL
  multiple-data-files;
  +#ifdef CONFIG_TPL
  u-boot-tpl {
-    };
+#else
+    external-tpl {
+    filename = "ddr.bin";
+    missing-msg = "external-tpl-rockchip";
  #endif
+    };
  u-boot-spl {
  };
  };
diff --git a/tools/binman/missing-blob-help 
b/tools/binman/missing-blob-help

index c61ca02a35ee..e850824032dd 100644
--- a/tools/binman/missing-blob-help
+++ b/tools/binman/missing-blob-help
@@ -14,6 +14,11 @@ atf-bl31-sunxi:
  Please read the section on ARM Trusted Firmware (ATF) in
  board/sunxi/README.sunxi64
  +external-tpl-rockchip:
+External TPL is required to initialize DRAM. Get external TPL binary 
and

+build with EXTERNAL_TPL=/path/to/ddr.bin. One possible source for
+external TPL binary is 
https://urldefense.com/v3/__https://github.com/rockchip-linux/rkbin__;!!OOPJP91ZZw!jRwonQRHKoxzegx3S3cRYfalkhW1ESLyBCTmVc2c6fnmPaQBOZyxG2I7phwM3pEZxR2QIHQG8Hw3JStyx4tDcMsalwYDCg$ 
.

+
  

Re: [PATCH 2/3] rockchip: Require an external TPL binary when TPL is missing

2023-02-06 Thread Simon Glass
Hi Jonas,

On Sun, 5 Feb 2023 at 13:21, Jonas Karlman  wrote:
>
> Rockchip SoCs typically use U-Boot TPL to initialize DRAM, then jumps
> back to boot-rom to load the next stage of the boot flow, U-Boot SPL.
>
> For RK356x there is currently no support to initialize DRAM using U-Boot
> TPL and instead an external TPL binary must be used to generate a
> working u-boot-rockchip.bin image.
>
> Use the new external-tpl entry unless CONFIG_TPL=y to indicate that an
> external TPL binary must be provided to generate a working firmware.
>
> Signed-off-by: Jonas Karlman 
> ---
>  Makefile  |  1 +
>  arch/arm/dts/rockchip-u-boot.dtsi | 16 
>  tools/binman/missing-blob-help|  5 +
>  3 files changed, 18 insertions(+), 4 deletions(-)
>
> diff --git a/Makefile b/Makefile
> index 7eaf45496c1c..7e9272be937f 100644
> --- a/Makefile
> +++ b/Makefile
> @@ -1332,6 +1332,7 @@ cmd_binman = $(srctree)/tools/binman/binman $(if 
> $(BINMAN_DEBUG),-D) \
> -a opensbi-path=${OPENSBI} \
> -a default-dt=$(default_dt) \
> -a scp-path=$(SCP) \
> +   -a external-tpl-path=$(EXTERNAL_TPL) \

rockchip-tpl-path

> -a spl-bss-pad=$(if $(CONFIG_SPL_SEPARATE_BSS),,1) \
> -a tpl-bss-pad=$(if $(CONFIG_TPL_SEPARATE_BSS),,1) \
> -a spl-dtb=$(CONFIG_SPL_OF_REAL) \
> diff --git a/arch/arm/dts/rockchip-u-boot.dtsi 
> b/arch/arm/dts/rockchip-u-boot.dtsi
> index 6c662a72d4f9..bc3bc9bc3e37 100644
> --- a/arch/arm/dts/rockchip-u-boot.dtsi
> +++ b/arch/arm/dts/rockchip-u-boot.dtsi
> @@ -20,12 +20,16 @@
> mkimage {
> filename = "idbloader.img";
> args = "-n", CONFIG_SYS_SOC, "-T", "rksd";
> -#ifdef CONFIG_TPL
> multiple-data-files;
>
> +#ifdef CONFIG_TPL

As you said, this needs an explicit config

> u-boot-tpl {
> -   };
> +#else
> +   external-tpl {
> +   filename = "ddr.bin";
> +   missing-msg = "external-tpl-rockchip";
>  #endif
> +   };
> u-boot-spl {
> };
> };
> @@ -134,12 +138,16 @@
> mkimage {
> filename = "idbloader-spi.img";
> args = "-n", CONFIG_SYS_SOC, "-T", "rkspi";
> -#ifdef CONFIG_TPL
> multiple-data-files;
>
> +#ifdef CONFIG_TPL
> u-boot-tpl {
> -   };
> +#else
> +   external-tpl {
> +   filename = "ddr.bin";
> +   missing-msg = "external-tpl-rockchip";
>  #endif
> +   };
> u-boot-spl {
> };
> };
> diff --git a/tools/binman/missing-blob-help b/tools/binman/missing-blob-help
> index c61ca02a35ee..e850824032dd 100644
> --- a/tools/binman/missing-blob-help
> +++ b/tools/binman/missing-blob-help
> @@ -14,6 +14,11 @@ atf-bl31-sunxi:
>  Please read the section on ARM Trusted Firmware (ATF) in
>  board/sunxi/README.sunxi64
>
> +external-tpl-rockchip:
> +External TPL is required to initialize DRAM. Get external TPL binary and
> +build with EXTERNAL_TPL=/path/to/ddr.bin. One possible source for
> +external TPL binary is https://github.com/rockchip-linux/rkbin.
> +
>  scp-sunxi:
>  SCP firmware is required for system suspend, but is otherwise optional.
>  Please read the section on SCP firmware in board/sunxi/README.sunxi64
> --
> 2.39.1
>

Regards,
Simon


Re: [PATCH 2/3] rockchip: Require an external TPL binary when TPL is missing

2023-02-06 Thread Jonas Karlman
Hi Quentin,
On 2023-02-06 12:26, Quentin Schulz wrote:
> Hi Jonas,
> 
> On 2/5/23 21:21, Jonas Karlman wrote:
>> Rockchip SoCs typically use U-Boot TPL to initialize DRAM, then jumps
>> back to boot-rom to load the next stage of the boot flow, U-Boot SPL.
>>
>> For RK356x there is currently no support to initialize DRAM using U-Boot
>> TPL and instead an external TPL binary must be used to generate a
>> working u-boot-rockchip.bin image.
>>
>> Use the new external-tpl entry unless CONFIG_TPL=y to indicate that an
>> external TPL binary must be provided to generate a working firmware.
>>
>> Signed-off-by: Jonas Karlman 
>> ---
>>   Makefile  |  1 +
>>   arch/arm/dts/rockchip-u-boot.dtsi | 16 
>>   tools/binman/missing-blob-help|  5 +
>>   3 files changed, 18 insertions(+), 4 deletions(-)
>>
>> diff --git a/Makefile b/Makefile
>> index 7eaf45496c1c..7e9272be937f 100644
>> --- a/Makefile
>> +++ b/Makefile
>> @@ -1332,6 +1332,7 @@ cmd_binman = $(srctree)/tools/binman/binman $(if 
>> $(BINMAN_DEBUG),-D) \
>>  -a opensbi-path=${OPENSBI} \
>>  -a default-dt=$(default_dt) \
>>  -a scp-path=$(SCP) \
>> +-a external-tpl-path=$(EXTERNAL_TPL) \
>>  -a spl-bss-pad=$(if $(CONFIG_SPL_SEPARATE_BSS),,1) \
>>  -a tpl-bss-pad=$(if $(CONFIG_TPL_SEPARATE_BSS),,1) \
>>  -a spl-dtb=$(CONFIG_SPL_OF_REAL) \
>> diff --git a/arch/arm/dts/rockchip-u-boot.dtsi 
>> b/arch/arm/dts/rockchip-u-boot.dtsi
>> index 6c662a72d4f9..bc3bc9bc3e37 100644
>> --- a/arch/arm/dts/rockchip-u-boot.dtsi
>> +++ b/arch/arm/dts/rockchip-u-boot.dtsi
>> @@ -20,12 +20,16 @@
>>  mkimage {
>>  filename = "idbloader.img";
>>  args = "-n", CONFIG_SYS_SOC, "-T", "rksd";
>> -#ifdef CONFIG_TPL
>>  multiple-data-files;
>>   
>> +#ifdef CONFIG_TPL
>>  u-boot-tpl {
>> -};
>> +#else
>> +external-tpl {
>> +filename = "ddr.bin";
>> +missing-msg = "external-tpl-rockchip";
>>   #endif
>> +};
> 
> NACK. This forces the use of a TPL (either built by U-Boot or external) 
> which is not always the case. There are still boards without a TPL which 
> work perfectly fine (at least I would hope so :) ).
> 
> Basically there are three possible cases:
> SPL
> TPL+SPL
> TPL(external blob)+SPL
> 
> Here you remove the ability to have SPL only.
> 
> Hence why I suggested we add a new Kconfig option for EXTERNAL_TPL, not 
> for the path but to explicit this third possibility.

Thanks for the feedback, I will add a Kconfig option to make this explicit.
We could also add the optional prop in the external-tpl node to only include
the external TPL when it is provided. This will require also fixing the
missing/optional handling for the mkimage entry.

Regards,
Jonas

> 
> Cheers,
> Quentin
> 
>>  u-boot-spl {
>>  };
>>  };
>> @@ -134,12 +138,16 @@
>>  mkimage {
>>  filename = "idbloader-spi.img";
>>  args = "-n", CONFIG_SYS_SOC, "-T", "rkspi";
>> -#ifdef CONFIG_TPL
>>  multiple-data-files;
>>   
>> +#ifdef CONFIG_TPL
>>  u-boot-tpl {
>> -};
>> +#else
>> +external-tpl {
>> +filename = "ddr.bin";
>> +missing-msg = "external-tpl-rockchip";
>>   #endif
>> +};
>>  u-boot-spl {
>>  };
>>  };
>> diff --git a/tools/binman/missing-blob-help b/tools/binman/missing-blob-help
>> index c61ca02a35ee..e850824032dd 100644
>> --- a/tools/binman/missing-blob-help
>> +++ b/tools/binman/missing-blob-help
>> @@ -14,6 +14,11 @@ atf-bl31-sunxi:
>>   Please read the section on ARM Trusted Firmware (ATF) in
>>   board/sunxi/README.sunxi64
>>   
>> +external-tpl-rockchip:
>> +External TPL is required to initialize DRAM. Get external TPL binary and
>> +build with EXTERNAL_TPL=/path/to/ddr.bin. One possible source for
>> +external TPL binary is 
>> https://urldefense.com/v3/__https://github.com/rockchip-linux/rkbin__;!!OOPJP91ZZw!jRwonQRHKoxzegx3S3cRYfalkhW1ESLyBCTmVc2c6fnmPaQBOZyxG2I7phwM3pEZxR2QIHQG8Hw3JStyx4tDcMsalwYDCg$
>>  .
>> +
>>   scp-sunxi:
>>   SCP firmware is required for system suspend, but is otherwise optional.
>>   Please read the section on SCP firmware in board/sunxi/README.sunxi64



Re: [PATCH 2/3] rockchip: Require an external TPL binary when TPL is missing

2023-02-06 Thread Quentin Schulz

Hi Jonas,

On 2/5/23 21:21, Jonas Karlman wrote:

Rockchip SoCs typically use U-Boot TPL to initialize DRAM, then jumps
back to boot-rom to load the next stage of the boot flow, U-Boot SPL.

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

Use the new external-tpl entry unless CONFIG_TPL=y to indicate that an
external TPL binary must be provided to generate a working firmware.

Signed-off-by: Jonas Karlman 
---
  Makefile  |  1 +
  arch/arm/dts/rockchip-u-boot.dtsi | 16 
  tools/binman/missing-blob-help|  5 +
  3 files changed, 18 insertions(+), 4 deletions(-)

diff --git a/Makefile b/Makefile
index 7eaf45496c1c..7e9272be937f 100644
--- a/Makefile
+++ b/Makefile
@@ -1332,6 +1332,7 @@ cmd_binman = $(srctree)/tools/binman/binman $(if 
$(BINMAN_DEBUG),-D) \
-a opensbi-path=${OPENSBI} \
-a default-dt=$(default_dt) \
-a scp-path=$(SCP) \
+   -a external-tpl-path=$(EXTERNAL_TPL) \
-a spl-bss-pad=$(if $(CONFIG_SPL_SEPARATE_BSS),,1) \
-a tpl-bss-pad=$(if $(CONFIG_TPL_SEPARATE_BSS),,1) \
-a spl-dtb=$(CONFIG_SPL_OF_REAL) \
diff --git a/arch/arm/dts/rockchip-u-boot.dtsi 
b/arch/arm/dts/rockchip-u-boot.dtsi
index 6c662a72d4f9..bc3bc9bc3e37 100644
--- a/arch/arm/dts/rockchip-u-boot.dtsi
+++ b/arch/arm/dts/rockchip-u-boot.dtsi
@@ -20,12 +20,16 @@
mkimage {
filename = "idbloader.img";
args = "-n", CONFIG_SYS_SOC, "-T", "rksd";
-#ifdef CONFIG_TPL
multiple-data-files;
  
+#ifdef CONFIG_TPL

u-boot-tpl {
-   };
+#else
+   external-tpl {
+   filename = "ddr.bin";
+   missing-msg = "external-tpl-rockchip";
  #endif
+   };


NACK. This forces the use of a TPL (either built by U-Boot or external) 
which is not always the case. There are still boards without a TPL which 
work perfectly fine (at least I would hope so :) ).


Basically there are three possible cases:
SPL
TPL+SPL
TPL(external blob)+SPL

Here you remove the ability to have SPL only.

Hence why I suggested we add a new Kconfig option for EXTERNAL_TPL, not 
for the path but to explicit this third possibility.


Cheers,
Quentin


u-boot-spl {
};
};
@@ -134,12 +138,16 @@
mkimage {
filename = "idbloader-spi.img";
args = "-n", CONFIG_SYS_SOC, "-T", "rkspi";
-#ifdef CONFIG_TPL
multiple-data-files;
  
+#ifdef CONFIG_TPL

u-boot-tpl {
-   };
+#else
+   external-tpl {
+   filename = "ddr.bin";
+   missing-msg = "external-tpl-rockchip";
  #endif
+   };
u-boot-spl {
};
};
diff --git a/tools/binman/missing-blob-help b/tools/binman/missing-blob-help
index c61ca02a35ee..e850824032dd 100644
--- a/tools/binman/missing-blob-help
+++ b/tools/binman/missing-blob-help
@@ -14,6 +14,11 @@ atf-bl31-sunxi:
  Please read the section on ARM Trusted Firmware (ATF) in
  board/sunxi/README.sunxi64
  
+external-tpl-rockchip:

+External TPL is required to initialize DRAM. Get external TPL binary and
+build with EXTERNAL_TPL=/path/to/ddr.bin. One possible source for
+external TPL binary is 
https://urldefense.com/v3/__https://github.com/rockchip-linux/rkbin__;!!OOPJP91ZZw!jRwonQRHKoxzegx3S3cRYfalkhW1ESLyBCTmVc2c6fnmPaQBOZyxG2I7phwM3pEZxR2QIHQG8Hw3JStyx4tDcMsalwYDCg$
 .
+
  scp-sunxi:
  SCP firmware is required for system suspend, but is otherwise optional.
  Please read the section on SCP firmware in board/sunxi/README.sunxi64


Re: [PATCH 2/3] rockchip: Require an external TPL binary when TPL is missing

2023-02-05 Thread Jonas Karlman
Hi Jagan,

On 2023-02-05 21:28, Jagan Teki wrote:
> On Mon, Feb 6, 2023 at 1:52 AM Jonas Karlman  wrote:
>>
>> Rockchip SoCs typically use U-Boot TPL to initialize DRAM, then jumps
>> back to boot-rom to load the next stage of the boot flow, U-Boot SPL.
>>
>> For RK356x there is currently no support to initialize DRAM using U-Boot
>> TPL and instead an external TPL binary must be used to generate a
>> working u-boot-rockchip.bin image.
>>
>> Use the new external-tpl entry unless CONFIG_TPL=y to indicate that an
>> external TPL binary must be provided to generate a working firmware.
>>
>> Signed-off-by: Jonas Karlman 
>> ---
>>  Makefile  |  1 +
>>  arch/arm/dts/rockchip-u-boot.dtsi | 16 
>>  tools/binman/missing-blob-help|  5 +
>>  3 files changed, 18 insertions(+), 4 deletions(-)
>>
>> diff --git a/Makefile b/Makefile
>> index 7eaf45496c1c..7e9272be937f 100644
>> --- a/Makefile
>> +++ b/Makefile
>> @@ -1332,6 +1332,7 @@ cmd_binman = $(srctree)/tools/binman/binman $(if 
>> $(BINMAN_DEBUG),-D) \
>> -a opensbi-path=${OPENSBI} \
>> -a default-dt=$(default_dt) \
>> -a scp-path=$(SCP) \
>> +   -a external-tpl-path=$(EXTERNAL_TPL) \
>> -a spl-bss-pad=$(if $(CONFIG_SPL_SEPARATE_BSS),,1) \
>> -a tpl-bss-pad=$(if $(CONFIG_TPL_SEPARATE_BSS),,1) \
>> -a spl-dtb=$(CONFIG_SPL_OF_REAL) \
>> diff --git a/arch/arm/dts/rockchip-u-boot.dtsi 
>> b/arch/arm/dts/rockchip-u-boot.dtsi
>> index 6c662a72d4f9..bc3bc9bc3e37 100644
>> --- a/arch/arm/dts/rockchip-u-boot.dtsi
>> +++ b/arch/arm/dts/rockchip-u-boot.dtsi
>> @@ -20,12 +20,16 @@
>> mkimage {
>> filename = "idbloader.img";
>> args = "-n", CONFIG_SYS_SOC, "-T", "rksd";
>> -#ifdef CONFIG_TPL
>> multiple-data-files;
>>
>> +#ifdef CONFIG_TPL
>> u-boot-tpl {
>> -   };
>> +#else
>> +   external-tpl {
>> +   filename = "ddr.bin";
>> +   missing-msg = "external-tpl-rockchip";
>>  #endif
>> +   };
>> u-boot-spl {
>> };
>> };
>> @@ -134,12 +138,16 @@
>> mkimage {
>> filename = "idbloader-spi.img";
>> args = "-n", CONFIG_SYS_SOC, "-T", "rkspi";
>> -#ifdef CONFIG_TPL
>> multiple-data-files;
>>
>> +#ifdef CONFIG_TPL
>> u-boot-tpl {
>> -   };
>> +#else
>> +   external-tpl {
>> +   filename = "ddr.bin";
>> +   missing-msg = "external-tpl-rockchip";
>>  #endif
>> +   };
>> u-boot-spl {
>> };
>> };
>> diff --git a/tools/binman/missing-blob-help b/tools/binman/missing-blob-help
>> index c61ca02a35ee..e850824032dd 100644
>> --- a/tools/binman/missing-blob-help
>> +++ b/tools/binman/missing-blob-help
>> @@ -14,6 +14,11 @@ atf-bl31-sunxi:
>>  Please read the section on ARM Trusted Firmware (ATF) in
>>  board/sunxi/README.sunxi64
>>
>> +external-tpl-rockchip:
>> +External TPL is required to initialize DRAM. Get external TPL binary and
>> +build with EXTERNAL_TPL=/path/to/ddr.bin. One possible source for
> 
> Look like this requires DDR bin renaming every time, Is there any
> possibility to use a direct ddr bin name instead of ddr.bin as we did
> for BL31 elf?
> $ export EXTERNAL_TPL=rk3588_ddr_lp4_2112MHz_lp5_2736MHz_v1.08.bin

By default it will look for a ddr.bin in the binman include folders, or
it should be possible to use export EXTERNAL_TPL= in the same way you
can use export BL31=.

Regards,
Jonas

> 
> Jagan.



Re: [PATCH 2/3] rockchip: Require an external TPL binary when TPL is missing

2023-02-05 Thread Jagan Teki
On Mon, Feb 6, 2023 at 1:52 AM Jonas Karlman  wrote:
>
> Rockchip SoCs typically use U-Boot TPL to initialize DRAM, then jumps
> back to boot-rom to load the next stage of the boot flow, U-Boot SPL.
>
> For RK356x there is currently no support to initialize DRAM using U-Boot
> TPL and instead an external TPL binary must be used to generate a
> working u-boot-rockchip.bin image.
>
> Use the new external-tpl entry unless CONFIG_TPL=y to indicate that an
> external TPL binary must be provided to generate a working firmware.
>
> Signed-off-by: Jonas Karlman 
> ---
>  Makefile  |  1 +
>  arch/arm/dts/rockchip-u-boot.dtsi | 16 
>  tools/binman/missing-blob-help|  5 +
>  3 files changed, 18 insertions(+), 4 deletions(-)
>
> diff --git a/Makefile b/Makefile
> index 7eaf45496c1c..7e9272be937f 100644
> --- a/Makefile
> +++ b/Makefile
> @@ -1332,6 +1332,7 @@ cmd_binman = $(srctree)/tools/binman/binman $(if 
> $(BINMAN_DEBUG),-D) \
> -a opensbi-path=${OPENSBI} \
> -a default-dt=$(default_dt) \
> -a scp-path=$(SCP) \
> +   -a external-tpl-path=$(EXTERNAL_TPL) \
> -a spl-bss-pad=$(if $(CONFIG_SPL_SEPARATE_BSS),,1) \
> -a tpl-bss-pad=$(if $(CONFIG_TPL_SEPARATE_BSS),,1) \
> -a spl-dtb=$(CONFIG_SPL_OF_REAL) \
> diff --git a/arch/arm/dts/rockchip-u-boot.dtsi 
> b/arch/arm/dts/rockchip-u-boot.dtsi
> index 6c662a72d4f9..bc3bc9bc3e37 100644
> --- a/arch/arm/dts/rockchip-u-boot.dtsi
> +++ b/arch/arm/dts/rockchip-u-boot.dtsi
> @@ -20,12 +20,16 @@
> mkimage {
> filename = "idbloader.img";
> args = "-n", CONFIG_SYS_SOC, "-T", "rksd";
> -#ifdef CONFIG_TPL
> multiple-data-files;
>
> +#ifdef CONFIG_TPL
> u-boot-tpl {
> -   };
> +#else
> +   external-tpl {
> +   filename = "ddr.bin";
> +   missing-msg = "external-tpl-rockchip";
>  #endif
> +   };
> u-boot-spl {
> };
> };
> @@ -134,12 +138,16 @@
> mkimage {
> filename = "idbloader-spi.img";
> args = "-n", CONFIG_SYS_SOC, "-T", "rkspi";
> -#ifdef CONFIG_TPL
> multiple-data-files;
>
> +#ifdef CONFIG_TPL
> u-boot-tpl {
> -   };
> +#else
> +   external-tpl {
> +   filename = "ddr.bin";
> +   missing-msg = "external-tpl-rockchip";
>  #endif
> +   };
> u-boot-spl {
> };
> };
> diff --git a/tools/binman/missing-blob-help b/tools/binman/missing-blob-help
> index c61ca02a35ee..e850824032dd 100644
> --- a/tools/binman/missing-blob-help
> +++ b/tools/binman/missing-blob-help
> @@ -14,6 +14,11 @@ atf-bl31-sunxi:
>  Please read the section on ARM Trusted Firmware (ATF) in
>  board/sunxi/README.sunxi64
>
> +external-tpl-rockchip:
> +External TPL is required to initialize DRAM. Get external TPL binary and
> +build with EXTERNAL_TPL=/path/to/ddr.bin. One possible source for

Look like this requires DDR bin renaming every time, Is there any
possibility to use a direct ddr bin name instead of ddr.bin as we did
for BL31 elf?
$ export EXTERNAL_TPL=rk3588_ddr_lp4_2112MHz_lp5_2736MHz_v1.08.bin

Jagan.


[PATCH 2/3] rockchip: Require an external TPL binary when TPL is missing

2023-02-05 Thread Jonas Karlman
Rockchip SoCs typically use U-Boot TPL to initialize DRAM, then jumps
back to boot-rom to load the next stage of the boot flow, U-Boot SPL.

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

Use the new external-tpl entry unless CONFIG_TPL=y to indicate that an
external TPL binary must be provided to generate a working firmware.

Signed-off-by: Jonas Karlman 
---
 Makefile  |  1 +
 arch/arm/dts/rockchip-u-boot.dtsi | 16 
 tools/binman/missing-blob-help|  5 +
 3 files changed, 18 insertions(+), 4 deletions(-)

diff --git a/Makefile b/Makefile
index 7eaf45496c1c..7e9272be937f 100644
--- a/Makefile
+++ b/Makefile
@@ -1332,6 +1332,7 @@ cmd_binman = $(srctree)/tools/binman/binman $(if 
$(BINMAN_DEBUG),-D) \
-a opensbi-path=${OPENSBI} \
-a default-dt=$(default_dt) \
-a scp-path=$(SCP) \
+   -a external-tpl-path=$(EXTERNAL_TPL) \
-a spl-bss-pad=$(if $(CONFIG_SPL_SEPARATE_BSS),,1) \
-a tpl-bss-pad=$(if $(CONFIG_TPL_SEPARATE_BSS),,1) \
-a spl-dtb=$(CONFIG_SPL_OF_REAL) \
diff --git a/arch/arm/dts/rockchip-u-boot.dtsi 
b/arch/arm/dts/rockchip-u-boot.dtsi
index 6c662a72d4f9..bc3bc9bc3e37 100644
--- a/arch/arm/dts/rockchip-u-boot.dtsi
+++ b/arch/arm/dts/rockchip-u-boot.dtsi
@@ -20,12 +20,16 @@
mkimage {
filename = "idbloader.img";
args = "-n", CONFIG_SYS_SOC, "-T", "rksd";
-#ifdef CONFIG_TPL
multiple-data-files;
 
+#ifdef CONFIG_TPL
u-boot-tpl {
-   };
+#else
+   external-tpl {
+   filename = "ddr.bin";
+   missing-msg = "external-tpl-rockchip";
 #endif
+   };
u-boot-spl {
};
};
@@ -134,12 +138,16 @@
mkimage {
filename = "idbloader-spi.img";
args = "-n", CONFIG_SYS_SOC, "-T", "rkspi";
-#ifdef CONFIG_TPL
multiple-data-files;
 
+#ifdef CONFIG_TPL
u-boot-tpl {
-   };
+#else
+   external-tpl {
+   filename = "ddr.bin";
+   missing-msg = "external-tpl-rockchip";
 #endif
+   };
u-boot-spl {
};
};
diff --git a/tools/binman/missing-blob-help b/tools/binman/missing-blob-help
index c61ca02a35ee..e850824032dd 100644
--- a/tools/binman/missing-blob-help
+++ b/tools/binman/missing-blob-help
@@ -14,6 +14,11 @@ atf-bl31-sunxi:
 Please read the section on ARM Trusted Firmware (ATF) in
 board/sunxi/README.sunxi64
 
+external-tpl-rockchip:
+External TPL is required to initialize DRAM. Get external TPL binary and
+build with EXTERNAL_TPL=/path/to/ddr.bin. One possible source for
+external TPL binary is https://github.com/rockchip-linux/rkbin.
+
 scp-sunxi:
 SCP firmware is required for system suspend, but is otherwise optional.
 Please read the section on SCP firmware in board/sunxi/README.sunxi64
-- 
2.39.1