Patchwork [U-Boot,v2,03/10] mkconfig: add support for SPL CPU

login
register
mail settings
Submitter Allen Martin
Date June 5, 2012, 9:20 p.m.
Message ID <1338931225-12246-4-git-send-email-amartin@nvidia.com>
Download mbox | patch
Permalink /patch/163164/
State Superseded
Headers show

Comments

Allen Martin - June 5, 2012, 9:20 p.m.
Add support for specifying a differnt CPU for main u-boot and SPL
u-boot builds.  This is done by adding an optional SPL CPU after the
main CPU in boards.cfg as follows:

     normal_cpu:spl_cpu

This this case CPU will be set to "normal_cpu" during the main u-boot
build and "spl_cpu" during the SPL build.

Signed-off-by: Allen Martin <amartin@nvidia.com>
---
 boards.cfg     |    5 +++++
 doc/README.SPL |   12 ++++++++++++
 mkconfig       |   15 ++++++++++++++-
 3 files changed, 31 insertions(+), 1 deletion(-)
Stephen Warren - June 6, 2012, 4:20 p.m.
On 06/05/2012 03:20 PM, Allen Martin wrote:
> Add support for specifying a differnt CPU for main u-boot and SPL

typo                                ^^

> u-boot builds.  This is done by adding an optional SPL CPU after the
> main CPU in boards.cfg as follows:
> 
>      normal_cpu:spl_cpu
> 
> This this case CPU will be set to "normal_cpu" during the main u-boot
> build and "spl_cpu" during the SPL build.

> diff --git a/mkconfig b/mkconfig

> +tmp="${cpu#*:}"
> +if [ "$tmp" != "$cpu" ] ; then
> +	spl_cpu=$tmp
> +	cpu="${cpu%:*}"
> +fi

Neat - I wasn't aware of those variable expansion techniques.

However, this script runs under /bin/sh - are they standard sh
constructs, or are they bash-isms? I wonder if shelling out to awk or
cut here would be more portable?
Allen Martin - June 6, 2012, 6:09 p.m.
On Wed, Jun 06, 2012 at 09:20:22AM -0700, Stephen Warren wrote:
> On 06/05/2012 03:20 PM, Allen Martin wrote:
> > Add support for specifying a differnt CPU for main u-boot and SPL
> 
> typo                                ^^

Got it, thanks.

> > u-boot builds.  This is done by adding an optional SPL CPU after the
> > main CPU in boards.cfg as follows:
> > 
> >      normal_cpu:spl_cpu
> > 
> > This this case CPU will be set to "normal_cpu" during the main u-boot
> > build and "spl_cpu" during the SPL build.
> 
> > diff --git a/mkconfig b/mkconfig
> 
> > +tmp="${cpu#*:}"
> > +if [ "$tmp" != "$cpu" ] ; then
> > +	spl_cpu=$tmp
> > +	cpu="${cpu%:*}"
> > +fi
> 
> Neat - I wasn't aware of those variable expansion techniques.
> 
> However, this script runs under /bin/sh - are they standard sh
> constructs, or are they bash-isms? I wonder if shelling out to awk or
> cut here would be more portable?

It's bash, I'll rewrite it with awk.

-Allen

Patch

diff --git a/boards.cfg b/boards.cfg
index 8e46d08..0e571aa 100644
--- a/boards.cfg
+++ b/boards.cfg
@@ -11,6 +11,11 @@ 
 #	Lines starting with '#' are comments.
 #	Blank lines are ignored.
 #
+#	The CPU field takes the form:
+#		cpu[:spl_cpu]
+#	If spl_cpu is specified the make variable CPU will be set to this
+#	during the SPL build.
+#
 #	The options field takes the form:
 #		<board config name>[:comma separated config options]
 #	Each config option has the form (value defaults to "1"):
diff --git a/doc/README.SPL b/doc/README.SPL
index 0276953..e4a5ac3 100644
--- a/doc/README.SPL
+++ b/doc/README.SPL
@@ -66,3 +66,15 @@  CONFIG_SPL_DMA_SUPPORT (drivers/dma/libdma.o)
 CONFIG_SPL_POST_MEM_SUPPORT (post/drivers/memory.o)
 CONFIG_SPL_NAND_LOAD (drivers/mtd/nand/nand_spl_load.o)
 CONFIG_SPL_SPI_LOAD (drivers/mtd/spi/spi_spl_load.o)
+
+
+Normally CPU is assumed to be the same between the SPL and normal
+u-boot build.  However it is possible to specify a different CPU for
+the SPL build for cases where the SPL is expected to run on a
+different CPU model from the main u-boot.  This is done by specifying
+an SPL CPU in boards.cfg as follows:
+
+	normal_cpu:spl_cpu
+
+This this case CPU will be set to "normal_cpu" during the main u-boot
+build and "spl_cpu" during the SPL build.
diff --git a/mkconfig b/mkconfig
index 438530b..82660a6 100755
--- a/mkconfig
+++ b/mkconfig
@@ -60,6 +60,11 @@  CONFIG_NAME="${1%_config}"
 
 arch="$2"
 cpu="$3"
+tmp="${cpu#*:}"
+if [ "$tmp" != "$cpu" ] ; then
+	spl_cpu=$tmp
+	cpu="${cpu%:*}"
+fi
 if [ "$4" = "-" ] ; then
 	board=${BOARD_NAME}
 else
@@ -131,7 +136,15 @@  fi
 # Create include file for Make
 #
 echo "ARCH   = ${arch}"  >  config.mk
-echo "CPU    = ${cpu}"   >> config.mk
+if [ ! -z "$spl_cpu" ] ; then
+	echo 'ifeq ($(CONFIG_SPL_BUILD),y)' >> config.mk
+	echo "CPU    = ${spl_cpu}" >> config.mk
+	echo "else" >> config.mk
+	echo "CPU    = ${cpu}"   >> config.mk
+	echo "endif" >> config.mk
+else
+	echo "CPU    = ${cpu}"   >> config.mk
+fi
 echo "BOARD  = ${board}" >> config.mk
 
 [ "${vendor}" ] && echo "VENDOR = ${vendor}" >> config.mk