On Wed, 2021-10-06 at 13:17 -0700, Tim Harvey wrote: > Use binman to pack images. > > Note that imx8mm_venice supports several boards via multiple DTB's thus > in the fit node we must use: > - fit,fdt-list = "of-list" > - fdt-SEQ > - config-SEQ > > Signed-off-by: Tim Harvey <thar...@gateworks.com>
Reviewed-by: Marcel Ziswiler <marcel.ziswi...@toradex.com> > --- > v2: > - rebase on origin/mater You probably meant master (;-p). Rest look legit. > - remove ATF_LOAD_ADDR from README as its no longer needed > --- > arch/arm/dts/imx8mm-venice-u-boot.dtsi | 119 ++++++++++++++++++ > arch/arm/mach-imx/imx8m/Kconfig | 1 + > board/gateworks/venice/Kconfig | 3 +- > board/gateworks/venice/README | 2 +- > .../gateworks/venice/imximage-8mm-lpddr4.cfg | 9 ++ > configs/imx8mm_venice_defconfig | 4 +- > 6 files changed, 133 insertions(+), 5 deletions(-) > create mode 100644 board/gateworks/venice/imximage-8mm-lpddr4.cfg > > diff --git a/arch/arm/dts/imx8mm-venice-u-boot.dtsi > b/arch/arm/dts/imx8mm-venice-u-boot.dtsi > index 42b2903f04..e0fa9ff4bf 100644 > --- a/arch/arm/dts/imx8mm-venice-u-boot.dtsi > +++ b/arch/arm/dts/imx8mm-venice-u-boot.dtsi > @@ -6,6 +6,10 @@ > #include "imx8mm-u-boot.dtsi" > > / { > + binman: binman { > + multiple-images; > + }; > + > wdt-reboot { > compatible = "wdt-reboot"; > wdt = <&wdog1>; > @@ -68,3 +72,118 @@ > &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>; > + }; > + }; > + > + spl { > + filename = "spl.bin"; > + > + 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>; > + fit,fdt-list = "of-list"; > + > + 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 = "bl31.bin"; > + }; > + }; > + > + @fdt-SEQ { > + description = "NAME"; > + type = "flat_dt"; > + compression = "none"; > + }; > + }; > + > + configurations { > + default = "@config-DEFAULT-SEQ"; > + > + @config-SEQ { > + description = "NAME"; > + firmware = "uboot"; > + loadables = "atf"; > + fdt = "fdt-SEQ"; > + }; > + }; > + }; > + }; > + > + imx-boot { > + filename = "flash.bin"; > + pad-byte = <0x00>; > + > + spl: blob-ext@1 { > + filename = "spl.bin"; > + offset = <0x0>; > + }; > + > + uboot: blob-ext@2 { > + filename = "u-boot.itb"; > + offset = <0x57c00>; > + }; > + }; > +}; > diff --git a/arch/arm/mach-imx/imx8m/Kconfig b/arch/arm/mach-imx/imx8m/Kconfig > index ccaf106be5..43901f15d2 100644 > --- a/arch/arm/mach-imx/imx8m/Kconfig > +++ b/arch/arm/mach-imx/imx8m/Kconfig > @@ -71,6 +71,7 @@ config TARGET_IMX8MM_ICORE_MX8MM > > config TARGET_IMX8MM_VENICE > bool "Support Gateworks Venice iMX8M Mini module" > + select BINMAN > select IMX8MM > select SUPPORT_SPL > select IMX8M_LPDDR4 > diff --git a/board/gateworks/venice/Kconfig b/board/gateworks/venice/Kconfig > index 639bf35d20..687b94f24d 100644 > --- a/board/gateworks/venice/Kconfig > +++ b/board/gateworks/venice/Kconfig > @@ -10,6 +10,5 @@ config SYS_CONFIG_NAME > default "imx8mm_venice" > > config IMX_CONFIG > - default "arch/arm/mach-imx/imx8m/imximage-8mm-lpddr4.cfg" > - > + default "board/gateworks/venice/imximage-8mm-lpddr4.cfg" > endif > diff --git a/board/gateworks/venice/README b/board/gateworks/venice/README > index 6a0ab1ef10..773cc09e87 100644 > --- a/board/gateworks/venice/README > +++ b/board/gateworks/venice/README > @@ -25,7 +25,7 @@ $ cp firmware-imx-8.9/firmware/ddr/synopsys/lpddr4*.bin . > Build U-Boot > ============ > $ make imx8mm_venice_defconfig > -$ make flash.bin CROSS_COMPILE=aarch64-linux-gnu- ATF_LOAD_ADDR=0x920000 > +$ make CROSS_COMPILE=aarch64-linux-gnu- > > Update eMMC > =========== > diff --git a/board/gateworks/venice/imximage-8mm-lpddr4.cfg > b/board/gateworks/venice/imximage-8mm-lpddr4.cfg > new file mode 100644 > index 0000000000..ccaa765cb7 > --- /dev/null > +++ b/board/gateworks/venice/imximage-8mm-lpddr4.cfg > @@ -0,0 +1,9 @@ > +/* SPDX-License-Identifier: GPL-2.0+ */ > +/* > + * Copyright 2021 Gateworks Corporation > + */ > + > +#define __ASSEMBLY__ > + > +BOOT_FROM sd > +LOADER u-boot-spl-ddr.bin 0x7E1000 > diff --git a/configs/imx8mm_venice_defconfig b/configs/imx8mm_venice_defconfig > index c622211926..0121f92162 100644 > --- a/configs/imx8mm_venice_defconfig > +++ b/configs/imx8mm_venice_defconfig > @@ -25,7 +25,7 @@ CONFIG_SYS_LOAD_ADDR=0x40480000 > CONFIG_FIT=y > CONFIG_FIT_EXTERNAL_OFFSET=0x3000 > CONFIG_SPL_LOAD_FIT=y > -CONFIG_SPL_FIT_GENERATOR="arch/arm/mach-imx/mkimage_fit_atf.sh" > +# CONFIG_USE_SPL_FIT_GENERATOR is not set > CONFIG_OF_BOARD_SETUP=y > CONFIG_OF_SYSTEM_SETUP=y > # CONFIG_USE_BOOTCOMMAND is not set > @@ -56,7 +56,7 @@ CONFIG_CMD_EXT4_WRITE=y > # CONFIG_SPL_EFI_PARTITION is not set > CONFIG_OF_CONTROL=y > CONFIG_SPL_OF_CONTROL=y > -CONFIG_OF_LIST="imx8mm-venice-gw71xx-0x imx8mm-venice-gw72xx-0x > imx8mm-venice-gw73xx-0x imx8mm-venice-gw7901 > imx8mm-venice-gw7902" > +CONFIG_OF_LIST="imx8mm-venice imx8mm-venice-gw71xx-0x > imx8mm-venice-gw72xx-0x imx8mm-venice-gw73xx-0x imx8mm- > venice-gw7901 imx8mm-venice-gw7902" > CONFIG_ENV_IS_IN_MMC=y > CONFIG_SYS_REDUNDAND_ENVIRONMENT=y > CONFIG_ENV_VARS_UBOOT_RUNTIME_CONFIG=y