diff mbox series

ARM: uniphier: add sdscript, sdboot, sdupdate environment variables

Message ID 20200213032737.3284-1-yamada.masahiro@socionext.com
State Accepted
Commit ef5c7d6d5c5cfe146c848e67e042bab6ba150d43
Headers show
Series ARM: uniphier: add sdscript, sdboot, sdupdate environment variables | expand

Commit Message

Masahiro Yamada Feb. 13, 2020, 3:27 a.m. UTC
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 at socionext.com>
---

 arch/arm/mach-uniphier/mmc-first-dev.c | 27 ++++++++++++++++++++++----
 include/configs/uniphier.h             | 11 +++++++++++
 2 files changed, 34 insertions(+), 4 deletions(-)

Comments

Masahiro Yamada Feb. 27, 2020, 5:37 p.m. UTC | #1
On Thu, Feb 13, 2020 at 12:28 PM Masahiro Yamada
<yamada.masahiro at socionext.com> wrote:
>
> 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 at socionext.com>
> ---

Applied to u-boot-uniphier.


>
>  arch/arm/mach-uniphier/mmc-first-dev.c | 27 ++++++++++++++++++++++----
>  include/configs/uniphier.h             | 11 +++++++++++
>  2 files changed, 34 insertions(+), 4 deletions(-)
>
> diff --git a/arch/arm/mach-uniphier/mmc-first-dev.c b/arch/arm/mach-uniphier/mmc-first-dev.c
> index 149e662070ff..e2f4f4eb5c7a 100644
> --- a/arch/arm/mach-uniphier/mmc-first-dev.c
> +++ b/arch/arm/mach-uniphier/mmc-first-dev.c
> @@ -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",
> +       ""
> +);
> diff --git a/include/configs/uniphier.h b/include/configs/uniphier.h
> index b95fb9c93fa9..55fa85ed6256 100644
> --- a/include/configs/uniphier.h
> +++ b/include/configs/uniphier.h
> @@ -160,6 +160,7 @@
>         "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 && " \
> @@ -170,6 +171,10 @@
>                 "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" \
> @@ -196,6 +201,12 @@
>                 "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 && " \
> --
> 2.17.1
>
diff mbox series

Patch

diff --git a/arch/arm/mach-uniphier/mmc-first-dev.c b/arch/arm/mach-uniphier/mmc-first-dev.c
index 149e662070ff..e2f4f4eb5c7a 100644
--- a/arch/arm/mach-uniphier/mmc-first-dev.c
+++ b/arch/arm/mach-uniphier/mmc-first-dev.c
@@ -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",
+	""
+);
diff --git a/include/configs/uniphier.h b/include/configs/uniphier.h
index b95fb9c93fa9..55fa85ed6256 100644
--- a/include/configs/uniphier.h
+++ b/include/configs/uniphier.h
@@ -160,6 +160,7 @@ 
 	"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 && " \
@@ -170,6 +171,10 @@ 
 		"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" \
@@ -196,6 +201,12 @@ 
 		"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 && " \