aboutsummaryrefslogtreecommitdiffstats
path: root/drivers/spi/spi-omap2-mcspi.c
diff options
context:
space:
mode:
Diffstat (limited to 'drivers/spi/spi-omap2-mcspi.c')
-rw-r--r--drivers/spi/spi-omap2-mcspi.c37
1 files changed, 25 insertions, 12 deletions
diff --git a/drivers/spi/spi-omap2-mcspi.c b/drivers/spi/spi-omap2-mcspi.c
index f024c3fc3679..2fd8881fcd65 100644
--- a/drivers/spi/spi-omap2-mcspi.c
+++ b/drivers/spi/spi-omap2-mcspi.c
@@ -1540,13 +1540,26 @@ static int omap2_mcspi_remove(struct platform_device *pdev)
1540/* work with hotplug and coldplug */ 1540/* work with hotplug and coldplug */
1541MODULE_ALIAS("platform:omap2_mcspi"); 1541MODULE_ALIAS("platform:omap2_mcspi");
1542 1542
1543#ifdef CONFIG_SUSPEND 1543static int __maybe_unused omap2_mcspi_suspend(struct device *dev)
1544static int omap2_mcspi_suspend_noirq(struct device *dev)
1545{ 1544{
1546 return pinctrl_pm_select_sleep_state(dev); 1545 struct spi_master *master = dev_get_drvdata(dev);
1546 struct omap2_mcspi *mcspi = spi_master_get_devdata(master);
1547 int error;
1548
1549 error = pinctrl_pm_select_sleep_state(dev);
1550 if (error)
1551 dev_warn(mcspi->dev, "%s: failed to set pins: %i\n",
1552 __func__, error);
1553
1554 error = spi_master_suspend(master);
1555 if (error)
1556 dev_warn(mcspi->dev, "%s: master suspend failed: %i\n",
1557 __func__, error);
1558
1559 return pm_runtime_force_suspend(dev);
1547} 1560}
1548 1561
1549static int omap2_mcspi_resume_noirq(struct device *dev) 1562static int __maybe_unused omap2_mcspi_resume(struct device *dev)
1550{ 1563{
1551 struct spi_master *master = dev_get_drvdata(dev); 1564 struct spi_master *master = dev_get_drvdata(dev);
1552 struct omap2_mcspi *mcspi = spi_master_get_devdata(master); 1565 struct omap2_mcspi *mcspi = spi_master_get_devdata(master);
@@ -1557,17 +1570,17 @@ static int omap2_mcspi_resume_noirq(struct device *dev)
1557 dev_warn(mcspi->dev, "%s: failed to set pins: %i\n", 1570 dev_warn(mcspi->dev, "%s: failed to set pins: %i\n",
1558 __func__, error); 1571 __func__, error);
1559 1572
1560 return 0; 1573 error = spi_master_resume(master);
1561} 1574 if (error)
1575 dev_warn(mcspi->dev, "%s: master resume failed: %i\n",
1576 __func__, error);
1562 1577
1563#else 1578 return pm_runtime_force_resume(dev);
1564#define omap2_mcspi_suspend_noirq NULL 1579}
1565#define omap2_mcspi_resume_noirq NULL
1566#endif
1567 1580
1568static const struct dev_pm_ops omap2_mcspi_pm_ops = { 1581static const struct dev_pm_ops omap2_mcspi_pm_ops = {
1569 .suspend_noirq = omap2_mcspi_suspend_noirq, 1582 SET_SYSTEM_SLEEP_PM_OPS(omap2_mcspi_suspend,
1570 .resume_noirq = omap2_mcspi_resume_noirq, 1583 omap2_mcspi_resume)
1571 .runtime_resume = omap_mcspi_runtime_resume, 1584 .runtime_resume = omap_mcspi_runtime_resume,
1572}; 1585};
1573 1586