From: Kever Yang <kever.yang@rock-chips.com>
To: Quentin Schulz <quentin.schulz@theobroma-systems.com>,
Jonas Karlman <jonas@kwiboo.se>, Simon Glass <sjg@chromium.org>,
Philipp Tomsich <philipp.tomsich@vrull.eu>,
Joseph Chen <chenjh@rock-chips.com>,
Alper Nebi Yasak <alpernebiyasak@gmail.com>
Cc: Jagan Teki <jagan@edgeble.ai>,
Heinrich Schuchardt <xypron.glpk@gmx.de>,
u-boot@lists.denx.de
Subject: Re: [PATCH 2/3] rockchip: Require an external TPL binary when TPL is missing
Date: Tue, 14 Feb 2023 11:42:49 +0800 [thread overview]
Message-ID: <8c20f078-0ede-7e58-fa33-857640d4eec5@rock-chips.com> (raw)
In-Reply-To: <e4e15d56-d158-c400-263a-d91a44dab86b@theobroma-systems.com>
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 <jonas@kwiboo.se>
>>>> ---
>>>> 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 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 board with only need
>> U-Boot raw image instead of itb which including trust support,
>>
>
> What makes SPL+U-Boot not capable of using U-Boot.itb or support
> secure-boot/trust?
It's possible to use SPL+U-Boot.itb, but it's not easy to maintain,
because this model need to make
all the driver available(FDT support, SDMMC/EMMC driver, FIT decode and
etc)in the SPL, the SPL
running in SRAM which has limit size, often cause size overflow issue.
Since BACK_TO_BOOTROM feature is available for all the rockchip SoCs,
we can us TPL+SPL instead
for much flexible solution.
Thanks,
- Kever
>
>> 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.
>>
>
> I suggest we leave it as it is today, handling TPL+SPL+U-Boot AND
> SPL+U-Boot, or we "upgrade" current boards which do not have TPL
> support enabled yet so we only need to have TPL+SPL+U-Boot to support
> and maintenance is easier in the long term (for the latter case, you
> can then enforce it by having ARCH_ROCKCHIP imply TPL for example).
>
> Cheers,
> Quentin
next prev parent reply other threads:[~2023-02-14 3:43 UTC|newest]
Thread overview: 41+ messages / expand[flat|nested] mbox.gz Atom feed top
2023-02-05 20:21 [PATCH 0/3] rockchip: Use external TPL binary to create a working firmware image Jonas Karlman
2023-02-05 20:21 ` [PATCH 1/3] binman: Add support for an external-tpl entry Jonas Karlman
2023-02-07 4:02 ` Simon Glass
2023-02-05 20:21 ` [PATCH 2/3] rockchip: Require an external TPL binary when TPL is missing Jonas Karlman
2023-02-05 20:28 ` Jagan Teki
2023-02-05 20:34 ` Jonas Karlman
2023-02-06 11:26 ` Quentin Schulz
2023-02-06 12:51 ` Jonas Karlman
2023-02-14 3:45 ` Kever Yang
2023-02-14 10:52 ` Jonas Karlman
2023-02-08 15:41 ` Kever Yang
2023-02-08 16:06 ` Quentin Schulz
2023-02-14 3:42 ` Kever Yang [this message]
2023-02-07 4:02 ` Simon Glass
2023-02-05 20:21 ` [PATCH 3/3] Revert "board: rockchip: Fix binman_init failure on EVB-RK3568" Jonas Karlman
2023-02-07 4:02 ` Simon Glass
2023-02-07 4:02 ` [PATCH 0/3] rockchip: Use external TPL binary to create a working firmware image Simon Glass
2023-02-08 14:53 ` Jonas Karlman
2023-02-14 10:33 ` [PATCH v2 0/5] " Jonas Karlman
2023-02-14 10:33 ` [PATCH v2 1/6] binman: Add support for a rockchip-tpl entry Jonas Karlman
2023-02-14 19:48 ` Simon Glass
2023-02-14 20:35 ` Jonas Karlman
2023-02-16 7:50 ` Kever Yang
2023-02-16 11:26 ` Eugen Hristev
2023-02-16 14:02 ` Jonas Karlman
2023-02-14 10:33 ` [PATCH v2 2/6] rockchip: Use an external TPL binary on RK3568 Jonas Karlman
2023-02-14 19:48 ` Simon Glass
2023-02-15 9:54 ` Jonas Karlman
2023-02-16 7:51 ` Kever Yang
2023-02-16 9:06 ` Jagan Teki
2023-02-14 10:33 ` [PATCH v2 3/6] Revert "board: rockchip: Fix binman_init failure on EVB-RK3568" Jonas Karlman
2023-02-16 7:51 ` Kever Yang
2023-02-14 10:33 ` [PATCH v2 4/6] rockchip: mkimage: Update init size limit Jonas Karlman
2023-02-16 7:59 ` Kever Yang
2023-02-16 14:36 ` Jonas Karlman
2023-02-14 10:33 ` [PATCH v2 5/6] rockchip: evb-rk3568: Update defconfig Jonas Karlman
2023-02-14 10:34 ` [PATCH v2 6/6] RFC: binman: Improve allow missing for mkimage entry Jonas Karlman
2023-02-14 19:48 ` Simon Glass
2023-02-15 18:25 ` Jonas Karlman
2023-02-17 2:55 ` Simon Glass
2023-02-17 14:42 ` Jonas Karlman
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=8c20f078-0ede-7e58-fa33-857640d4eec5@rock-chips.com \
--to=kever.yang@rock-chips.com \
--cc=alpernebiyasak@gmail.com \
--cc=chenjh@rock-chips.com \
--cc=jagan@edgeble.ai \
--cc=jonas@kwiboo.se \
--cc=philipp.tomsich@vrull.eu \
--cc=quentin.schulz@theobroma-systems.com \
--cc=sjg@chromium.org \
--cc=u-boot@lists.denx.de \
--cc=xypron.glpk@gmx.de \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox