imx8ulp: Add workaround for eMMC boot
When booting from boot part1/2, the image offset should be 0, but ROM has a bug to return 0x8000. Has to workaround the issue before ROM fix it. Use a ROM function to know boot from emmc boot part or user part So we can set the image offset accordingly. Signed-off-by: Ye Li <ye.li@nxp.com>
This commit is contained in:
@@ -265,10 +265,17 @@ unsigned long spl_nor_get_uboot_base(void)
|
||||
#endif
|
||||
|
||||
#ifdef CONFIG_SPL_BOOTROM_SUPPORT
|
||||
u32 __weak spl_arch_boot_image_offset(u32 image_offset, u32 rom_bt_dev)
|
||||
{
|
||||
return image_offset;
|
||||
}
|
||||
|
||||
ulong spl_romapi_get_uboot_base(u32 image_offset, u32 rom_bt_dev)
|
||||
{
|
||||
ulong end;
|
||||
|
||||
image_offset = spl_arch_boot_image_offset(image_offset, rom_bt_dev);
|
||||
|
||||
end = get_imageset_end((void *)(ulong)image_offset, ROM_API_DEV);
|
||||
end = ROUND(end, SZ_1K);
|
||||
|
||||
|
||||
@@ -533,3 +533,13 @@ void imx_get_mac_from_fuse(int dev_id, unsigned char *mac)
|
||||
{
|
||||
memset(mac, 0, 6);
|
||||
}
|
||||
|
||||
int (*card_emmc_is_boot_part_en)(void) = (void *)0x67cc;
|
||||
u32 spl_arch_boot_image_offset(u32 image_offset, u32 rom_bt_dev)
|
||||
{
|
||||
/* Hard code for eMMC image_offset on 8ULP ROM, need fix by ROM, temp workaround */
|
||||
if (((rom_bt_dev >> 16) & 0xff) == BT_DEV_TYPE_MMC && card_emmc_is_boot_part_en())
|
||||
image_offset = 0;
|
||||
|
||||
return image_offset;
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user