Merge tag 'u-boot-atmel-fixes-2020.07-a' of https://gitlab.denx.de/u-boot/custodians...
[oweals/u-boot.git] / arch / arm / mach-uniphier / mmc-first-dev.c
index acc859a6c3f917ce7abaaafaac13208e644ebfca..45bb10f8eb1f9c85a28fe40bd70d08960a1fbe01 100644 (file)
@@ -1,21 +1,22 @@
+// SPDX-License-Identifier: GPL-2.0+
 /*
  * Copyright (C) 2016 Socionext Inc.
  *   Author: Masahiro Yamada <yamada.masahiro@socionext.com>
- *
- * SPDX-License-Identifier:    GPL-2.0+
  */
 
-#include <common.h>
+#include <command.h>
+#include <env.h>
 #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,15 @@ 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[])
+static int do_mmcsetn(struct cmd_tbl *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 +46,22 @@ U_BOOT_CMD(
        "Set the first MMC (not SD) dev number to \"mmc_first_dev\" environment",
        ""
 );
+
+static int do_sdsetn(struct cmd_tbl *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",
+       ""
+);