diff mbox

[U-Boot,2/4] km: update the boot script to check for a DTB

Message ID 1447427722-24450-3-git-send-email-valentin.longchamp@keymile.com
State Accepted
Delegated to: Tom Rini
Headers show

Commit Message

Valentin Longchamp Nov. 13, 2015, 3:15 p.m. UTC
If a DTB is found with cramfsls, the bootscript continues as expected.
If none is found, the cramfsloadfdt and boot subbootcmds are updated to
not load the DTB from cramfs and not pass it to the kernel. The kernel
thus must have an appended DTB otherwise the boot will fail.

This is required for the km_kirkwood boards that must support .esw where
the DTB sometimes is appended (for backwards compatibility) and sometimes
is passed correctly (as we do now for all newer boards).

Signed-off-by: Valentin Longchamp <valentin.longchamp@keymile.com>
---

 include/configs/km/keymile-common.h | 5 +++--
 include/configs/km/km-powerpc.h     | 1 +
 include/configs/km/km_arm.h         | 6 ++++++
 include/configs/km/kmp204x-common.h | 1 +
 4 files changed, 11 insertions(+), 2 deletions(-)

Comments

Heiko Schocher Nov. 16, 2015, 11:09 a.m. UTC | #1
Hello Valentin,

Am 13.11.2015 um 16:15 schrieb Valentin Longchamp:
> If a DTB is found with cramfsls, the bootscript continues as expected.
> If none is found, the cramfsloadfdt and boot subbootcmds are updated to
> not load the DTB from cramfs and not pass it to the kernel. The kernel
> thus must have an appended DTB otherwise the boot will fail.
>
> This is required for the km_kirkwood boards that must support .esw where
> the DTB sometimes is appended (for backwards compatibility) and sometimes
> is passed correctly (as we do now for all newer boards).
>
> Signed-off-by: Valentin Longchamp <valentin.longchamp@keymile.com>
> ---
>
>   include/configs/km/keymile-common.h | 5 +++--
>   include/configs/km/km-powerpc.h     | 1 +
>   include/configs/km/km_arm.h         | 6 ++++++
>   include/configs/km/kmp204x-common.h | 1 +
>   4 files changed, 11 insertions(+), 2 deletions(-)


Reviewed-by: Heiko Schocher <hs@denx.de>

bye,
Heiko
>
> diff --git a/include/configs/km/keymile-common.h b/include/configs/km/keymile-common.h
> index 2fc1ea8..91b29b3 100644
> --- a/include/configs/km/keymile-common.h
> +++ b/include/configs/km/keymile-common.h
> @@ -141,8 +141,9 @@
>    * - 'release': for a standalone system		kernel/rootfs from flash
>    */
>   #define CONFIG_KM_DEF_ENV_BOOTTARGETS					\
> -	"subbootcmds=ubiattach ubicopy cramfsloadfdt set_fdthigh "	\
> -		"cramfsloadkernel flashargs add_default addpanic boot\0"\
> +	"subbootcmds=ubiattach ubicopy checkfdt cramfsloadfdt "		\
> +		"set_fdthigh cramfsloadkernel flashargs add_default "	\
> +		"addpanic boot\0"					\
>   	"develop="							\
>   		"tftp 200000 scripts/develop-${arch}.txt && "		\
>   		"env import -t 200000 ${filesize} && "			\
> diff --git a/include/configs/km/km-powerpc.h b/include/configs/km/km-powerpc.h
> index eb85a74..20ef036 100644
> --- a/include/configs/km/km-powerpc.h
> +++ b/include/configs/km/km-powerpc.h
> @@ -79,6 +79,7 @@
>   		"  ${filesize} && "					\
>   		"protect on " __stringify(BOOTFLASH_START) "  +${filesize}\0"\
>   	"set_fdthigh=true\0"						\
> +	"checkfdt=true\0"						\
>   	""
>
>   #endif /* __CONFIG_KEYMILE_POWERPC_H */
> diff --git a/include/configs/km/km_arm.h b/include/configs/km/km_arm.h
> index 15fca1a..8c18e16 100644
> --- a/include/configs/km/km_arm.h
> +++ b/include/configs/km/km_arm.h
> @@ -83,6 +83,12 @@
>   	"u-boot="__stringify(CONFIG_HOSTNAME) "/u-boot.kwb\0"		\
>   	CONFIG_KM_UPDATE_UBOOT						\
>   	"set_fdthigh=setenv fdt_high ${kernelmem}\0"			\
> +	"checkfdt="							\
> +		"if cramfsls fdt_0x${IVM_BoardId}_0x${IVM_HWKey}.dtb; "	\
> +		"then true; else setenv cramfsloadfdt true; "		\
> +		"setenv boot bootm ${load_addr_r}; "			\
> +		"echo No FDT found, booting with the kernel "		\
> +		"appended one; fi\0"					\
>   	""
>
>   #define CONFIG_SKIP_LOWLEVEL_INIT	/* disable board lowlevel_init */
> diff --git a/include/configs/km/kmp204x-common.h b/include/configs/km/kmp204x-common.h
> index 7536cbd..540c672 100644
> --- a/include/configs/km/kmp204x-common.h
> +++ b/include/configs/km/kmp204x-common.h
> @@ -458,6 +458,7 @@ int get_scl(void);
>   		"sf probe 0;sf erase 0 +${filesize};"			\
>   		"sf write ${load_addr_r} 0 ${filesize};\0"		\
>   	"set_fdthigh=true\0"						\
> +	"checkfdt=true\0"						\
>   	""
>
>   #define CONFIG_HW_ENV_SETTINGS						\
>
Tom Rini Nov. 18, 2015, 10:35 p.m. UTC | #2
On Fri, Nov 13, 2015 at 04:15:20PM +0100, Valentin Longchamp wrote:

> If a DTB is found with cramfsls, the bootscript continues as expected.
> If none is found, the cramfsloadfdt and boot subbootcmds are updated to
> not load the DTB from cramfs and not pass it to the kernel. The kernel
> thus must have an appended DTB otherwise the boot will fail.
> 
> This is required for the km_kirkwood boards that must support .esw where
> the DTB sometimes is appended (for backwards compatibility) and sometimes
> is passed correctly (as we do now for all newer boards).
> 
> Signed-off-by: Valentin Longchamp <valentin.longchamp@keymile.com>
> Reviewed-by: Heiko Schocher <hs@denx.de>

Applied to u-boot/master, thanks!
diff mbox

Patch

diff --git a/include/configs/km/keymile-common.h b/include/configs/km/keymile-common.h
index 2fc1ea8..91b29b3 100644
--- a/include/configs/km/keymile-common.h
+++ b/include/configs/km/keymile-common.h
@@ -141,8 +141,9 @@ 
  * - 'release': for a standalone system		kernel/rootfs from flash
  */
 #define CONFIG_KM_DEF_ENV_BOOTTARGETS					\
-	"subbootcmds=ubiattach ubicopy cramfsloadfdt set_fdthigh "	\
-		"cramfsloadkernel flashargs add_default addpanic boot\0"\
+	"subbootcmds=ubiattach ubicopy checkfdt cramfsloadfdt "		\
+		"set_fdthigh cramfsloadkernel flashargs add_default "	\
+		"addpanic boot\0"					\
 	"develop="							\
 		"tftp 200000 scripts/develop-${arch}.txt && "		\
 		"env import -t 200000 ${filesize} && "			\
diff --git a/include/configs/km/km-powerpc.h b/include/configs/km/km-powerpc.h
index eb85a74..20ef036 100644
--- a/include/configs/km/km-powerpc.h
+++ b/include/configs/km/km-powerpc.h
@@ -79,6 +79,7 @@ 
 		"  ${filesize} && "					\
 		"protect on " __stringify(BOOTFLASH_START) "  +${filesize}\0"\
 	"set_fdthigh=true\0"						\
+	"checkfdt=true\0"						\
 	""
 
 #endif /* __CONFIG_KEYMILE_POWERPC_H */
diff --git a/include/configs/km/km_arm.h b/include/configs/km/km_arm.h
index 15fca1a..8c18e16 100644
--- a/include/configs/km/km_arm.h
+++ b/include/configs/km/km_arm.h
@@ -83,6 +83,12 @@ 
 	"u-boot="__stringify(CONFIG_HOSTNAME) "/u-boot.kwb\0"		\
 	CONFIG_KM_UPDATE_UBOOT						\
 	"set_fdthigh=setenv fdt_high ${kernelmem}\0"			\
+	"checkfdt="							\
+		"if cramfsls fdt_0x${IVM_BoardId}_0x${IVM_HWKey}.dtb; "	\
+		"then true; else setenv cramfsloadfdt true; "		\
+		"setenv boot bootm ${load_addr_r}; "			\
+		"echo No FDT found, booting with the kernel "		\
+		"appended one; fi\0"					\
 	""
 
 #define CONFIG_SKIP_LOWLEVEL_INIT	/* disable board lowlevel_init */
diff --git a/include/configs/km/kmp204x-common.h b/include/configs/km/kmp204x-common.h
index 7536cbd..540c672 100644
--- a/include/configs/km/kmp204x-common.h
+++ b/include/configs/km/kmp204x-common.h
@@ -458,6 +458,7 @@  int get_scl(void);
 		"sf probe 0;sf erase 0 +${filesize};"			\
 		"sf write ${load_addr_r} 0 ${filesize};\0"		\
 	"set_fdthigh=true\0"						\
+	"checkfdt=true\0"						\
 	""
 
 #define CONFIG_HW_ENV_SETTINGS						\