Message ID | 1263228796-23054-1-git-send-email-u.kleine-koenig@pengutronix.de |
---|---|
State | Accepted |
Commit | 9c14b153e6af1301f022d34f1f63888f333e3ef5 |
Headers | show |
On Mon, Jan 11, 2010 at 05:53:16PM +0100, Uwe Kleine-König wrote: > The clock must already be off after mtd->suspend. Disabling it again > results in an negative overflow of the clock usage count. This didn't > hurt as mxcnd_resume undid it after wake up. > > Signed-off-by: Uwe Kleine-König <u.kleine-koenig@pengutronix.de> > Cc: David Woodhouse <dwmw2@infradead.org> > Cc: Sascha Hauer <s.hauer@pengutronix.de> > Cc: Artem Bityutskiy <Artem.Bityutskiy@nokia.com> > Cc: Vladimir Barinov <vova.barinov@gmail.com> Acked-by: Sascha Hauer <s.hauer@pengutronix.de> > --- > drivers/mtd/nand/mxc_nand.c | 10 ++++++---- > 1 files changed, 6 insertions(+), 4 deletions(-) > > diff --git a/drivers/mtd/nand/mxc_nand.c b/drivers/mtd/nand/mxc_nand.c > index 84f3635..970ce6b 100644 > --- a/drivers/mtd/nand/mxc_nand.c > +++ b/drivers/mtd/nand/mxc_nand.c > @@ -888,8 +888,12 @@ static int mxcnd_suspend(struct platform_device *pdev, pm_message_t state) > DEBUG(MTD_DEBUG_LEVEL0, "MXC_ND : NAND suspend\n"); > > ret = mtd->suspend(mtd); > - /* Disable the NFC clock */ > - clk_disable(host->clk); > + > + /* > + * nand_suspend locks the device for exclusive access, so > + * the clock must already be off. > + */ > + BUG_ON(!ret && host->clk_act); > > return ret; > } > @@ -903,8 +907,6 @@ static int mxcnd_resume(struct platform_device *pdev) > > DEBUG(MTD_DEBUG_LEVEL0, "MXC_ND : NAND resume\n"); > > - /* Enable the NFC clock */ > - clk_enable(host->clk); > mtd->resume(mtd); > > return ret; > -- > 1.6.5.2 > >
diff --git a/drivers/mtd/nand/mxc_nand.c b/drivers/mtd/nand/mxc_nand.c index 84f3635..970ce6b 100644 --- a/drivers/mtd/nand/mxc_nand.c +++ b/drivers/mtd/nand/mxc_nand.c @@ -888,8 +888,12 @@ static int mxcnd_suspend(struct platform_device *pdev, pm_message_t state) DEBUG(MTD_DEBUG_LEVEL0, "MXC_ND : NAND suspend\n"); ret = mtd->suspend(mtd); - /* Disable the NFC clock */ - clk_disable(host->clk); + + /* + * nand_suspend locks the device for exclusive access, so + * the clock must already be off. + */ + BUG_ON(!ret && host->clk_act); return ret; } @@ -903,8 +907,6 @@ static int mxcnd_resume(struct platform_device *pdev) DEBUG(MTD_DEBUG_LEVEL0, "MXC_ND : NAND resume\n"); - /* Enable the NFC clock */ - clk_enable(host->clk); mtd->resume(mtd); return ret;
The clock must already be off after mtd->suspend. Disabling it again results in an negative overflow of the clock usage count. This didn't hurt as mxcnd_resume undid it after wake up. Signed-off-by: Uwe Kleine-König <u.kleine-koenig@pengutronix.de> Cc: David Woodhouse <dwmw2@infradead.org> Cc: Sascha Hauer <s.hauer@pengutronix.de> Cc: Artem Bityutskiy <Artem.Bityutskiy@nokia.com> Cc: Vladimir Barinov <vova.barinov@gmail.com> --- drivers/mtd/nand/mxc_nand.c | 10 ++++++---- 1 files changed, 6 insertions(+), 4 deletions(-)