[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