public inbox for u-boot@lists.denx.de
 help / color / mirror / Atom feed
From: Andrew Davis <afd@ti.com>
To: Jan Kiszka <jan.kiszka@siemens.com>,
	U-Boot Mailing List <u-boot@lists.denx.de>
Subject: Re: [PATCH V7 01/15] board: siemens: iot2050: Split the build for PG1 and PG2
Date: Wed, 1 Mar 2023 11:26:48 -0600	[thread overview]
Message-ID: <be92c20b-04db-213d-72f2-16c6798eb3a2@ti.com> (raw)
In-Reply-To: <6b4e3ad5fcb37bab55d5ad7e0d9fa7d934bfd580.1677608363.git.jan.kiszka@siemens.com>

On 2/28/23 12:19 PM, Jan Kiszka wrote:
> From: Su Baocheng <baocheng.su@siemens.com>
> 
> Due to different signature keys, the PG1 and the PG2 boards can no
> longer use the same FSBL (tiboot3). This makes it impossible anyway to
> maintaine a single flash.bin for both variants, so we can also split the
> build.
> 

Having two defconfigs just to make the small changes needed will be
more burden than it saves. Keeping them in sync and having your integration
layer do two different builds just adds more work than it is worth IMHO.

We (TI) are going in that direction for our HS boards and combining the
defconfigs back together now. The solution is to have the one defconfig
build both images, one for HS and one for non-HS. For you looks like you
are already calling the two PG boot images differently so this should work
(seboot_pg1.bin and seboot_pg2.bin). Just add a new full entry in
boot-image.dtsi for each (vs that #ifdef check changing the output name).

Andrew

> A new target is added to indicates the build is for PG1 vs. PG2 boards.
> Hence now the variants have separated defconfig files.
> 
> The runtime board_is_sr1() check does make no sense anymore, so remove
> it and replace with build time check.
> 
> Documentation is updated accordingly. New binary artifacts are already
> available via meta-iot2050.
> 
> Signed-off-by: Su Baocheng <baocheng.su@siemens.com>
> [Jan: refactor config option into targets, tweak some wordings]
> Signed-off-by: Jan Kiszka <jan.kiszka@siemens.com>
> ---
>   arch/arm/dts/k3-am65-iot2050-boot-image.dtsi  | 80 ++++++-------------
>   board/siemens/iot2050/Kconfig                 | 28 ++++++-
>   board/siemens/iot2050/board.c                 | 12 +--
>   ...ot2050_defconfig => iot2050_pg1_defconfig} |  2 +-
>   ...ot2050_defconfig => iot2050_pg2_defconfig} | 10 ++-
>   doc/board/siemens/iot2050.rst                 | 15 +++-
>   6 files changed, 70 insertions(+), 77 deletions(-)
>   copy configs/{iot2050_defconfig => iot2050_pg1_defconfig} (99%)
>   rename configs/{iot2050_defconfig => iot2050_pg2_defconfig} (94%)
> 
> diff --git a/arch/arm/dts/k3-am65-iot2050-boot-image.dtsi b/arch/arm/dts/k3-am65-iot2050-boot-image.dtsi
> index 27058370ccc..3135ad04715 100644
> --- a/arch/arm/dts/k3-am65-iot2050-boot-image.dtsi
> +++ b/arch/arm/dts/k3-am65-iot2050-boot-image.dtsi
> @@ -1,6 +1,6 @@
>   // SPDX-License-Identifier: GPL-2.0
>   /*
> - * Copyright (c) Siemens AG, 2020-2021
> + * Copyright (c) Siemens AG, 2020-2022
>    *
>    * Authors:
>    *   Jan Kiszka <jan.kiszka@siemens.com>
> @@ -17,7 +17,11 @@
>   
>   		blob-ext@0x000000 {
>   			offset = <0x000000>;
> -			filename = "tiboot3.bin";
> +#ifdef CONFIG_TARGET_IOT2050_A53_PG1
> +			filename = "seboot_pg1.bin";
> +#else
> +			filename = "seboot_pg2.bin";
> +#endif
>   			missing-msg = "iot2050-seboot";
>   		};
>   
> @@ -43,42 +47,30 @@
>   				};
>   
>   				fdt-iot2050-basic {
> -					description = "k3-am6528-iot2050-basic.dtb";
> +					description = "k3-am6528-iot2050-basic*.dtb";
>   					type = "flat_dt";
>   					arch = "arm64";
>   					compression = "none";
>   					blob {
> +#ifdef CONFIG_TARGET_IOT2050_A53_PG1
>   						filename = "arch/arm/dts/k3-am6528-iot2050-basic.dtb";
> -					};
> -				};
> -
> -				fdt-iot2050-basic-pg2 {
> -					description = "k3-am6528-iot2050-basic-pg2.dtb";
> -					type = "flat_dt";
> -					arch = "arm64";
> -					compression = "none";
> -					blob {
> +#else
>   						filename = "arch/arm/dts/k3-am6528-iot2050-basic-pg2.dtb";
> +#endif
>   					};
>   				};
>   
>   				fdt-iot2050-advanced {
> -					description = "k3-am6548-iot2050-advanced.dtb";
> +					description = "k3-am6548-iot2050-advanced*.dtb";
>   					type = "flat_dt";
>   					arch = "arm64";
>   					compression = "none";
>   					blob {
> +#ifdef CONFIG_TARGET_IOT2050_A53_PG1
>   						filename = "arch/arm/dts/k3-am6548-iot2050-advanced.dtb";
> -					};
> -				};
> -
> -				fdt-iot2050-advanced-pg2 {
> -					description = "k3-am6548-iot2050-advanced-pg2.dtb";
> -					type = "flat_dt";
> -					arch = "arm64";
> -					compression = "none";
> -					blob {
> +#else
>   						filename = "arch/arm/dts/k3-am6548-iot2050-advanced-pg2.dtb";
> +#endif
>   					};
>   				};
>   
> @@ -108,30 +100,12 @@
>   #endif
>   				};
>   
> -				conf-iot2050-basic-pg2 {
> -					description = "iot2050-basic-pg2";
> -					firmware = "u-boot";
> -					fdt = "fdt-iot2050-basic-pg2";
> -#ifdef CONFIG_WDT_K3_RTI_FW_FILE
> -					loadables = "k3-rti-wdt-firmware";
> -#endif
> -				};
> -
>   				conf-iot2050-advanced {
>   					description = "iot2050-advanced";
>   					firmware = "u-boot";
>   					fdt = "fdt-iot2050-advanced";
>   #ifdef CONFIG_WDT_K3_RTI_FW_FILE
>   					loadables = "k3-rti-wdt-firmware";
> -#endif
> -				};
> -
> -				conf-iot2050-advanced-pg2 {
> -					description = "iot2050-advanced-pg2";
> -					firmware = "u-boot";
> -					fdt = "fdt-iot2050-advanced-pg2";
> -#ifdef CONFIG_WDT_K3_RTI_FW_FILE
> -					loadables = "k3-rti-wdt-firmware";
>   #endif
>   				};
>   			};
> @@ -150,28 +124,24 @@
>   			fill-byte = [00];
>   		};
>   
> -		/* PG1 sysfw, basic variant */
> +		/* sysfw, basic variant */
>   		blob-ext@0x6c0000 {
>   			offset = <0x6c0000>;
> -			filename = "sysfw.itb";
> +#ifdef CONFIG_TARGET_IOT2050_A53_PG1
> +			filename = "sysfw_sr1.itb";
> +#else
> +			filename = "sysfw_sr2.itb";
> +#endif
>   			missing-msg = "iot2050-sysfw";
>   		};
> -		/* PG1 sysfw, advanced variant */
> +		/* sysfw, advanced variant */
>   		blob-ext@0x740000 {
>   			offset = <0x740000>;
> -			filename = "sysfw.itb_HS";
> -			missing-msg = "iot2050-sysfw";
> -		};
> -		/* PG2 sysfw, basic variant */
> -		blob-ext@0x7c0000 {
> -			offset = <0x7c0000>;
> -			filename = "sysfw_sr2.itb";
> -			missing-msg = "iot2050-sysfw";
> -		};
> -		/* PG2 sysfw, advanced variant */
> -		blob-ext@0x840000 {
> -			offset = <0x840000>;
> +#ifdef CONFIG_TARGET_IOT2050_A53_PG1
> +			filename = "sysfw_sr1.itb_HS";
> +#else
>   			filename = "sysfw_sr2.itb_HS";
> +#endif
>   			missing-msg = "iot2050-sysfw";
>   		};
>   	};
> diff --git a/board/siemens/iot2050/Kconfig b/board/siemens/iot2050/Kconfig
> index 063142a43bf..a2b40881d11 100644
> --- a/board/siemens/iot2050/Kconfig
> +++ b/board/siemens/iot2050/Kconfig
> @@ -1,20 +1,40 @@
>   # SPDX-License-Identifier: GPL-2.0+
>   #
> -# Copyright (c) Siemens AG, 2018-2021
> +# Copyright (c) Siemens AG, 2018-2022
>   #
>   # Authors:
>   #   Le Jin <le.jin@siemens.com>
>   #   Jan Kiszka <jan.kiszka@siemens.com>
>   
> -config TARGET_IOT2050_A53
> -	bool "IOT2050 running on A53"
> +choice
> +        prompt "Siemens SIMATIC IOT2050 boards"
> +        optional
> +
> +config TARGET_IOT2050_A53_PG1
> +	bool "IOT2050 PG1 running on A53"
> +	select IOT2050_A53_COMMON
> +	help
> +	  This builds U-Boot for the Product Generation 1 (PG1) of the IOT2050
> +	  devices.
> +
> +config TARGET_IOT2050_A53_PG2
> +	bool "IOT2050 PG2 running on A53"
> +	select IOT2050_A53_COMMON
> +	help
> +	  This builds U-Boot for the Product Generation 2 (PG2) of the IOT2050
> +	  devices.
> +
> +endchoice
> +
> +config IOT2050_A53_COMMON
> +	bool
>   	select ARM64
>   	select SOC_K3_AM654
>   	select BOARD_LATE_INIT
>   	select SYS_DISABLE_DCACHE_OPS
>   	select BINMAN
>   
> -if TARGET_IOT2050_A53
> +if IOT2050_A53_COMMON
>   
>   config SYS_BOARD
>   	default "iot2050"
> diff --git a/board/siemens/iot2050/board.c b/board/siemens/iot2050/board.c
> index 8f4b0eae495..dbf893000a7 100644
> --- a/board/siemens/iot2050/board.c
> +++ b/board/siemens/iot2050/board.c
> @@ -55,14 +55,6 @@ static bool board_is_advanced(void)
>   		strstr((char *)info->name, "IOT2050-ADVANCED") != NULL;
>   }
>   
> -static bool board_is_sr1(void)
> -{
> -	struct iot2050_info *info = IOT2050_INFO_DATA;
> -
> -	return info->magic == IOT2050_INFO_MAGIC &&
> -		!strstr((char *)info->name, "-PG2");
> -}
> -
>   static void remove_mmc1_target(void)
>   {
>   	char *boot_targets = strdup(env_get("boot_targets"));
> @@ -109,12 +101,12 @@ void set_board_info_env(void)
>   	}
>   
>   	if (board_is_advanced()) {
> -		if (board_is_sr1())
> +		if (IS_ENABLED(CONFIG_TARGET_IOT2050_A53_PG1))
>   			fdtfile = "ti/k3-am6548-iot2050-advanced.dtb";
>   		else
>   			fdtfile = "ti/k3-am6548-iot2050-advanced-pg2.dtb";
>   	} else {
> -		if (board_is_sr1())
> +		if (IS_ENABLED(CONFIG_TARGET_IOT2050_A53_PG1))
>   			fdtfile = "ti/k3-am6528-iot2050-basic.dtb";
>   		else
>   			fdtfile = "ti/k3-am6528-iot2050-basic-pg2.dtb";
> diff --git a/configs/iot2050_defconfig b/configs/iot2050_pg1_defconfig
> similarity index 99%
> copy from configs/iot2050_defconfig
> copy to configs/iot2050_pg1_defconfig
> index 82b8383e4d3..d9580309664 100644
> --- a/configs/iot2050_defconfig
> +++ b/configs/iot2050_pg1_defconfig
> @@ -8,7 +8,7 @@ CONFIG_SPL_LIBCOMMON_SUPPORT=y
>   CONFIG_SPL_LIBGENERIC_SUPPORT=y
>   CONFIG_NR_DRAM_BANKS=2
>   CONFIG_SOC_K3_AM654=y
> -CONFIG_TARGET_IOT2050_A53=y
> +CONFIG_TARGET_IOT2050_A53_PG1=y
>   CONFIG_HAS_CUSTOM_SYS_INIT_SP_ADDR=y
>   CONFIG_CUSTOM_SYS_INIT_SP_ADDR=0x80100000
>   CONFIG_ENV_SIZE=0x20000
> diff --git a/configs/iot2050_defconfig b/configs/iot2050_pg2_defconfig
> similarity index 94%
> rename from configs/iot2050_defconfig
> rename to configs/iot2050_pg2_defconfig
> index 82b8383e4d3..58aefac8301 100644
> --- a/configs/iot2050_defconfig
> +++ b/configs/iot2050_pg2_defconfig
> @@ -8,7 +8,7 @@ CONFIG_SPL_LIBCOMMON_SUPPORT=y
>   CONFIG_SPL_LIBGENERIC_SUPPORT=y
>   CONFIG_NR_DRAM_BANKS=2
>   CONFIG_SOC_K3_AM654=y
> -CONFIG_TARGET_IOT2050_A53=y
> +CONFIG_TARGET_IOT2050_A53_PG2=y
>   CONFIG_HAS_CUSTOM_SYS_INIT_SP_ADDR=y
>   CONFIG_CUSTOM_SYS_INIT_SP_ADDR=0x80100000
>   CONFIG_ENV_SIZE=0x20000
> @@ -16,18 +16,20 @@ CONFIG_ENV_OFFSET=0x680000
>   CONFIG_ENV_SECT_SIZE=0x20000
>   CONFIG_DM_GPIO=y
>   CONFIG_SPL_DM_SPI=y
> -CONFIG_DEFAULT_DEVICE_TREE="k3-am6528-iot2050-basic"
> +CONFIG_DEFAULT_DEVICE_TREE="k3-am6528-iot2050-basic-pg2"
>   CONFIG_SPL_TEXT_BASE=0x80080000
>   CONFIG_SYS_PROMPT="IOT2050> "
> -CONFIG_DM_RESET=y
>   CONFIG_SPL_SERIAL=y
>   CONFIG_SPL_STACK_R_ADDR=0x82000000
>   CONFIG_ENV_OFFSET_REDUND=0x6a0000
>   CONFIG_SPL_SPI_FLASH_SUPPORT=y
>   CONFIG_SPL_SPI=y
>   CONFIG_DISTRO_DEFAULTS=y
> +CONFIG_HAS_CUSTOM_SYS_INIT_SP_ADDR=y
> +CONFIG_CUSTOM_SYS_INIT_SP_ADDR=0x80100000
>   # CONFIG_SYS_MALLOC_CLEAR_ON_INIT is not set
>   CONFIG_SPL_LOAD_FIT=y
> +# CONFIG_USE_SPL_FIT_GENERATOR is not set
>   CONFIG_OF_BOARD_SETUP=y
>   CONFIG_BOOTSTAGE=y
>   CONFIG_SHOW_BOOT_PROGRESS=y
> @@ -74,6 +76,7 @@ CONFIG_SPL_OF_LIST="k3-am65-iot2050-spl"
>   CONFIG_SPL_MULTI_DTB_FIT_NO_COMPRESSION=y
>   CONFIG_ENV_IS_IN_SPI_FLASH=y
>   CONFIG_SYS_REDUNDAND_ENVIRONMENT=y
> +CONFIG_DM=y
>   CONFIG_SPL_DM=y
>   CONFIG_SPL_DM_SEQ_ALIAS=y
>   CONFIG_SPL_REGMAP=y
> @@ -120,6 +123,7 @@ CONFIG_PINCTRL_SINGLE=y
>   CONFIG_POWER_DOMAIN=y
>   CONFIG_TI_SCI_POWER_DOMAIN=y
>   CONFIG_REMOTEPROC_TI_K3_R5F=y
> +CONFIG_DM_RESET=y
>   CONFIG_RESET_TI_SCI=y
>   CONFIG_DM_SERIAL=y
>   CONFIG_SOC_DEVICE=y
> diff --git a/doc/board/siemens/iot2050.rst b/doc/board/siemens/iot2050.rst
> index 7e97f817ce4..fd3431fa3f8 100644
> --- a/doc/board/siemens/iot2050.rst
> +++ b/doc/board/siemens/iot2050.rst
> @@ -24,9 +24,10 @@ Binary dependencies can be found in
>   https://github.com/siemens/meta-iot2050/tree/master/recipes-bsp/u-boot/files/prebuild.
>   The following binaries from that source need to be present in the build folder:
>   
> - - tiboot3.bin
> - - sysfw.itb
> - - sysfw.itb_HS
> + - seboot_pg1.bin
> + - sysfw_sr1.itb
> + - sysfw_sr1.itb_HS
> + - seboot_pg2.bin
>    - sysfw_sr2.itb
>    - sysfw_sr2.itb_HS
>   
> @@ -57,7 +58,13 @@ U-Boot:
>   
>    $ export ATF=/path/to/bl31.bin
>    $ export TEE=/path/to/tee-pager_v2.bin
> - $ make iot2050_defconfig
> +
> + # configure for PG1
> + $ make iot2050_pg1_defconfig
> +
> + # or configure for PG2
> + $ make iot2050_pg2_defconfig
> +
>    $ make
>   
>   Flashing

  reply	other threads:[~2023-03-01 17:26 UTC|newest]

Thread overview: 35+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2023-02-28 18:19 [PATCH V7 00/15] IOT2050-related enhancements Jan Kiszka
2023-02-28 18:19 ` [PATCH V7 01/15] board: siemens: iot2050: Split the build for PG1 and PG2 Jan Kiszka
2023-03-01 17:26   ` Andrew Davis [this message]
2023-03-01 18:29     ` Jan Kiszka
2023-03-01 18:34       ` Andrew Davis
2023-03-01 19:21         ` Jan Kiszka
2023-03-01 19:29           ` Andrew Davis
2023-03-30  9:17             ` Simon Glass
2023-03-30  1:53   ` Tom Rini
2023-02-28 18:19 ` [PATCH V7 02/15] arm: dts: iot2050: Use the auto generator nodes for fdt Jan Kiszka
2023-03-01 23:39   ` Simon Glass
2023-02-28 18:19 ` [PATCH V7 03/15] iot2050: Update firmware layout Jan Kiszka
2023-02-28 18:19 ` [PATCH V7 04/15] iot2050: Migrate settings into board env file Jan Kiszka
2023-03-01 23:38   ` Simon Glass
2023-03-02  6:38     ` Jan Kiszka
2023-03-06 17:53       ` Simon Glass
2023-02-28 18:19 ` [PATCH V7 05/15] iot2050: Add watchdog start to bootcmd Jan Kiszka
2023-02-28 18:19 ` [PATCH V7 06/15] iot2050: Add CFG_ENV_FLAGS_LIST_STATIC Jan Kiszka
2023-02-28 18:19 ` [PATCH V7 07/15] arm: dts: iot2050: Allow verifying U-Boot proper by SPL Jan Kiszka
2023-03-01 23:39   ` Simon Glass
2023-02-28 18:19 ` [PATCH V7 08/15] tools: Add script for converting public key into device tree include Jan Kiszka
2023-03-11  1:37   ` Simon Glass
2023-02-28 18:19 ` [PATCH V7 09/15] iot2050: Add script for signing artifacts Jan Kiszka
2023-03-06 17:53   ` Simon Glass
2023-02-28 18:19 ` [PATCH V7 10/15] arm: dts: iot2050: Optionally embed OTP programming data into image Jan Kiszka
2023-02-28 18:19 ` [PATCH V7 11/15] doc: iot2050: Add a note about the watchdog firmware Jan Kiszka
2023-02-28 18:19 ` [PATCH V7 12/15] board: siemens: iot2050: use the named gpio to control the user-button Jan Kiszka
2023-03-01 23:38   ` Simon Glass
2023-02-28 18:19 ` [PATCH V7 13/15] iot2050: Refresh defconfigs and activate CONFIG_EFI_SCROLL_ON_CLEAR_SCREEN Jan Kiszka
2023-03-01 17:37   ` Andrew Davis
2023-03-01 23:38   ` Simon Glass
2023-02-28 18:19 ` [PATCH V7 14/15] arm: dts: iot2050: Add support for M.2 variant Jan Kiszka
2023-02-28 18:19 ` [PATCH V7 15/15] iot2050: Add support for configuring M.2 connector Jan Kiszka
2023-03-01 23:38   ` Simon Glass
2023-03-02  6:36     ` Jan Kiszka

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=be92c20b-04db-213d-72f2-16c6798eb3a2@ti.com \
    --to=afd@ti.com \
    --cc=jan.kiszka@siemens.com \
    --cc=u-boot@lists.denx.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