<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN" "http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<title>change log for rtems (2011-07-04)</title>
</head>
<body text='#000000' bgcolor='#ffffff'>
<a name='cs1'></a>
<table border='0' cellspacing='0' cellpadding='5' width='100%' bgcolor='#eeeeee'>
<tr><td colspan='3' bgcolor='#dddddd'>
 <font color='#bb2222'><strong>sh</strong></font>
</td></tr>
<tr><td colspan='3' bgcolor='#dddddd'><pre>2011-07-04 Sebastian Huber <sebastian.huber@embedded-brains.de>

        * misc/nand-mlc-erase-block-safe.c, misc/nand-mlc-write-blocks.c,
        include/nand-mlc.h: Fixed write blocks.
</pre></td></tr>
<tr><td width='1%'><a href="http://www.rtems.com/cgi-bin/viewcvs.cgi//rtems/c/src/lib/libbsp/arm/lpc32xx/ChangeLog.diff?r1=text&tr1=1.34&r2=text&tr2=1.35&diff_format=h">M</a></td><td width='1%'>1.35</td><td width='100%'>c/src/lib/libbsp/arm/lpc32xx/ChangeLog</td></tr>
<tr><td width='1%'><a href="http://www.rtems.com/cgi-bin/viewcvs.cgi//rtems/c/src/lib/libbsp/arm/lpc32xx/include/nand-mlc.h.diff?r1=text&tr1=1.4&r2=text&tr2=1.5&diff_format=h">M</a></td><td width='1%'>1.5</td><td width='100%'>c/src/lib/libbsp/arm/lpc32xx/include/nand-mlc.h</td></tr>
<tr><td width='1%'><a href="http://www.rtems.com/cgi-bin/viewcvs.cgi//rtems/c/src/lib/libbsp/arm/lpc32xx/misc/nand-mlc-erase-block-safe.c.diff?r1=text&tr1=1.1&r2=text&tr2=1.2&diff_format=h">M</a></td><td width='1%'>1.2</td><td width='100%'>c/src/lib/libbsp/arm/lpc32xx/misc/nand-mlc-erase-block-safe.c</td></tr>
<tr><td width='1%'><a href="http://www.rtems.com/cgi-bin/viewcvs.cgi//rtems/c/src/lib/libbsp/arm/lpc32xx/misc/nand-mlc-write-blocks.c.diff?r1=text&tr1=1.2&r2=text&tr2=1.3&diff_format=h">M</a></td><td width='1%'>1.3</td><td width='100%'>c/src/lib/libbsp/arm/lpc32xx/misc/nand-mlc-write-blocks.c</td></tr>
</table>
<pre>
<font color='#006600'>diff -u rtems/c/src/lib/libbsp/arm/lpc32xx/ChangeLog:1.34 rtems/c/src/lib/libbsp/arm/lpc32xx/ChangeLog:1.35
--- rtems/c/src/lib/libbsp/arm/lpc32xx/ChangeLog:1.34   Fri Jul  1 08:05:06 2011
+++ rtems/c/src/lib/libbsp/arm/lpc32xx/ChangeLog        Mon Jul  4 04:26:19 2011
</font><font color='#997700'>@@ -1,3 +1,8 @@
</font><font color='#000088'>+2011-07-04    Sebastian Huber <sebastian.huber@embedded-brains.de>
+
+       * misc/nand-mlc-erase-block-safe.c, misc/nand-mlc-write-blocks.c,
+       include/nand-mlc.h: Fixed write blocks.
+
</font> 2011-07-01        Stephan Hoffmann <sho@reLinux.de>
                Sebastian Huber <sebastian.huber@embedded-brains.de>
 

<font color='#006600'>diff -u rtems/c/src/lib/libbsp/arm/lpc32xx/include/nand-mlc.h:1.4 rtems/c/src/lib/libbsp/arm/lpc32xx/include/nand-mlc.h:1.5
--- rtems/c/src/lib/libbsp/arm/lpc32xx/include/nand-mlc.h:1.4   Fri Jul  1 08:05:06 2011
+++ rtems/c/src/lib/libbsp/arm/lpc32xx/include/nand-mlc.h       Mon Jul  4 04:26:19 2011
</font><font color='#997700'>@@ -286,15 +286,25 @@
</font>  * @brief Erases the block with index @a block_index.
  *
  * Variant of lpc32xx_mlc_erase_block_safe() with more parameters for
<font color='#880000'>- * efficiency reasons.
</font><font color='#000088'>+ * efficiency reasons.  The @a page_begin must be the index of the first page
+ * of the block.  The @a page_end must be the page index of the last page of
+ * the block plus one.
</font>  */
 rtems_status_code lpc32xx_mlc_erase_block_safe_3(
   uint32_t block_index,
<font color='#880000'>-  uint32_t first_page_of_block,
-  uint32_t pages_per_block
</font><font color='#000088'>+  uint32_t page_begin,
+  uint32_t page_end
</font> );
 
 /**
<font color='#000088'>+ * @brief Writes zero values to the pages specified by @a page_begin and
+ * @a page_end.
+ *
+ * The data and spare area are cleared to zero.  This marks the pages as bad.
+ */
+void lpc32xx_mlc_zero_pages(uint32_t page_begin, uint32_t page_end);
+
+/**
</font>  * @brief Writes the page with index @a page_index.
  *
  * 32-bit writes will be performed.

<font color='#006600'>diff -u rtems/c/src/lib/libbsp/arm/lpc32xx/misc/nand-mlc-erase-block-safe.c:1.1 rtems/c/src/lib/libbsp/arm/lpc32xx/misc/nand-mlc-erase-block-safe.c:1.2
--- rtems/c/src/lib/libbsp/arm/lpc32xx/misc/nand-mlc-erase-block-safe.c:1.1     Fri Jul  1 08:05:06 2011
+++ rtems/c/src/lib/libbsp/arm/lpc32xx/misc/nand-mlc-erase-block-safe.c Mon Jul  4 04:26:19 2011
</font><font color='#997700'>@@ -3,8 +3,8 @@
</font>  *
  * @ingroup lpc32xx_nand_mlc
  *
<font color='#880000'>- * @brief lpc32xx_mlc_erase_block_safe() and lpc32xx_mlc_erase_block_safe_3()
- * implementation.
</font><font color='#000088'>+ * @brief lpc32xx_mlc_erase_block_safe(), lpc32xx_mlc_erase_block_safe_3(), and
+ * lpc32xx_mlc_zero_block() implementation.
</font>  */
 
 /*
<font color='#997700'>@@ -27,13 +27,13 @@
</font> 
 #include <bsp.h>
 
<font color='#880000'>-static void zero_block(uint32_t first_page_of_block, uint32_t pages_per_block)
</font><font color='#000088'>+void lpc32xx_mlc_zero_pages(uint32_t page_begin, uint32_t page_end)
</font> {
   uint32_t page = 0;
 
<font color='#880000'>-  for (page = 0; page < pages_per_block; ++page) {
</font><font color='#000088'>+  for (page = page_begin; page < page_end; ++page) {
</font>     lpc32xx_mlc_write_page_with_ecc(
<font color='#880000'>-      first_page_of_block + page,
</font><font color='#000088'>+      page,
</font>       lpc32xx_magic_zero_begin,
       lpc32xx_magic_zero_begin
     );
<font color='#997700'>@@ -41,15 +41,15 @@
</font> }
 
 static bool is_bad_page(
<font color='#880000'>-  uint32_t first_page_of_block,
-  uint32_t page
</font><font color='#000088'>+  uint32_t page_begin,
+  uint32_t page_offset
</font> )
 {
   uint32_t spare [MLC_LARGE_SPARE_WORD_COUNT];
 
   memset(spare, 0, MLC_LARGE_SPARE_SIZE);
   lpc32xx_mlc_read_page(
<font color='#880000'>-    first_page_of_block + page,
</font><font color='#000088'>+    page_begin + page_offset,
</font>     lpc32xx_magic_zero_begin,
     spare
   );
<font color='#997700'>@@ -58,23 +58,23 @@
</font> 
 rtems_status_code lpc32xx_mlc_erase_block_safe_3(
   uint32_t block_index,
<font color='#880000'>-  uint32_t first_page_of_block,
-  uint32_t pages_per_block
</font><font color='#000088'>+  uint32_t page_begin,
+  uint32_t page_end
</font> )
 {
   rtems_status_code sc = RTEMS_SUCCESSFUL;
 
<font color='#880000'>-  if (is_bad_page(first_page_of_block, 0)) {
</font><font color='#000088'>+  if (is_bad_page(page_begin, 0)) {
</font>     return RTEMS_INCORRECT_STATE;
   }
 
<font color='#880000'>-  if (is_bad_page(first_page_of_block, 1)) {
</font><font color='#000088'>+  if (is_bad_page(page_begin, 1)) {
</font>     return RTEMS_INCORRECT_STATE;
   }
 
   sc = lpc32xx_mlc_erase_block(block_index);
   if (sc != RTEMS_SUCCESSFUL) {
<font color='#880000'>-    zero_block(first_page_of_block, pages_per_block);
</font><font color='#000088'>+    lpc32xx_mlc_zero_pages(page_begin, page_end);
</font> 
     return RTEMS_IO_ERROR;
   }
<font color='#997700'>@@ -85,10 +85,12 @@
</font> rtems_status_code lpc32xx_mlc_erase_block_safe(uint32_t block_index)
 {
   uint32_t pages_per_block = lpc32xx_mlc_pages_per_block();
<font color='#000088'>+  uint32_t page_begin = block_index * pages_per_block;
+  uint32_t page_end = page_begin + pages_per_block;
</font> 
   return lpc32xx_mlc_erase_block_safe_3(
     block_index,
<font color='#880000'>-    block_index * pages_per_block,
-    pages_per_block
</font><font color='#000088'>+    page_begin,
+    page_end
</font>   );
 }

<font color='#006600'>diff -u rtems/c/src/lib/libbsp/arm/lpc32xx/misc/nand-mlc-write-blocks.c:1.2 rtems/c/src/lib/libbsp/arm/lpc32xx/misc/nand-mlc-write-blocks.c:1.3
--- rtems/c/src/lib/libbsp/arm/lpc32xx/misc/nand-mlc-write-blocks.c:1.2 Fri Jul  1 08:05:06 2011
+++ rtems/c/src/lib/libbsp/arm/lpc32xx/misc/nand-mlc-write-blocks.c     Mon Jul  4 04:26:19 2011
</font><font color='#997700'>@@ -63,32 +63,29 @@
</font>   }
 
   for (block = block_begin; block != block_end; ++block) {
<font color='#880000'>-    uint32_t first_page_of_block = block * pages_per_block;
</font><font color='#000088'>+    uint32_t page_begin = block * pages_per_block;
+    uint32_t page_end = page_begin + pages_per_block;
</font>     uint32_t page = 0;
 
<font color='#880000'>-    sc = lpc32xx_mlc_erase_block_safe_3(
-      block,
-      first_page_of_block,
-      pages_per_block
-    );
</font><font color='#000088'>+    sc = lpc32xx_mlc_erase_block_safe_3(block, page_begin, page_end);
</font>     if (sc != RTEMS_SUCCESSFUL) {
       continue;
     }
 
<font color='#880000'>-    for (page = 0; page < pages_per_block; ++page) {
</font><font color='#000088'>+    for (page = page_begin; page < page_end; ++page) {
</font>       uintptr_t remainder = (uintptr_t) end - (uintptr_t) current;
       size_t delta = remainder < page_size ? remainder : page_size;
 
       if (remainder > 0) {
         memcpy(page_data_buffer, current, delta);
         sc = lpc32xx_mlc_write_page_with_ecc(
<font color='#880000'>-          first_page_of_block + page,
</font><font color='#000088'>+          page,
</font>           page_data_buffer,
           ones_spare
         );
         if (sc != RTEMS_SUCCESSFUL) {
<font color='#880000'>-          erase_block(block, first_page_of_block, pages_per_block);
-          zero_block(first_page_of_block, pages_per_block);
</font><font color='#000088'>+          lpc32xx_mlc_erase_block_safe_3(block, page_begin, page_end);
+          lpc32xx_mlc_zero_pages(page_begin, page_end);
</font>           current = last;
           continue;
         }
</pre>
<p> </p>

<p>--<br />
<small>Generated by <a href="http://www.codewiz.org/projects/index.html#loginfo">Deluxe Loginfo</a> 2.122 by Bernardo Innocenti <bernie@develer.com></small></p>
</body>
</html>