This adds PM support to the ATMEL SAMA5D2 Xplained.

When suspending, VDDCore is shut down and the SPI registers are lost.
Thus, the SPI controller needs to be re-initialized after resuming from
a system suspend.

Signed-off-by: Quentin Schulz <[email protected]>
---
 drivers/spi/spi-atmel.c | 9 +++++++++
 1 file changed, 9 insertions(+)

diff --git a/drivers/spi/spi-atmel.c b/drivers/spi/spi-atmel.c
index 247d920..1eb83c9 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)
 static int atmel_spi_resume(struct device *dev)
 {
        struct spi_master *master = dev_get_drvdata(dev);
+       struct atmel_spi *as = spi_master_get_devdata(master);
        int ret;
 
+       ret = clk_prepare_enable(as->clk);
+       if (ret)
+               return ret;
+
+       atmel_spi_init(as);
+
+       clk_disable_unprepare(as->clk);
+
        if (!pm_runtime_suspended(dev)) {
                ret = atmel_spi_runtime_resume(dev);
                if (ret)
-- 
2.9.3

Reply via email to