[PATCH v3] imx8mm-cl-iot-gate: Split the defconfigs

Paul Liu paul.liu at linaro.org
Tue Aug 24 10:59:20 CEST 2021


On Tue, 24 Aug 2021 at 08:11, Fabio Estevam <festevam at denx.de> wrote:

> Currently imx8mm-cl-iot-gate_defconfig fails to produce a working boot
> binary due to the lack of fip.bin:
>
> "  BINMAN  all
> Image 'main-section' is missing external blobs and is non-functional:
> blob-ext
>
> Some images are invalid"
>
> To make the build process more consistent with the other i.MX8M targets,
> split the defconfig in two:
>
> - imx8mm-cl-iot-gate_defconfig: standard defconfig that only
> requires ATF / DDR firmware.
>
> - imx8mm-cl-iot-gate-optee_defconfig: "more advanced" defconfig that
> requires ATF / Optee / mbedtls / DDR firmware.
>
> Signed-off-by: Fabio Estevam <festevam at denx.de>
> ---
> Changes since v2:
> - Rename the ATF binary to bl2.bin in the optee case (Paul)
>
>  arch/arm/dts/Makefile                         |   2 +
>  .../dts/imx8mm-cl-iot-gate-optee-u-boot.dtsi  | 255 ++++++++++++++++++
>  arch/arm/dts/imx8mm-cl-iot-gate-optee.dts     |   6 +
>  arch/arm/dts/imx8mm-cl-iot-gate-u-boot.dtsi   |  14 +-
>  arch/arm/mach-imx/imx8m/Kconfig               |   7 +
>  board/compulab/imx8mm-cl-iot-gate/Kconfig     |   2 +-
>  board/compulab/imx8mm-cl-iot-gate/MAINTAINERS |   1 +
>  configs/imx8mm-cl-iot-gate-optee_defconfig    | 147 ++++++++++
>  8 files changed, 420 insertions(+), 14 deletions(-)
>  create mode 100644 arch/arm/dts/imx8mm-cl-iot-gate-optee-u-boot.dtsi
>  create mode 100644 arch/arm/dts/imx8mm-cl-iot-gate-optee.dts
>  create mode 100644 configs/imx8mm-cl-iot-gate-optee_defconfig
>
> diff --git a/arch/arm/dts/Makefile b/arch/arm/dts/Makefile
> index c42715ead4..88f52cd390 100644
> --- a/arch/arm/dts/Makefile
> +++ b/arch/arm/dts/Makefile
> @@ -1127,6 +1127,8 @@ dtb-$(CONFIG_TARGET_PRESIDIO_ASIC) +=
> ca-presidio-engboard.dtb
>
>  dtb-$(CONFIG_TARGET_IMX8MM_CL_IOT_GATE) += imx8mm-cl-iot-gate.dtb
>
> +dtb-$(CONFIG_TARGET_IMX8MM_CL_IOT_GATE_OPTEE) +=
> imx8mm-cl-iot-gate-optee.dtb
> +
>  dtb-$(CONFIG_TARGET_EA_LPC3250DEVKITV2) += lpc3250-ea3250.dtb
>
>  targets += $(dtb-y)
> diff --git a/arch/arm/dts/imx8mm-cl-iot-gate-optee-u-boot.dtsi
> b/arch/arm/dts/imx8mm-cl-iot-gate-optee-u-boot.dtsi
> new file mode 100644
> index 0000000000..3226a244a9
> --- /dev/null
> +++ b/arch/arm/dts/imx8mm-cl-iot-gate-optee-u-boot.dtsi
> @@ -0,0 +1,255 @@
> +// SPDX-License-Identifier: GPL-2.0+
> +/*
> + * Copyright 2019 NXP
> + */
> +
> +/ {
> +       binman: binman {
> +               multiple-images;
> +       };
> +
> +       wdt-reboot {
> +               compatible = "wdt-reboot";
> +               wdt = <&wdog1>;
> +               u-boot,dm-spl;
> +       };
> +
> +       firmware {
> +               optee {
> +                       compatible = "linaro,optee-tz";
> +                       method = "smc";
> +               };
> +       };
> +};
> +
> +&{/soc at 0} {
> +       u-boot,dm-pre-reloc;
> +       u-boot,dm-spl;
> +};
> +
> +&clk {
> +       u-boot,dm-spl;
> +       u-boot,dm-pre-reloc;
> +       /delete-property/ assigned-clocks;
> +       /delete-property/ assigned-clock-parents;
> +       /delete-property/ assigned-clock-rates;
> +};
> +
> +&osc_24m {
> +       u-boot,dm-spl;
> +       u-boot,dm-pre-reloc;
> +};
> +
> +&aips1 {
> +       u-boot,dm-spl;
> +       u-boot,dm-pre-reloc;
> +};
> +
> +&aips2 {
> +       u-boot,dm-spl;
> +};
> +
> +&aips3 {
> +       u-boot,dm-spl;
> +};
> +
> +&iomuxc {
> +       u-boot,dm-spl;
> +};
> +
> +&pinctrl_uart3 {
> +       u-boot,dm-spl;
> +};
> +
> +&pinctrl_usdhc2_gpio {
> +       u-boot,dm-spl;
> +};
> +
> +&pinctrl_usdhc2 {
> +       u-boot,dm-spl;
> +};
> +
> +&pinctrl_usdhc3 {
> +       u-boot,dm-spl;
> +};
> +
> +&gpio1 {
> +       u-boot,dm-spl;
> +};
> +
> +&gpio2 {
> +       u-boot,dm-spl;
> +};
> +
> +&gpio3 {
> +       u-boot,dm-spl;
> +};
> +
> +&gpio4 {
> +       u-boot,dm-spl;
> +};
> +
> +&gpio5 {
> +       u-boot,dm-spl;
> +};
> +
> +&uart3 {
> +       u-boot,dm-spl;
> +};
> +
> +&usdhc1 {
> +       u-boot,dm-spl;
> +};
> +
> +&usdhc2 {
> +       u-boot,dm-spl;
> +};
> +
> +&usdhc3 {
> +       u-boot,dm-spl;
> +};
> +
> +&i2c1 {
> +       u-boot,dm-spl;
> +};
> +
> +&i2c2 {
> +       u-boot,dm-spl;
> +};
> +
> +&{/soc at 0/bus at 30800000/i2c at 30a30000/pmic at 4b} {
> +       u-boot,dm-spl;
> +};
> +
> +&{/soc at 0/bus at 30800000/i2c at 30a30000/pmic at 4b/regulators} {
> +       u-boot,dm-spl;
> +};
> +
> +&pinctrl_i2c2 {
> +       u-boot,dm-spl;
> +};
> +
> +&pinctrl_pmic {
> +       u-boot,dm-spl;
> +};
> +
> +&fec1 {
> +       phy-reset-gpios = <&gpio4 22 GPIO_ACTIVE_LOW>;
> +};
> +
> +&wdog1 {
> +       u-boot,dm-spl;
> +};
> +
> +&binman {
> +       u-boot-spl-ddr {
> +               filename = "u-boot-spl-ddr.bin";
> +               pad-byte = <0xff>;
> +               align-size = <4>;
> +               align = <4>;
> +
> +               u-boot-spl {
> +                       align-end = <4>;
> +               };
> +
> +               blob_1: blob-ext at 1 {
> +                       filename = "lpddr4_pmu_train_1d_imem.bin";
> +                       size = <0x8000>;
> +               };
> +
> +               blob_2: blob-ext at 2 {
> +                       filename = "lpddr4_pmu_train_1d_dmem.bin";
> +                       size = <0x4000>;
> +               };
> +
> +               blob_3: blob-ext at 3 {
> +                       filename = "lpddr4_pmu_train_2d_imem.bin";
> +                       size = <0x8000>;
> +               };
> +
> +               blob_4: blob-ext at 4 {
> +                       filename = "lpddr4_pmu_train_2d_dmem.bin";
> +                       size = <0x4000>;
> +               };
> +       };
> +
> +       flash {
> +               mkimage {
> +                       args = "-n spl/u-boot-spl.cfgout -T imx8mimage -e
> 0x7e1000";
> +
> +                       blob {
> +                               filename = "u-boot-spl-ddr.bin";
> +                       };
> +               };
> +       };
> +
> +       itb {
> +               filename = "u-boot.itb";
> +
> +               fit {
> +                       description = "Configuration to load ATF before
> U-Boot";
> +                       #address-cells = <1>;
> +                       fit,external-offset = <CONFIG_FIT_EXTERNAL_OFFSET>;
> +
> +                       images {
> +                               uboot {
> +                                       description = "U-Boot (64-bit)";
> +                                       type = "standalone";
> +                                       arch = "arm64";
> +                                       compression = "none";
> +                                       load = <CONFIG_SYS_TEXT_BASE>;
> +
> +                                       uboot_blob: blob-ext {
> +                                               filename =
> "u-boot-nodtb.bin";
> +                                       };
> +                               };
> +
> +                               atf {
> +                                       description = "ARM Trusted
> Firmware";
> +                                       type = "firmware";
> +                                       arch = "arm64";
> +                                       compression = "none";
> +                                       load = <0x920000>;
> +                                       entry = <0x920000>;
> +
> +                                       atf_blob: blob-ext {
> +                                               filename = "bl2.bin";
> +                                       };
> +                               };
> +
> +                               fip {
> +                                       description = "Trusted Firmware
> FIP";
> +                                       type = "firmware";
> +                                       arch = "arm64";
> +                                       compression = "none";
> +                                       load = <0x40310000>;
> +
> +                                       fip_blob: blob-ext{
> +                                               filename = "fip.bin";
> +                                       };
> +                               };
> +
> +                               fdt {
> +                                       description = "NAME";
> +                                       type = "flat_dt";
> +                                       compression = "none";
> +
> +                                       uboot_fdt_blob: blob-ext {
> +                                               filename = "u-boot.dtb";
> +                                       };
> +                               };
> +                       };
> +
> +                       configurations {
> +                               default = "conf";
> +
> +                               conf {
> +                                       description = "NAME";
> +                                       firmware = "uboot";
> +                                       loadables = "atf", "fip";
> +                                       fdt = "fdt";
> +                               };
> +                       };
> +               };
> +       };
> +};
> diff --git a/arch/arm/dts/imx8mm-cl-iot-gate-optee.dts
> b/arch/arm/dts/imx8mm-cl-iot-gate-optee.dts
> new file mode 100644
> index 0000000000..4d0ef46997
> --- /dev/null
> +++ b/arch/arm/dts/imx8mm-cl-iot-gate-optee.dts
> @@ -0,0 +1,6 @@
> +// SPDX-License-Identifier: (GPL-2.0+ OR MIT)
> +/*
> + * Copyright 2019 NXP
> + */
> +
> +#include "imx8mm-cl-iot-gate.dts"
> diff --git a/arch/arm/dts/imx8mm-cl-iot-gate-u-boot.dtsi
> b/arch/arm/dts/imx8mm-cl-iot-gate-u-boot.dtsi
> index 3226a244a9..00927c1574 100644
> --- a/arch/arm/dts/imx8mm-cl-iot-gate-u-boot.dtsi
> +++ b/arch/arm/dts/imx8mm-cl-iot-gate-u-boot.dtsi
> @@ -217,18 +217,6 @@
>                                         };
>                                 };
>
> -                               fip {
> -                                       description = "Trusted Firmware
> FIP";
> -                                       type = "firmware";
> -                                       arch = "arm64";
> -                                       compression = "none";
> -                                       load = <0x40310000>;
> -
> -                                       fip_blob: blob-ext{
> -                                               filename = "fip.bin";
> -                                       };
> -                               };
> -
>                                 fdt {
>                                         description = "NAME";
>                                         type = "flat_dt";
> @@ -246,7 +234,7 @@
>                                 conf {
>                                         description = "NAME";
>                                         firmware = "uboot";
> -                                       loadables = "atf", "fip";
> +                                       loadables = "atf";
>                                         fdt = "fdt";
>                                 };
>                         };
> diff --git a/arch/arm/mach-imx/imx8m/Kconfig
> b/arch/arm/mach-imx/imx8m/Kconfig
> index ccaf106be5..dfda4cb70e 100644
> --- a/arch/arm/mach-imx/imx8m/Kconfig
> +++ b/arch/arm/mach-imx/imx8m/Kconfig
> @@ -138,6 +138,13 @@ config TARGET_IMX8MM_CL_IOT_GATE
>         select IMX8MM
>         select SUPPORT_SPL
>         select IMX8M_LPDDR4
> +
> +config TARGET_IMX8MM_CL_IOT_GATE_OPTEE
> +       bool "CompuLab iot-gate-imx8 with optee support"
> +       select BINMAN
> +       select IMX8MM
> +       select SUPPORT_SPL
> +       select IMX8M_LPDDR4
>  endchoice
>
>  source "board/beacon/imx8mm/Kconfig"
> diff --git a/board/compulab/imx8mm-cl-iot-gate/Kconfig
> b/board/compulab/imx8mm-cl-iot-gate/Kconfig
> index 7f5c794bf5..f32102f24b 100644
> --- a/board/compulab/imx8mm-cl-iot-gate/Kconfig
> +++ b/board/compulab/imx8mm-cl-iot-gate/Kconfig
> @@ -1,4 +1,4 @@
> -if TARGET_IMX8MM_CL_IOT_GATE
> +if TARGET_IMX8MM_CL_IOT_GATE || TARGET_IMX8MM_CL_IOT_GATE_OPTEE
>
>  config SYS_BOARD
>         default "imx8mm-cl-iot-gate"
> diff --git a/board/compulab/imx8mm-cl-iot-gate/MAINTAINERS
> b/board/compulab/imx8mm-cl-iot-gate/MAINTAINERS
> index 9c6b17095c..9db1fb6950 100644
> --- a/board/compulab/imx8mm-cl-iot-gate/MAINTAINERS
> +++ b/board/compulab/imx8mm-cl-iot-gate/MAINTAINERS
> @@ -4,3 +4,4 @@ S:      Maintained
>  F:     board/compulab/imx8mm-cl-iot-gate/
>  F:     include/configs/imx8mm-cl-iot-gate.h
>  F:     configs/imx8mm-cl-iot-gate_defconfig
> +F:     configs/imx8mm-cl-iot-gate-optee_defconfig
> diff --git a/configs/imx8mm-cl-iot-gate-optee_defconfig
> b/configs/imx8mm-cl-iot-gate-optee_defconfig
> new file mode 100644
> index 0000000000..d918779960
> --- /dev/null
> +++ b/configs/imx8mm-cl-iot-gate-optee_defconfig
> @@ -0,0 +1,147 @@
> +CONFIG_ARM=y
> +CONFIG_SPL_SYS_ICACHE_OFF=y
> +CONFIG_SPL_SYS_DCACHE_OFF=y
> +CONFIG_ARCH_IMX8M=y
> +CONFIG_SYS_TEXT_BASE=0x40200000
> +CONFIG_SPL_GPIO=y
> +CONFIG_SPL_LIBCOMMON_SUPPORT=y
> +CONFIG_SPL_LIBGENERIC_SUPPORT=y
> +CONFIG_SYS_MALLOC_F_LEN=0x10000
> +CONFIG_ENV_SIZE=0x4000
> +CONFIG_ENV_OFFSET=0x4400
> +CONFIG_SYS_I2C_MXC_I2C1=y
> +CONFIG_SYS_I2C_MXC_I2C2=y
> +CONFIG_SYS_I2C_MXC_I2C3=y
> +CONFIG_DM_GPIO=y
> +CONFIG_DEFAULT_DEVICE_TREE="imx8mm-cl-iot-gate-optee"
> +CONFIG_SPL_TEXT_BASE=0x7E1000
> +CONFIG_TARGET_IMX8MM_CL_IOT_GATE_OPTEE=y
> +CONFIG_SPL_MMC_SUPPORT=y
> +CONFIG_SPL_SERIAL_SUPPORT=y
> +CONFIG_SPL_DRIVERS_MISC=y
> +CONFIG_SPL=y
> +CONFIG_DISTRO_DEFAULTS=y
> +CONFIG_FIT=y
> +CONFIG_FIT_EXTERNAL_OFFSET=0x3000
> +CONFIG_FIT_SIGNATURE=y
> +CONFIG_SPL_LOAD_FIT=y
> +# CONFIG_USE_SPL_FIT_GENERATOR is not set
> +CONFIG_OF_SYSTEM_SETUP=y
>
> +CONFIG_SYS_EXTRA_OPTIONS="IMX_CONFIG=board/compulab/imx8mm-cl-iot-gate/imximage-8mm-lpddr4.cfg"
> +CONFIG_BOARD_LATE_INIT=y
> +CONFIG_SPL_BOARD_INIT=y
> +CONFIG_SPL_SEPARATE_BSS=y
> +CONFIG_SPL_I2C=y
> +CONFIG_SPL_POWER=y
> +CONFIG_SPL_WATCHDOG=y
> +CONFIG_SYS_PROMPT="u-boot=> "
> +CONFIG_CMD_BOOTEFI_SELFTEST=y
> +CONFIG_CMD_NVEDIT_EFI=y
> +CONFIG_CMD_EEPROM=y
> +CONFIG_CMD_SHA1SUM=y
> +CONFIG_CMD_BIND=y
> +CONFIG_CMD_CLK=y
> +CONFIG_CMD_DFU=y
> +CONFIG_CMD_FUSE=y
> +CONFIG_CMD_GPIO=y
> +CONFIG_CMD_GPT=y
> +CONFIG_CMD_I2C=y
> +CONFIG_CMD_MMC=y
> +CONFIG_CMD_USB=y
> +CONFIG_CMD_USB_MASS_STORAGE=y
> +CONFIG_CMD_SNTP=y
> +CONFIG_CMD_CACHE=y
> +CONFIG_CMD_EFIDEBUG=y
> +CONFIG_CMD_RTC=y
> +CONFIG_CMD_TIME=y
> +CONFIG_CMD_GETTIME=y
> +CONFIG_CMD_TIMER=y
> +CONFIG_CMD_REGULATOR=y
> +CONFIG_CMD_TPM=y
> +CONFIG_CMD_EXT4_WRITE=y
> +CONFIG_OF_CONTROL=y
> +CONFIG_SPL_OF_CONTROL=y
> +CONFIG_ENV_OVERWRITE=y
> +CONFIG_ENV_IS_IN_MMC=y
> +CONFIG_SYS_RELOC_GD_ENV_ADDR=y
> +CONFIG_SYS_MMC_ENV_DEV=2
> +CONFIG_ENV_VARS_UBOOT_RUNTIME_CONFIG=y
> +CONFIG_NET_RANDOM_ETHADDR=y
> +CONFIG_SPL_DM=y
> +CONFIG_SPL_CLK_COMPOSITE_CCF=y
> +CONFIG_CLK_COMPOSITE_CCF=y
> +CONFIG_SPL_CLK_IMX8MM=y
> +CONFIG_CLK_IMX8MM=y
> +CONFIG_DFU_TFTP=y
> +CONFIG_DFU_MMC=y
> +CONFIG_DFU_RAM=y
> +CONFIG_DFU_SF=y
> +CONFIG_UDP_FUNCTION_FASTBOOT=y
> +CONFIG_FASTBOOT_BUF_ADDR=0x44000000
> +CONFIG_FASTBOOT_BUF_SIZE=0x5000000
> +CONFIG_FASTBOOT_FLASH=y
> +CONFIG_FASTBOOT_FLASH_MMC_DEV=2
> +CONFIG_MXC_GPIO=y
> +CONFIG_DM_I2C=y
> +CONFIG_SYS_I2C_MXC=y
> +CONFIG_DM_KEYBOARD=y
> +CONFIG_SUPPORT_EMMC_RPMB=y
> +CONFIG_SUPPORT_EMMC_BOOT=y
> +CONFIG_FSL_ESDHC_IMX=y
> +CONFIG_DM_SPI_FLASH=y
> +CONFIG_PHYLIB=y
> +CONFIG_PHY_ATHEROS=y
> +CONFIG_DM_ETH=y
> +CONFIG_PHY_GIGE=y
> +CONFIG_FEC_MXC=y
> +CONFIG_MII=y
> +CONFIG_PCI_ENDPOINT=y
> +CONFIG_PINCTRL=y
> +CONFIG_SPL_PINCTRL=y
> +CONFIG_PINCTRL_IMX8M=y
> +CONFIG_POWER_DOMAIN=y
> +CONFIG_IMX8M_POWER_DOMAIN=y
> +CONFIG_DM_PMIC=y
> +CONFIG_DM_PMIC_BD71837=y
> +CONFIG_SPL_DM_PMIC_BD71837=y
> +CONFIG_DM_REGULATOR=y
> +CONFIG_DM_REGULATOR_BD71837=y
> +CONFIG_DM_REGULATOR_FIXED=y
> +CONFIG_DM_REGULATOR_GPIO=y
> +CONFIG_DM_RTC=y
> +CONFIG_RTC_ABX80X=y
> +CONFIG_MXC_UART=y
> +CONFIG_SPI=y
> +CONFIG_DM_SPI=y
> +CONFIG_SYSRESET=y
> +CONFIG_SPL_SYSRESET=y
> +CONFIG_SYSRESET_PSCI=y
> +CONFIG_SYSRESET_WATCHDOG=y
> +CONFIG_TEE=y
> +CONFIG_OPTEE=y
> +CONFIG_DM_THERMAL=y
> +CONFIG_TPM2_TIS_SPI=y
> +CONFIG_TPM2_FTPM_TEE=y
> +CONFIG_USB=y
> +CONFIG_USB_EHCI_HCD=y
> +CONFIG_USB_EHCI_GENERIC=y
> +CONFIG_USB_HOST_ETHER=y
> +CONFIG_USB_ETHER_ASIX88179=y
> +CONFIG_USB_GADGET=y
> +CONFIG_USB_GADGET_MANUFACTURER="FSL"
> +CONFIG_USB_GADGET_VENDOR_NUM=0x0525
> +CONFIG_USB_GADGET_PRODUCT_NUM=0xa4a5
> +CONFIG_CI_UDC=y
> +CONFIG_SDP_LOADADDR=0x40400000
> +CONFIG_USB_GADGET_DOWNLOAD=y
> +CONFIG_IMX_WATCHDOG=y
> +CONFIG_SPL_TINY_MEMSET=y
> +CONFIG_TPM=y
> +CONFIG_LZO=y
> +CONFIG_BZIP2=y
> +CONFIG_OF_LIBFDT_OVERLAY=y
> +CONFIG_EFI_SET_TIME=y
> +CONFIG_EFI_RUNTIME_UPDATE_CAPSULE=y
> +CONFIG_EFI_CAPSULE_ON_DISK=y
> +CONFIG_EFI_CAPSULE_FIRMWARE_FIT=y
> +CONFIG_EFI_SECURE_BOOT=y
> --
> 2.25.1
>
>
Looks good to me. And I've tested this patch.

Tested-by: Ying-Chun Liu (PaulLiu) <paul.liu at linaro.org>


More information about the U-Boot mailing list