[U-Boot] [PATCH V2 2/4] tegra: flesh out bootcmd
Tom Warren
TWarren at nvidia.com
Wed May 16 23:27:56 CEST 2012
Stephen,
> -----Original Message-----
> From: Stephen Warren [mailto:swarren at wwwdotorg.org]
> Sent: Wednesday, May 16, 2012 9:21 AM
> To: Tom Warren
> Cc: Simon Glass; u-boot at lists.denx.de; Stephen Warren
> Subject: [PATCH V2 2/4] tegra: flesh out bootcmd
>
> From: Stephen Warren <swarren at nvidia.com>
>
> 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
> ++++++++++++++++++++++++++++++++++
I'm getting checkpatch errors (over 80 chars) for tegra2-common-post.h:
WARNING: line over 80 characters
#414: FILE: include/configs/tegra2-common-post.h:93:
+ "script_boot=" \
WARNING: line over 80 characters
#415: FILE: include/configs/tegra2-common-post.h:94:
+ "for fs in " BOOTCMD_FS_EXT2 BOOTCMD_FS_FAT "; do " \
WARNING: line over 80 characters
#416: FILE: include/configs/tegra2-common-post.h:95:
+ "for prefix in / /boot/; do " \
WARNING: line over 80 characters
#417: FILE: include/configs/tegra2-common-post.h:96:
+ "for script in boot.scr.uimg boot.scr; do " \
WARNING: line over 80 characters
#418: FILE: include/configs/tegra2-common-post.h:97:
+ "echo Scanning ${devtype} ${devnum}:${rootpart} ${fs} ${prefix}${script} ...; " \
WARNING: line over 80 characters
#419: FILE: include/configs/tegra2-common-post.h:98:
+ "if ${fs}load ${devtype} ${devnum}:${rootpart} ${scriptaddr} ${prefix}${script}; then " \
WARNING: line over 80 characters
#420: FILE: include/configs/tegra2-common-post.h:99:
+ "echo ${script} found! Executing ...;" \
WARNING: line over 80 characters
#421: FILE: include/configs/tegra2-common-post.h:100:
+ "source ${scriptaddr};" \
WARNING: line over 80 characters
#422: FILE: include/configs/tegra2-common-post.h:101:
+ "fi; " \
WARNING: line over 80 characters
#423: FILE: include/configs/tegra2-common-post.h:102:
+ "done; " \
WARNING: line over 80 characters
#424: FILE: include/configs/tegra2-common-post.h:103:
+ "done; " \
WARNING: line over 80 characters
#425: FILE: include/configs/tegra2-common-post.h:104:
+ "done;\0" \
ERROR: Macros with complex values should be enclosed in parenthesis
#928: FILE: include/configs/whistler.h:31:
+#define CONFIG_DEFAULT_DEVICE_TREE tegra2-whistler
total: 1 errors, 12 warnings, 882 lines checked
Tom
> 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
> 3706a40..25d6ec7 100644
> --- a/include/configs/harmony.h
> +++ b/include/configs/harmony.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/medcom.h b/include/configs/medcom.h index
> 725abc3..eecfa50 100644
> --- a/include/configs/medcom.h
> +++ b/include/configs/medcom.h
> @@ -60,4 +60,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
> ae3a2de..ced185e 100644
> --- a/include/configs/paz00.h
> +++ b/include/configs/paz00.h
> @@ -47,4 +47,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
> 475be6c..1888276 100644
> --- a/include/configs/plutux.h
> +++ b/include/configs/plutux.h
> @@ -60,4 +60,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
> 0af37db..5e91675 100644
> --- a/include/configs/seaboard.h
> +++ b/include/configs/seaboard.h
> @@ -107,4 +107,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
> a7338f1..8e95db1 100644
> --- a/include/configs/ventana.h
> +++ b/include/configs/ventana.h
> @@ -59,4 +59,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
> 5efa60c..2f2a512 100644
> --- a/include/configs/whistler.h
> +++ b/include/configs/whistler.h
> @@ -86,4 +86,6 @@
> #define CONFIG_CMD_PING
> #define CONFIG_CMD_DHCP
>
> +#include "tegra2-common-post.h"
> +
> #endif /* __CONFIG_H */
> --
> 1.7.0.4
--
nvpublic
More information about the U-Boot
mailing list