Re: [PATCH v8 2/2] mtd: spi-nor: Add spi-nor mtd resume handler
From: Cyrille Pitchen
Date: Wed Aug 23 2017 - 03:06:15 EST
Hi Kamal,
Le 22/08/2017 Ã 22:45, Kamal Dasu a Ãcrit :
> Implemented and populated spi-nor mtd PM handlers for resume ops.
> spi-nor resume op re-initializes spi-nor flash to its probed
> state by calling the newly implemented spi_nor_init() function.
>
> Signed-off-by: Kamal Dasu <kdasu.kdev@xxxxxxxxx>
> ---
> drivers/mtd/spi-nor/spi-nor.c | 14 ++++++++++++++
> 1 file changed, 14 insertions(+)
>
> diff --git a/drivers/mtd/spi-nor/spi-nor.c b/drivers/mtd/spi-nor/spi-nor.c
> index ab98ecff..69164bc 100644
> --- a/drivers/mtd/spi-nor/spi-nor.c
> +++ b/drivers/mtd/spi-nor/spi-nor.c
> @@ -1871,6 +1871,19 @@ static int spi_nor_init(struct spi_nor *nor)
> return 0;
> }
>
> +/* mtd resume handler */
> +static void spi_nor_resume(struct mtd_info *mtd)
> +{
> + struct spi_nor *nor = mtd_to_spi_nor(mtd);
> + struct device *dev = nor->dev;
> + int ret;
> +
> + /* re-initialize the nor chip */
> + ret = spi_nor_init(nor);
> + if (ret)
> + dev_err(dev, "resume() failed\n");
> +}
> +
> int spi_nor_scan(struct spi_nor *nor, const char *name,
> const struct spi_nor_hwcaps *hwcaps)
> {
> @@ -1947,6 +1960,7 @@ int spi_nor_scan(struct spi_nor *nor, const char *name,
> mtd->size = params.size;
> mtd->_erase = spi_nor_erase;
> mtd->_read = spi_nor_read;
> + mtd->_resume = spi_nor_resume;
>
The series now looks good to me. Just waiting for Marek's
acked-by/reviewed-by to double-check.
Marek: I can't test with the Cadence QSPI controller but based on the
line "mtd->dev.parent = nor->dev;" in spi_nor_scan(), I think this patch
won't conflit with the already PM code in the cadence-quadspi.c driver.
As far as I understand, cqspi_resume() will be called before
mtd_resume() / spi_nor_resume().
Best regards,
Cyrille
> /* NOR protection support for STmicro/Micron chips and similar */
> if (JEDEC_MFR(info) == SNOR_MFR_MICRON ||
>