[MTD] [NAND] make oobavail public

Linux-MTD Mailing List linux-mtd at lists.infradead.org
Thu Mar 8 05:59:01 EST 2007


Gitweb:     http://git.infradead.org/?p=mtd-2.6.git;a=commit;h=1f92267c51a514f35ad5b0fd46cb099c0980b679
Commit:     1f92267c51a514f35ad5b0fd46cb099c0980b679
Parent:     eee8abe5de9cbd936b51db292c8d3c406b0e79e7
Author:     Vitaly Wool <vwool at ru.mvista.com>
AuthorDate: Tue Mar 6 16:56:34 2007 +0300
Committer:  David Woodhouse <dwmw2 at infradead.org>
CommitDate: Thu Mar 8 09:17:43 2007 +0000

    [MTD] [NAND] make oobavail public
    
    During the MTD rework the oobavail parameter of mtd_info structure has become
    private. This is not quite correct in terms of integrity and logic. If we have
    means to write to OOB area, then we'd like to know upfront how many bytes out
    of OOB are spare per page to be able to adapt to specific cases.
    The patch inlined adds the public oobavail parameter.
    
    Signed-off-by: Vitaly Wool <vwool at ru.mvista.com>
    Signed-off-by: David Woodhouse <dwmw2 at infradead.org>
---
 drivers/mtd/mtdconcat.c            |    1 +
 drivers/mtd/mtdpart.c              |    1 +
 drivers/mtd/nand/nand_base.c       |    1 +
 drivers/mtd/onenand/onenand_base.c |    1 +
 include/linux/mtd/mtd.h            |    1 +
 5 files changed, 5 insertions(+), 0 deletions(-)

diff --git a/drivers/mtd/mtdconcat.c b/drivers/mtd/mtdconcat.c
index 880580c..41844ea 100644
--- a/drivers/mtd/mtdconcat.c
+++ b/drivers/mtd/mtdconcat.c
@@ -727,6 +727,7 @@ struct mtd_info *mtd_concat_create(struct mtd_info *subdev[],	/* subdevices to c
 	concat->mtd.erasesize = subdev[0]->erasesize;
 	concat->mtd.writesize = subdev[0]->writesize;
 	concat->mtd.oobsize = subdev[0]->oobsize;
+	concat->mtd.oobavail = subdev[0]->oobavail;
 	if (subdev[0]->writev)
 		concat->mtd.writev = concat_writev;
 	if (subdev[0]->read_oob)
diff --git a/drivers/mtd/mtdpart.c b/drivers/mtd/mtdpart.c
index 633def3..01e4aff 100644
--- a/drivers/mtd/mtdpart.c
+++ b/drivers/mtd/mtdpart.c
@@ -338,6 +338,7 @@ int add_mtd_partitions(struct mtd_info *master,
 		slave->mtd.size = parts[i].size;
 		slave->mtd.writesize = master->writesize;
 		slave->mtd.oobsize = master->oobsize;
+		slave->mtd.oobavail = master->oobavail;
 		slave->mtd.subpage_sft = master->subpage_sft;
 
 		slave->mtd.name = parts[i].name;
diff --git a/drivers/mtd/nand/nand_base.c b/drivers/mtd/nand/nand_base.c
index acaf97b..6af37b8 100644
--- a/drivers/mtd/nand/nand_base.c
+++ b/drivers/mtd/nand/nand_base.c
@@ -2524,6 +2524,7 @@ int nand_scan_tail(struct mtd_info *mtd)
 	for (i = 0; chip->ecc.layout->oobfree[i].length; i++)
 		chip->ecc.layout->oobavail +=
 			chip->ecc.layout->oobfree[i].length;
+	mtd->oobavail = chip->ecc.layout->oobavail;
 
 	/*
 	 * Set the number of read / write steps for one page depending on ECC
diff --git a/drivers/mtd/onenand/onenand_base.c b/drivers/mtd/onenand/onenand_base.c
index 7f1cb6e..621c3f8 100644
--- a/drivers/mtd/onenand/onenand_base.c
+++ b/drivers/mtd/onenand/onenand_base.c
@@ -2367,6 +2367,7 @@ int onenand_scan(struct mtd_info *mtd, int maxchips)
 	for (i = 0; this->ecclayout->oobfree[i].length; i++)
 		this->ecclayout->oobavail +=
 			this->ecclayout->oobfree[i].length;
+	mtd->oobavail = this->ecclayout->oobavail;
 
 	mtd->ecclayout = this->ecclayout;
 
diff --git a/include/linux/mtd/mtd.h b/include/linux/mtd/mtd.h
index 6a8570b..3d956c3 100644
--- a/include/linux/mtd/mtd.h
+++ b/include/linux/mtd/mtd.h
@@ -121,6 +121,7 @@ struct mtd_info {
 	u_int32_t writesize;
 
 	u_int32_t oobsize;   // Amount of OOB data per block (e.g. 16)
+	u_int32_t oobavail;  // Available OOB bytes per block
 
 	// Kernel-only stuff starts here.
 	char *name;



More information about the linux-mtd-cvs mailing list