Re: [U-Boot] [PATCH v5 4/6] mx53loco: Add support to dynamically choose between fdt use or not

2013-01-09 Thread Liu Hui-R64343
-Original Message-
From: u-boot-boun...@lists.denx.de [mailto:u-boot-boun...@lists.denx.de]
On Behalf Of Otavio Salvador
Sent: Wednesday, January 09, 2013 7:58 PM
To: U-Boot Mailing List
Cc: Estevam Fabio-R49496; Otavio Salvador
Subject: [U-Boot] [PATCH v5 4/6] mx53loco: Add support to dynamically
choose between fdt use or not

Signed-off-by: Otavio Salvador ota...@ossystems.com.br
---
Changes in v5:
- Change subject
- Reword the warning

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/mx53loco.h |   40
++--
 1 file changed, 38 insertions(+), 2 deletions(-)

Acked-by: Jason Liu r64...@freescale.com


diff --git a/include/configs/mx53loco.h b/include/configs/mx53loco.h index
996396b..cbc3a82 100644
--- a/include/configs/mx53loco.h
+++ b/include/configs/mx53loco.h
@@ -119,6 +119,10 @@
 #define CONFIG_EXTRA_ENV_SETTINGS \
   script=boot.scr\0 \
   uimage=uImage\0 \
+  fdt_file=imx53-qsb.dtb\0 \
+  fdt_addr=0x7100\0 \
+  boot_fdt=try\0 \
+  ip_dyn=yes\0 \
   mmcdev=0\0 \
   mmcpart=2\0 \
   mmcroot=/dev/mmcblk0p3 rw rootwait\0 \ @@ -128,15 +132,47
@@
   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;  \
+  fi;  \
+  fi;  \
+  else  \
+  bootm;  \
+  fi;\0 \
   netargs=setenv bootargs console=ttymxc0,${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 ERROR: Cannot load the DT;  \
+  exit;  \
+  fi;  \
+  fi;  \
+  else  \
+  bootm;  \
+  fi;\0

 #define CONFIG_BOOTCOMMAND \
   mmc dev ${mmcdev}; if mmc rescan; then  \
--
1.7.10.4

___
U-Boot mailing list
U-Boot@lists.denx.de
http://lists.denx.de/mailman/listinfo/u-boot


___
U-Boot mailing list
U-Boot@lists.denx.de
http://lists.denx.de/mailman/listinfo/u-boot


Re: [U-Boot] [PATCH v5 4/6] mx53loco: Add support to dynamically choose between fdt use or not

2013-01-09 Thread Stefano Babic
On 09/01/2013 12:57, Otavio Salvador wrote:
 Signed-off-by: Otavio Salvador ota...@ossystems.com.br
 ---

Hi Otavio,

 Changes in v5:
 - Change subject
 - Reword the warning
 
 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'
 

I get some problems:
- loadbootscript is not correctly set. In fact:

 env default -f -a
## Resetting to default environment
MX53LOCO U-Boot  pri mmcargs
mmcargs=setenv bootargs console=ttymxc0,${baudrate} root=${mmcroot}
loadbootscript=fatload mmc ${mmcdev}:${mmcpart} ${loadaddr} ${script};

There is still a '0' missing for mmcargs, and loadbootscript is not set.

Then there is a problem with netboot. It is set correctly, but pri
netboot crashes:

pri netboot
netboot=echo Booting from net ...; run netargs; 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 ERROR: Cannot load the DT;
exit; fi; fi; else bootm; fi;
prefetch abort
pc : [203b6d78]  lr : [203b6d74]
sp : af565e00  ip :  fp : 
r10: 0002  r9 :  r8 : af565f58
r7 : af568c7c  r6 : 0001 r5 :   r4 : 6f6f6220
r3 : 0083  r2 : 0060 r1 : af565cc0  r0 : 0173
Flags: nZCv  IRQs off  FIQs off  Mode SVC_32
Resetting CPU ...

Then I do not understand the boot_fdt when set to try. I have imagined
that it tries to start a DT kernel, and if no fdt find is found, it
tries with a legacy kernel without fdt. But it does not try to load the
FDT file, because this is done only when boot_fdt = yes. When boot_fdt =
try, it starts always a legacy kernel.

Best regards,
Stefano Babic

-- 
=
DENX Software Engineering GmbH, MD: Wolfgang Denk  Detlev Zundel
HRB 165235 Munich, Office: Kirchenstr.5, D-82194 Groebenzell, Germany
Phone: +49-8142-66989-53 Fax: +49-8142-66989-80 Email: sba...@denx.de
=
___
U-Boot mailing list
U-Boot@lists.denx.de
http://lists.denx.de/mailman/listinfo/u-boot