spi: omap2-mcspi: Add calls for pinctrl state select
authorPascal Huerst <pascal.huerst@gmail.com>
Thu, 19 Nov 2015 15:18:28 +0000 (16:18 +0100)
committerMark Brown <broonie@kernel.org>
Thu, 19 Nov 2015 17:48:52 +0000 (17:48 +0000)
This adds calls to pinctrl subsystem in order to switch pin states
on suspend/resume if you provide a "sleep" state in DT.

If no "sleep" state is provided in DT, these calls turn
to NOPs.

Signed-off-by: Pascal Huerst <pascal.huerst@gmail.com>
Signed-off-by: Mark Brown <broonie@kernel.org>
drivers/spi/spi-omap2-mcspi.c

index 1f8903d356e5581f48d6935177906bba6bc7e302..02aa1d0607b3f4b94b7ed2266f80892dc7a55bbc 100644 (file)
@@ -24,6 +24,7 @@
 #include <linux/dma-mapping.h>
 #include <linux/dmaengine.h>
 #include <linux/omap-dma.h>
+#include <linux/pinctrl/consumer.h>
 #include <linux/platform_device.h>
 #include <linux/err.h>
 #include <linux/clk.h>
@@ -1536,14 +1537,23 @@ static int omap2_mcspi_resume(struct device *dev)
        }
        pm_runtime_mark_last_busy(mcspi->dev);
        pm_runtime_put_autosuspend(mcspi->dev);
-       return 0;
+
+       return pinctrl_pm_select_default_state(dev);
+}
+
+static int omap2_mcspi_suspend(struct device *dev)
+{
+       return pinctrl_pm_select_sleep_state(dev);
 }
+
 #else
+#define omap2_mcspi_suspend    NULL
 #define        omap2_mcspi_resume      NULL
 #endif
 
 static const struct dev_pm_ops omap2_mcspi_pm_ops = {
        .resume = omap2_mcspi_resume,
+       .suspend = omap2_mcspi_suspend,
        .runtime_resume = omap_mcspi_runtime_resume,
 };