[U-Boot,v4,3/6] mx28evk: Add support to dynamically choose between ftd use or not

Submitted by Otavio Salvador on Jan. 9, 2013, 10:20 a.m.

Details

Message ID 1357726842-12960-4-git-send-email-otavio@ossystems.com.br
State Changes Requested
Delegated to: Stefano Babic
Headers show

Commit Message

Otavio Salvador Jan. 9, 2013, 10:20 a.m.
Signed-off-by: Otavio Salvador <otavio@ossystems.com.br>
---
Changes in v4:
- Use a warning, instead of error when failing to fetch fdt
- Drop exit use
- Fix netboot
- Use fdt instead of ftd

Changes in v3:
- Add loadfdt
- Use loadfdt
- Call exit to abort script

Changes in v2:
- Allow use of dynamic/static ip
- Allow force use, or not, of fdt
- Change 'auto' to 'try'

 include/configs/mx28evk.h |   39 +++++++++++++++++++++++++++++++++++++--
 1 file changed, 37 insertions(+), 2 deletions(-)

Comments

Fabio Estevam Jan. 9, 2013, 11:29 a.m.
On Wed, Jan 9, 2013 at 8:20 AM, Otavio Salvador <otavio@ossystems.com.br> wrote:
> Signed-off-by: Otavio Salvador <otavio@ossystems.com.br>
> ---
> Changes in v4:
> - Use a warning, instead of error when failing to fetch fdt
> - Drop exit use
> - Fix netboot
> - Use fdt instead of ftd

Subject still uses 'ftd'. It is better to make it consistent.

>
> Changes in v3:
> - Add loadfdt
> - Use loadfdt
> - Call exit to abort script
>
> Changes in v2:
> - Allow use of dynamic/static ip
> - Allow force use, or not, of fdt
> - Change 'auto' to 'try'
>
>  include/configs/mx28evk.h |   39 +++++++++++++++++++++++++++++++++++++--
>  1 file changed, 37 insertions(+), 2 deletions(-)
>
> diff --git a/include/configs/mx28evk.h b/include/configs/mx28evk.h
> index ac9522f..46442c3 100644
> --- a/include/configs/mx28evk.h
> +++ b/include/configs/mx28evk.h
> @@ -290,6 +290,10 @@
>         "uimage=uImage\0" \
>         "console_fsl=ttyAM0\0" \
>         "console_mainline=ttyAMA0\0" \
> +       "fdt_file=imx28-evk.dtb\0" \
> +       "fdt_addr=0x41000000\0" \
> +       "boot_fdt=try\0" \
> +       "ip_dyn=yes\0" \
>         "mmcdev=0\0" \
>         "mmcpart=2\0" \
>         "mmcroot=/dev/mmcblk0p3 rw rootwait\0" \
> @@ -300,15 +304,46 @@
>         "bootscript=echo Running bootscript from mmc ...; "     \
>                 "source\0" \
>         "loaduimage=fatload mmc ${mmcdev}:${mmcpart} ${loadaddr} ${uimage}\0" \
> +       "loadfdt=fatload mmc ${mmcdev}:${mmcpart} ${fdt_addr} ${fdt_file}\0" \
>         "mmcboot=echo Booting from mmc ...; " \
>                 "run mmcargs; " \
> -               "bootm\0" \
> +               "if test ${boot_fdt} = yes; then " \
> +                       "if run loadfdt; then " \
> +                               "bootm ${loadaddr} - ${fdt_addr}; " \
> +                       "else " \
> +                               "if test ${boot_fdt} = try; then " \
> +                                       "bootm; " \
> +                               "else " \
> +                                       "echo WARN: Cannot load the DT, aborting...; " \

Actually you are not aborting. It was just mmc load that  failed, but
tftp will be tried next.

Have all the four combinations below been tested on the hardware?

1. Load a dt kernel from mmc
2. Load a non-dt kernel from mmc
3. Load a dt kernel from tftp
4. Load a non-dt kernel from tftp
Otavio Salvador Jan. 9, 2013, 11:51 a.m.
On Wed, Jan 9, 2013 at 9:29 AM, Fabio Estevam <festevam@gmail.com> wrote:
> On Wed, Jan 9, 2013 at 8:20 AM, Otavio Salvador <otavio@ossystems.com.br> wrote:
>> Signed-off-by: Otavio Salvador <otavio@ossystems.com.br>
>> ---
>> Changes in v4:
>> - Use a warning, instead of error when failing to fetch fdt
>> - Drop exit use
>> - Fix netboot
>> - Use fdt instead of ftd
>
> Subject still uses 'ftd'. It is better to make it consistent.

Will send v5...

...
>> +                               "if test ${boot_fdt} = try; then " \
>> +                                       "bootm; " \
>> +                               "else " \
>> +                                       "echo WARN: Cannot load the DT, aborting...; " \
>
> Actually you are not aborting. It was just mmc load that  failed, but
> tftp will be tried next.

Yes; I removed the aborting for v5

> Have all the four combinations below been tested on the hardware?
>
> 1. Load a dt kernel from mmc
> 2. Load a non-dt kernel from mmc
> 3. Load a dt kernel from tftp
> 4. Load a non-dt kernel from tftp

Stefano has helped testing it :-)

--
Otavio Salvador                             O.S. Systems
E-mail: otavio@ossystems.com.br  http://www.ossystems.com.br
Mobile: +55 53 9981-7854              http://projetos.ossystems.com.br

Patch hide | download patch | download mbox

diff --git a/include/configs/mx28evk.h b/include/configs/mx28evk.h
index ac9522f..46442c3 100644
--- a/include/configs/mx28evk.h
+++ b/include/configs/mx28evk.h
@@ -290,6 +290,10 @@ 
 	"uimage=uImage\0" \
 	"console_fsl=ttyAM0\0" \
 	"console_mainline=ttyAMA0\0" \
+	"fdt_file=imx28-evk.dtb\0" \
+	"fdt_addr=0x41000000\0" \
+	"boot_fdt=try\0" \
+	"ip_dyn=yes\0" \
 	"mmcdev=0\0" \
 	"mmcpart=2\0" \
 	"mmcroot=/dev/mmcblk0p3 rw rootwait\0" \
@@ -300,15 +304,46 @@ 
 	"bootscript=echo Running bootscript from mmc ...; "	\
 		"source\0" \
 	"loaduimage=fatload mmc ${mmcdev}:${mmcpart} ${loadaddr} ${uimage}\0" \
+	"loadfdt=fatload mmc ${mmcdev}:${mmcpart} ${fdt_addr} ${fdt_file}\0" \
 	"mmcboot=echo Booting from mmc ...; " \
 		"run mmcargs; "	\
-		"bootm\0" \
+		"if test ${boot_fdt} = yes; then " \
+			"if run loadfdt; then " \
+				"bootm ${loadaddr} - ${fdt_addr}; " \
+			"else " \
+				"if test ${boot_fdt} = try; then " \
+					"bootm; " \
+				"else " \
+					"echo WARN: Cannot load the DT, aborting...; " \
+				"fi; " \
+			"fi; " \
+		"else " \
+			"bootm; " \
+		"fi;\0" \
 	"netargs=setenv bootargs console=${console_mainline},${baudrate} " \
 		"root=/dev/nfs " \
 		"ip=dhcp nfsroot=${serverip}:${nfsroot},v3,tcp\0" \
 	"netboot=echo Booting from net ...; " \
 		"run netargs; "	\
-		"dhcp ${uimage}; bootm\0"
+		"if test ${ip_dyn} = yes; then " \
+			"setenv get_cmd dhcp; " \
+		"else " \
+			"setenv get_cmd tftp; " \
+		"fi; " \
+		"${get_cmd} ${uimage}; " \
+		"if test ${boot_fdt} = yes; then " \
+			"if ${get_cmd} ${fdt_addr} ${fdt_file}; then " \
+				"bootm ${loadaddr} - ${fdt_addr}; " \
+			"else " \
+				"if test ${boot_fdt} = try; then " \
+					"bootm; " \
+				"else " \
+					"echo WARN: Cannot load the DT, aborting...; " \
+				"fi;" \
+			"fi; " \
+		"else " \
+			"bootm; " \
+		"fi;\0"
 
 #define CONFIG_BOOTCOMMAND \
 	"mmc dev ${mmcdev}; if mmc rescan; then " \