On Tue, 24 Aug 2021 at 08:11, Fabio Estevam <feste...@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 <feste...@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@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@0/bus@30800000/i2c@30a30000/pmic@4b} { > + u-boot,dm-spl; > +}; > + > +&{/soc@0/bus@30800000/i2c@30a30000/pmic@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@1 { > + filename = "lpddr4_pmu_train_1d_imem.bin"; > + size = <0x8000>; > + }; > + > + blob_2: blob-ext@2 { > + filename = "lpddr4_pmu_train_1d_dmem.bin"; > + size = <0x4000>; > + }; > + > + blob_3: blob-ext@3 { > + filename = "lpddr4_pmu_train_2d_imem.bin"; > + size = <0x8000>; > + }; > + > + blob_4: blob-ext@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....@linaro.org>