[U-Boot] [PATCH 2/4] tegra: flesh out bootcmd

Simon Glass sjg at chromium.org
Fri Jun 1 01:27:47 CEST 2012


On Tue, May 15, 2012 at 3:16 PM, Stephen Warren <swarren at wwwdotorg.org>wrote:

> From: Stephen Warren <swarren at nvidia.com>
>

Acked-by: Simon Glass <sjg at chromium.org>


>
> This implements a useful bootcmd for Tegra. The boot order is:
>
> * If USB enabled, USB storage
> * Internal MMC (SD card or eMMC)
> * If networking is enabled, BOOTP/TFTP
>
> When booting from USB or MMC, the boot script is assumed to be in
> partition 1 (although this may be overridden via the rootpart variable),
> both ext2 and FAT filesystems are supported, the boot script may exist
> in either / or /boot, and the boot script may be named boot.scr.uimg or
> boot.scr.
>
> When booting over the network, it is assumed that boot.scr.uimg exists
> on the TFTP server. There is less flexibility here since those setting
> up network booting are expected to need less hand-holding.
>
> In all cases, it is expected that the initial file loaded is a U-Boot
> image containing a script that will load the kernel, load any required
> initrd, load any required DTB, and finally bootm the kernel.
>
> Signed-off-by: Stephen Warren <swarren at nvidia.com>
> ---
>  include/configs/harmony.h            |    3 +
>  include/configs/medcom.h             |    2 +
>  include/configs/paz00.h              |    3 +
>  include/configs/plutux.h             |    2 +
>  include/configs/seaboard.h           |    3 +
>  include/configs/tegra2-common-post.h |  117
> ++++++++++++++++++++++++++++++++++
>  include/configs/tegra2-common.h      |    3 -
>  include/configs/ventana.h            |    3 +
>  include/configs/whistler.h           |    2 +
>  9 files changed, 135 insertions(+), 3 deletions(-)
>  create mode 100644 include/configs/tegra2-common-post.h
>
> diff --git a/include/configs/harmony.h b/include/configs/harmony.h
> index ce0ae9f..7336897 100644
> --- a/include/configs/harmony.h
> +++ b/include/configs/harmony.h
> @@ -61,4 +61,7 @@
>
>  /* Environment not stored */
>  #define CONFIG_ENV_IS_NOWHERE
> +
> +#include "tegra2-common-post.h"
> +
>  #endif /* __CONFIG_H */
> diff --git a/include/configs/medcom.h b/include/configs/medcom.h
> index 2dc3507..e2a99dc 100644
> --- a/include/configs/medcom.h
> +++ b/include/configs/medcom.h
> @@ -61,4 +61,6 @@
>        "ext2load mmc 0 0x17000000 /boot/uImage;"       \
>        "bootm"
>
> +#include "tegra2-common-post.h"
> +
>  #endif /* __CONFIG_H */
> diff --git a/include/configs/paz00.h b/include/configs/paz00.h
> index f53f20e..200a61d 100644
> --- a/include/configs/paz00.h
> +++ b/include/configs/paz00.h
> @@ -48,4 +48,7 @@
>
>  /* Environment not stored */
>  #define CONFIG_ENV_IS_NOWHERE
> +
> +#include "tegra2-common-post.h"
> +
>  #endif /* __CONFIG_H */
> diff --git a/include/configs/plutux.h b/include/configs/plutux.h
> index f869191..f6afb66 100644
> --- a/include/configs/plutux.h
> +++ b/include/configs/plutux.h
> @@ -61,4 +61,6 @@
>        "ext2load mmc 0 0x17000000 /boot/uImage;"       \
>        "bootm"
>
> +#include "tegra2-common-post.h"
> +
>  #endif /* __CONFIG_H */
> diff --git a/include/configs/seaboard.h b/include/configs/seaboard.h
> index 46d4228..c2ed686 100644
> --- a/include/configs/seaboard.h
> +++ b/include/configs/seaboard.h
> @@ -108,4 +108,7 @@
>  #define TEGRA2_DEVICE_SETTINGS "stdin=serial,tegra-kbc\0" \
>                                        "stdout=serial\0" \
>                                        "stderr=serial\0"
> +
> +#include "tegra2-common-post.h"
> +
>  #endif /* __CONFIG_H */
> diff --git a/include/configs/tegra2-common-post.h
> b/include/configs/tegra2-common-post.h
> new file mode 100644
> index 0000000..0484a52
> --- /dev/null
> +++ b/include/configs/tegra2-common-post.h
> @@ -0,0 +1,117 @@
> +/*
> + * (C) Copyright 2010-2012
> + * NVIDIA Corporation <www.nvidia.com>
> + *
> + * See file CREDITS for list of people who contributed to this
> + * project.
> + *
> + * This program is free software; you can redistribute it and/or
> + * modify it under the terms of the GNU General Public License as
> + * published by the Free Software Foundation; either version 2 of
> + * the License, or (at your option) any later version.
> + *
> + * This program is distributed in the hope that it will be useful,
> + * but WITHOUT ANY WARRANTY; without even the implied warranty of
> + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
> + * GNU General Public License for more details.
> + *
> + * You should have received a copy of the GNU General Public License
> + * along with this program; if not, write to the Free Software
> + * Foundation, Inc., 59 Temple Place, Suite 330, Boston,
> + * MA 02111-1307 USA
> + */
> +
> +#ifndef __TEGRA2_COMMON_POST_H
> +#define __TEGRA2_COMMON_POST_H
> +
> +#ifdef CONFIG_BOOTCOMMAND
> +
> +#define BOOTCMDS_COMMON ""
> +
> +#else
> +
> +#ifdef CONFIG_CMD_EXT2
> +#define BOOTCMD_FS_EXT2 "ext2 "
> +#else
> +#define BOOTCMD_FS_EXT2 ""
> +#endif
> +
> +#ifdef CONFIG_CMD_FAT
> +#define BOOTCMD_FS_FAT "fat"
> +#else
> +#define BOOTCMD_FS_FAT ""
> +#endif
> +
> +#ifdef CONFIG_CMD_MMC
> +#define BOOTCMDS_MMC \
> +       "mmc_boot=" \
> +               "setenv devtype mmc; " \
> +               "if mmc dev ${devnum}; then " \
> +                       "run script_boot; " \
> +               "fi\0" \
> +       "mmc0_boot=setenv devnum 0; run mmc_boot;\0" \
> +       "mmc1_boot=setenv devnum 1; run mmc_boot;\0" \
> +       "bootcmd_mmc=run mmc1_boot; run mmc0_boot\0"
> +#define BOOTCMD_MMC "run bootcmd_mmc; "
> +#else
> +#define BOOTCMDS_MMC ""
> +#define BOOTCMD_MMC ""
> +#endif
> +
> +#ifdef CONFIG_CMD_USB
> +#define BOOTCMDS_USB \
> +       "usb_boot=" \
> +               "setenv devtype usb; " \
> +               "if usb dev ${devnum}; then " \
> +                       "run script_boot; " \
> +               "fi\0" \
> +       "usb0_boot=setenv devnum 0; run usb_boot;\0" \
> +       "bootcmd_usb=run usb0_boot\0"
> +#define BOOTCMD_USB "run bootcmd_usb; "
> +#define BOOTCMD_INIT_USB "usb start 0; "
> +#else
> +#define BOOTCMDS_USB ""
> +#define BOOTCMD_USB ""
> +#define BOOTCMD_INIT_USB ""
> +#endif
> +
> +#ifdef CONFIG_CMD_DHCP
> +#define BOOTCMDS_DHCP \
> +       "bootcmd_dhcp=" \
> +               "if dhcp ${scriptaddr} boot.scr.uimg; then "\
> +                       "source ${scriptaddr}; " \
> +               "fi\0"
> +#define BOOTCMD_DHCP "run bootcmd_dhcp; "
> +#else
> +#define BOOTCMDS_DHCP ""
> +#define BOOTCMD_DHCP ""
> +#endif
> +
> +#define BOOTCMDS_COMMON \
> +       "scriptaddr=0x400000\0" \
> +       "rootpart=1\0" \
> +       "script_boot="
>                                              \
> +               "for fs in " BOOTCMD_FS_EXT2 BOOTCMD_FS_FAT "; do "
>                                               \
> +                   "for prefix in / /boot/; do "
>                                               \
> +                       "for script in boot.scr.uimg boot.scr; do "
>                                               \
> +                           "echo Scanning ${devtype}
> ${devnum}:${rootpart} ${fs} ${prefix}${script} ...; "             \
> +                           "if ${fs}load ${devtype} ${devnum}:${rootpart}
> ${scriptaddr} ${prefix}${script}; then "     \
> +                               "echo ${script} found! Executing ...;"
>                                              \
> +                               "source ${scriptaddr};"
>                                               \
> +                           "fi; "
>                                              \
> +                       "done; "
>                                              \
> +                   "done; "
>                                              \
> +               "done;\0"
>                                               \
> +       BOOTCMDS_MMC \
> +       BOOTCMDS_USB \
> +       BOOTCMDS_DHCP
> +
> +#define CONFIG_BOOTCOMMAND BOOTCMD_INIT_USB BOOTCMD_USB BOOTCMD_MMC
> BOOTCMD_DHCP
> +
> +#endif
> +
> +#define CONFIG_EXTRA_ENV_SETTINGS \
> +       TEGRA2_DEVICE_SETTINGS \
> +       BOOTCMDS_COMMON
> +
> +#endif /* __TEGRA2_COMMON_POST_H */
> diff --git a/include/configs/tegra2-common.h
> b/include/configs/tegra2-common.h
> index cdd3093..1931179 100644
> --- a/include/configs/tegra2-common.h
> +++ b/include/configs/tegra2-common.h
> @@ -139,9 +139,6 @@
>                                        "stdout=serial\0" \
>                                        "stderr=serial\0"
>
> -#define CONFIG_EXTRA_ENV_SETTINGS \
> -       TEGRA2_DEVICE_SETTINGS
> -
>  #define CONFIG_LOADADDR                0x408000        /* def. location
> for kernel */
>  #define CONFIG_BOOTDELAY       2               /* -1 to disable auto boot
> */
>
> diff --git a/include/configs/ventana.h b/include/configs/ventana.h
> index 3e55fe5..4dcd5db 100644
> --- a/include/configs/ventana.h
> +++ b/include/configs/ventana.h
> @@ -60,4 +60,7 @@
>
>  /* Environment not stored */
>  #define CONFIG_ENV_IS_NOWHERE
> +
> +#include "tegra2-common-post.h"
> +
>  #endif /* __CONFIG_H */
> diff --git a/include/configs/whistler.h b/include/configs/whistler.h
> index 6b9ef98..4eed7f6 100644
> --- a/include/configs/whistler.h
> +++ b/include/configs/whistler.h
> @@ -87,4 +87,6 @@
>  #define CONFIG_CMD_PING
>  #define CONFIG_CMD_DHCP
>
> +#include "tegra2-common-post.h"
> +
>  #endif /* __CONFIG_H */
> --
> 1.7.0.4
>
>


More information about the U-Boot mailing list