mtd/drivers/mtd/nand nand.c,1.84,1.85
gleixner at infradead.org
gleixner at infradead.org
Thu May 6 04:22:22 EDT 2004
Update of /home/cvs/mtd/drivers/mtd/nand
In directory phoenix.infradead.org:/tmp/cvs-serv13372
Modified Files:
nand.c
Log Message:
use subtraction instead of division. default to autooob. Patch provided by Pantelis Antoniou
Index: nand.c
===================================================================
RCS file: /home/cvs/mtd/drivers/mtd/nand/nand.c,v
retrieving revision 1.84
retrieving revision 1.85
diff -u -r1.84 -r1.85
--- nand.c 3 May 2004 19:32:01 -0000 1.84
+++ nand.c 6 May 2004 08:22:19 -0000 1.85
@@ -1163,7 +1163,7 @@
/* Check, if the buffer must be filled with ff again */
if (this->oobdirty) {
memset (this->oob_buf, 0xff,
- mtd->oobsize * (mtd->erasesize / mtd->oobblock));
+ mtd->oobsize << (this->erase_shift - this->page_shift));
this->oobdirty = 0;
}
@@ -1671,7 +1671,7 @@
chipnr = (int)((unsigned long)instr->addr / this->chipsize);
/* Calculate pages in each block */
- pages_per_block = mtd->erasesize / mtd->oobblock;
+ pages_per_block = 1 << (this->erase_shift - this->page_shift);
/* Select the NAND device */
this->select_chip(mtd, chipnr);
@@ -1941,6 +1941,7 @@
/* Calculate the address shift from the page size */
this->page_shift = ffs(mtd->oobblock) - 1;
+ this->erase_shift = ffs(mtd->erasesize) - 1;
/* Set the bad block position */
this->badblockpos = mtd->oobblock > 512 ?
@@ -1994,7 +1995,7 @@
/* Convert chipsize to number of pages per chip -1. */
this->pagemask = (this->chipsize >> this->page_shift) - 1;
/* Preset the internal oob buffer */
- memset(this->oob_buf, 0xff, mtd->oobsize * (mtd->erasesize / mtd->oobblock));
+ memset(this->oob_buf, 0xff, mtd->oobsize << (this->erase_shift - this->page_shift));
/* If no default placement scheme is given, select an
* appropriate one */
@@ -2120,6 +2121,10 @@
mtd->resume = NULL;
mtd->block_isbad = nand_block_isbad;
mtd->block_markbad = nand_block_markbad;
+
+ /* and make the autooob the default one */
+ memcpy(&mtd->oobinfo, this->autooob, sizeof(mtd->oobinfo));
+
mtd->owner = THIS_MODULE;
/* Return happy */
More information about the linux-mtd-cvs
mailing list