[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