
We experimenting problems with imx8mn family cpu. We try to support boot0 and boot1 fallback. The condition to decide what function the bootrom should choose come from is_boot_from_stream_device
This is a boot from mmcblk0boot0 with some debug
U-Boot SPL 2020.04-5.4.70-2.3.2+gf3bcbdfc62 (Jul 03 2021 - 17:00:27 +0000) power_bd71837_init DDRINFO: start DRAM init DDRINFO: DRAM rate 1600MTS DDRINFO:ddrphy calibration done DDRINFO: ddrmix config done Normal Boot Trying to boot from BOOTROM ROM API interface 2 from boot 131073
Interface is 2 MMC and boot is 131073 and according to this
static int is_boot_from_stream_device(u32 boot) +{ + u32 interface; + + interface = boot >> 16; + if (interface >= BT_DEV_TYPE_USB) + return 1; + + if (interface == BT_DEV_TYPE_MMC && (boot & 1)) + return 1; + + return 0; +}
the return is 1, that does not allow us to boot.
Boot from boot1 give 131072 that is boot1 this let device boot because is_boot_from_stream_device is 0 and romapi use spl_romapi_load_image_seekable
Adjust the bootcondition let us boot from mmcblk0boot0 and mmcblk0boot1 without any problem
mmc partconf 0 EXT_CSD[179], PARTITION_CONFIG: BOOT_ACK: 0x0 BOOT_PARTITION_ENABLE: 0x1 PARTITION_ACCESS: 0x0
and the board was fused already.
Signed-off-by: Michael Trimarchi michael@amarulasolutions.com --- arch/arm/mach-imx/spl_imx_romapi.c | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-)
diff --git a/arch/arm/mach-imx/spl_imx_romapi.c b/arch/arm/mach-imx/spl_imx_romapi.c index 7e6a05a6f3..36f8848d45 100644 --- a/arch/arm/mach-imx/spl_imx_romapi.c +++ b/arch/arm/mach-imx/spl_imx_romapi.c @@ -18,10 +18,11 @@ static int is_boot_from_stream_device(u32 boot) u32 interface;
interface = boot >> 16; + if (interface >= BT_DEV_TYPE_USB) return 1;
- if (interface == BT_DEV_TYPE_MMC && (boot & 1)) + if (!is_imx8mn() && interface == BT_DEV_TYPE_MMC && (boot & 1)) return 1;
return 0;