[PATCH v1 0/7] board: toradex: verdin-imx8mm: target refresh

From: Marcel Ziswiler marcel.ziswiler@toradex.com
An assortment of fixes and improvements like a legacy image generation fix, an Ethernet PHY configuration fix, DEK blob encapsulation preparation, migration to using binman to pack images, SLEEP_MOCI# enablement and dropping of V1.0 hardware support [1].
One last issue I am still trying to debug the root cause of. As already once mentioned back here [2] it still prints the following error message during boot:
imx_wdt watchdog@30280000: pinctrl_select_state_full: uclass_get_device_by_phandle_id: err=-19
Note that this series is applied on top of Peng's Makefile fix [3] as otherwise, it may not quite generate all binman artefacts in the right order as discussed here [4].
[1] https://developer.toradex.com/verdin-sample-phase-over [2] https://marc.info/?l=u-boot&m=161786572422973 [3] https://marc.info/?l=u-boot&m=162908373904742 [4] https://marc.info/?l=u-boot&m=162945614207220
Marcel Ziswiler (5): imx: mkimage_fit_atf: fix legacy image generation imx8m: clean-up kconfig indentation verdin-imx8mm: fix ethernet ARM: dts: imx8mm-verdin: prepare for dek blob encapsulation verdin-imx8mm: switch to use binman to pack images
Max Krummenacher (2): verdin-imx8mm: enable sleep_moci output verdin-imx8mm: drop support for v1.0 hardware
arch/arm/dts/imx8mm-verdin-u-boot.dtsi | 129 +++++++++++++++++++- arch/arm/dts/imx8mm-verdin.dts | 20 ++- arch/arm/mach-imx/imx8m/Kconfig | 21 ++-- arch/arm/mach-imx/mkimage_fit_atf.sh | 26 ++-- board/toradex/verdin-imx8mm/imximage.cfg | 11 +- board/toradex/verdin-imx8mm/verdin-imx8mm.c | 77 +----------- configs/verdin-imx8mm_defconfig | 3 +- doc/board/toradex/verdin-imx8mm.rst | 54 ++++---- 8 files changed, 210 insertions(+), 131 deletions(-)

From: Marcel Ziswiler marcel.ziswiler@toradex.com
While most boards meanwhile migrated to using binman a few like the verdin-imx8mm are still using the legacy image generation. Unfortunately, the legacy image generation is currently broken which is especially bad for any kind of bisection attempts. Anyway, this fixes it even though we will also migrate to using binman shortly.
Fixes: commit cb9faa6f98ae ("tools: Use a single target-independent config to enable OpenSSL") Signed-off-by: Marcel Ziswiler marcel.ziswiler@toradex.com ---
arch/arm/mach-imx/mkimage_fit_atf.sh | 26 +++++++++++++------------- 1 file changed, 13 insertions(+), 13 deletions(-)
diff --git a/arch/arm/mach-imx/mkimage_fit_atf.sh b/arch/arm/mach-imx/mkimage_fit_atf.sh index 2a17968794c..2d6c46633c7 100755 --- a/arch/arm/mach-imx/mkimage_fit_atf.sh +++ b/arch/arm/mach-imx/mkimage_fit_atf.sh @@ -53,7 +53,7 @@ cat << __HEADER_EOF description = "Configuration to load ATF before U-Boot";
images { - uboot@1 { + uboot_1 { description = "U-Boot (64-bit)"; os = "u-boot"; data = /incbin/("$BL33"); @@ -68,7 +68,7 @@ cnt=1 for dtname in $* do cat << __FDT_IMAGE_EOF - fdt@$cnt { + fdt_$cnt { description = "$(basename $dtname .dtb)"; data = /incbin/("$dtname"); type = "flat_dt"; @@ -79,7 +79,7 @@ cnt=$((cnt+1)) done
cat << __HEADER_EOF - atf@1 { + atf_1 { description = "ARM Trusted Firmware"; os = "arm-trusted-firmware"; data = /incbin/("$BL31"); @@ -93,7 +93,7 @@ __HEADER_EOF
if [ -f $BL32 ]; then cat << __HEADER_EOF - tee@1 { + tee_1 { description = "TEE firmware"; data = /incbin/("$BL32"); type = "firmware"; @@ -108,7 +108,7 @@ fi cat << __CONF_HEADER_EOF }; configurations { - default = "config@1"; + default = "config_1";
__CONF_HEADER_EOF
@@ -117,20 +117,20 @@ for dtname in $* do if [ -f $BL32 ]; then cat << __CONF_SECTION_EOF - config@$cnt { + config_$cnt { description = "$(basename $dtname .dtb)"; - firmware = "uboot@1"; - loadables = "atf@1", "tee@1"; - fdt = "fdt@$cnt"; + firmware = "uboot_1"; + loadables = "atf_1", "tee_1"; + fdt = "fdt_$cnt"; }; __CONF_SECTION_EOF else cat << __CONF_SECTION1_EOF - config@$cnt { + config_$cnt { description = "$(basename $dtname .dtb)"; - firmware = "uboot@1"; - loadables = "atf@1"; - fdt = "fdt@$cnt"; + firmware = "uboot_1"; + loadables = "atf_1"; + fdt = "fdt_$cnt"; }; __CONF_SECTION1_EOF fi

Hello Marcel,
-----Original Message----- From: U-Boot u-boot-bounces@lists.denx.de On Behalf Of Marcel Ziswiler Sent: Friday, August 20, 2021 10:52 PM To: u-boot@lists.denx.de Cc: Heiko Thiery heiko.thiery@gmail.com; Stefano Babic sbabic@denx.de; Fabio Estevam festevam@gmail.com; Frieder Schrempf frieder.schrempf@kontron.de; Marcel Ziswiler marcel.ziswiler@toradex.com; NXP i.MX U-Boot Team <uboot- imx@nxp.com>; Peng Fan peng.fan@nxp.com Subject: [PATCH v1 1/7] imx: mkimage_fit_atf: fix legacy image generation
From: Marcel Ziswiler marcel.ziswiler@toradex.com
While most boards meanwhile migrated to using binman a few like the verdin- imx8mm are still using the legacy image generation. Unfortunately, the legacy image generation is currently broken which is especially bad for any kind of bisection attempts. Anyway, this fixes it even though we will also migrate to using binman shortly.
This change has been already proposed in [1], but the discussion went into the direction of monolithic "flash.bin" rather than a migration to use binman.
I guess if this change is really needed due to the fact that the migration of some boards is really difficult - the original patch can be taken.
However, I've commented out in that thread that there is a warning regarding the usage of scripts and migration notice, so maybe it does make sense to spend extra effort to migrate away from this script at all?
Fixes: commit cb9faa6f98ae ("tools: Use a single target-independent config to enable OpenSSL") Signed-off-by: Marcel Ziswiler marcel.ziswiler@toradex.com
arch/arm/mach-imx/mkimage_fit_atf.sh | 26 +++++++++++++------------- 1 file changed, 13 insertions(+), 13 deletions(-)
diff --git a/arch/arm/mach-imx/mkimage_fit_atf.sh b/arch/arm/mach- imx/mkimage_fit_atf.sh index 2a17968794c..2d6c46633c7 100755 --- a/arch/arm/mach-imx/mkimage_fit_atf.sh +++ b/arch/arm/mach-imx/mkimage_fit_atf.sh @@ -53,7 +53,7 @@ cat << __HEADER_EOF description = "Configuration to load ATF before U-Boot";
images {
uboot@1 {
uboot_1 { description = "U-Boot (64-bit)"; os = "u-boot"; data = /incbin/("$BL33"); @@ -68,7 +68,7 @@ cnt=1 for dtname in $*
do cat << __FDT_IMAGE_EOF
fdt@$cnt {
fdt_$cnt { description = "$(basename $dtname .dtb)"; data = /incbin/("$dtname"); type = "flat_dt"; @@ -79,7 +79,7 @@ cnt=$((cnt+1)) done
cat << __HEADER_EOF
atf@1 {
atf_1 { description = "ARM Trusted Firmware"; os = "arm-trusted-firmware"; data = /incbin/("$BL31"); @@ -93,7 +93,7 @@ __HEADER_EOF
if [ -f $BL32 ]; then cat << __HEADER_EOF
tee@1 {
tee_1 { description = "TEE firmware"; data = /incbin/("$BL32"); type = "firmware"; @@ -108,7 +108,7 @@ fi cat <<
__CONF_HEADER_EOF }; configurations {
default = "config@1";
default = "config_1";
__CONF_HEADER_EOF
@@ -117,20 +117,20 @@ for dtname in $* do if [ -f $BL32 ]; then cat << __CONF_SECTION_EOF
config@$cnt {
config_$cnt { description = "$(basename $dtname .dtb)";
firmware = "uboot@1";
loadables = "atf@1", "tee@1";
fdt = "fdt@$cnt";
firmware = "uboot_1";
loadables = "atf_1", "tee_1";
fdt = "fdt_$cnt"; };
__CONF_SECTION_EOF else cat << __CONF_SECTION1_EOF
config@$cnt {
config_$cnt { description = "$(basename $dtname .dtb)";
firmware = "uboot@1";
loadables = "atf@1";
fdt = "fdt@$cnt";
firmware = "uboot_1";
loadables = "atf_1";
fdt = "fdt_$cnt"; };
__CONF_SECTION1_EOF fi -- 2.26.2
Link: [1]: https://lore.kernel.org/u-boot/20210505120053.9466-1-oliver.graute@kococonne...
Regards, Andrey

Hi Andrey
Long time no see (;-p).
On Sun, 2021-08-22 at 10:07 +0000, ZHIZHIKIN Andrey wrote:
Hello Marcel,
-----Original Message----- From: U-Boot u-boot-bounces@lists.denx.de On Behalf Of Marcel Ziswiler Sent: Friday, August 20, 2021 10:52 PM To: u-boot@lists.denx.de Cc: Heiko Thiery heiko.thiery@gmail.com; Stefano Babic sbabic@denx.de; Fabio Estevam festevam@gmail.com; Frieder Schrempf frieder.schrempf@kontron.de; Marcel Ziswiler marcel.ziswiler@toradex.com; NXP i.MX U-Boot Team <uboot- imx@nxp.com>; Peng Fan peng.fan@nxp.com Subject: [PATCH v1 1/7] imx: mkimage_fit_atf: fix legacy image generation
From: Marcel Ziswiler marcel.ziswiler@toradex.com
While most boards meanwhile migrated to using binman a few like the verdin- imx8mm are still using the legacy image generation. Unfortunately, the legacy image generation is currently broken which is especially bad for any kind of bisection attempts. Anyway, this fixes it even though we will also migrate to using binman shortly.
This change has been already proposed in [1],
Well, what I do not get is how one can move forward and leave all kinds of stuff just broken. Fact is, that the legacy image creation has been and still is plain simply broken!
but the discussion went into the direction of monolithic "flash.bin" rather than a migration to use binman.
Well, those two do actually not rule each other out. Remember, later in this patch set I am migrating to using binman which I instruct to generate a monolithic "flash.bin" again.
I guess if this change is really needed due to the fact that the migration of some boards is really difficult
- the original patch can be taken.
What I found extremely problematic is, as mentioned initially, stuff is currently broken which makes e.g. bisecting other issues extremely cumbersome. But in theory, as I propose now to migrate anyway, we could just not care and leave it broken for anybody else. I just feel this is not really too nice of a gesture!
However, I've commented out in that thread that there is a warning regarding the usage of scripts and migration notice, so maybe it does make sense to spend extra effort to migrate away from this script at all?
Yes, of course, it is the goal to migrate. I just don't get how in IT new stuff gets introduced all the time with leaving past things broken. Just a little bit annoying...
Fixes: commit cb9faa6f98ae ("tools: Use a single target-independent config to enable OpenSSL")
...
Link: [1]: https://lore.kernel.org/u-boot/20210505120053.9466-1-oliver.graute@kococonne...
Regards, Andrey
Cheers
Marcel

Hello Marcel!
-----Original Message----- From: Marcel Ziswiler marcel.ziswiler@toradex.com Sent: Monday, August 23, 2021 8:57 AM To: u-boot@lists.denx.de; ZHIZHIKIN Andrey <andrey.zhizhikin@leica- geosystems.com> Cc: festevam@gmail.com; peng.fan@nxp.com; uboot-imx@nxp.com; sbabic@denx.de; frieder.schrempf@kontron.de; heiko.thiery@gmail.com Subject: Re: [PATCH v1 1/7] imx: mkimage_fit_atf: fix legacy image generation
Hi Andrey
Long time no see (;-p).
Indeed! :D
On Sun, 2021-08-22 at 10:07 +0000, ZHIZHIKIN Andrey wrote:
Hello Marcel,
-----Original Message----- From: U-Boot u-boot-bounces@lists.denx.de On Behalf Of Marcel Ziswiler Sent: Friday, August 20, 2021 10:52 PM To: u-boot@lists.denx.de Cc: Heiko Thiery heiko.thiery@gmail.com; Stefano Babic sbabic@denx.de; Fabio Estevam festevam@gmail.com; Frieder Schrempf frieder.schrempf@kontron.de; Marcel Ziswiler marcel.ziswiler@toradex.com; NXP i.MX U-Boot Team <uboot- imx@nxp.com>; Peng Fan peng.fan@nxp.com Subject: [PATCH v1 1/7] imx: mkimage_fit_atf: fix legacy image generation
From: Marcel Ziswiler marcel.ziswiler@toradex.com
While most boards meanwhile migrated to using binman a few like the verdin- imx8mm are still using the legacy image generation. Unfortunately, the legacy image generation is currently broken which is especially bad for any kind of bisection attempts. Anyway, this fixes it even though we will also migrate to using binman shortly.
This change has been already proposed in [1],
Well, what I do not get is how one can move forward and leave all kinds of stuff just broken. Fact is, that the legacy image creation has been and still is plain simply broken!
but the discussion went into the direction of monolithic "flash.bin" rather than a
migration to use binman.
Well, those two do actually not rule each other out. Remember, later in this patch set I am migrating to using binman which I instruct to generate a monolithic "flash.bin" again.
I guess if this change is really needed due to the fact that the migration of some boards is really difficult
- the original patch can be taken.
What I found extremely problematic is, as mentioned initially, stuff is currently broken which makes e.g. bisecting other issues extremely cumbersome. But in theory, as I propose now to migrate anyway, we could just not care and leave it broken for anybody else. I just feel this is not really too nice of a gesture!
Totally agree, keeping the broken implementation is not a nice thing as people unaware of this might base their work on it and wonder why it does not build on the first place...
Actually, I wanted to propose to remove this script from the tree and let derivatives that rely on it to fail to being forcibly converted to binman. But I was humble enough to do it through...
There are still those boards that use FIT generator script: configs/cgtqmx8_defconfig:CONFIG_SPL_FIT_GENERATOR="arch/arm/mach-imx/mkimage_fit_atf.sh" configs/imx8mm-icore-mx8mm-ctouch2_defconfig:CONFIG_SPL_FIT_GENERATOR="arch/arm/mach-imx/mkimage_fit_atf.sh" configs/imx8mm-icore-mx8mm-edimm2.2_defconfig:CONFIG_SPL_FIT_GENERATOR="arch/arm/mach-imx/mkimage_fit_atf.sh" configs/imx8mm_beacon_defconfig:CONFIG_SPL_FIT_GENERATOR="arch/arm/mach-imx/mkimage_fit_atf.sh" configs/imx8mm_venice_defconfig:CONFIG_SPL_FIT_GENERATOR="arch/arm/mach-imx/mkimage_fit_atf.sh" configs/imx8mn_beacon_2g_defconfig:CONFIG_SPL_FIT_GENERATOR="arch/arm/mach-imx/mkimage_fit_atf.sh" configs/imx8mn_beacon_defconfig:CONFIG_SPL_FIT_GENERATOR="arch/arm/mach-imx/mkimage_fit_atf.sh" configs/imx8mq_evk_defconfig:CONFIG_SPL_FIT_GENERATOR="arch/arm/mach-imx/mkimage_fit_atf.sh" configs/imx8mq_phanbell_defconfig:CONFIG_SPL_FIT_GENERATOR="arch/arm/mach-imx/mkimage_fit_atf.sh" configs/imx8qm_rom7720_a1_4G_defconfig:CONFIG_SPL_FIT_GENERATOR="arch/arm/mach-imx/mkimage_fit_atf.sh" configs/phycore-imx8mm_defconfig:CONFIG_SPL_FIT_GENERATOR="arch/arm/mach-imx/mkimage_fit_atf.sh" configs/pico-imx8mq_defconfig:CONFIG_SPL_FIT_GENERATOR="arch/arm/mach-imx/mkimage_fit_atf.sh" configs/verdin-imx8mm_defconfig:CONFIG_SPL_FIT_GENERATOR="arch/arm/mach-imx/mkimage_fit_atf.sh"
Verdin gets converted with your other patch, while for all the others I'm not sure what the status is.
There is however one board which has been introduced quite recent (Cc'ing Oliver here) and didn't went for binman implementation from the start. This is a clear indication that people are still relying on old FIT generator, even though there is a clear warning about that it is not suppose to be used.
I guess at this stage, I'd rather leave this question for maintainers to decide - enforce the conversion to binman via deleting the FIT generator script, or fix the generator script with the patch from Oliver and let board maintainers to either use it or migrate.
However, I've commented out in that thread that there is a warning regarding the usage of scripts and migration notice, so maybe it does make
sense to spend extra effort to migrate away from this script at all?
Yes, of course, it is the goal to migrate. I just don't get how in IT new stuff gets introduced all the time with leaving past things broken. Just a little bit annoying...
Fixes: commit cb9faa6f98ae ("tools: Use a single target-independent config to enable OpenSSL")
...
Cheers
Marcel
Cheers, Andrey

Hi Andrey,
On Mon, Aug 23, 2021 at 4:50 AM ZHIZHIKIN Andrey andrey.zhizhikin@leica-geosystems.com wrote:
There are still those boards that use FIT generator script: configs/cgtqmx8_defconfig:CONFIG_SPL_FIT_GENERATOR="arch/arm/mach-imx/mkimage_fit_atf.sh" configs/imx8mm-icore-mx8mm-ctouch2_defconfig:CONFIG_SPL_FIT_GENERATOR="arch/arm/mach-imx/mkimage_fit_atf.sh" configs/imx8mm-icore-mx8mm-edimm2.2_defconfig:CONFIG_SPL_FIT_GENERATOR="arch/arm/mach-imx/mkimage_fit_atf.sh" configs/imx8mm_beacon_defconfig:CONFIG_SPL_FIT_GENERATOR="arch/arm/mach-imx/mkimage_fit_atf.sh" configs/imx8mm_venice_defconfig:CONFIG_SPL_FIT_GENERATOR="arch/arm/mach-imx/mkimage_fit_atf.sh" configs/imx8mn_beacon_2g_defconfig:CONFIG_SPL_FIT_GENERATOR="arch/arm/mach-imx/mkimage_fit_atf.sh" configs/imx8mn_beacon_defconfig:CONFIG_SPL_FIT_GENERATOR="arch/arm/mach-imx/mkimage_fit_atf.sh" configs/imx8mq_evk_defconfig:CONFIG_SPL_FIT_GENERATOR="arch/arm/mach-imx/mkimage_fit_atf.sh" configs/imx8mq_phanbell_defconfig:CONFIG_SPL_FIT_GENERATOR="arch/arm/mach-imx/mkimage_fit_atf.sh" configs/imx8qm_rom7720_a1_4G_defconfig:CONFIG_SPL_FIT_GENERATOR="arch/arm/mach-imx/mkimage_fit_atf.sh" configs/phycore-imx8mm_defconfig:CONFIG_SPL_FIT_GENERATOR="arch/arm/mach-imx/mkimage_fit_atf.sh" configs/pico-imx8mq_defconfig:CONFIG_SPL_FIT_GENERATOR="arch/arm/mach-imx/mkimage_fit_atf.sh" configs/verdin-imx8mm_defconfig:CONFIG_SPL_FIT_GENERATOR="arch/arm/mach-imx/mkimage_fit_atf.sh"
Verdin gets converted with your other patch, while for all the others I'm not sure what the status is.
Peng sent a patch series converting imx8mq_evk, pico-imx8mq and imx8mq_phanbell to binman: https://www.mail-archive.com/u-boot@lists.denx.de/msg414962.html
Regards,
Fabio Estevam

Hello Fabio,
-----Original Message----- From: Fabio Estevam festevam@gmail.com Sent: Monday, August 23, 2021 1:00 PM To: ZHIZHIKIN Andrey andrey.zhizhikin@leica-geosystems.com Cc: Marcel Ziswiler marcel.ziswiler@toradex.com; u-boot@lists.denx.de; peng.fan@nxp.com; uboot-imx@nxp.com; sbabic@denx.de; frieder.schrempf@kontron.de; heiko.thiery@gmail.com; Oliver Graute oliver.graute@kococonnector.com Subject: Re: [PATCH v1 1/7] imx: mkimage_fit_atf: fix legacy image generation
Hi Andrey,
Verdin gets converted with your other patch, while for all the others I'm not
sure what the status is.
Peng sent a patch series converting imx8mq_evk, pico-imx8mq and imx8mq_phanbell to binman: https://www.mail-archive.com/u-boot@lists.denx.de/msg414962.html
Thanks for pointing it out!
I guess the short list of affected candidates when mkimage_fit_atf.sh FIT generator gets deleted then would be:
configs/cgtqmx8_defconfig:CONFIG_SPL_FIT_GENERATOR="arch/arm/mach-imx/mkimage_fit_atf.sh" configs/imx8mm-icore-mx8mm-ctouch2_defconfig:CONFIG_SPL_FIT_GENERATOR="arch/arm/mach-imx/mkimage_fit_atf.sh" configs/imx8mm-icore-mx8mm-edimm2.2_defconfig:CONFIG_SPL_FIT_GENERATOR="arch/arm/mach-imx/mkimage_fit_atf.sh" configs/imx8mm_beacon_defconfig:CONFIG_SPL_FIT_GENERATOR="arch/arm/mach-imx/mkimage_fit_atf.sh" configs/imx8mm_venice_defconfig:CONFIG_SPL_FIT_GENERATOR="arch/arm/mach-imx/mkimage_fit_atf.sh" configs/imx8mn_beacon_2g_defconfig:CONFIG_SPL_FIT_GENERATOR="arch/arm/mach-imx/mkimage_fit_atf.sh" configs/imx8mn_beacon_defconfig:CONFIG_SPL_FIT_GENERATOR="arch/arm/mach-imx/mkimage_fit_atf.sh" configs/imx8qm_rom7720_a1_4G_defconfig:CONFIG_SPL_FIT_GENERATOR="arch/arm/mach-imx/mkimage_fit_atf.sh" configs/phycore-imx8mm_defconfig:CONFIG_SPL_FIT_GENERATOR="arch/arm/mach-imx/mkimage_fit_atf.sh"
Should I send out an RFC to have the FIT generator script removed for 'mach-imx'?
This would trigger the build failures for those derivatives, but since it is broken anyway - this would need to be solved by maintainers migrating them to binman.
Regards,
Fabio Estevam
Regards, Andrey

Hi Andrey,
On Mon, Aug 23, 2021 at 12:53 PM ZHIZHIKIN Andrey andrey.zhizhikin@leica-geosystems.com wrote:
Thanks for pointing it out!
I guess the short list of affected candidates when mkimage_fit_atf.sh FIT generator gets deleted then would be:
configs/cgtqmx8_defconfig:CONFIG_SPL_FIT_GENERATOR="arch/arm/mach-imx/mkimage_fit_atf.sh" configs/imx8mm-icore-mx8mm-ctouch2_defconfig:CONFIG_SPL_FIT_GENERATOR="arch/arm/mach-imx/mkimage_fit_atf.sh" configs/imx8mm-icore-mx8mm-edimm2.2_defconfig:CONFIG_SPL_FIT_GENERATOR="arch/arm/mach-imx/mkimage_fit_atf.sh" configs/imx8mm_beacon_defconfig:CONFIG_SPL_FIT_GENERATOR="arch/arm/mach-imx/mkimage_fit_atf.sh" configs/imx8mm_venice_defconfig:CONFIG_SPL_FIT_GENERATOR="arch/arm/mach-imx/mkimage_fit_atf.sh" configs/imx8mn_beacon_2g_defconfig:CONFIG_SPL_FIT_GENERATOR="arch/arm/mach-imx/mkimage_fit_atf.sh" configs/imx8mn_beacon_defconfig:CONFIG_SPL_FIT_GENERATOR="arch/arm/mach-imx/mkimage_fit_atf.sh" configs/imx8qm_rom7720_a1_4G_defconfig:CONFIG_SPL_FIT_GENERATOR="arch/arm/mach-imx/mkimage_fit_atf.sh" configs/phycore-imx8mm_defconfig:CONFIG_SPL_FIT_GENERATOR="arch/arm/mach-imx/mkimage_fit_atf.sh"
Should I send out an RFC to have the FIT generator script removed for 'mach-imx'?
This would trigger the build failures for those derivatives, but since it is broken anyway - this would need to be solved by maintainers migrating them to binman.
Yes, please send an RFC for that.
Thanks

From: Marcel Ziswiler marcel.ziswiler@toradex.com
Replace spurious spaces with proper tabs.
Signed-off-by: Marcel Ziswiler marcel.ziswiler@toradex.com ---
arch/arm/mach-imx/imx8m/Kconfig | 20 ++++++++++---------- 1 file changed, 10 insertions(+), 10 deletions(-)
diff --git a/arch/arm/mach-imx/imx8m/Kconfig b/arch/arm/mach-imx/imx8m/Kconfig index 1d08a2977f5..a2ba30cf332 100644 --- a/arch/arm/mach-imx/imx8m/Kconfig +++ b/arch/arm/mach-imx/imx8m/Kconfig @@ -25,14 +25,14 @@ config SYS_SOC default "imx8m"
choice - prompt "NXP i.MX8M board select" + prompt "NXP i.MX8M board select" optional
config TARGET_IMX8MQ_CM - bool "Ronetix iMX8MQ-CM SoM" + bool "Ronetix iMX8MQ-CM SoM" select BINMAN - select IMX8MQ - select IMX8M_LPDDR4 + select IMX8MQ + select IMX8M_LPDDR4
config TARGET_IMX8MQ_EVK bool "imx8mq_evk" @@ -105,10 +105,10 @@ config TARGET_PICO_IMX8MQ select IMX8M_LPDDR4
config TARGET_VERDIN_IMX8MM - bool "Support Toradex Verdin iMX8M Mini module" - select IMX8MM - select SUPPORT_SPL - select IMX8M_LPDDR4 + bool "Support Toradex Verdin iMX8M Mini module" + select IMX8MM + select SUPPORT_SPL + select IMX8M_LPDDR4
config TARGET_IMX8MM_BEACON bool "imx8mm Beacon Embedded devkit" @@ -125,14 +125,14 @@ config TARGET_IMX8MN_BEACON config TARGET_PHYCORE_IMX8MM bool "PHYTEC PHYCORE i.MX8MM" select IMX8MM - select SUPPORT_SPL + select SUPPORT_SPL select IMX8M_LPDDR4
config TARGET_PHYCORE_IMX8MP bool "PHYTEC PHYCORE i.MX8MP" select BINMAN select IMX8MP - select SUPPORT_SPL + select SUPPORT_SPL select IMX8M_LPDDR4
config TARGET_IMX8MM_CL_IOT_GATE

From: Marcel Ziswiler marcel.ziswiler@toradex.com
Turns out Microship (formerly Micrel) meanwhile integrated proper support for the DLL setup on their KSZ9131. Unfortunately, this conflicts with our previous board code doing that. Fix this by getting rid of our board code and just relying on the generic implementation relying on rgmii-id being used as phy-mode.
Fixes: commit c6df0e2ffdc4 ("net: phy: micrel: add support for DLL setup on ksz9131") Signed-off-by: Marcel Ziswiler marcel.ziswiler@toradex.com ---
arch/arm/dts/imx8mm-verdin.dts | 2 +- board/toradex/verdin-imx8mm/verdin-imx8mm.c | 64 --------------------- 2 files changed, 1 insertion(+), 65 deletions(-)
diff --git a/arch/arm/dts/imx8mm-verdin.dts b/arch/arm/dts/imx8mm-verdin.dts index fb0756d6e19..ac2a4b69d3c 100644 --- a/arch/arm/dts/imx8mm-verdin.dts +++ b/arch/arm/dts/imx8mm-verdin.dts @@ -160,7 +160,7 @@ &fec1 { fsl,magic-packet; phy-handle = <ðphy0>; - phy-mode = "rgmii"; + phy-mode = "rgmii-id"; phy-supply = <®_ethphy>; pinctrl-names = "default", "sleep"; pinctrl-0 = <&pinctrl_fec1>; diff --git a/board/toradex/verdin-imx8mm/verdin-imx8mm.c b/board/toradex/verdin-imx8mm/verdin-imx8mm.c index 76f4a1e209a..1644f4b3081 100644 --- a/board/toradex/verdin-imx8mm/verdin-imx8mm.c +++ b/board/toradex/verdin-imx8mm/verdin-imx8mm.c @@ -36,70 +36,6 @@ static int setup_fec(void)
return 0; } - -int board_phy_config(struct phy_device *phydev) -{ - int tmp; - - switch (ksz9xx1_phy_get_id(phydev) & MII_KSZ9x31_SILICON_REV_MASK) { - case PHY_ID_KSZ9031: - /* - * The PHY adds 1.2ns for the RXC and 0ns for TXC clock by - * default. The MAC and the layout don't add a skew between - * clock and data. - * Add 0.3ns for the RXC path and 0.96 + 0.42 ns (1.38 ns) for - * the TXC path to get the required clock skews. - */ - /* control data pad skew - devaddr = 0x02, register = 0x04 */ - ksz9031_phy_extended_write(phydev, 0x02, - MII_KSZ9031_EXT_RGMII_CTRL_SIG_SKEW, - MII_KSZ9031_MOD_DATA_NO_POST_INC, - 0x0070); - /* rx data pad skew - devaddr = 0x02, register = 0x05 */ - ksz9031_phy_extended_write(phydev, 0x02, - MII_KSZ9031_EXT_RGMII_RX_DATA_SKEW, - MII_KSZ9031_MOD_DATA_NO_POST_INC, - 0x7777); - /* tx data pad skew - devaddr = 0x02, register = 0x06 */ - ksz9031_phy_extended_write(phydev, 0x02, - MII_KSZ9031_EXT_RGMII_TX_DATA_SKEW, - MII_KSZ9031_MOD_DATA_NO_POST_INC, - 0x0000); - /* gtx and rx clock pad skew - devaddr = 0x02,register = 0x08 */ - ksz9031_phy_extended_write(phydev, 0x02, - MII_KSZ9031_EXT_RGMII_CLOCK_SKEW, - MII_KSZ9031_MOD_DATA_NO_POST_INC, - 0x03f4); - break; - case PHY_ID_KSZ9131: - default: - /* read rxc dll control - devaddr = 0x2, register = 0x4c */ - tmp = ksz9031_phy_extended_read(phydev, 0x02, - MII_KSZ9131_EXT_RGMII_2NS_SKEW_RXDLL, - MII_KSZ9031_MOD_DATA_NO_POST_INC); - /* disable rxdll bypass (enable 2ns skew delay on RXC) */ - tmp &= ~MII_KSZ9131_RXTXDLL_BYPASS; - /* rxc data pad skew 2ns - devaddr = 0x02, register = 0x4c */ - tmp = ksz9031_phy_extended_write(phydev, 0x02, - MII_KSZ9131_EXT_RGMII_2NS_SKEW_RXDLL, - MII_KSZ9031_MOD_DATA_NO_POST_INC, tmp); - /* read txc dll control - devaddr = 0x02, register = 0x4d */ - tmp = ksz9031_phy_extended_read(phydev, 0x02, - MII_KSZ9131_EXT_RGMII_2NS_SKEW_TXDLL, - MII_KSZ9031_MOD_DATA_NO_POST_INC); - /* disable txdll bypass (enable 2ns skew delay on TXC) */ - tmp &= ~MII_KSZ9131_RXTXDLL_BYPASS; - /* rxc data pad skew 2ns - devaddr = 0x02, register = 0x4d */ - tmp = ksz9031_phy_extended_write(phydev, 0x02, - MII_KSZ9131_EXT_RGMII_2NS_SKEW_TXDLL, - MII_KSZ9031_MOD_DATA_NO_POST_INC, tmp); - break; - } - - if (phydev->drv->config) - phydev->drv->config(phydev); - return 0; -} #endif
int board_init(void)

From: Marcel Ziswiler marcel.ziswiler@toradex.com
Prepare for DEK blob encapsulation support through "dek_blob" command. On ARMv8, u-boot runs in non-secure, thus cannot encapsulate a DEK blob for encrypted boot. The DEK blob is encapsulated by OP-TEE through a trusted application call. U-boot sends and receives the DEK and the DEK blob binaries through OP-TEE dynamic shared memory.
To enable the DEK blob encapsulation, add to the defconfig: CONFIG_SECURE_BOOT=y CONFIG_FAT_WRITE=y CONFIG_CMD_DEKBLOB=y
Taken from NXP's commit 56d2050f4028 ("imx8m: Add DEK blob encapsulation for imx8m").
Signed-off-by: Marcel Ziswiler marcel.ziswiler@toradex.com ---
arch/arm/dts/imx8mm-verdin-u-boot.dtsi | 7 +++++++ 1 file changed, 7 insertions(+)
diff --git a/arch/arm/dts/imx8mm-verdin-u-boot.dtsi b/arch/arm/dts/imx8mm-verdin-u-boot.dtsi index 67c31c49b6c..a97626fa0c1 100644 --- a/arch/arm/dts/imx8mm-verdin-u-boot.dtsi +++ b/arch/arm/dts/imx8mm-verdin-u-boot.dtsi @@ -6,6 +6,13 @@ #include "imx8mm-u-boot.dtsi"
/ { + firmware { + optee { + compatible = "linaro,optee-tz"; + method = "smc"; + }; + }; + wdt-reboot { compatible = "wdt-reboot"; wdt = <&wdog1>;

From: Marcel Ziswiler marcel.ziswiler@toradex.com
Use binman to pack images.
Signed-off-by: Marcel Ziswiler marcel.ziswiler@toradex.com ---
arch/arm/dts/imx8mm-verdin-u-boot.dtsi | 122 ++++++++++++++++++++++- arch/arm/mach-imx/imx8m/Kconfig | 1 + board/toradex/verdin-imx8mm/imximage.cfg | 11 +- configs/verdin-imx8mm_defconfig | 2 +- doc/board/toradex/verdin-imx8mm.rst | 54 +++++----- 5 files changed, 155 insertions(+), 35 deletions(-)
diff --git a/arch/arm/dts/imx8mm-verdin-u-boot.dtsi b/arch/arm/dts/imx8mm-verdin-u-boot.dtsi index a97626fa0c1..ba4c8d0436c 100644 --- a/arch/arm/dts/imx8mm-verdin-u-boot.dtsi +++ b/arch/arm/dts/imx8mm-verdin-u-boot.dtsi @@ -1,11 +1,15 @@ // SPDX-License-Identifier: GPL-2.0+ OR MIT /* - * Copyright 2020 Toradex + * Copyright 2021 Toradex */
#include "imx8mm-u-boot.dtsi"
/ { + binman: binman { + multiple-images; + }; + firmware { optee { compatible = "linaro,optee-tz"; @@ -91,3 +95,119 @@ &wdog1 { u-boot,dm-spl; }; + +&binman { + u-boot-spl-ddr { + align = <4>; + align-size = <4>; + filename = "u-boot-spl-ddr.bin"; + pad-byte = <0xff>; + + 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 { + 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"; + fit,external-offset = <CONFIG_FIT_EXTERNAL_OFFSET>; + #address-cells = <1>; + + images { + uboot { + arch = "arm64"; + compression = "none"; + description = "U-Boot (64-bit)"; + load = <CONFIG_SYS_TEXT_BASE>; + type = "standalone"; + + uboot_blob: blob-ext { + filename = "u-boot-nodtb.bin"; + }; + }; + + atf { + arch = "arm64"; + compression = "none"; + description = "ARM Trusted Firmware"; + entry = <0x920000>; + load = <0x920000>; + type = "firmware"; + + atf_blob: blob-ext { + filename = "bl31.bin"; + }; + }; + + fdt { + compression = "none"; + description = "NAME"; + type = "flat_dt"; + + uboot_fdt_blob: blob-ext { + filename = "u-boot.dtb"; + }; + }; + }; + + configurations { + default = "conf"; + + conf { + description = "NAME"; + fdt = "fdt"; + firmware = "uboot"; + loadables = "atf"; + }; + }; + }; + }; + + 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 = <0x5fc00>; + }; + }; +}; diff --git a/arch/arm/mach-imx/imx8m/Kconfig b/arch/arm/mach-imx/imx8m/Kconfig index a2ba30cf332..3eccc6b4d4f 100644 --- a/arch/arm/mach-imx/imx8m/Kconfig +++ b/arch/arm/mach-imx/imx8m/Kconfig @@ -106,6 +106,7 @@ config TARGET_PICO_IMX8MQ
config TARGET_VERDIN_IMX8MM bool "Support Toradex Verdin iMX8M Mini module" + select BINMAN select IMX8MM select SUPPORT_SPL select IMX8M_LPDDR4 diff --git a/board/toradex/verdin-imx8mm/imximage.cfg b/board/toradex/verdin-imx8mm/imximage.cfg index b8b25ff4201..9bd60e39fb5 100644 --- a/board/toradex/verdin-imx8mm/imximage.cfg +++ b/board/toradex/verdin-imx8mm/imximage.cfg @@ -1,16 +1,9 @@ /* SPDX-License-Identifier: GPL-2.0+ */ /* - * Copyright 2020 Toradex + * Copyright 2021 Toradex */
#define __ASSEMBLY__
-FIT BOOT_FROM emmc_fastboot -LOADER spl/u-boot-spl-ddr.bin 0x7E1000 -SECOND_LOADER u-boot.itb 0x40200000 0x60000 - -DDR_FW lpddr4_pmu_train_1d_imem.bin -DDR_FW lpddr4_pmu_train_1d_dmem.bin -DDR_FW lpddr4_pmu_train_2d_imem.bin -DDR_FW lpddr4_pmu_train_2d_dmem.bin +LOADER mkimage.spl.mkimage 0x7E1000 diff --git a/configs/verdin-imx8mm_defconfig b/configs/verdin-imx8mm_defconfig index 624f1b99096..b323ceb19af 100644 --- a/configs/verdin-imx8mm_defconfig +++ b/configs/verdin-imx8mm_defconfig @@ -24,7 +24,7 @@ CONFIG_DISTRO_DEFAULTS=y 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_SYSTEM_SETUP=y CONFIG_SYS_EXTRA_OPTIONS="IMX_CONFIG=board/toradex/verdin-imx8mm/imximage.cfg" # CONFIG_USE_BOOTCOMMAND is not set diff --git a/doc/board/toradex/verdin-imx8mm.rst b/doc/board/toradex/verdin-imx8mm.rst index b9f7dc39c96..538ac30dc12 100644 --- a/doc/board/toradex/verdin-imx8mm.rst +++ b/doc/board/toradex/verdin-imx8mm.rst @@ -34,10 +34,10 @@ Get the DDR Firmware .. code-block:: bash
$ cd .. - $ wget https://www.nxp.com/lgfiles/NMG/MAD/YOCTO/firmware-imx-8.4.1.bin - $ chmod +x firmware-imx-8.4.1.bin - $ ./firmware-imx-8.4.1.bin - $ cp firmware-imx-8.4.1/firmware/ddr/synopsys/lpddr4*.bin ./ + $ wget https://www.nxp.com/lgfiles/NMG/MAD/YOCTO/firmware-imx-8.10.1.bin + $ chmod +x firmware-imx-8.10.1.bin + $ ./firmware-imx-8.10.1.bin + $ cp firmware-imx-8.10.1/firmware/ddr/synopsys/lpddr4*.bin ./
Build U-Boot ------------ @@ -46,7 +46,7 @@ Build U-Boot $ export CROSS_COMPILE=aarch64-linux-gnu- $ export ATF_LOAD_ADDR=0x920000 $ make verdin-imx8mm_defconfig - $ make flash.bin + $ make
Flash to eMMC ------------- @@ -77,22 +77,28 @@ Boot sequence is: Output:
.. code-block:: bash - - U-Boot SPL 2020.01-00187-gd411d164e5 (Jan 26 2020 - 04:47:26 +0100) - Normal Boot - Trying to boot from MMC1 - - U-Boot 2020.01-00187-gd411d164e5 (Jan 26 2020 - 04:47:26 +0100) - - CPU: Freescale i.MX8MMQ rev1.0 at 0 MHz - Reset cause: POR - DRAM: 2 GiB - MMC: FSL_SDHC: 0, FSL_SDHC: 1, FSL_SDHC: 2 - Loading Environment from MMC... OK - In: serial - Out: serial - Err: serial - Model: Toradex Verdin iMX8M Mini Quad 2GB Wi-Fi / BT IT V1.0A, Serial: - Net: eth0: ethernet@30be0000 - Hit any key to stop autoboot: 0 - Verdin iMX8MM # +U-Boot SPL 2021.10-rc2-00021-gfb148bbd529 (Aug 20 2021 - 22:11:20 +0200) +Normal Boot +WDT: Started with servicing (60s timeout) +Trying to boot from MMC1 +NOTICE: BL31: v2.2(release):rel_imx_5.4.70_2.3.2_rc1-5-g835a8f67b +NOTICE: BL31: Built : 18:02:12, Aug 16 2021 + + +U-Boot 2021.10-rc2-00021-gfb148bbd529 (Aug 20 2021 - 22:11:20 +0200) + +imx_wdt watchdog@30280000: pinctrl_select_state_full: uclass_get_device_by_phandle_id: err=-19 +CPU: Freescale i.MX8MMQ rev1.0 at 1200 MHz +Reset cause: POR +DRAM: 2 GiB +WDT: Started with servicing (60s timeout) +MMC: FSL_SDHC: 0, FSL_SDHC: 1, FSL_SDHC: 2 +Loading Environment from MMC... OK +In: serial +Out: serial +Err: serial +Model: Toradex Verdin iMX8M Mini Quad 2GB Wi-Fi / BT IT V1.1A, Serial# 06760554 +Carrier: Toradex Dahlia V1.1A, Serial# 10763237 +Net: eth0: ethernet@30be0000 +Hit any key to stop autoboot: 0 +Verdin iMX8MM #

Hi Marcel,
Am Fr., 20. Aug. 2021 um 22:52 Uhr schrieb Marcel Ziswiler marcel@ziswiler.com:
From: Marcel Ziswiler marcel.ziswiler@toradex.com
Use binman to pack images.
Signed-off-by: Marcel Ziswiler marcel.ziswiler@toradex.com
arch/arm/dts/imx8mm-verdin-u-boot.dtsi | 122 ++++++++++++++++++++++- arch/arm/mach-imx/imx8m/Kconfig | 1 + board/toradex/verdin-imx8mm/imximage.cfg | 11 +- configs/verdin-imx8mm_defconfig | 2 +- doc/board/toradex/verdin-imx8mm.rst | 54 +++++----- 5 files changed, 155 insertions(+), 35 deletions(-)
diff --git a/arch/arm/dts/imx8mm-verdin-u-boot.dtsi b/arch/arm/dts/imx8mm-verdin-u-boot.dtsi index a97626fa0c1..ba4c8d0436c 100644 --- a/arch/arm/dts/imx8mm-verdin-u-boot.dtsi +++ b/arch/arm/dts/imx8mm-verdin-u-boot.dtsi @@ -1,11 +1,15 @@ // SPDX-License-Identifier: GPL-2.0+ OR MIT /*
- Copyright 2020 Toradex
*/
- Copyright 2021 Toradex
#include "imx8mm-u-boot.dtsi"
/ {
binman: binman {
multiple-images;
};
firmware { optee { compatible = "linaro,optee-tz";
@@ -91,3 +95,119 @@ &wdog1 { u-boot,dm-spl; };
+&binman {
u-boot-spl-ddr {
align = <4>;
align-size = <4>;
filename = "u-boot-spl-ddr.bin";
pad-byte = <0xff>;
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 {
Maybe you can add a "filename = spl.bin" property here. So it is more clear that this is the output file. This should be the one you refer to in your "board/toradex/verdin-imx8mm/imximage.cfg".
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";
fit,external-offset = <CONFIG_FIT_EXTERNAL_OFFSET>;
#address-cells = <1>;
images {
uboot {
arch = "arm64";
compression = "none";
description = "U-Boot (64-bit)";
load = <CONFIG_SYS_TEXT_BASE>;
type = "standalone";
uboot_blob: blob-ext {
filename = "u-boot-nodtb.bin";
};
};
atf {
arch = "arm64";
compression = "none";
description = "ARM Trusted Firmware";
entry = <0x920000>;
load = <0x920000>;
type = "firmware";
atf_blob: blob-ext {
filename = "bl31.bin";
};
};
fdt {
compression = "none";
description = "NAME";
type = "flat_dt";
uboot_fdt_blob: blob-ext {
filename = "u-boot.dtb";
};
};
};
configurations {
default = "conf";
conf {
description = "NAME";
fdt = "fdt";
firmware = "uboot";
loadables = "atf";
};
};
};
};
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 = <0x5fc00>;
};
};
+}; diff --git a/arch/arm/mach-imx/imx8m/Kconfig b/arch/arm/mach-imx/imx8m/Kconfig index a2ba30cf332..3eccc6b4d4f 100644 --- a/arch/arm/mach-imx/imx8m/Kconfig +++ b/arch/arm/mach-imx/imx8m/Kconfig @@ -106,6 +106,7 @@ config TARGET_PICO_IMX8MQ
config TARGET_VERDIN_IMX8MM bool "Support Toradex Verdin iMX8M Mini module"
select BINMAN select IMX8MM select SUPPORT_SPL select IMX8M_LPDDR4
diff --git a/board/toradex/verdin-imx8mm/imximage.cfg b/board/toradex/verdin-imx8mm/imximage.cfg index b8b25ff4201..9bd60e39fb5 100644 --- a/board/toradex/verdin-imx8mm/imximage.cfg +++ b/board/toradex/verdin-imx8mm/imximage.cfg @@ -1,16 +1,9 @@ /* SPDX-License-Identifier: GPL-2.0+ */ /*
- Copyright 2020 Toradex
*/
- Copyright 2021 Toradex
#define __ASSEMBLY__
-FIT BOOT_FROM emmc_fastboot -LOADER spl/u-boot-spl-ddr.bin 0x7E1000 -SECOND_LOADER u-boot.itb 0x40200000 0x60000
-DDR_FW lpddr4_pmu_train_1d_imem.bin -DDR_FW lpddr4_pmu_train_1d_dmem.bin -DDR_FW lpddr4_pmu_train_2d_imem.bin -DDR_FW lpddr4_pmu_train_2d_dmem.bin +LOADER mkimage.spl.mkimage 0x7E1000
I think you should use "spl.bin" here and not the "mkimage.spl.mkimage". As far as I understand the mkimage files are only binman temporary files.

Hi Heiko
On Mon, 2021-08-23 at 08:37 +0200, Heiko Thiery wrote:
Hi Marcel,
Am Fr., 20. Aug. 2021 um 22:52 Uhr schrieb Marcel Ziswiler marcel@ziswiler.com:
From: Marcel Ziswiler marcel.ziswiler@toradex.com
Use binman to pack images.
Signed-off-by: Marcel Ziswiler marcel.ziswiler@toradex.com
arch/arm/dts/imx8mm-verdin-u-boot.dtsi | 122 ++++++++++++++++++++++- arch/arm/mach-imx/imx8m/Kconfig | 1 + board/toradex/verdin-imx8mm/imximage.cfg | 11 +- configs/verdin-imx8mm_defconfig | 2 +- doc/board/toradex/verdin-imx8mm.rst | 54 +++++----- 5 files changed, 155 insertions(+), 35 deletions(-)
diff --git a/arch/arm/dts/imx8mm-verdin-u-boot.dtsi b/arch/arm/dts/imx8mm-verdin-u-boot.dtsi index a97626fa0c1..ba4c8d0436c 100644 --- a/arch/arm/dts/imx8mm-verdin-u-boot.dtsi +++ b/arch/arm/dts/imx8mm-verdin-u-boot.dtsi @@ -1,11 +1,15 @@ // SPDX-License-Identifier: GPL-2.0+ OR MIT /*
- Copyright 2020 Toradex
- Copyright 2021 Toradex
*/
#include "imx8mm-u-boot.dtsi"
/ { + binman: binman { + multiple-images; + };
firmware { optee { compatible = "linaro,optee-tz"; @@ -91,3 +95,119 @@ &wdog1 { u-boot,dm-spl; };
+&binman { + u-boot-spl-ddr { + align = <4>; + align-size = <4>; + filename = "u-boot-spl-ddr.bin"; + pad-byte = <0xff>;
+ 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 {
Maybe you can add a "filename = spl.bin" property here. So it is more clear that this is the output file. This should be the one you refer to in your "board/toradex/verdin-imx8mm/imximage.cfg".
Yeah, I had this but then decided against it again as others also seem to just rely on binman's default naming scheme. But I agree it will make it kinda more clear. So let me add it again.
+ 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"; + fit,external-offset = <CONFIG_FIT_EXTERNAL_OFFSET>; + #address-cells = <1>;
+ images { + uboot { + arch = "arm64"; + compression = "none"; + description = "U-Boot (64-bit)"; + load = <CONFIG_SYS_TEXT_BASE>; + type = "standalone";
+ uboot_blob: blob-ext { + filename = "u-boot-nodtb.bin"; + }; + };
+ atf { + arch = "arm64"; + compression = "none"; + description = "ARM Trusted Firmware"; + entry = <0x920000>; + load = <0x920000>; + type = "firmware";
+ atf_blob: blob-ext { + filename = "bl31.bin"; + }; + };
+ fdt { + compression = "none"; + description = "NAME"; + type = "flat_dt";
+ uboot_fdt_blob: blob-ext { + filename = "u-boot.dtb"; + }; + }; + };
+ configurations { + default = "conf";
+ conf { + description = "NAME"; + fdt = "fdt"; + firmware = "uboot"; + loadables = "atf"; + }; + }; + }; + };
+ 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 = <0x5fc00>; + }; + }; +}; diff --git a/arch/arm/mach-imx/imx8m/Kconfig b/arch/arm/mach-imx/imx8m/Kconfig index a2ba30cf332..3eccc6b4d4f 100644 --- a/arch/arm/mach-imx/imx8m/Kconfig +++ b/arch/arm/mach-imx/imx8m/Kconfig @@ -106,6 +106,7 @@ config TARGET_PICO_IMX8MQ
config TARGET_VERDIN_IMX8MM bool "Support Toradex Verdin iMX8M Mini module" + select BINMAN select IMX8MM select SUPPORT_SPL select IMX8M_LPDDR4 diff --git a/board/toradex/verdin-imx8mm/imximage.cfg b/board/toradex/verdin-imx8mm/imximage.cfg index b8b25ff4201..9bd60e39fb5 100644 --- a/board/toradex/verdin-imx8mm/imximage.cfg +++ b/board/toradex/verdin-imx8mm/imximage.cfg @@ -1,16 +1,9 @@ /* SPDX-License-Identifier: GPL-2.0+ */ /*
- Copyright 2020 Toradex
- Copyright 2021 Toradex
*/
#define __ASSEMBLY__
-FIT BOOT_FROM emmc_fastboot -LOADER spl/u-boot-spl-ddr.bin 0x7E1000 -SECOND_LOADER u-boot.itb 0x40200000 0x60000
-DDR_FW lpddr4_pmu_train_1d_imem.bin -DDR_FW lpddr4_pmu_train_1d_dmem.bin -DDR_FW lpddr4_pmu_train_2d_imem.bin -DDR_FW lpddr4_pmu_train_2d_dmem.bin +LOADER mkimage.spl.mkimage 0x7E1000
I think you should use "spl.bin" here and not the "mkimage.spl.mkimage". As far as I understand the mkimage files are only binman temporary files.
Oh, OK. I just did what everybody else did. But your suggestion kinda makes sense. Let me try this. Thanks!
Cheers
Marcel

Hi Heiko
On Mon, 2021-08-23 at 08:37 +0200, Heiko Thiery wrote:
...
diff --git a/board/toradex/verdin-imx8mm/imximage.cfg b/board/toradex/verdin-imx8mm/imximage.cfg index b8b25ff4201..9bd60e39fb5 100644 --- a/board/toradex/verdin-imx8mm/imximage.cfg +++ b/board/toradex/verdin-imx8mm/imximage.cfg @@ -1,16 +1,9 @@ /* SPDX-License-Identifier: GPL-2.0+ */ /*
- Copyright 2020 Toradex
- Copyright 2021 Toradex
*/
#define __ASSEMBLY__
-FIT BOOT_FROM emmc_fastboot -LOADER spl/u-boot-spl-ddr.bin 0x7E1000 -SECOND_LOADER u-boot.itb 0x40200000 0x60000
-DDR_FW lpddr4_pmu_train_1d_imem.bin -DDR_FW lpddr4_pmu_train_1d_dmem.bin -DDR_FW lpddr4_pmu_train_2d_imem.bin -DDR_FW lpddr4_pmu_train_2d_dmem.bin +LOADER mkimage.spl.mkimage 0x7E1000
I think you should use "spl.bin" here and not the "mkimage.spl.mkimage". As far as I understand the mkimage files are only binman temporary files.
Unfortunately, that does not seem to work:
binman: Error 1 running 'mkimage -d ./mkimage.spl.mkimage -n spl/u-boot-spl.cfgout -T imx8mimage -e 0x7e1000 ./mkimage-out.spl.mkimage': spl.bin: Can't open: No such file or directory
Thinking about it, I guess, it is a chicken/egg problem. As it is that step of binman which actually creates spl.bin from this mkimage.spl.mkimage intermediate artifact, not?
Cheers
Marcel

Hi Marcel,
Am Mo., 23. Aug. 2021 um 12:02 Uhr schrieb Marcel Ziswiler marcel.ziswiler@toradex.com:
Hi Heiko
On Mon, 2021-08-23 at 08:37 +0200, Heiko Thiery wrote:
...
diff --git a/board/toradex/verdin-imx8mm/imximage.cfg b/board/toradex/verdin-imx8mm/imximage.cfg index b8b25ff4201..9bd60e39fb5 100644 --- a/board/toradex/verdin-imx8mm/imximage.cfg +++ b/board/toradex/verdin-imx8mm/imximage.cfg @@ -1,16 +1,9 @@ /* SPDX-License-Identifier: GPL-2.0+ */ /*
- Copyright 2020 Toradex
*/
- Copyright 2021 Toradex
#define __ASSEMBLY__
-FIT BOOT_FROM emmc_fastboot -LOADER spl/u-boot-spl-ddr.bin 0x7E1000 -SECOND_LOADER u-boot.itb 0x40200000 0x60000
-DDR_FW lpddr4_pmu_train_1d_imem.bin -DDR_FW lpddr4_pmu_train_1d_dmem.bin -DDR_FW lpddr4_pmu_train_2d_imem.bin -DDR_FW lpddr4_pmu_train_2d_dmem.bin +LOADER mkimage.spl.mkimage 0x7E1000
I think you should use "spl.bin" here and not the "mkimage.spl.mkimage". As far as I understand the mkimage files are only binman temporary files.
Unfortunately, that does not seem to work:
binman: Error 1 running 'mkimage -d ./mkimage.spl.mkimage -n spl/u-boot-spl.cfgout -T imx8mimage -e 0x7e1000 ./mkimage-out.spl.mkimage': spl.bin: Can't open: No such file or directory
Thinking about it, I guess, it is a chicken/egg problem. As it is that step of binman which actually creates spl.bin from this mkimage.spl.mkimage intermediate artifact, not?
Sorry for the confusion. It was my fault to say spl.bin is required in the imximage.cfg. The right file should be "u-boot-spl-ddr.bin". This is the input for the mkimage. Isn't it?

From: Max Krummenacher max.krummenacher@toradex.com
This powers some peripherals on the carrier board e.g. the USB hub.
Related-to: ELB-3206 Signed-off-by: Max Krummenacher max.krummenacher@toradex.com Signed-off-by: Marcel Ziswiler marcel.ziswiler@toradex.com ---
arch/arm/dts/imx8mm-verdin.dts | 18 ++++++++++++++++++ configs/verdin-imx8mm_defconfig | 1 + 2 files changed, 19 insertions(+)
diff --git a/arch/arm/dts/imx8mm-verdin.dts b/arch/arm/dts/imx8mm-verdin.dts index ac2a4b69d3c..a2331627d72 100644 --- a/arch/arm/dts/imx8mm-verdin.dts +++ b/arch/arm/dts/imx8mm-verdin.dts @@ -196,6 +196,18 @@ }; };
+&gpio5 { + ctrl_sleep_moci { + gpio-hog; + /* Verdin CTRL_SLEEP_MOCI# (SODIMM 256) */ + gpios = <1 GPIO_ACTIVE_HIGH>; + line-name = "CTRL_SLEEP_MOCI#"; + output-high; + pinctrl-names = "default"; + pinctrl-0 = <&pinctrl_ctrl_sleep_moci>; + }; +}; + /* On-module I2C */ &i2c1 { clock-frequency = <400000>; @@ -548,6 +560,12 @@ >; };
+ pinctrl_ctrl_sleep_moci: ctrlsleepmocigrp { + fsl,pins = < + MX8MM_IOMUXC_SAI3_TXD_GPIO5_IO1 0x1c4 /* SODIMM 256 */ + >; + }; + pinctrl_dsi_bkl_en: dsi_bkl_en { fsl,pins = < MX8MM_IOMUXC_NAND_CE2_B_GPIO3_IO3 0x1c4 /* SODIMM 21 */ diff --git a/configs/verdin-imx8mm_defconfig b/configs/verdin-imx8mm_defconfig index b323ceb19af..ad9c00a3cc4 100644 --- a/configs/verdin-imx8mm_defconfig +++ b/configs/verdin-imx8mm_defconfig @@ -71,6 +71,7 @@ CONFIG_SPL_CLK_COMPOSITE_CCF=y CONFIG_CLK_COMPOSITE_CCF=y CONFIG_SPL_CLK_IMX8MM=y CONFIG_CLK_IMX8MM=y +CONFIG_GPIO_HOG=y CONFIG_MXC_GPIO=y CONFIG_DM_I2C=y CONFIG_SYS_I2C_MXC=y

From: Max Krummenacher max.krummenacher@toradex.com
We drop support for Verdin iMX8M Mini V1.0B.
Related-to: ELB-3551 Signed-off-by: Max Krummenacher max.krummenacher@toradex.com Signed-off-by: Marcel Ziswiler marcel.ziswiler@toradex.com
---
board/toradex/verdin-imx8mm/verdin-imx8mm.c | 13 +++++-------- 1 file changed, 5 insertions(+), 8 deletions(-)
diff --git a/board/toradex/verdin-imx8mm/verdin-imx8mm.c b/board/toradex/verdin-imx8mm/verdin-imx8mm.c index 1644f4b3081..2d8b37ce26d 100644 --- a/board/toradex/verdin-imx8mm/verdin-imx8mm.c +++ b/board/toradex/verdin-imx8mm/verdin-imx8mm.c @@ -9,6 +9,7 @@ #include <asm/arch/sys_proto.h> #include <asm/global_data.h> #include <asm/io.h> +#include <hang.h> #include <i2c.h> #include <miiphy.h> #include <netdev.h> @@ -87,17 +88,13 @@ static void select_dt_from_module_version(void)
switch (get_pcb_revision()) { case PCB_VERSION_1_0: - printf("Detected a V1.0 module\n"); - if (is_wifi) - strncpy(&variant[0], "wifi", sizeof(variant)); - else - strncpy(&variant[0], "nonwifi", sizeof(variant)); - break; + printf("Detected a V1.0 module which is no longer supported in this BSP version\n"); + hang(); default: if (is_wifi) - strncpy(&variant[0], "wifi-v1.1", sizeof(variant)); + strlcpy(&variant[0], "wifi", sizeof(variant)); else - strncpy(&variant[0], "nonwifi-v1.1", sizeof(variant)); + strlcpy(&variant[0], "nonwifi", sizeof(variant)); break; }
participants (5)
-
Fabio Estevam
-
Heiko Thiery
-
Marcel Ziswiler
-
Marcel Ziswiler
-
ZHIZHIKIN Andrey