diff options
Diffstat (limited to 'drivers/mtd')
-rw-r--r-- | drivers/mtd/nand/nand_imx.c | 15 | ||||
-rw-r--r-- | drivers/mtd/nand/nand_mxs.c | 4 | ||||
-rw-r--r-- | drivers/mtd/peb.c | 20 |
3 files changed, 21 insertions, 18 deletions
diff --git a/drivers/mtd/nand/nand_imx.c b/drivers/mtd/nand/nand_imx.c index 5e4504a48e..3d4082fe18 100644 --- a/drivers/mtd/nand/nand_imx.c +++ b/drivers/mtd/nand/nand_imx.c @@ -1008,14 +1008,23 @@ static void imx_nand_command(struct nand_chip *chip, unsigned command, else host->buf_start = column + mtd->writesize; - command = NAND_CMD_READ0; - - host->send_cmd(host, command); + host->send_cmd(host, NAND_CMD_READ0); mxc_do_addr_cycle(chip, column, page_addr); if (host->pagesize_2k) /* send read confirm command */ host->send_cmd(host, NAND_CMD_READSTART); + + /* + * After the core issued READOOB the result is read using + * .read_buf, so we have to make sure the data is actually + * there. + */ + if (command == NAND_CMD_READOOB) { + host->send_page(host, NFC_OUTPUT); + copy_spare(mtd, 1, host->data_buf + mtd->writesize); + } + break; case NAND_CMD_SEQIN: diff --git a/drivers/mtd/nand/nand_mxs.c b/drivers/mtd/nand/nand_mxs.c index 310ce92944..9f7ab14426 100644 --- a/drivers/mtd/nand/nand_mxs.c +++ b/drivers/mtd/nand/nand_mxs.c @@ -2143,9 +2143,7 @@ static int mxs_nand_probe(struct device_d *dev) if (mxs_nand_mtd) return -EBUSY; - err = dev_get_drvdata(dev, (const void **)&type); - if (err) - type = GPMI_MXS; + type = (enum gpmi_type)device_get_match_data(dev); nand_info = kzalloc(sizeof(struct mxs_nand_info), GFP_KERNEL); if (!nand_info) { diff --git a/drivers/mtd/peb.c b/drivers/mtd/peb.c index 1b5605d1f4..f3c51a61b4 100644 --- a/drivers/mtd/peb.c +++ b/drivers/mtd/peb.c @@ -88,18 +88,14 @@ static int mtd_peb_debug_init(void) } device_initcall(mtd_peb_debug_init); -BAREBOX_MAGICVAR_NAMED(global_mtd_peb_emulate_bitflip, - global.mtd_peb.emulate_bitflip, - "random bitflips, on average every #nth access returns -EUCLEAN"); -BAREBOX_MAGICVAR_NAMED(global_mtd_peb_emulate_write_failure, - global.mtd_peb.emulate_write_failure, - "random write failures, on average every #nth access returns write failure"); -BAREBOX_MAGICVAR_NAMED(global_mtd_peb_emulate_erase_failures, - global.mtd_peb.emulate_erase_failures, - "random erase failures, on average every #nth access returns erase failure"); -BAREBOX_MAGICVAR_NAMED(global_mtd_peb_chk_io, - global.mtd_peb.chk_io, - "If true, written data will be verified"); +BAREBOX_MAGICVAR(global.mtd_peb.emulate_bitflip, + "random bitflips, on average every #nth access returns -EUCLEAN"); +BAREBOX_MAGICVAR(global.mtd_peb.emulate_write_failure, + "random write failures, on average every #nth access returns write failure"); +BAREBOX_MAGICVAR(global.mtd_peb.emulate_erase_failures, + "random erase failures, on average every #nth access returns erase failure"); +BAREBOX_MAGICVAR(global.mtd_peb.chk_io, + "If true, written data will be verified"); #endif |