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 <ma...@denx.de>
Cc: Fabio Estevam <fabio.este...@freescale.com>
Cc: Stefano Babic <sba...@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

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

Reply via email to