]> git.ipfire.org Git - thirdparty/u-boot.git/commitdiff
imx: kontron-sl-mx8mm: Adjust offset for U-Boot proper in case of eMMC fastboot
authorFrieder Schrempf <frieder.schrempf@kontron.de>
Tue, 4 Nov 2025 10:30:07 +0000 (11:30 +0100)
committerFabio Estevam <festevam@nabladev.com>
Tue, 4 Nov 2025 15:45:51 +0000 (12:45 -0300)
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>
board/kontron/sl-mx8mm/spl.c

index e3b029752b8f7f5bd28195aa53b0608ac9e5e73a..50eb0eb13e10d8ae980ef0e51e0a5f13b6dec432 100644 (file)
@@ -186,6 +186,26 @@ static int power_init_board(void)
        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;