[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>
This commit is contained in:
parent
167e1770e5
commit
515022870f
|
@ -22,7 +22,7 @@
|
|||
* along with this program; if not, write to the Free Software
|
||||
* Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307, USA
|
||||
*
|
||||
* $Id: nandsim.c,v 1.7 2004/12/06 11:53:06 dedekind Exp $
|
||||
* $Id: nandsim.c,v 1.8 2005/03/19 15:33:56 dedekind Exp $
|
||||
*/
|
||||
|
||||
#include <linux/config.h>
|
||||
|
@ -1483,33 +1483,6 @@ ns_nand_verify_buf(struct mtd_info *mtd, const u_char *buf, int len)
|
|||
}
|
||||
}
|
||||
|
||||
/*
|
||||
* Having only NAND chip IDs we call nand_scan which detects NAND flash
|
||||
* parameters and then calls scan_bbt in order to scan/find/build the
|
||||
* NAND flash bad block table. But since at that moment the NAND flash
|
||||
* image isn't allocated in the simulator, errors arise. To avoid this
|
||||
* we redefine the scan_bbt callback and initialize the nandsim structure
|
||||
* before the flash media scanning.
|
||||
*/
|
||||
int ns_scan_bbt(struct mtd_info *mtd)
|
||||
{
|
||||
struct nand_chip *chip = (struct nand_chip *)mtd->priv;
|
||||
struct nandsim *ns = (struct nandsim *)(chip->priv);
|
||||
int retval;
|
||||
|
||||
if (!NS_IS_INITIALIZED(ns))
|
||||
if ((retval = init_nandsim(mtd)) != 0) {
|
||||
NS_ERR("scan_bbt: can't initialize the nandsim structure\n");
|
||||
return retval;
|
||||
}
|
||||
if ((retval = nand_default_bbt(mtd)) != 0) {
|
||||
free_nandsim(ns);
|
||||
return retval;
|
||||
}
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
||||
/*
|
||||
* Module initialization function
|
||||
*/
|
||||
|
@ -1544,7 +1517,6 @@ int __init ns_init_module(void)
|
|||
chip->hwcontrol = ns_hwcontrol;
|
||||
chip->read_byte = ns_nand_read_byte;
|
||||
chip->dev_ready = ns_device_ready;
|
||||
chip->scan_bbt = ns_scan_bbt;
|
||||
chip->write_byte = ns_nand_write_byte;
|
||||
chip->write_buf = ns_nand_write_buf;
|
||||
chip->read_buf = ns_nand_read_buf;
|
||||
|
@ -1552,6 +1524,7 @@ int __init ns_init_module(void)
|
|||
chip->write_word = ns_nand_write_word;
|
||||
chip->read_word = ns_nand_read_word;
|
||||
chip->eccmode = NAND_ECC_SOFT;
|
||||
chip->options |= NAND_SKIP_BBTSCAN;
|
||||
|
||||
/*
|
||||
* Perform minimum nandsim structure initialization to handle
|
||||
|
@ -1580,6 +1553,16 @@ int __init ns_init_module(void)
|
|||
goto error;
|
||||
}
|
||||
|
||||
if ((retval = init_nandsim(nsmtd)) != 0) {
|
||||
NS_ERR("scan_bbt: can't initialize the nandsim structure\n");
|
||||
goto error;
|
||||
}
|
||||
|
||||
if ((retval = nand_default_bbt(nsmtd)) != 0) {
|
||||
free_nandsim(nand);
|
||||
goto error;
|
||||
}
|
||||
|
||||
/* Register NAND as one big partition */
|
||||
add_mtd_partitions(nsmtd, &nand->part, 1);
|
||||
|
||||
|
|
Loading…
Reference in New Issue