diff options
author | Mark Brown <broonie@linaro.org> | 2013-10-25 10:51:38 +0200 |
---|---|---|
committer | Mark Brown <broonie@linaro.org> | 2013-10-25 10:51:38 +0200 |
commit | 84b61465645fc075ab1128ebd4c34f6905037634 (patch) | |
tree | c1dbc78e31c93914097ef214a16d1c940074217d /drivers/spi/spi-s3c64xx.c | |
parent | Merge remote-tracking branch 'spi/topic/s3c24xx' into spi-next (diff) | |
parent | spi/s3c64xx: Fix doubled clock disable on suspend (diff) | |
download | linux-84b61465645fc075ab1128ebd4c34f6905037634.tar.xz linux-84b61465645fc075ab1128ebd4c34f6905037634.zip |
Merge remote-tracking branch 'spi/topic/s3c64xx' into spi-next
Diffstat (limited to 'drivers/spi/spi-s3c64xx.c')
-rw-r--r-- | drivers/spi/spi-s3c64xx.c | 22 |
1 files changed, 12 insertions, 10 deletions
diff --git a/drivers/spi/spi-s3c64xx.c b/drivers/spi/spi-s3c64xx.c index 508f51fc5704..9e2020df9e0f 100644 --- a/drivers/spi/spi-s3c64xx.c +++ b/drivers/spi/spi-s3c64xx.c @@ -1459,11 +1459,14 @@ static int s3c64xx_spi_suspend(struct device *dev) struct spi_master *master = dev_get_drvdata(dev); struct s3c64xx_spi_driver_data *sdd = spi_master_get_devdata(master); - spi_master_suspend(master); + int ret = spi_master_suspend(master); + if (ret) + return ret; - /* Disable the clock */ - clk_disable_unprepare(sdd->src_clk); - clk_disable_unprepare(sdd->clk); + if (!pm_runtime_suspended(dev)) { + clk_disable_unprepare(sdd->clk); + clk_disable_unprepare(sdd->src_clk); + } sdd->cur_speed = 0; /* Output Clock is stopped */ @@ -1479,15 +1482,14 @@ static int s3c64xx_spi_resume(struct device *dev) if (sci->cfg_gpio) sci->cfg_gpio(); - /* Enable the clock */ - clk_prepare_enable(sdd->src_clk); - clk_prepare_enable(sdd->clk); + if (!pm_runtime_suspended(dev)) { + clk_prepare_enable(sdd->src_clk); + clk_prepare_enable(sdd->clk); + } s3c64xx_spi_hwinit(sdd, sdd->port_id); - spi_master_resume(master); - - return 0; + return spi_master_resume(master); } #endif /* CONFIG_PM_SLEEP */ |