[U-Boot] [PATCH 3/3 V2] ARM: mxs: Fix NAND FCB flashing
Marek Vasut
marex at denx.de
Tue Aug 27 23:49:41 CEST 2013
Fix the method of flashing FCB blocks into NAND. The new env
writes all four FCB blocks and also does not scrub such a big
part of the NAND. This fixed complains about busted NAND blocks
in Linux.
Signed-off-by: Marek Vasut <marex at denx.de>
Cc: Fabio Estevam <fabio.estevam at freescale.com>
Cc: Stefano Babic <sbabic at denx.de>
---
include/configs/m28evk.h | 23 +++++++++++++++++++++--
include/configs/mx28evk.h | 23 +++++++++++++++++++++--
2 files changed, 42 insertions(+), 4 deletions(-)
V2: Write the whole stride (64 pages) in the FCB case, not only one page.
diff --git a/include/configs/m28evk.h b/include/configs/m28evk.h
index eba8759..6e1ecbe 100644
--- a/include/configs/m28evk.h
+++ b/include/configs/m28evk.h
@@ -170,11 +170,30 @@
"nand info ; " \
"setexpr fcb_sz ${update_nand_stride} * ${update_nand_count};" \
"setexpr update_nand_fcb ${fcb_sz} * ${nand_writesize}\0" \
+ "update_nand_write_fcb=" \
+ "setenv i ${update_nand_count} ; " \
+ "setenv update_nand_offset 0x0 ; " \
+ "setexpr update_nand_step " \
+ "${update_nand_stride} * ${nand_writesize} ; " \
+ "while test ${i} -gt 0 ; do " \
+ "echo ${update_nand_offset} ; " \
+ "nand scrub -y ${update_nand_offset} " \
+ "${nand_erasesize} ; " \
+ "nand write.raw ${loadaddr} " \
+ "${update_nand_offset} " \
+ "${update_nand_stride} ; " \
+ "setexpr i ${i} - 1 ; " \
+ "setexpr update_nand_offset " \
+ "${update_nand_offset} + " \
+ "${update_nand_step} ; " \
+ "done ; " \
+ "setenv i ; " \
+ "setenv update_nand_offset ; " \
+ "setenv update_nand_step\0" \
"update_nand_full=" /* Update FCB, DBBT and FW */ \
"if tftp ${update_nand_full_filename} ; then " \
"run update_nand_get_fcb_size ; " \
- "nand scrub -y 0x0 ${filesize} ; " \
- "nand write.raw ${loadaddr} 0x0 ${fcb_sz} ; " \
+ "run update_nand_write_fcb ; " \
"setexpr update_off ${loadaddr} + ${update_nand_fcb} ; " \
"setexpr update_sz ${filesize} - ${update_nand_fcb} ; " \
"nand write ${update_off} ${update_nand_fcb} ${update_sz} ; " \
diff --git a/include/configs/mx28evk.h b/include/configs/mx28evk.h
index 07f88ca..e2324d6 100644
--- a/include/configs/mx28evk.h
+++ b/include/configs/mx28evk.h
@@ -172,11 +172,30 @@
"nand info ; " \
"setexpr fcb_sz ${update_nand_stride} * ${update_nand_count};" \
"setexpr update_nand_fcb ${fcb_sz} * ${nand_writesize}\0" \
+ "update_nand_write_fcb=" \
+ "setenv i ${update_nand_count} ; " \
+ "setenv update_nand_offset 0x0 ; " \
+ "setexpr update_nand_step " \
+ "${update_nand_stride} * ${nand_writesize} ; " \
+ "while test ${i} -gt 0 ; do " \
+ "echo ${update_nand_offset} ; " \
+ "nand scrub -y ${update_nand_offset} " \
+ "${nand_erasesize} ; " \
+ "nand write.raw ${loadaddr} " \
+ "${update_nand_offset} " \
+ "${update_nand_stride} ; " \
+ "setexpr i ${i} - 1 ; " \
+ "setexpr update_nand_offset " \
+ "${update_nand_offset} + " \
+ "${update_nand_step} ; " \
+ "done ; " \
+ "setenv i ; " \
+ "setenv update_nand_offset ; " \
+ "setenv update_nand_step\0" \
"update_nand_full=" /* Update FCB, DBBT and FW */ \
"if tftp ${update_nand_full_filename} ; then " \
"run update_nand_get_fcb_size ; " \
- "nand scrub -y 0x0 ${filesize} ; " \
- "nand write.raw ${loadaddr} 0x0 ${fcb_sz} ; " \
+ "run update_nand_write_fcb ; " \
"setexpr update_off ${loadaddr} + ${update_nand_fcb} ; " \
"setexpr update_sz ${filesize} - ${update_nand_fcb} ; " \
"nand write ${update_off} ${update_nand_fcb} ${update_sz} ; " \
--
1.7.10.4
More information about the U-Boot
mailing list