[PATCH] ARM: uniphier: add sdscript, sdboot, sdupdate environment variables
Masahiro Yamada
masahiroy at kernel.org
Thu Feb 27 18:37:55 CET 2020
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
>
--
Best Regards
Masahiro Yamada
More information about the U-Boot
mailing list