aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorQuentin Schulz <quentin.schulz@free-electrons.com>2017-04-14 04:22:43 -0400
committerMark Brown <broonie@kernel.org>2017-04-18 13:50:05 -0400
commite53800787a251d67e532fadf72886be0661aba12 (patch)
tree6b022f6585b4736c20155a8378478710f088f91f
parent05514c86965f98f9b0e57f73700771fa267050a7 (diff)
spi: atmel: add deepest PM support to SAMA5D2
This adds deepest (Backup+Self-Refresh) PM support to the ATMEL SAMA5D2 SoC's SPI controller. When resuming from deepest state, it is required to restore MR register as the registers are lost since VDD core has been shut down when entering deepest state on the SAMA5D2. Signed-off-by: Quentin Schulz <quentin.schulz@free-electrons.com> Acked-by: Alexandre Belloni <alexandre.belloni@free-electrons.com> Acked-by: Nicolas Ferre <nicolas.ferre@microchip.com> Signed-off-by: Mark Brown <broonie@kernel.org>
-rw-r--r--drivers/spi/spi-atmel.c9
1 files changed, 9 insertions, 0 deletions
diff --git a/drivers/spi/spi-atmel.c b/drivers/spi/spi-atmel.c
index 247d920a512f..1eb83c9613d5 100644
--- a/drivers/spi/spi-atmel.c
+++ b/drivers/spi/spi-atmel.c
@@ -1702,8 +1702,17 @@ static int atmel_spi_suspend(struct device *dev)
1702static int atmel_spi_resume(struct device *dev) 1702static int atmel_spi_resume(struct device *dev)
1703{ 1703{
1704 struct spi_master *master = dev_get_drvdata(dev); 1704 struct spi_master *master = dev_get_drvdata(dev);
1705 struct atmel_spi *as = spi_master_get_devdata(master);
1705 int ret; 1706 int ret;
1706 1707
1708 ret = clk_prepare_enable(as->clk);
1709 if (ret)
1710 return ret;
1711
1712 atmel_spi_init(as);
1713
1714 clk_disable_unprepare(as->clk);
1715
1707 if (!pm_runtime_suspended(dev)) { 1716 if (!pm_runtime_suspended(dev)) {
1708 ret = atmel_spi_runtime_resume(dev); 1717 ret = atmel_spi_runtime_resume(dev);
1709 if (ret) 1718 if (ret)