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

login
register
mail settings
Submitter Stephen Warren
Date May 21, 2012, 11:30 p.m.
Message ID <1337643054-17290-1-git-send-email-swarren@wwwdotorg.org>
Download mbox | patch
Permalink /patch/160501/
State Changes Requested
Delegated to: Wolfgang Denk
Headers show

Comments

Stephen Warren - May 21, 2012, 11:30 p.m.
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(-)
Wolfgang Denk - May 22, 2012, 8:23 a.m.
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
Stephen Warren - May 22, 2012, 4:16 p.m.
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.
Wolfgang Denk - May 22, 2012, 6:03 p.m.
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

Patch

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>