From patchwork Wed Dec 11 08:19:30 2013 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Zhiqiang Hou X-Patchwork-Id: 299922 Return-Path: X-Original-To: incoming@patchwork.ozlabs.org Delivered-To: patchwork-incoming@bilbo.ozlabs.org Received: from casper.infradead.org (unknown [IPv6:2001:770:15f::2]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (Client did not present a certificate) by ozlabs.org (Postfix) with ESMTPS id E1B982C037B for ; Wed, 11 Dec 2013 21:28:54 +1100 (EST) Received: from merlin.infradead.org ([2001:4978:20e::2]) by casper.infradead.org with esmtps (Exim 4.80.1 #2 (Red Hat Linux)) id 1VqgKJ-0008Hg-1F; Wed, 11 Dec 2013 09:43:31 +0000 Received: from localhost ([::1] helo=merlin.infradead.org) by merlin.infradead.org with esmtp (Exim 4.80.1 #2 (Red Hat Linux)) id 1VqgJV-0004s3-Tz; Wed, 11 Dec 2013 09:42:41 +0000 Received: from am1ehsobe003.messaging.microsoft.com ([213.199.154.206] helo=am1outboundpool.messaging.microsoft.com) by merlin.infradead.org with esmtps (Exim 4.80.1 #2 (Red Hat Linux)) id 1VqgJT-0004qr-Iq for linux-mtd@lists.infradead.org; Wed, 11 Dec 2013 09:42:40 +0000 Received: from mail40-am1-R.bigfish.com (10.3.201.232) by AM1EHSOBE019.bigfish.com (10.3.207.141) with Microsoft SMTP Server id 14.1.225.22; Wed, 11 Dec 2013 09:42:17 +0000 Received: from mail40-am1 (localhost [127.0.0.1]) by mail40-am1-R.bigfish.com (Postfix) with ESMTP id 90FB0602B4; Wed, 11 Dec 2013 09:42:17 +0000 (UTC) X-Forefront-Antispam-Report: CIP:70.37.183.190; KIP:(null); UIP:(null); IPV:NLI; H:mail.freescale.net; RD:none; EFVD:NLI X-SpamScore: 1 X-BigFish: VS1(zzzz1f42h2148h208ch1ee6h1de0h1fdah2073h2146h1202h1e76h2189h1d1ah1d2ah1fc6hzd2iz1de098h8275bh1de097hz2dh2a8h839hd24he5bhf0ah1288h12a5h12a9h12bdh12e5h137ah139eh13b6h1441h1504h1537h162dh1631h1758h1898h18e1h1946h19b5h1ad9h1b0ah1b2fh2222h224fh1fb3h1d0ch1d2eh1d3fh1dc1h1dfeh1dffh1e23h1fe8h1ff5h2218h2216h226dh22d0h2327h2336h1155h) Received: from mail40-am1 (localhost.localdomain [127.0.0.1]) by mail40-am1 (MessageSwitch) id 1386754935530557_24193; Wed, 11 Dec 2013 09:42:15 +0000 (UTC) Received: from AM1EHSMHS012.bigfish.com (unknown [10.3.201.245]) by mail40-am1.bigfish.com (Postfix) with ESMTP id 7CB3120004B; Wed, 11 Dec 2013 09:42:15 +0000 (UTC) Received: from mail.freescale.net (70.37.183.190) by AM1EHSMHS012.bigfish.com (10.3.207.112) with Microsoft SMTP Server (TLS) id 14.16.227.3; Wed, 11 Dec 2013 09:42:15 +0000 Received: from tx30smr01.am.freescale.net (10.81.153.31) by 039-SN1MMR1-001.039d.mgd.msft.net (10.84.1.13) with Microsoft SMTP Server (TLS) id 14.3.158.2; Wed, 11 Dec 2013 09:42:11 +0000 Received: from Tank.am.freescale.net (tank.ap.freescale.net [10.193.20.104]) by tx30smr01.am.freescale.net (8.14.3/8.14.0) with ESMTP id rBB9g5Pq000989; Wed, 11 Dec 2013 02:42:06 -0700 From: Hou Zhiqiang To: , Subject: [PATCH] mtd: m25p80: Add Power Management support Date: Wed, 11 Dec 2013 16:19:30 +0800 Message-ID: <1386749970-22021-1-git-send-email-b48286@freescale.com> X-Mailer: git-send-email 1.8.4.1 MIME-Version: 1.0 X-OriginatorOrg: freescale.com X-FOPE-CONNECTOR: Id%0$Dn%*$RO%0$TLS%0$FQDN%$TlsDn% X-FOPE-CONNECTOR: Id%0$Dn%FREESCALE.MAIL.ONMICROSOFT.COM$RO%1$TLS%0$FQDN%$TlsDn% X-CRM114-Version: 20100106-BlameMichelson ( TRE 0.8.0 (BSD) ) MR-646709E3 X-CRM114-CacheID: sfid-20131211_044239_816049_9C9F8B44 X-CRM114-Status: GOOD ( 11.86 ) X-Spam-Score: -1.3 (-) X-Spam-Report: SpamAssassin version 3.3.2 on merlin.infradead.org summary: Content analysis details: (-1.3 points) pts rule name description ---- ---------------------- -------------------------------------------------- 1.3 UNRESOLVED_TEMPLATE Headers contain an unresolved template -0.7 RCVD_IN_DNSWL_LOW RBL: Sender listed at http://www.dnswl.org/, low trust [213.199.154.206 listed in list.dnswl.org] -1.9 BAYES_00 BODY: Bayes spam probability is 0 to 1% [score: 0.0000] Cc: grant.likely@secretlab.ca, scottwood@freescale.com, Mingkai.Hu@freescale.com, Hou Zhiqiang , dwmw2@infradead.org X-BeenThere: linux-mtd@lists.infradead.org X-Mailman-Version: 2.1.15 Precedence: list List-Id: Linux MTD discussion mailing list List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Sender: "linux-mtd" Errors-To: linux-mtd-bounces+incoming=patchwork.ozlabs.org@lists.infradead.org Add PM support using callback function suspend and resume in .driver of spi_driver. Signed-off-by: Hou Zhiqiang --- drivers/mtd/devices/m25p80.c | 37 +++++++++++++++++++++++++++++++++++++ 1 file changed, 37 insertions(+) diff --git a/drivers/mtd/devices/m25p80.c b/drivers/mtd/devices/m25p80.c index 7eda71d..b0c2b8c 100644 --- a/drivers/mtd/devices/m25p80.c +++ b/drivers/mtd/devices/m25p80.c @@ -66,6 +66,8 @@ /* Used for Spansion flashes only. */ #define OPCODE_BRWR 0x17 /* Bank register write */ +#define OPCODE_DP 0xb9 /* Enter deep power down mode */ +#define OPCODE_RES 0xab /* Exit deep power down mode */ /* Status Register bits. */ #define SR_WIP 1 /* Write in progress */ @@ -1128,11 +1130,46 @@ static int m25p_remove(struct spi_device *spi) return mtd_device_unregister(&flash->mtd); } +#ifdef CONFIG_PM +static int m25p_suspend(struct device *dev, pm_message_t mesg) +{ + struct m25p *flash = dev_get_drvdata(dev); + int ret; + + flash->command[0] = OPCODE_DP; + mutex_lock(&flash->lock); + /* Wait until finished previous write/erase command. */ + ret = wait_till_ready(flash); + if (ret) { + mutex_unlock(&flash->lock); + return ret; + } + ret = spi_write(flash->spi, flash->command, 1); + mutex_unlock(&flash->lock); + + return ret; +} + +static int m25p_resume(struct device *dev) +{ + struct m25p *flash = dev_get_drvdata(dev); + int ret; + + flash->command[0] = OPCODE_RES; + ret = spi_write(flash->spi, flash->command, 1); + + return ret; +} +#endif /* CONFIG_PM */ static struct spi_driver m25p80_driver = { .driver = { .name = "m25p80", .owner = THIS_MODULE, +#ifdef CONFIG_PM + .suspend = m25p_suspend, + .resume = m25p_resume, +#endif }, .id_table = m25p_ids, .probe = m25p_probe,