On Tue, May 15, 2012 at 3:16 PM, Stephen Warren <swar...@wwwdotorg.org>wrote:
> From: Stephen Warren <swar...@nvidia.com> > Acked-by: Simon Glass <s...@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 <swar...@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 > >
_______________________________________________ U-Boot mailing list U-Boot@lists.denx.de http://lists.denx.de/mailman/listinfo/u-boot