[v4,09/10] vexpress64: juno: add alternate kernel and device tree filenames

Message ID 1444407488-32646-10-git-send-email-ryan.harkin@linaro.org
State Accepted
Commit ecbed5d6f4f96457dee8846c611056cb0d630642
Headers show

Commit Message

Ryan Harkin Oct. 9, 2015, 4:18 p.m.
The latest Juno firmware stores the files in NOR flash as "norkern" for
kernel binary, "board.dtb" for the device tree binary.

The "old" firmware used the name "Image" for the kernel binary and
"juno" for the device tree binary.

Rather than just change the default U-Boot configuration to use the new
names, breaking users with the old firmware, attempt to load the default
filename first.  If that fails, attempt to load the alternate filename.

I've echo'd that we are loading the alternate file to counter the
output from "afs load" shown if the first load attempt fails.  For
example, I see output like this on my Juno board when it's configured
the with the "old" firmware:

    image "norkern" not found in flash
    Loading Image instead of norkern
    loaded region 0 from 08500000 to 80000000, 00AB6318 bytes
    image "board.dtb" not found in flash
    Loading juno instead of board.dtb
    loaded region 0 from 0A000000 to 83000000, 00003188 bytes

Signed-off-by: Ryan Harkin <ryan.harkin@linaro.org>
Reviewed-by: Linus Walleij <linus.walleij@linaro.org>
---
 include/configs/vexpress_aemv8a.h | 16 ++++++++++++++--
 1 file changed, 14 insertions(+), 2 deletions(-)

Comments

Tom Rini Oct. 12, 2015, 3:18 p.m. | #1
On Fri, Oct 09, 2015 at 05:18:07PM +0100, Ryan Harkin wrote:

> The latest Juno firmware stores the files in NOR flash as "norkern" for
> kernel binary, "board.dtb" for the device tree binary.
> 
> The "old" firmware used the name "Image" for the kernel binary and
> "juno" for the device tree binary.
> 
> Rather than just change the default U-Boot configuration to use the new
> names, breaking users with the old firmware, attempt to load the default
> filename first.  If that fails, attempt to load the alternate filename.
> 
> I've echo'd that we are loading the alternate file to counter the
> output from "afs load" shown if the first load attempt fails.  For
> example, I see output like this on my Juno board when it's configured
> the with the "old" firmware:
> 
>     image "norkern" not found in flash
>     Loading Image instead of norkern
>     loaded region 0 from 08500000 to 80000000, 00AB6318 bytes
>     image "board.dtb" not found in flash
>     Loading juno instead of board.dtb
>     loaded region 0 from 0A000000 to 83000000, 00003188 bytes
> 
> Signed-off-by: Ryan Harkin <ryan.harkin@linaro.org>
> Reviewed-by: Linus Walleij <linus.walleij@linaro.org>

Applied to u-boot/master, thanks!

Patch

diff --git a/include/configs/vexpress_aemv8a.h b/include/configs/vexpress_aemv8a.h
index 99dd8b6..259f6ac 100644
--- a/include/configs/vexpress_aemv8a.h
+++ b/include/configs/vexpress_aemv8a.h
@@ -187,11 +187,13 @@ 
  * be copied into DRAM
  */
 #define CONFIG_EXTRA_ENV_SETTINGS	\
-				"kernel_name=Image\0"	\
+				"kernel_name=norkern\0"	\
+				"kernel_alt_name=Image\0"	\
 				"kernel_addr=0x80000000\0" \
 				"initrd_name=ramdisk.img\0"	\
 				"initrd_addr=0x84000000\0"	\
-				"fdt_name=juno\0" \
+				"fdt_name=board.dtb\0" \
+				"fdt_alt_name=juno\0" \
 				"fdt_addr=0x83000000\0" \
 				"fdt_high=0xffffffffffffffff\0" \
 				"initrd_high=0xffffffffffffffff\0" \
@@ -207,7 +209,17 @@ 
 
 /* Copy the kernel and FDT to DRAM memory and boot */
 #define CONFIG_BOOTCOMMAND	"afs load ${kernel_name} ${kernel_addr} ; " \
+				"if test $? -eq 1; then "\
+				"  echo Loading ${kernel_alt_name} instead of "\
+				"${kernel_name}; "\
+				"  afs load ${kernel_alt_name} ${kernel_addr};"\
+				"fi ; "\
 				"afs load  ${fdt_name} ${fdt_addr} ; " \
+				"if test $? -eq 1; then "\
+				"  echo Loading ${fdt_alt_name} instead of "\
+				"${fdt_name}; "\
+				"  afs load ${fdt_alt_name} ${fdt_addr}; "\
+				"fi ; "\
 				"fdt addr ${fdt_addr}; fdt resize; " \
 				"if afs load  ${initrd_name} ${initrd_addr} ; "\
 				"then "\