]> git.ipfire.org Git - thirdparty/u-boot.git/commitdiff
arm64: versal2: Fix emmc boot mode boot_target issue
authorPranav Tilak <pranav.vinaytilak@amd.com>
Tue, 13 Jan 2026 06:01:07 +0000 (11:31 +0530)
committerMichal Simek <michal.simek@amd.com>
Fri, 16 Jan 2026 07:56:51 +0000 (08:56 +0100)
The eMMC boot device controller on Versal2 requires device pointer
initialization before accessing its sequence number. The EMMC_MODE case
was using dev_seq(dev) on an uninitialized pointer, causing corrupted
boot_targets entries (mmc7f7fbfbf instead of mmc0/mmc1).

Add uclass_get_device_by_name() call to properly initialize the device
pointer before reading the sequence number. The dev sequence number is
determined at runtime based on DT aliases.

Fix boot_targets corruption in eMMC boot mode, allowing proper boot
device selection instead of falling back to JTAG mode.

Signed-off-by: Pranav Tilak <pranav.vinaytilak@amd.com>
Signed-off-by: Michal Simek <michal.simek@amd.com>
Link: https://lore.kernel.org/r/20260113060107.1136297-1-pranav.vinaytilak@amd.com
board/amd/versal2/board.c

index 1fd05a1157abf4a1ce3a21cb54d331cd73ed8be5..d8079c1cee080e282c04834a1a1628d83056046a 100644 (file)
@@ -253,6 +253,12 @@ static int boot_targets_setup(void)
                break;
        case EMMC_MODE:
                puts("EMMC_MODE\n");
+               if (uclass_get_device_by_name(UCLASS_MMC,
+                                             "mmc@f1050000", &dev)) {
+                       debug("SD1 driver for SD1 device is not present\n");
+                       break;
+               }
+               debug("mmc1 device found at %p, seq %d\n", dev, dev_seq(dev));
                mode = "mmc";
                bootseq = dev_seq(dev);
                break;