[PATCH v5 3/3] board: toradex: add verdin am62 support

Neha Malcom Francis n-francis at ti.com
Fri Aug 4 11:53:10 CEST 2023


Hi Marcel

On 04/08/23 15:13, Marcel Ziswiler wrote:
> Hi Neha
> 
> On Fri, 2023-08-04 at 12:04 +0530, Neha Malcom Francis wrote:
>> Hi Marcel
>>
>> Repeating my comments from v4, as I missed seeing this version.
>>
>> On 03/08/23 19:30, Marcel Ziswiler wrote:
>>> From: Marcel Ziswiler <marcel.ziswiler at toradex.com>
>>>
>>> This adds initial support for the Toradex Verdin AM62 Quad 1GB WB IT
>>> V1.0A module and subsequent V1.1 launch configuration SKUs. They are
>>> strapped to boot from their on-module eMMC. U-Boot supports booting
>>> from the on-module eMMC only, DFU support is disabled for now due to
>>> missing AM62x USB support.
>>>
>>> The device trees were taken straight from Linux v6.5-rc1.
>>>
>>> Boot sequence is:
>>> SYSFW ---> R5 SPL (both in tiboot3.bin) ---> ATF (TF-A) ---> OP-TEE
>>>     ---> A53 SPL (part of tispl.bin) ---> U-boot proper (u-boot.img)
>>>
>>> Signed-off-by: Marcel Ziswiler <marcel.ziswiler at toradex.com>
>>>
>>> ---
>>>
>>
>> [...]
>>
>>> +       /* We require this for boot handshake */
>>> +       status = "okay";
>>> +};
>>> diff --git a/arch/arm/dts/k3-am625-verdin-wifi-dev-binman.dtsi b/arch/arm/dts/k3-am625-verdin-wifi-dev-
>>> binman.dtsi
>>> new file mode 100644
>>> index 00000000000..e8c926f48b9
>>> --- /dev/null
>>> +++ b/arch/arm/dts/k3-am625-verdin-wifi-dev-binman.dtsi
>>> @@ -0,0 +1,570 @@
>>> +// SPDX-License-Identifier: GPL-2.0-or-later OR MIT
>>> +/*
>>> + * Copyright 2023 Toradex
>>> + */
>>> +
>>> +#include "k3-binman.dtsi"
>>> +
>>> +&binman {
>>> +       custMpk {
>>> +               filename = "custMpk.pem";
>>> +               blob-ext {
>>> +                       filename = "../../ti/keys/custMpk.pem";
>>> +               };
>>> +       };
>>> +
>>> +       ti-degenerate-key {
>>> +               filename = "ti-degenerate-key.pem";
>>> +               blob-ext {
>>> +                       filename = "../../ti/keys/ti-degenerate-key.pem";
>>> +               };
>>> +       };
>>> +};
>>> +
>>> +#ifndef CONFIG_ARM64
>>> +
>>> +&binman {
>>> +       board-cfg {
>>> +               filename = "board-cfg.bin";
>>> +               bcfg_yaml: ti-board-config {
>>> +                       config = "board-cfg.yaml";
>>> +                       schema = "../../ti/common/schema.yaml";
>>> +               };
>>> +       };
>>> +       pm-cfg {
>>> +               filename = "pm-cfg.bin";
>>> +               rcfg_yaml: ti-board-config {
>>> +                       config = "pm-cfg.yaml";
>>> +                       schema = "../../ti/common/schema.yaml";
>>> +               };
>>> +       };
>>> +       rm-cfg {
>>> +               filename = "rm-cfg.bin";
>>> +               pcfg_yaml: ti-board-config {
>>> +                       config = "rm-cfg.yaml";
>>> +                       schema = "../../ti/common/schema.yaml";
>>> +               };
>>> +       };
>>> +       sec-cfg {
>>> +               filename = "sec-cfg.bin";
>>> +               scfg_yaml: ti-board-config {
>>> +                       config = "sec-cfg.yaml";
>>> +                       schema = "../../ti/common/schema.yaml";
>>> +               };
>>> +       };
>>> +       combined-tifs-cfg {
>>> +               filename = "combined-tifs-cfg.bin";
>>> +               ti-board-config {
>>> +                       bcfg_yaml_tifs: board-cfg {
>>> +                               config = "board-cfg.yaml";
>>> +                               schema = "../../ti/common/schema.yaml";
>>> +                       };
>>> +                       scfg_yaml_tifs: sec-cfg {
>>> +                               config = "sec-cfg.yaml";
>>> +                               schema = "../../ti/common/schema.yaml";
>>> +                       };
>>> +                       pcfg_yaml_tifs: pm-cfg {
>>> +                               config = "pm-cfg.yaml";
>>> +                               schema = "../../ti/common/schema.yaml";
>>> +                       };
>>> +                       rcfg_yaml_tifs: rm-cfg {
>>> +                               config = "rm-cfg.yaml";
>>> +                               schema = "../../ti/common/schema.yaml";
>>> +                       };
>>> +               };
>>> +       };
>>> +       combined-dm-cfg {
>>> +               filename = "combined-dm-cfg.bin";
>>> +               ti-board-config {
>>> +                       pcfg_yaml_dm: pm-cfg {
>>> +                               config = "pm-cfg.yaml";
>>> +                               schema = "../../ti/common/schema.yaml";
>>> +                       };
>>> +                       rcfg_yaml_dm: rm-cfg {
>>> +                               config = "rm-cfg.yaml";
>>> +                               schema = "../../ti/common/schema.yaml";
>>> +                       };
>>> +               };
>>> +       };
>>> +       combined-sysfw-cfg {
>>> +               filename = "combined-sysfw-cfg.bin";
>>> +               ti-board-config {
>>> +                       board-cfg {
>>> +                               config = "board-cfg.yaml";
>>> +                               schema = "../../ti/common/schema.yaml";
>>> +                       };
>>> +                       sec-cfg {
>>> +                               config = "sec-cfg.yaml";
>>> +                               schema = "../../ti/common/schema.yaml";
>>> +                       };
>>> +                       pm-cfg {
>>> +                               config = "pm-cfg.yaml";
>>> +                               schema = "../../ti/common/schema.yaml";
>>> +                       };
>>> +                       rm-cfg {
>>> +                               config = "rm-cfg.yaml";
>>> +                               schema = "../../ti/common/schema.yaml";
>>> +                       };
>>> +               };
>>> +       };
>>> +};
>>> +
>>
>> ^ If you are already including k3-binman.dtsi, why are you redefining these?
> 
> Yes, I agree. Will change it to just overriding relevant properties using phandles.
> 
>>> +#endif /* CONFIG_ARM64 */
>>> +
>>> +#ifdef CONFIG_TARGET_VERDIN_AM62_R5
>>> +
>>> +&binman {
>>> +       tiboot3-am62x-hs-verdin.bin {
>>> +               filename = "tiboot3-am62x-hs-verdin.bin";
>>> +               ti-secure-rom {
>>> +                       content = <&u_boot_spl>, <&ti_fs_enc>, <&combined_tifs_cfg>,
>>> +                               <&combined_dm_cfg>, <&sysfw_inner_cert>;
>>> +                       combined;
>>> +                       dm-data;
>>> +                       sysfw-inner-cert;
>>> +                       keyfile = "custMpk.pem";
>>> +                       sw-rev = <1>;
>>> +                       content-sbl = <&u_boot_spl>;
>>> +                       content-sysfw = <&ti_fs_enc>;
>>> +                       content-sysfw-data = <&combined_tifs_cfg>;
>>> +                       content-sysfw-inner-cert = <&sysfw_inner_cert>;
>>> +                       content-dm-data = <&combined_dm_cfg>;
>>> +                       load = <0x43c00000>;
>>> +                       load-sysfw = <0x40000>;
>>> +                       load-sysfw-data = <0x67000>;
>>> +                       load-dm-data = <0x43c3a800>;
>>> +               };
>>> +               u_boot_spl: u-boot-spl {
>>> +                       no-expanded;
>>> +               };
>>> +               ti_fs_enc: ti-fs-enc.bin {
>>> +                       filename = "ti-sysfw/ti-fs-firmware-am62x-hs-enc.bin";
>>> +                       type = "blob-ext";
>>> +                       optional;
>>
>> If the R5 builds are exactly the same as that generated by k3-am625-binman.dtsi,
>> would it make sense to include that file and just replace the filenames using
>> phandles?
> 
> First, there is no such thing as a k3-am625-binman.dtsi. You probably meant k3-am625-sk-binman.dtsi but that
> one is SK specific and not reusable for us due to the target ifdefery in there. I really believe this part
> needs to be more or less duplicated.

Ah understood. Once we move to using templates to generate all of these, we can 
reduce this duplication.

> 
>> [...]
>>
>>> new file mode 100644
>>> index 00000000000..e0c35dfa061
>>> --- /dev/null
>>> +++ b/include/configs/verdin-am62.h
>>> @@ -0,0 +1,55 @@
>>> +/* SPDX-License-Identifier: GPL-2.0-or-later */
>>> +/*
>>> + * Configuration header file for Verdin AM62 SoM
>>> + *
>>> + * Copyright 2023 Toradex - https://www.toradex.com/
>>> + */
>>> +
>>> +#ifndef __VERDIN_AM62_H
>>> +#define __VERDIN_AM62_H
>>> +
>>> +#define RAMDISK_ADDR_R                 0x90300000
>>
>> Nitpick: indentation
> 
> Okay.
> 
>>> +#define SCRIPTADDR                     0x90280000
>>> +
>>> +/* DDR Configuration */
>>> +#define CFG_SYS_SDRAM_BASE     0x80000000
>>> +#define CFG_SYS_SDRAM_BASE1    0x880000000
>>> +#define CFG_SYS_SDRAM_SIZE     SZ_2G /* Maximum supported size */
>>> +
>>> +#define MEM_LAYOUT_ENV_SETTINGS \
>>> +       "fdt_addr_r=0x90200000\0" \
>>> +       "kernel_addr_r=" __stringify(CONFIG_SYS_LOAD_ADDR) "\0" \
>>> +       "kernel_comp_addr_r=0x80200000\0" \
>>> +       "kernel_comp_size=0x08000000\0" \
>>> +       "ramdisk_addr_r=" __stringify(RAMDISK_ADDR_R) "\0" \
>>> +       "scriptaddr=" __stringify(SCRIPTADDR) "\0"
>>> +
>>> +#if CONFIG_TARGET_VERDIN_AM62_A53
>>> +/* Enable Distro Boot */
>>> +#define BOOT_TARGET_DEVICES(func) \
>>> +       func(MMC, mmc, 1) \
>>> +       func(MMC, mmc, 0) \
>>> +       func(DHCP, dhcp, na)
>>> +#include <config_distro_bootcmd.h>
>>> +#else /* CONFIG_TARGET_VERDIN_AM62_A53 */
>>> +#define BOOTENV \
>>> +       ""
>>> +#endif /* CONFIG_TARGET_VERDIN_AM62_A53 */
>>> +
>>> +/* Incorporate settings into the U-Boot environment */
>>> +#define CFG_EXTRA_ENV_SETTINGS \
>>> +       BOOTENV \
>>> +       MEM_LAYOUT_ENV_SETTINGS \
>>> +       "boot_scripts=boot.scr\0" \
>>> +       "boot_script_dhcp=boot.scr\0" \
>>> +       "console=ttyS2\0" \
>>> +       "fdt_board=dev\0" \
>>> +       "setup=setenv setupargs console=tty1 console=${console},${baudrate} " \
>>> +               "consoleblank=0 earlycon=ns16550a,mmio32,0x02800000\0" \
>>> +       "update_uboot=askenv confirm Did you load flash.bin (y/N)?; " \
>>> +               "if test \"$confirm\" = \"y\"; then " \
>>> +               "setexpr blkcnt ${filesize} + 0x1ff && setexpr blkcnt " \
>>> +               "${blkcnt} / 0x200; mmc dev 0 1; mmc write ${loadaddr} 0x0 " \
>>> +               "${blkcnt}; fi\0"
>>> +
>>> +#endif /* __VERDIN_AM62_H */
> 
> Thanks! A cleaned-up v6 is incoming...
> 
> Cheers

Thanks!

> 
> Marcel

-- 
Thanking You
Neha Malcom Francis


More information about the U-Boot mailing list