[PATCH] mtd: m25p80: Add Power Management support

Hou Zhiqiang B48286 at freescale.com
Thu Aug 6 21:18:30 PDT 2015


Hi Brian,

If you haven't any comment with this patch, could you please apply this patch?

> -----Original Message-----
> From: Hou Zhiqiang-B48286
> Sent: 2015年7月31日 18:45
> To: Hou Zhiqiang-B48286; linux-mtd at lists.infradead.org;
> computersforpeace at gmail.com; dwmw2 at infradead.org
> Cc: Hu Mingkai-B21284
> Subject: RE: [PATCH] mtd: m25p80: Add Power Management support
> 
> Hi Brian,
> 
> Do you have any comment?
> 
> > -----Original Message-----
> > From: Zhiqiang Hou [mailto:B48286 at freescale.com]
> > Sent: 2015年7月21日 18:19
> > To: linux-mtd at lists.infradead.org; computersforpeace at gmail.com;
> > dwmw2 at infradead.org
> > Cc: Hu Mingkai-B21284; Hou Zhiqiang-B48286
> > Subject: [PATCH] mtd: m25p80: Add Power Management support
> >
> > From: Hou Zhiqiang <B48286 at freescale.com>
> >
> > Add the rescanning and initialization of SPI flash, to make the SPI
> > flash in the correct state. Because if the Power Management system
> > truns off power supply for SPI flash when system suspending, the SPI
> > flash will return to the reset state after system resume.
> >
> > Signed-off-by: Hou Zhiqiang <B48286 at freescale.com>
> > ---
> >  drivers/mtd/devices/m25p80.c | 34 ++++++++++++++++++++++++++++++++++
> >  1 file changed, 34 insertions(+)
> >
> > diff --git a/drivers/mtd/devices/m25p80.c
> > b/drivers/mtd/devices/m25p80.c index d313f948b..f9d2b2e 100644
> > --- a/drivers/mtd/devices/m25p80.c
> > +++ b/drivers/mtd/devices/m25p80.c
> > @@ -248,6 +248,39 @@ static int m25p_remove(struct spi_device *spi)
> >  	return mtd_device_unregister(&flash->mtd);
> >  }
> >
> > +#ifdef CONFIG_PM_SLEEP
> > +static int m25p_suspend(struct device *dev) {
> > +	return 0;
> > +}
> > +
> > +static int m25p_resume(struct device *dev) {
> > +	struct m25p *flash = dev_get_drvdata(dev);
> > +	struct spi_device *spi = flash->spi;
> > +	struct spi_nor *nor = &flash->spi_nor;
> > +	enum read_mode mode = SPI_NOR_NORMAL;
> > +	struct flash_platform_data *data;
> > +	char *flash_name = NULL;
> > +
> > +	if (spi->mode & SPI_RX_QUAD)
> > +		mode = SPI_NOR_QUAD;
> > +	else if (spi->mode & SPI_RX_DUAL)
> > +		mode = SPI_NOR_DUAL;
> > +
> > +	data = dev_get_platdata(&spi->dev);
> > +	if (data && data->type)
> > +		flash_name = data->type;
> > +	else if (!strcmp(spi->modalias, "spi-nor"))
> > +		flash_name = NULL; /* auto-detect */
> > +	else
> > +		flash_name = spi->modalias;
> > +
> > +	return spi_nor_scan(nor, flash_name, mode); } #endif /*
> > +CONFIG_PM_SLEEP */
> > +
> > +static SIMPLE_DEV_PM_OPS(m25p_pm_ops, m25p_suspend, m25p_resume);
> >  /*
> >   * Do NOT add to this array without reading the following:
> >   *
> > @@ -302,6 +335,7 @@ static struct spi_driver m25p80_driver = {
> >  	.driver = {
> >  		.name	= "m25p80",
> >  		.owner	= THIS_MODULE,
> > +		.pm	= &m25p_pm_ops,
> >  	},
> >  	.id_table	= m25p_ids,
> >  	.probe	= m25p_probe,
> > --
> > 2.1.0.27.g96db324
> 
> Thanks,
> Zhiqiang

Thanks,
Zhiqiang


More information about the linux-mtd mailing list