[PATCH] ARM: uniphier: add sdscript, sdboot, sdupdate environment variables

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 | 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 && " \

On Thu, Feb 13, 2020 at 12:28 PM Masahiro Yamada yamada.masahiro@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@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
participants (2)
-
Masahiro Yamada
-
Masahiro Yamada