diff options
author | Artem B. Bityuckiy <dedekind@infradead.org> | 2005-03-19 10:33:59 -0500 |
---|---|---|
committer | Thomas Gleixner <tglx@mtd.linutronix.de> | 2005-05-23 06:59:33 -0400 |
commit | 515022870f0f648b9c506a285b1c7e92901dd37f (patch) | |
tree | a47bc31cb0593af093530a6ac69365962ab81308 /drivers/mtd/nand | |
parent | 167e1770e526c6c6cdff5014e32f5a3363c017f3 (diff) |
[MTD] NAND nandsim: Use NAND_SKIP_BBT option
Use the new NAND_SKIP_BBT option instead of defining a fake scan_bbt
handler.
Signed-off-by: Artem B. Bityuckiy <dedekind@infradead.org>
Signed-off-by: Thomas Gleixner <tglx@linutronix.de>
Diffstat (limited to 'drivers/mtd/nand')
-rw-r--r-- | drivers/mtd/nand/nandsim.c | 41 |
1 files changed, 12 insertions, 29 deletions
diff --git a/drivers/mtd/nand/nandsim.c b/drivers/mtd/nand/nandsim.c index 13feefd7d8ca..754b6ed7ce14 100644 --- a/drivers/mtd/nand/nandsim.c +++ b/drivers/mtd/nand/nandsim.c | |||
@@ -22,7 +22,7 @@ | |||
22 | * along with this program; if not, write to the Free Software | 22 | * along with this program; if not, write to the Free Software |
23 | * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307, USA | 23 | * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307, USA |
24 | * | 24 | * |
25 | * $Id: nandsim.c,v 1.7 2004/12/06 11:53:06 dedekind Exp $ | 25 | * $Id: nandsim.c,v 1.8 2005/03/19 15:33:56 dedekind Exp $ |
26 | */ | 26 | */ |
27 | 27 | ||
28 | #include <linux/config.h> | 28 | #include <linux/config.h> |
@@ -1484,33 +1484,6 @@ ns_nand_verify_buf(struct mtd_info *mtd, const u_char *buf, int len) | |||
1484 | } | 1484 | } |
1485 | 1485 | ||
1486 | /* | 1486 | /* |
1487 | * Having only NAND chip IDs we call nand_scan which detects NAND flash | ||
1488 | * parameters and then calls scan_bbt in order to scan/find/build the | ||
1489 | * NAND flash bad block table. But since at that moment the NAND flash | ||
1490 | * image isn't allocated in the simulator, errors arise. To avoid this | ||
1491 | * we redefine the scan_bbt callback and initialize the nandsim structure | ||
1492 | * before the flash media scanning. | ||
1493 | */ | ||
1494 | int ns_scan_bbt(struct mtd_info *mtd) | ||
1495 | { | ||
1496 | struct nand_chip *chip = (struct nand_chip *)mtd->priv; | ||
1497 | struct nandsim *ns = (struct nandsim *)(chip->priv); | ||
1498 | int retval; | ||
1499 | |||
1500 | if (!NS_IS_INITIALIZED(ns)) | ||
1501 | if ((retval = init_nandsim(mtd)) != 0) { | ||
1502 | NS_ERR("scan_bbt: can't initialize the nandsim structure\n"); | ||
1503 | return retval; | ||
1504 | } | ||
1505 | if ((retval = nand_default_bbt(mtd)) != 0) { | ||
1506 | free_nandsim(ns); | ||
1507 | return retval; | ||
1508 | } | ||
1509 | |||
1510 | return 0; | ||
1511 | } | ||
1512 | |||
1513 | /* | ||
1514 | * Module initialization function | 1487 | * Module initialization function |
1515 | */ | 1488 | */ |
1516 | int __init ns_init_module(void) | 1489 | int __init ns_init_module(void) |
@@ -1544,7 +1517,6 @@ int __init ns_init_module(void) | |||
1544 | chip->hwcontrol = ns_hwcontrol; | 1517 | chip->hwcontrol = ns_hwcontrol; |
1545 | chip->read_byte = ns_nand_read_byte; | 1518 | chip->read_byte = ns_nand_read_byte; |
1546 | chip->dev_ready = ns_device_ready; | 1519 | chip->dev_ready = ns_device_ready; |
1547 | chip->scan_bbt = ns_scan_bbt; | ||
1548 | chip->write_byte = ns_nand_write_byte; | 1520 | chip->write_byte = ns_nand_write_byte; |
1549 | chip->write_buf = ns_nand_write_buf; | 1521 | chip->write_buf = ns_nand_write_buf; |
1550 | chip->read_buf = ns_nand_read_buf; | 1522 | chip->read_buf = ns_nand_read_buf; |
@@ -1552,6 +1524,7 @@ int __init ns_init_module(void) | |||
1552 | chip->write_word = ns_nand_write_word; | 1524 | chip->write_word = ns_nand_write_word; |
1553 | chip->read_word = ns_nand_read_word; | 1525 | chip->read_word = ns_nand_read_word; |
1554 | chip->eccmode = NAND_ECC_SOFT; | 1526 | chip->eccmode = NAND_ECC_SOFT; |
1527 | chip->options |= NAND_SKIP_BBTSCAN; | ||
1555 | 1528 | ||
1556 | /* | 1529 | /* |
1557 | * Perform minimum nandsim structure initialization to handle | 1530 | * Perform minimum nandsim structure initialization to handle |
@@ -1580,6 +1553,16 @@ int __init ns_init_module(void) | |||
1580 | goto error; | 1553 | goto error; |
1581 | } | 1554 | } |
1582 | 1555 | ||
1556 | if ((retval = init_nandsim(nsmtd)) != 0) { | ||
1557 | NS_ERR("scan_bbt: can't initialize the nandsim structure\n"); | ||
1558 | goto error; | ||
1559 | } | ||
1560 | |||
1561 | if ((retval = nand_default_bbt(nsmtd)) != 0) { | ||
1562 | free_nandsim(nand); | ||
1563 | goto error; | ||
1564 | } | ||
1565 | |||
1583 | /* Register NAND as one big partition */ | 1566 | /* Register NAND as one big partition */ |
1584 | add_mtd_partitions(nsmtd, &nand->part, 1); | 1567 | add_mtd_partitions(nsmtd, &nand->part, 1); |
1585 | 1568 | ||