The image offset on SD/MMC devices is 33 KiB, except for eMMC boot if
fastboot is enabled. In this case it is 1 KiB. In order to make the
the bootloader universal, check the fastboot OTP boot fuse and adjust
the offset.
Signed-off-by: Frieder Schrempf <frieder.schrempf@kontron.de>
return 0;
}
+unsigned long board_spl_mmc_get_uboot_raw_sector(struct mmc *mmc, unsigned long raw_sect)
+{
+ /*
+ * The image offset on SD/MMC devices is 33 KiB, except for eMMC boot if
+ * fastboot is enabled. In this case it is 1 KiB. In order to make the
+ * bootloader universal, check the fastboot OTP boot fuse and adjust
+ * the offset.
+ */
+ if (!IS_SD(mmc) && (readl(OCOTP_BASE_ADDR + 0x470) & 0x80)) {
+ switch (EXT_CSD_EXTRACT_BOOT_PART(mmc->part_config)) {
+ case EMMC_BOOT_PART_BOOT1:
+ case EMMC_BOOT_PART_BOOT2:
+ raw_sect -= 32 * 2;
+ break;
+ }
+ }
+
+ return raw_sect;
+}
+
void board_init_f(ulong dummy)
{
int ret;