@@ -62,33 +62,46 @@ static int uniphier_set_fdt_file(void)
return setenv("fdt_file", dtb_name);
}
+static int uniphier_set_bootmode(const char *bootmode)
+{
+ if (getenv("bootmode"))
+ return 0; /* do nothing if it is already set */
+
+ return setenv("bootenv", bootmode);
+}
+
int board_late_init(void)
{
+ const char *bootmode;
+
puts("MODE: ");
switch (spl_boot_device_raw()) {
case BOOT_DEVICE_MMC1:
printf("eMMC Boot\n");
- setenv("bootmode", "emmcboot");
+ bootmode = "emmcboot";
break;
case BOOT_DEVICE_NAND:
printf("NAND Boot\n");
- setenv("bootmode", "nandboot");
nand_denali_wp_disable();
+ bootmode = "nandboot";
break;
case BOOT_DEVICE_NOR:
printf("NOR Boot\n");
- setenv("bootmode", "norboot");
+ bootmode = "norboot";
break;
case BOOT_DEVICE_USB:
printf("USB Boot\n");
- setenv("bootmode", "usbboot");
+ bootmode = "usbboot";
break;
default:
printf("Unknown\n");
- break;
+ return;
}
+ if (uniphier_set_bootmode(bootmode))
+ printf("bootmode environment was not set correctly\n");
+
if (uniphier_set_fdt_file())
printf("fdt_file environment was not set correctly\n");
This code auto-detects the boot mode, but it should respect the user's choice if "bootmode" environment is found in a saved set of environments. Signed-off-by: Masahiro Yamada <yamada.masahiro@socionext.com> --- arch/arm/mach-uniphier/board_late_init.c | 23 ++++++++++++++++++----- 1 file changed, 18 insertions(+), 5 deletions(-) -- 1.9.1 _______________________________________________ U-Boot mailing list U-Boot@lists.denx.de http://lists.denx.de/mailman/listinfo/u-boot