[PATCH v7 2/2] mtd: fsl-quadspi: fix init AHB read in fsl_qspi_nor_setup()

Frieder Schrempf frieder.schrempf at exceet.de
Thu Mar 22 02:19:25 PDT 2018


Hi Yogesh,

On 21.03.2018 12:26, Yogesh Gaur wrote:
> Move AHB read initialize in fsl_qspi_nor_setup().
> 
> In file spi-nor.c, func spi_nor_scan() calls nor->read() thru
> spi_nor_read_sfdp() API.
> 
> Presently, fsl_qspi_init_ahb_read() called from fsl_qspi_nor_setup_last().
> Func fsl_qspi_probe() calls spi_nor_scan() first and then calls
> fsl_qspi_nor_setup_last().
> 
> When nor->read() being called from inside spi_nor_read_sfdp(), QSPI cntlr
> AHB mode initialization is not yet done results in data read error.
> 
> Initialize AHB read inside fsl_qspi_nor_setup().
> 
> Signed-off-by: Yogesh Gaur <yogeshnarayan.gaur at nxp.com>
> ---
> Changes for v7:
> - None
> Changes for v6:
> - None
> Changes for v5:
> - None
> Changes for v4:
> - None
> Changes for v3:
> - None
> Changes for v2:
> - None
> 
>   drivers/mtd/spi-nor/fsl-quadspi.c | 6 +++---
>   1 file changed, 3 insertions(+), 3 deletions(-)
> 
> diff --git a/drivers/mtd/spi-nor/fsl-quadspi.c b/drivers/mtd/spi-nor/fsl-quadspi.c
> index 64b8bb3..424094a 100644
> --- a/drivers/mtd/spi-nor/fsl-quadspi.c
> +++ b/drivers/mtd/spi-nor/fsl-quadspi.c
> @@ -820,6 +820,9 @@ static int fsl_qspi_nor_setup(struct fsl_qspi *q)
>   	/* enable the interrupt */
>   	qspi_writel(q, QUADSPI_RSER_TFIE, q->iobase + QUADSPI_RSER);
>   
> +	/* Init for AHB read */
> +	fsl_qspi_init_ahb_read(q);

Maybe I missed something, but it seems if you move 
fsl_qspi_init_ahb_read() here and fsl_qspi_read() is used before 
fsl_qspi_nor_setup_last() is called, then the read command is triggered 
with an uninitialized LUT entry (SEQID_LUT2_AHBREAD).

So shouldn't the LUT entry for AHB read be initialized with some default 
values here, before spi_nor_scan() is called?

Thanks,

Frieder

> +
>   	return 0;
>   }
>   
> @@ -842,9 +845,6 @@ static int fsl_qspi_nor_setup_last(struct fsl_qspi *q)
>   	if (ret)
>   		return ret;
>   
> -	/* Init for AHB read */
> -	fsl_qspi_init_ahb_read(q);
> -
>   	/* Prepare LUT for AHB read - required for read from devmem interface */
>   	fsl_qspi_prep_ahb_read(q);
>   
> 



More information about the linux-mtd mailing list