diff options
author | Thomas Knobloch <knobloch@siemens.com> | 2007-05-03 02:39:37 -0400 |
---|---|---|
committer | David Woodhouse <dwmw2@infradead.org> | 2007-05-03 02:39:37 -0400 |
commit | 1a12f46af1af1a4b7b9c7ae7ab2c8ded3481a4ba (patch) | |
tree | c0449ee0a2e9d31963798c010152b87048674a69 /drivers/mtd | |
parent | 4839f0481d8b985aabd6653ba42cf09e2abcc2bd (diff) |
[MTD] [NAND] Tidy up handling of page number in nand_block_bad()
Further to the previous patch fixing the calculation of page number,
both branches are using the same result. Clean up the function
accordingly, calculating it (and also masking with pagemask) only in one
place.
Signed-off-by: Thomas Knobloch <knobloch@siemens.com>
Signed-off-by: Thomas Gleixner <tglx@linutronix.de>
Signed-off-by: David Woodhouse <dwmw2@infradead.org>
Diffstat (limited to 'drivers/mtd')
-rw-r--r-- | drivers/mtd/nand/nand_base.c | 11 |
1 files changed, 5 insertions, 6 deletions
diff --git a/drivers/mtd/nand/nand_base.c b/drivers/mtd/nand/nand_base.c index 04de315e4937..7e68203fe1ba 100644 --- a/drivers/mtd/nand/nand_base.c +++ b/drivers/mtd/nand/nand_base.c | |||
@@ -303,28 +303,27 @@ static int nand_block_bad(struct mtd_info *mtd, loff_t ofs, int getchip) | |||
303 | struct nand_chip *chip = mtd->priv; | 303 | struct nand_chip *chip = mtd->priv; |
304 | u16 bad; | 304 | u16 bad; |
305 | 305 | ||
306 | page = (int)(ofs >> chip->page_shift) & chip->pagemask; | ||
307 | |||
306 | if (getchip) { | 308 | if (getchip) { |
307 | page = (int)(ofs >> chip->page_shift); | ||
308 | chipnr = (int)(ofs >> chip->chip_shift); | 309 | chipnr = (int)(ofs >> chip->chip_shift); |
309 | 310 | ||
310 | nand_get_device(chip, mtd, FL_READING); | 311 | nand_get_device(chip, mtd, FL_READING); |
311 | 312 | ||
312 | /* Select the NAND device */ | 313 | /* Select the NAND device */ |
313 | chip->select_chip(mtd, chipnr); | 314 | chip->select_chip(mtd, chipnr); |
314 | } else | 315 | } |
315 | page = (int)(ofs >> chip->page_shift); | ||
316 | 316 | ||
317 | if (chip->options & NAND_BUSWIDTH_16) { | 317 | if (chip->options & NAND_BUSWIDTH_16) { |
318 | chip->cmdfunc(mtd, NAND_CMD_READOOB, chip->badblockpos & 0xFE, | 318 | chip->cmdfunc(mtd, NAND_CMD_READOOB, chip->badblockpos & 0xFE, |
319 | page & chip->pagemask); | 319 | page); |
320 | bad = cpu_to_le16(chip->read_word(mtd)); | 320 | bad = cpu_to_le16(chip->read_word(mtd)); |
321 | if (chip->badblockpos & 0x1) | 321 | if (chip->badblockpos & 0x1) |
322 | bad >>= 8; | 322 | bad >>= 8; |
323 | if ((bad & 0xFF) != 0xff) | 323 | if ((bad & 0xFF) != 0xff) |
324 | res = 1; | 324 | res = 1; |
325 | } else { | 325 | } else { |
326 | chip->cmdfunc(mtd, NAND_CMD_READOOB, chip->badblockpos, | 326 | chip->cmdfunc(mtd, NAND_CMD_READOOB, chip->badblockpos, page); |
327 | page & chip->pagemask); | ||
328 | if (chip->read_byte(mtd) != 0xff) | 327 | if (chip->read_byte(mtd) != 0xff) |
329 | res = 1; | 328 | res = 1; |
330 | } | 329 | } |