]> git.ipfire.org Git - thirdparty/u-boot.git/commitdiff
ARM: uniphier: detect SD boot mode
authorMasahiro Yamada <yamada.masahiro@socionext.com>
Wed, 10 Jul 2019 11:07:39 +0000 (20:07 +0900)
committerMasahiro Yamada <yamada.masahiro@socionext.com>
Wed, 10 Jul 2019 13:41:59 +0000 (22:41 +0900)
The planned new SoC supports the SD boot mode. Detect and display it.

Signed-off-by: Masahiro Yamada <yamada.masahiro@socionext.com>
arch/arm/mach-uniphier/board_late_init.c
arch/arm/mach-uniphier/boot-device/boot-device.c

index 972dbe8ae55380e8c270904334873f838669a8f4..86b128a91f95b9ad7ebc93959616fab14807ddf8 100644 (file)
@@ -68,6 +68,10 @@ int board_late_init(void)
                printf("eMMC Boot");
                env_set("bootdev", "emmc");
                break;
+       case BOOT_DEVICE_MMC2:
+               printf("SD Boot");
+               env_set("bootdev", "sd");
+               break;
        case BOOT_DEVICE_NAND:
                printf("NAND Boot");
                env_set("bootdev", "nand");
index 3c2e7b660f3e32be59b63163e9b36033786e2e67..c9dfe13ed9c0951185e0b1e081198592689671b4 100644 (file)
@@ -21,6 +21,7 @@ struct uniphier_boot_device_info {
        unsigned int boot_device_sel_shift;
        const struct uniphier_boot_device *boot_device_table;
        const unsigned int *boot_device_count;
+       int (*boot_device_is_sd)(u32 pinmon);
        int (*boot_device_is_usb)(u32 pinmon);
        unsigned int (*boot_device_fixup)(unsigned int mode);
        int (*boot_is_swapped)(void);
@@ -140,6 +141,9 @@ static unsigned int __uniphier_boot_device_raw(
 
        pinmon = readl(SG_PINMON0);
 
+       if (info->boot_device_is_sd && info->boot_device_is_sd(pinmon))
+               return BOOT_DEVICE_MMC2;
+
        if (info->boot_device_is_usb && info->boot_device_is_usb(pinmon))
                return BOOT_DEVICE_USB;
 
@@ -224,6 +228,10 @@ static int do_pinmon(cmd_tbl_t *cmdtp, int flag, int argc, char * const argv[])
 
        pinmon = readl(SG_PINMON0);
 
+       if (info->boot_device_is_sd)
+               printf("SD Boot:  %s\n",
+                      info->boot_device_is_sd(pinmon) ? "ON" : "OFF");
+
        if (info->boot_device_is_usb)
                printf("USB Boot:  %s\n",
                       info->boot_device_is_usb(pinmon) ? "ON" : "OFF");