[MTD] NAND Add read/write function pointers to struct nand_ecc_ctrl

Linux-MTD Mailing List linux-mtd at lists.infradead.org
Thu May 25 08:59:06 EDT 2006


Commit:     9577f44a899cf4acb9e381c8946307b72153cd15
Parent:     7fac464868ec5d80019fa549b8b4516dd1dc9d5c
Author:     Thomas Gleixner <tglx at cruncher.tec.linutronix.de>
AuthorDate: Thu May 25 10:04:31 2006 +0200
Commit:     David Woodhouse <dwmw2 at infradead.org>
CommitDate: Thu May 25 12:45:27 2006 +0100

    [MTD] NAND Add read/write function pointers to struct nand_ecc_ctrl
    
    Add read/write function pointers to struct nand_ecc_ctrl to
    prepare the modulaization of nand_read/write functions. The
    current implementation handles every type of ecc mode
    software/hardware and all kinds of strange ecc placement
    schemes in one switch/if construct. Thats too complex to
    maintain and too inflexible to expand. Modularization will
    also shorten the code pathes of the read/write functions.
    
    Signed-off-by: Thomas Gleixner <tglx at linutronix.de>

 include/linux/mtd/nand.h |   13 +++++++++++++
 1 files changed, 13 insertions(+), 0 deletions(-)

diff --git a/include/linux/mtd/nand.h b/include/linux/mtd/nand.h
index 2fd85d5..daacde5 100644
--- a/include/linux/mtd/nand.h
+++ b/include/linux/mtd/nand.h
@@ -233,16 +233,23 @@ struct nand_hw_control {
  * @steps:	number of ecc steps per page
  * @size:	data bytes per ecc step
  * @bytes:	ecc bytes per step
+ * @total:	total number of ecc bytes per page
+ * @prepad:	padding information for syndrome based ecc generators
+ * @postpad:	padding information for syndrome based ecc generators
  * @hwctl:	function to control hardware ecc generator. Must only
  *		be provided if an hardware ECC is available
  * @calculate:	function for ecc calculation or readback from ecc hardware
  * @correct:	function for ecc correction, matching to ecc generator (sw/hw)
+ * @write_page:	function to write a page according to the ecc generator requirements
  */
 struct nand_ecc_ctrl {
 	nand_ecc_modes_t	mode;
 	int			steps;
 	int			size;
 	int			bytes;
+	int			total;
+	int			prepad;
+	int			postpad;
 	void			(*hwctl)(struct mtd_info *mtd, int mode);
 	int			(*calculate)(struct mtd_info *mtd,
 					     const uint8_t *dat,
@@ -250,6 +257,12 @@ struct nand_ecc_ctrl {
 	int			(*correct)(struct mtd_info *mtd, uint8_t *dat,
 					   uint8_t *read_ecc,
 					   uint8_t *calc_ecc);
+	int			(*read_page)(struct mtd_info *mtd,
+					     struct nand_chip *chip,
+					     uint8_t *buf);
+	int			(*write_page)(struct mtd_info *mtd,
+					      struct nand_chip *chip,
+					      uint8_t *buf, int cached);
 };
 
 /**



More information about the linux-mtd-cvs mailing list