On 22/04/27 07:50AM, Michael Trimarchi wrote: > Move the hook after nand_scan_tail is called. The hook must be replaced > to the mxs specific one but those must to be assignment later in the > probe function. > > With this fix markbad is working again. Before this change: > > nand markbad 0xDEC00 > NXS NAND: Writing OOB isn't supported > NXS NAND: Writing OOB isn't supported > block 0x000dec00 NOT marked as bad! ERROR 0 > > Cc: Han Xu <han...@nxp.com> > Cc: Fabio Estevam <feste...@gmail.com> > Signed-off-by: Michael Trimarchi <mich...@amarulasolutions.com>
Acked-by: Han Xu <han...@nxp.com> > --- > V1->V2: > - Adjust the commit message > - Add Cc Han Xu and Fabio > --- > drivers/mtd/nand/raw/mxs_nand.c | 32 ++++++++++++++++---------------- > 1 file changed, 16 insertions(+), 16 deletions(-) > > diff --git a/drivers/mtd/nand/raw/mxs_nand.c b/drivers/mtd/nand/raw/mxs_nand.c > index ee5d7fde9c..53f24b9c4b 100644 > --- a/drivers/mtd/nand/raw/mxs_nand.c > +++ b/drivers/mtd/nand/raw/mxs_nand.c > @@ -1246,22 +1246,6 @@ int mxs_nand_setup_ecc(struct mtd_info *mtd) > /* Enable BCH complete interrupt */ > writel(BCH_CTRL_COMPLETE_IRQ_EN, &bch_regs->hw_bch_ctrl_set); > > - /* Hook some operations at the MTD level. */ > - if (mtd->_read_oob != mxs_nand_hook_read_oob) { > - nand_info->hooked_read_oob = mtd->_read_oob; > - mtd->_read_oob = mxs_nand_hook_read_oob; > - } > - > - if (mtd->_write_oob != mxs_nand_hook_write_oob) { > - nand_info->hooked_write_oob = mtd->_write_oob; > - mtd->_write_oob = mxs_nand_hook_write_oob; > - } > - > - if (mtd->_block_markbad != mxs_nand_hook_block_markbad) { > - nand_info->hooked_block_markbad = mtd->_block_markbad; > - mtd->_block_markbad = mxs_nand_hook_block_markbad; > - } > - > return 0; > } > > @@ -1467,6 +1451,22 @@ int mxs_nand_init_ctrl(struct mxs_nand_info *nand_info) > if (err) > goto err_free_buffers; > > + /* Hook some operations at the MTD level. */ > + if (mtd->_read_oob != mxs_nand_hook_read_oob) { > + nand_info->hooked_read_oob = mtd->_read_oob; > + mtd->_read_oob = mxs_nand_hook_read_oob; > + } > + > + if (mtd->_write_oob != mxs_nand_hook_write_oob) { > + nand_info->hooked_write_oob = mtd->_write_oob; > + mtd->_write_oob = mxs_nand_hook_write_oob; > + } > + > + if (mtd->_block_markbad != mxs_nand_hook_block_markbad) { > + nand_info->hooked_block_markbad = mtd->_block_markbad; > + mtd->_block_markbad = mxs_nand_hook_block_markbad; > + } > + > err = nand_register(0, mtd); > if (err) > goto err_free_buffers; > -- > 2.25.1 >