Skip to content

Commit

Permalink
---
Browse files Browse the repository at this point in the history
yaml
---
r: 45635
b: refs/heads/master
c: 7dcdcbe
h: refs/heads/master
i:
  45633: 7f4b136
  45631: 5614616
v: v3
  • Loading branch information
David Woodhouse committed Oct 21, 2006
1 parent 853efca commit 190ae0d
Show file tree
Hide file tree
Showing 3 changed files with 7 additions and 16 deletions.
2 changes: 1 addition & 1 deletion [refs]
Original file line number Diff line number Diff line change
@@ -1,2 +1,2 @@
---
refs/heads/master: 513b046c96cc2fbce730a3474f6f7ff0c4fdd05c
refs/heads/master: 7dcdcbef5d2b60d1db68fd2c07351f7afd8ad376
15 changes: 5 additions & 10 deletions trunk/drivers/mtd/nand/nand_base.c
Original file line number Diff line number Diff line change
Expand Up @@ -971,7 +971,6 @@ static int nand_do_read_ops(struct mtd_info *mtd, loff_t from,
page = realpage & chip->pagemask;

col = (int)(from & (mtd->writesize - 1));
chip->oob_poi = chip->buffers->oobrbuf;

buf = ops->datbuf;
oob = ops->oobbuf;
Expand Down Expand Up @@ -1270,8 +1269,6 @@ static int nand_do_read_oob(struct mtd_info *mtd, loff_t from,
realpage = (int)(from >> chip->page_shift);
page = realpage & chip->pagemask;

chip->oob_poi = chip->buffers->oobrbuf;

while(1) {
sndcmd = chip->ecc.read_oob(mtd, chip, page, sndcmd);
buf = nand_transfer_oob(chip, buf, ops);
Expand Down Expand Up @@ -1625,7 +1622,9 @@ static int nand_do_write_ops(struct mtd_info *mtd, loff_t to,
(chip->pagebuf << chip->page_shift) < (to + ops->len))
chip->pagebuf = -1;

chip->oob_poi = chip->buffers->oobwbuf;
/* If we're not given explicit OOB data, let it be 0xFF */
if (likely(!oob))
memset(chip->oob_poi, 0xff, mtd->oobsize);

while(1) {
int cached = writelen > bytes && page != blockmask;
Expand Down Expand Up @@ -1654,9 +1653,6 @@ static int nand_do_write_ops(struct mtd_info *mtd, loff_t to,
}
}

if (unlikely(oob))
memset(chip->oob_poi, 0xff, mtd->oobsize);

ops->retlen = ops->len - writelen;
return ret;
}
Expand Down Expand Up @@ -1744,7 +1740,6 @@ static int nand_do_write_oob(struct mtd_info *mtd, loff_t to,
if (page == chip->pagebuf)
chip->pagebuf = -1;

chip->oob_poi = chip->buffers->oobwbuf;
memset(chip->oob_poi, 0xff, mtd->oobsize);
nand_fill_oob(chip, ops->oobbuf, ops);
status = chip->ecc.write_oob(mtd, chip, page & chip->pagemask);
Expand Down Expand Up @@ -2348,8 +2343,8 @@ int nand_scan_tail(struct mtd_info *mtd)
if (!chip->buffers)
return -ENOMEM;

/* Preset the internal oob write buffer */
memset(chip->buffers->oobwbuf, 0xff, mtd->oobsize);
/* Set the internal oob buffer location, just after the page data */
chip->oob_poi = chip->buffers + mtd->writesize;

/*
* If no default placement scheme is given, select an appropriate one
Expand Down
6 changes: 1 addition & 5 deletions trunk/include/linux/mtd/nand.h
Original file line number Diff line number Diff line change
Expand Up @@ -286,19 +286,15 @@ struct nand_ecc_ctrl {
* struct nand_buffers - buffer structure for read/write
* @ecccalc: buffer for calculated ecc
* @ecccode: buffer for ecc read from flash
* @oobwbuf: buffer for write oob data
* @databuf: buffer for data - dynamically sized
* @oobrbuf: buffer to read oob data
*
* Do not change the order of buffers. databuf and oobrbuf must be in
* consecutive order.
*/
struct nand_buffers {
uint8_t ecccalc[NAND_MAX_OOBSIZE];
uint8_t ecccode[NAND_MAX_OOBSIZE];
uint8_t oobwbuf[NAND_MAX_OOBSIZE];
uint8_t databuf[NAND_MAX_PAGESIZE];
uint8_t oobrbuf[NAND_MAX_OOBSIZE];
uint8_t databuf[NAND_MAX_PAGESIZE + NAND_MAX_OOBSIZE];
};

/**
Expand Down

0 comments on commit 190ae0d

Please sign in to comment.