[MTD] NAND Consolidate oobinfo handling
Linux-MTD Mailing List
linux-mtd at lists.infradead.org
Mon May 29 09:59:02 EDT 2006
Commit: ff268fb8791cf18df536113355d7184007c269d9
Parent: 8be834f76291fdcc0614cb84926c6910b9f2ecbc
Author: Thomas Gleixner <tglx at cruncher.tec.linutronix.de>
AuthorDate: Sat May 27 20:36:12 2006 +0200
Commit: Thomas Gleixner <tglx at cruncher.tec.linutronix.de>
CommitDate: Mon May 29 15:06:49 2006 +0200
[MTD] NAND Consolidate oobinfo handling
The info structure for out of band data was copied into
the mtd structure. Make it a pointer and remove the ability
to set it from userspace. The position of ecc bytes is
defined by the hardware and should not be changed by software.
Signed-off-by: Thomas Gleixner <tglx at linutronix.de>
drivers/mtd/mtdchar.c | 10 ++--------
drivers/mtd/mtdconcat.c | 4 +---
drivers/mtd/mtdpart.c | 4 +---
drivers/mtd/nand/nand_base.c | 10 +---------
drivers/mtd/onenand/onenand_base.c | 2 +-
fs/jffs2/wbuf.c | 2 +-
include/linux/mtd/mtd.h | 5 ++---
7 files changed, 9 insertions(+), 28 deletions(-)
diff --git a/drivers/mtd/mtdchar.c b/drivers/mtd/mtdchar.c
index 7a7df85..608f7af 100644
--- a/drivers/mtd/mtdchar.c
+++ b/drivers/mtd/mtdchar.c
@@ -512,16 +512,10 @@ static int mtd_ioctl(struct inode *inode
break;
}
- case MEMSETOOBSEL:
- {
- if (copy_from_user(&mtd->oobinfo, argp, sizeof(struct nand_oobinfo)))
- return -EFAULT;
- break;
- }
-
case MEMGETOOBSEL:
{
- if (copy_to_user(argp, &(mtd->oobinfo), sizeof(struct nand_oobinfo)))
+ if (copy_to_user(argp, mtd->oobinfo,
+ sizeof(struct nand_oobinfo)))
return -EFAULT;
break;
}
diff --git a/drivers/mtd/mtdconcat.c b/drivers/mtd/mtdconcat.c
index 6d52137..699fce7 100644
--- a/drivers/mtd/mtdconcat.c
+++ b/drivers/mtd/mtdconcat.c
@@ -766,9 +766,7 @@ struct mtd_info *mtd_concat_create(struc
}
- if(concat->mtd.type == MTD_NANDFLASH)
- memcpy(&concat->mtd.oobinfo, &subdev[0]->oobinfo,
- sizeof(struct nand_oobinfo));
+ concat->mtd.oobinfo = subdev[0]->oobinfo;
concat->num_subdev = num_devs;
concat->mtd.name = name;
diff --git a/drivers/mtd/mtdpart.c b/drivers/mtd/mtdpart.c
index a93550c..b6b2189 100644
--- a/drivers/mtd/mtdpart.c
+++ b/drivers/mtd/mtdpart.c
@@ -316,7 +316,6 @@ int add_mtd_partitions(struct mtd_info *
slave->mtd.size = parts[i].size;
slave->mtd.writesize = master->writesize;
slave->mtd.oobsize = master->oobsize;
- slave->mtd.oobavail = master->oobavail;
slave->mtd.ecctype = master->ecctype;
slave->mtd.eccsize = master->eccsize;
@@ -435,8 +434,7 @@ int add_mtd_partitions(struct mtd_info *
parts[i].name);
}
- /* copy oobinfo from master */
- memcpy(&slave->mtd.oobinfo, &master->oobinfo, sizeof(slave->mtd.oobinfo));
+ slave->mtd.oobinfo = master->oobinfo;
if(parts[i].mtdp)
{ /* store the object pointer (caller may or may not register it */
diff --git a/drivers/mtd/nand/nand_base.c b/drivers/mtd/nand/nand_base.c
index 023224d..20f79fe 100644
--- a/drivers/mtd/nand/nand_base.c
+++ b/drivers/mtd/nand/nand_base.c
@@ -2143,14 +2143,6 @@ int nand_scan(struct mtd_info *mtd, int
}
/*
- * The number of bytes available for the filesystem to place fs
- * dependend oob data
- */
- mtd->oobavail = 0;
- for (i = 0; chip->autooob->oobfree[i][1]; i++)
- mtd->oobavail += chip->autooob->oobfree[i][1];
-
- /*
* check ECC mode, default to software if 3byte/512byte hardware ECC is
* selected and we have 256 byte pagesize fallback to software ECC
*/
@@ -2245,7 +2237,7 @@ int nand_scan(struct mtd_info *mtd, int
mtd->block_markbad = nand_block_markbad;
/* and make the autooob the default one */
- memcpy(&mtd->oobinfo, chip->autooob, sizeof(mtd->oobinfo));
+ mtd->oobinfo = chip->autooob;
/* Check, if we should skip the bad block table scan */
if (chip->options & NAND_SKIP_BBTSCAN)
diff --git a/drivers/mtd/onenand/onenand_base.c b/drivers/mtd/onenand/onenand_base.c
index 7a24191..b24bfa6 100644
--- a/drivers/mtd/onenand/onenand_base.c
+++ b/drivers/mtd/onenand/onenand_base.c
@@ -1762,7 +1762,7 @@ int onenand_scan(struct mtd_info *mtd, i
break;
}
- memcpy(&mtd->oobinfo, this->autooob, sizeof(mtd->oobinfo));
+ mtd->oobinfo = this->autooob;
/* Fill in remaining MTD driver data */
mtd->type = MTD_NANDFLASH;
diff --git a/fs/jffs2/wbuf.c b/fs/jffs2/wbuf.c
index 717fa2f..dc275ce 100644
--- a/fs/jffs2/wbuf.c
+++ b/fs/jffs2/wbuf.c
@@ -1151,7 +1151,7 @@ static struct nand_oobinfo jffs2_oobinfo
static int jffs2_nand_set_oobinfo(struct jffs2_sb_info *c)
{
- struct nand_oobinfo *oinfo = &c->mtd->oobinfo;
+ struct nand_oobinfo *oinfo = c->mtd->oobinfo;
/* Do this only, if we have an oob buffer */
if (!c->mtd->oobsize)
diff --git a/include/linux/mtd/mtd.h b/include/linux/mtd/mtd.h
index 41a984d..8429da5 100644
--- a/include/linux/mtd/mtd.h
+++ b/include/linux/mtd/mtd.h
@@ -101,9 +101,8 @@ #define MTD_PROGREGION_CTRLMODE_INVALID(
char *name;
int index;
- // oobinfo is a nand_oobinfo structure, which can be set by iotcl (MEMSETOOBINFO)
- struct nand_oobinfo oobinfo;
- u_int32_t oobavail; // Number of bytes in OOB area available for fs
+ /* oobinfo structure pointer - read only ! */
+ struct nand_oobinfo *oobinfo;
/* Data for variable erase regions. If numeraseregions is zero,
* it means that the whole device has erasesize as given above.
More information about the linux-mtd-cvs
mailing list