[U-Boot] [PATCH V2 1/2] Add env vars describing U-Boot target board

From: Stephen Warren swarren@nvidia.com
This can be useful for generic scripts. For example, rather than hard- coding a script to ext2load tegra-harmony.dtb, it could load ${soc}-${board}.dtb and hence not need adjustments to run on multiple boards.
Signed-off-by: Stephen Warren swarren@nvidia.com --- v2: * Pass values via config.h instead of command-line * Use a single CONFIG option to enable this feature * Simplify names of the environment variables * add README entry describing CONFIG_ENV_VARS_UBOOT_CONFIG --- README | 6 ++++++ common/env_common.c | 11 +++++++++++ common/env_embedded.c | 11 +++++++++++ mkconfig | 8 ++++++++ 4 files changed, 36 insertions(+), 0 deletions(-)
diff --git a/README b/README index 6919392..27221bd 100644 --- a/README +++ b/README @@ -2203,6 +2203,12 @@ The following options need to be configured: the environment like the "source" command or the boot command first.
+ CONFIG_ENV_VARS_UBOOT_CONFIG + + Define this in order to add variables describing the + U-Boot build configuration to the default environment. + These will be named arch, cpu, board, vendor, and soc. + - DataFlash Support: CONFIG_HAS_DATAFLASH
diff --git a/common/env_common.c b/common/env_common.c index c33d22d..81c7395 100644 --- a/common/env_common.c +++ b/common/env_common.c @@ -116,6 +116,17 @@ const uchar default_environment[] = { #if defined(CONFIG_PCI_BOOTDELAY) && (CONFIG_PCI_BOOTDELAY > 0) "pcidelay=" MK_STR(CONFIG_PCI_BOOTDELAY) "\0" #endif +#ifdef CONFIG_ENV_VARS_UBOOT_CONFIG + "arch=" ARCH "\0" + "cpu=" CPU "\0" + "board=" BOARD "\0" +#ifdef VENDOR + "vendor=" VENDOR "\0" +#endif +#ifdef SOC + "soc=" SOC "\0" +#endif +#endif #ifdef CONFIG_EXTRA_ENV_SETTINGS CONFIG_EXTRA_ENV_SETTINGS #endif diff --git a/common/env_embedded.c b/common/env_embedded.c index 80fb29d..1a63894 100644 --- a/common/env_embedded.c +++ b/common/env_embedded.c @@ -179,6 +179,17 @@ env_t environment __PPCENV__ = { #if defined(CONFIG_PCI_BOOTDELAY) && (CONFIG_PCI_BOOTDELAY > 0) "pcidelay=" MK_STR(CONFIG_PCI_BOOTDELAY) "\0" #endif +#ifdef CONFIG_ENV_VARS_UBOOT_CONFIG + "arch=" ARCH "\0" + "cpu=" CPU "\0" + "board=" BOARD "\0" +#ifdef VENDOR + "vendor=" VENDOR "\0" +#endif +#ifdef SOC + "soc=" SOC "\0" +#endif +#endif #ifdef CONFIG_EXTRA_ENV_SETTINGS CONFIG_EXTRA_ENV_SETTINGS #endif diff --git a/mkconfig b/mkconfig index 438530b..e74ad79 100755 --- a/mkconfig +++ b/mkconfig @@ -161,6 +161,14 @@ for i in ${TARGETS} ; do echo "#define CONFIG_${i}" >>config.h ; done
+echo "#define ARCH "${arch}"" >> config.h +echo "#define CPU "${cpu}"" >> config.h +echo "#define BOARD "${board}"" >> config.h + +[ "${vendor}" ] && echo "#define VENDOR "${vendor}"" >> config.h + +[ "${soc}" ] && echo "#define SOC "${soc}"" >> config.h + cat << EOF >> config.h #define CONFIG_BOARDDIR board/$BOARDDIR #include <config_cmd_defaults.h>

From: Stephen Warren swarren@nvidia.com
So that all Tegra boards define environment variables that describe themselves.
Signed-off-by: Stephen Warren swarren@nvidia.com --- v2: Adjust to new CONFIG variable name --- include/configs/tegra2-common.h | 1 + 1 files changed, 1 insertions(+), 0 deletions(-)
diff --git a/include/configs/tegra2-common.h b/include/configs/tegra2-common.h index 1931179..d6ea851 100644 --- a/include/configs/tegra2-common.h +++ b/include/configs/tegra2-common.h @@ -68,6 +68,7 @@ #endif
/* Environment */ +#define CONFIG_ENV_VARS_UBOOT_CONFIG #define CONFIG_ENV_SIZE 0x2000 /* Total Size Environment */
/*

Dear Stephen Warren,
In message 1337643054-17290-1-git-send-email-swarren@wwwdotorg.org you wrote:
From: Stephen Warren swarren@nvidia.com
This can be useful for generic scripts. For example, rather than hard- coding a script to ext2load tegra-harmony.dtb, it could load ${soc}-${board}.dtb and hence not need adjustments to run on multiple boards.
...
+echo "#define ARCH "${arch}"" >> config.h +echo "#define CPU "${cpu}"" >> config.h +echo "#define BOARD "${board}"" >> config.h
Sorry, but names like ARCH and CPU are _way_ too intrusive and likely to clash. Please use something like CONFIG_SYS_ARCH_NAME etc. instead.
Best regards,
Wolfgang Denk

On 05/22/2012 02:23 AM, Wolfgang Denk wrote:
Dear Stephen Warren,
In message 1337643054-17290-1-git-send-email-swarren@wwwdotorg.org you wrote:
From: Stephen Warren swarren@nvidia.com
This can be useful for generic scripts. For example, rather than hard- coding a script to ext2load tegra-harmony.dtb, it could load ${soc}-${board}.dtb and hence not need adjustments to run on multiple boards.
...
+echo "#define ARCH "${arch}"" >> config.h +echo "#define CPU "${cpu}"" >> config.h +echo "#define BOARD "${board}"" >> config.h
Sorry, but names like ARCH and CPU are _way_ too intrusive and likely to clash. Please use something like CONFIG_SYS_ARCH_NAME etc. instead.
OK. Are you OK with the environment variable names? They're also common names like arch, cpu, board, vendor, soc.

Dear Stephen,
In message 4FBBBBCC.5020309@wwwdotorg.org you wrote:
+echo "#define ARCH "${arch}"" >> config.h +echo "#define CPU "${cpu}"" >> config.h +echo "#define BOARD "${board}"" >> config.h
Sorry, but names like ARCH and CPU are _way_ too intrusive and likely to clash. Please use something like CONFIG_SYS_ARCH_NAME etc. instead.
OK. Are you OK with the environment variable names? They're also common names like arch, cpu, board, vendor, soc.
We don;t have any rules yet for environment variable names, or name spaces or the like, so I see no problems here.
Best regards,
Wolfgang Denk
participants (2)
-
Stephen Warren
-
Wolfgang Denk