mtd/Documentation/DocBook mtdnand.tmpl,1.2,1.3

gleixner at infradead.org gleixner at infradead.org
Sat Oct 2 08:47:06 EDT 2004


Update of /home/cvs/mtd/Documentation/DocBook
In directory phoenix.infradead.org:/tmp/cvs-serv13687

Modified Files:
	mtdnand.tmpl 
Log Message:
Update new functions

Index: mtdnand.tmpl
===================================================================
RCS file: /home/cvs/mtd/Documentation/DocBook/mtdnand.tmpl,v
retrieving revision 1.2
retrieving revision 1.3
diff -u -r1.2 -r1.3
--- mtdnand.tmpl	1 Jun 2004 21:47:48 -0000	1.2
+++ mtdnand.tmpl	2 Oct 2004 12:47:04 -0000	1.3
@@ -423,55 +423,84 @@
 	</sect1>
 	<sect1>
 		<title>Hardware ECC support</title>
-		<para>
-			The nand driver supports three different types of
-			hardware ECC.
-			<itemizedlist>
-			<listitem><para>NAND_ECC_HW3_256</para><para>
-			Hardware ECC generator providing 3 bytes ECC per
-			256 byte.
-			</para>	</listitem>
-			<listitem><para>NAND_ECC_HW3_512</para><para>
-			Hardware ECC generator providing 3 bytes ECC per
-			512 byte.
-			</para>	</listitem>
-			<listitem><para>NAND_ECC_HW6_512</para><para>
-			Hardware ECC generator providing 6 bytes ECC per
-			512 byte.
-			</para>	</listitem>
-			<listitem><para>NAND_ECC_DISKONCHIP</para><para>
-			Hardware ECC generator on DiskOnChip devices.
-			</para>	</listitem>
-			</itemizedlist>
-			If your hardware generator has a different functionality
-			add it at the appropriate place in nand_base.c
-		</para>
-		<para>
-			The board driver must provide following functions:
-			<itemizedlist>
-			<listitem><para>enable_hwecc</para><para>
-			This function is called before reading / writing to
-			the chip. Reset or initialize the hardware generator
-			in this function. The function is called with an
-			argument which let you distinguish between read 
-			and write operations.
-			</para>	</listitem>
-			<listitem><para>calculate_ecc</para><para>
-			This function is called after read / write from / to
-			the chip. Transfer the ECC from the hardware to
-			the buffer.
-			</para>	</listitem>
-			<listitem><para>correct_data</para><para>
-			In case of an ECC error this function is called for
-			error detection and correction. Return 1 respectively 2
-			in case the error can be corrected. If the error is
-			not correctable return -1. If your hardware generator
-			matches the default algorithm of the nand_ecc software
-			generator then use the correction function provided
-			by nand_ecc instead of implementing duplicated code.
-			</para>	</listitem>
-			</itemizedlist>
-		</para>
+		<sect2>
+			<title>Functions and constants</title>
+			<para>
+				The nand driver supports three different types of
+				hardware ECC.
+				<itemizedlist>
+				<listitem><para>NAND_ECC_HW3_256</para><para>
+				Hardware ECC generator providing 3 bytes ECC per
+				256 byte.
+				</para>	</listitem>
+				<listitem><para>NAND_ECC_HW3_512</para><para>
+				Hardware ECC generator providing 3 bytes ECC per
+				512 byte.
+				</para>	</listitem>
+				<listitem><para>NAND_ECC_HW6_512</para><para>
+				Hardware ECC generator providing 6 bytes ECC per
+				512 byte.
+				</para>	</listitem>
+				<listitem><para>NAND_ECC_HW8_512</para><para>
+				Hardware ECC generator providing 6 bytes ECC per
+				512 byte.
+				</para>	</listitem>
+				</itemizedlist>
+				If your hardware generator has a different functionality
+				add it at the appropriate place in nand_base.c
+			</para>
+			<para>
+				The board driver must provide following functions:
+				<itemizedlist>
+				<listitem><para>enable_hwecc</para><para>
+				This function is called before reading / writing to
+				the chip. Reset or initialize the hardware generator
+				in this function. The function is called with an
+				argument which let you distinguish between read 
+				and write operations.
+				</para>	</listitem>
+				<listitem><para>calculate_ecc</para><para>
+				This function is called after read / write from / to
+				the chip. Transfer the ECC from the hardware to
+				the buffer. If the option NAND_HWECC_SYNDROME is set
+				then the function is only called on write. See below.
+				</para>	</listitem>
+				<listitem><para>correct_data</para><para>
+				In case of an ECC error this function is called for
+				error detection and correction. Return 1 respectively 2
+				in case the error can be corrected. If the error is
+				not correctable return -1. If your hardware generator
+				matches the default algorithm of the nand_ecc software
+				generator then use the correction function provided
+				by nand_ecc instead of implementing duplicated code.
+				</para>	</listitem>
+				</itemizedlist>
+			</para>
+		</sect2>
+		<sect2>
+		<title>Hardware ECC with syndrome calculation</title>
+			<para>
+				Many hardware ECC implementations provide Reed-Solomon
+				codes and calculate an error syndrome on read. The syndrome
+				must be converted to a standard Reed-Solomon syndrome
+				before calling the error correction code in the generic
+				Reed-Solomon library.
+			</para>
+			<para>
+				The ECC bytes must be placed immidiately after the data
+				bytes in order to make the syndrome generator work. This
+				is contrary to the usual layout used by software ECC. The
+				seperation of data and out of band area is not longer
+				possible. The nand driver code handles this layout and
+				the remaining free bytes in the oob area are managed by 
+				the autoplacement code. Provide a matching oob-layout
+				in this case. See rts_from4.c and diskonchip.c for 
+				implementation reference. In those cases we must also
+				use bad block tables on FLASH, because the ECC layout is
+				interferring with the bad block marker positions.
+				See bad block table support for details.
+			</para>
+		</sect2>
 	</sect1>
 	<sect1>
 		<title>Bad block table support</title>
@@ -1069,7 +1098,7 @@
 	<para>
 		Therefor NAND aware filesystems must either write in page size chunks
 		or hold a writebuffer to collect smaller writes until they sum up to 
-		pagesize.		
+		pagesize. Available NAND aware filesystems: JFFS2, YAFFS. 		
 	</para>
 	<para>
 		The spare area usage to store filesystem data is controlled by
@@ -1077,6 +1106,22 @@
 		of the earlier chapters.
 	</para>
   </chapter>	
+  <chapter id="tools">
+     	<title>Tools</title>
+	<para>
+		The MTD project provides a couple of helpful tools to handle NAND Flash.
+		<itemizedlist>
+		<listitem><para>flasherase, flasheraseall: Erase and format FLASH partitions</para></listitem>
+		<listitem><para>nandwrite: write filesystem images to NAND FLASH</para></listitem>
+		<listitem><para>nanddump: dump the contents of a NAND FLASH partitions</para></listitem>
+		</itemizedlist>
+	</para>
+	<para>
+		These tools are aware of the NAND restrictions. Please use those tools
+		instead of complaining about errors which are caused by non NAND aware
+		access methods.
+	</para>
+  </chapter>	
 
   <chapter id="defines">
      <title>Constants</title>
@@ -1119,6 +1164,10 @@
 /* Use a flash based bad block table. This option is parsed by the
  * default bad block table function (nand_default_bbt). */
 #define NAND_USE_FLASH_BBT	0x00010000
+/* The hw ecc generator provides a syndrome instead a ecc value on read 
+ * This can only work if we have the ecc bytes directly behind the 
+ * data bytes. Applies for DOC and AG-AND Renesas HW Reed Solomon generators */
+#define NAND_HWECC_SYNDROME	0x00020000
 		</programlisting>
      		</para>
      	</sect2>
@@ -1137,10 +1186,10 @@
 #define NAND_ECC_HW3_256	2
 /* Hardware ECC 3 byte ECC per 512 Byte data */
 #define NAND_ECC_HW3_512	3
-/* Hardware ECC 3 byte ECC per 512 Byte data */
+/* Hardware ECC 6 byte ECC per 512 Byte data */
 #define NAND_ECC_HW6_512	4
-/* Hardware ECC for DiskOnChip devices */
-#define NAND_ECC_DISKONCHIP	5
+/* Hardware ECC 6 byte ECC per 512 Byte data */
+#define NAND_ECC_HW8_512	6
 	</programlisting>
 	</para>
      </sect1>	





More information about the linux-mtd-cvs mailing list