diff mbox

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

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

Commit Message

Otavio Salvador Jan. 7, 2013, 4:43 p.m. UTC
Signed-off-by: Otavio Salvador <otavio@ossystems.com.br>
---
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 |   41 +++++++++++++++++++++++++++++++++++++++--
 1 file changed, 39 insertions(+), 2 deletions(-)

Comments

Fabio Estevam Jan. 7, 2013, 4:51 p.m. UTC | #1
On Mon, Jan 7, 2013 at 2:43 PM, Otavio Salvador <otavio@ossystems.com.br> wrote:

>         "loaduimage=fatload mmc ${mmcdev}:${mmcpart} ${loadaddr} ${uimage}\0" \
> +       "loadftd=fatload mmc ${mmcdev}:${mmcpart} ${ftd_addr} ${ftd_file}\0" \
>         "mmcboot=echo Booting from mmc ...; " \
>                 "run mmcargs; " \
> -               "bootm\0" \
> +               "if test ${boot_fdt} = yes; then " \
> +                       "if run loadfdt; then " \
> +                               "bootm ${loadaddr} - ${ftd_addr}; " \
> +                       "else " \
> +                               "if test ${boot_fdt} = try; then " \
> +                                       "bootm; " \
> +                               "else " \
> +                                       "echo ERROR: Cannot load the DT, aborting...; " \
> +                                       "exit; " \

Current behavior is to try to load uImage from mmc first, if it fails
then it tries tftp.

Isn't this 'exit' that you introduced preventing tftp transfer in the
case of mmc fail?

Also, can you confirm that your patchset works in the following cases:

1. Loading a non-dt kernel via mmc
2. Loading a dt kernel via mmc
3. Loading a non-dt kernel via tftp
4. Loading a dt kernel via tftp
Otavio Salvador Jan. 7, 2013, 4:58 p.m. UTC | #2
On Mon, Jan 7, 2013 at 2:51 PM, Fabio Estevam <festevam@gmail.com> wrote:
> On Mon, Jan 7, 2013 at 2:43 PM, Otavio Salvador <otavio@ossystems.com.br> wrote:
>
>>         "loaduimage=fatload mmc ${mmcdev}:${mmcpart} ${loadaddr} ${uimage}\0" \
>> +       "loadftd=fatload mmc ${mmcdev}:${mmcpart} ${ftd_addr} ${ftd_file}\0" \
>>         "mmcboot=echo Booting from mmc ...; " \
>>                 "run mmcargs; " \
>> -               "bootm\0" \
>> +               "if test ${boot_fdt} = yes; then " \
>> +                       "if run loadfdt; then " \
>> +                               "bootm ${loadaddr} - ${ftd_addr}; " \
>> +                       "else " \
>> +                               "if test ${boot_fdt} = try; then " \
>> +                                       "bootm; " \
>> +                               "else " \
>> +                                       "echo ERROR: Cannot load the DT, aborting...; " \
>> +                                       "exit; " \
>
> Current behavior is to try to load uImage from mmc first, if it fails
> then it tries tftp.
>
> Isn't this 'exit' that you introduced preventing tftp transfer in the
> case of mmc fail?

Yes; it will go out and won't try tftp. In this case I can remove the
exit and change the ERROR to WARNINF. What do you think?

> Also, can you confirm that your patchset works in the following cases:
>
> 1. Loading a non-dt kernel via mmc
> 2. Loading a dt kernel via mmc
> 3. Loading a non-dt kernel via tftp
> 4. Loading a dt kernel via tftp

Yes; it is the same patchset we applied in OE.

--
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
Fabio Estevam Jan. 7, 2013, 5:02 p.m. UTC | #3
On Mon, Jan 7, 2013 at 2:58 PM, Otavio Salvador <otavio@ossystems.com.br> wrote:

> Yes; it will go out and won't try tftp. In this case I can remove the
> exit and change the ERROR to WARNINF. What do you think?

Yes, please remove the exit.

>
>> Also, can you confirm that your patchset works in the following cases:
>>
>> 1. Loading a non-dt kernel via mmc
>> 2. Loading a dt kernel via mmc
>> 3. Loading a non-dt kernel via tftp
>> 4. Loading a dt kernel via tftp
>
> Yes; it is the same patchset we applied in OE.

In OE we mainly boot from sd card, so that's why I asked to double
check whether tftp is also functional.
diff mbox

Patch

diff --git a/include/configs/mx28evk.h b/include/configs/mx28evk.h
index ac9522f..e7107b5 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" \
+	"ftd_file=imx28-evk.dtb\0" \
+	"ftd_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,48 @@ 
 	"bootscript=echo Running bootscript from mmc ...; "	\
 		"source\0" \
 	"loaduimage=fatload mmc ${mmcdev}:${mmcpart} ${loadaddr} ${uimage}\0" \
+	"loadftd=fatload mmc ${mmcdev}:${mmcpart} ${ftd_addr} ${ftd_file}\0" \
 	"mmcboot=echo Booting from mmc ...; " \
 		"run mmcargs; "	\
-		"bootm\0" \
+		"if test ${boot_fdt} = yes; then " \
+			"if run loadfdt; then " \
+				"bootm ${loadaddr} - ${ftd_addr}; " \
+			"else " \
+				"if test ${boot_fdt} = try; then " \
+					"bootm; " \
+				"else " \
+					"echo ERROR: Cannot load the DT, aborting...; " \
+					"exit; " \
+				"fi;\0" \
+			"fi;\0" \
+		"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;\0" \
+		"run ${get_cmd} ${uimage}; " \
+		"if test ${boot_fdt} = no; then " \
+			"if run ${get_cmd} ${ftd_addr} ${ftd_file}; then " \
+				"bootm ${loadaddr} - ${ftd_addr}; " \
+			"else " \
+				"if test ${boot_fdt} = try; then " \
+					"bootm; " \
+				"else " \
+					"echo ERROR: Cannot load the DT, aborting...; " \
+					"exit; " \
+				"fi;\0" \
+			"fi;\0" \
+		"else " \
+			"bootm; " \
+		"fi;\0"
 
 #define CONFIG_BOOTCOMMAND \
 	"mmc dev ${mmcdev}; if mmc rescan; then " \