OSDN Git Service

mtd: spi-nor: Add spi-nor mtd resume handler
authorKamal Dasu <kdasu.kdev@gmail.com>
Tue, 22 Aug 2017 20:45:22 +0000 (16:45 -0400)
committerCyrille Pitchen <cyrille.pitchen@wedev4u.fr>
Tue, 10 Oct 2017 16:20:22 +0000 (18:20 +0200)
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@gmail.com>
Signed-off-by: Cyrille Pitchen <cyrille.pitchen@wedev4u.fr>
drivers/mtd/spi-nor/spi-nor.c

index 04751a7..61fdd3c 100644 (file)
@@ -2670,6 +2670,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)
 {
@@ -2746,6 +2759,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;
 
        /* NOR protection support for STmicro/Micron chips and similar */
        if (JEDEC_MFR(info) == SNOR_MFR_MICRON ||