[PATCH V2 1/4] nand: raw: mxs_nand: Fix specific hook registration
Han Xu
han.xu at nxp.com
Fri May 6 16:40:36 CEST 2022
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.xu at nxp.com>
> Cc: Fabio Estevam <festevam at gmail.com>
> Signed-off-by: Michael Trimarchi <michael at amarulasolutions.com>
Acked-by: Han Xu <han.xu at 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
>
More information about the U-Boot
mailing list