ARM: uniphier: add sdscript, sdboot, sdupdate environment variables
authorMasahiro Yamada <yamada.masahiro@socionext.com>
Thu, 13 Feb 2020 03:27:37 +0000 (12:27 +0900)
committerMasahiro Yamada <yamada.masahiro@socionext.com>
Thu, 27 Feb 2020 17:29:32 +0000 (02:29 +0900)
Add handy macros:

  - sdscript: source boot.scr in the file system of the SD media
  - sdboot  : boot the kernel using the images in the file system
              of the SD media
  - sdscript: update the boot firmware in the SD media
              (in raw block sectors)

Signed-off-by: Masahiro Yamada <yamada.masahiro@socionext.com>
arch/arm/mach-uniphier/mmc-first-dev.c
include/configs/uniphier.h

index 149e662070ff4402a2339f74213e91926acde522..e2f4f4eb5c7af5760fbfa0b5ac2bf79b74ae1069 100644 (file)
@@ -9,13 +9,14 @@
 #include <mmc.h>
 #include <linux/errno.h>
 
-static int find_first_mmc_device(void)
+static int find_first_mmc_device(bool is_sd)
 {
        struct mmc *mmc;
        int i;
 
        for (i = 0; (mmc = find_mmc_device(i)); i++) {
-               if (!mmc_init(mmc) && IS_MMC(mmc))
+               if (!mmc_init(mmc) &&
+                   ((is_sd && IS_SD(mmc)) || (!is_sd && IS_MMC(mmc))))
                        return i;
        }
 
@@ -24,14 +25,14 @@ static int find_first_mmc_device(void)
 
 int mmc_get_env_dev(void)
 {
-       return find_first_mmc_device();
+       return find_first_mmc_device(false);
 }
 
 static int do_mmcsetn(cmd_tbl_t *cmdtp, int flag, int argc, char * const argv[])
 {
        int dev;
 
-       dev = find_first_mmc_device();
+       dev = find_first_mmc_device(false);
        if (dev < 0)
                return CMD_RET_FAILURE;
 
@@ -44,3 +45,21 @@ U_BOOT_CMD(
        "Set the first MMC (not SD) dev number to \"mmc_first_dev\" environment",
        ""
 );
+
+static int do_sdsetn(cmd_tbl_t *cmdtp, int flag, int argc, char * const argv[])
+{
+       int dev;
+
+       dev = find_first_mmc_device(true);
+       if (dev < 0)
+               return CMD_RET_FAILURE;
+
+       env_set_ulong("sd_first_dev", dev);
+       return CMD_RET_SUCCESS;
+}
+
+U_BOOT_CMD(
+       sdsetn, 1,      1,      do_sdsetn,
+       "Set the first SD dev number to \"sd_first_dev\" environment",
+       ""
+);
index b95fb9c93fa91b00f6468d899d5628db8c3deaff..55fa85ed625686401ee7ea9c1b7344595ddc7ea9 100644 (file)
        "emmcboot=mmcsetn && run bootcmd_mmc${mmc_first_dev}\0" \
        "nandboot=run bootcmd_ubifs0\0" \
        "norboot=run tftpboot\0" \
+       "sdboot=sdsetn && run bootcmd_mmc${sd_first_dev}\0" \
        "usbboot=run bootcmd_usb0\0" \
        "emmcscript=setenv devtype mmc && " \
                "mmcsetn && " \
                "ubifsmount ubi0:boot && " \
                "ubifsload ${loadaddr} ${script} && " \
                "source $loadaddr\0" \
+       "sdscript=setenv devtype mmc && " \
+               "sdsetn && " \
+               "setenv devnum ${sd_first_dev} && " \
+               "run loadscript_fat\0" \
        "norscript=echo Running ${script} from tftp ... && " \
                "tftpboot ${script} &&" \
                "source $loadaddr\0" \
                "nand write $loadaddr 0 0x00020000 && " \
                "tftpboot $third_image && " \
                "nand write $loadaddr 0x00020000 0x001e0000\0" \
+       "sdupdate=sdsetn &&" \
+               "mmc dev $sd_first_dev &&" \
+               "tftpboot $second_image && " \
+               "mmc write $loadaddr 0 100 && " \
+               "tftpboot $third_image && " \
+               "mmc write $loadaddr 100 f00\0" \
        "usbupdate=usb start &&" \
                "tftpboot $second_image && " \
                "usb write $loadaddr 0 100 && " \