aboutsummaryrefslogtreecommitdiffstats
path: root/drivers/pinctrl/pinctrl-single.c
diff options
context:
space:
mode:
authorHebbar Gururaja <gururaja.hebbar@ti.com>2013-05-31 06:13:01 -0400
committerLinus Walleij <linus.walleij@linaro.org>2013-06-17 12:18:34 -0400
commit0f9bc4bcdf4fd8fe768a47e25efdf709192e4de1 (patch)
treedf6e6c4bcbfc39eb6b1cb783b6e961b0fbb25af9 /drivers/pinctrl/pinctrl-single.c
parent97e3d9e32f12dfb19c38fdd692db76523608febc (diff)
pinctrl: single: adopt pinctrl sleep mode management
Make pinctrl-single able to handle suspend/resume events and change hogged pins states accordingly. Signed-off-by: Hebbar Gururaja <gururaja.hebbar@ti.com> Acked-by: Tony Lindgren <tony@atomide.com> Signed-off-by: Linus Walleij <linus.walleij@linaro.org>
Diffstat (limited to 'drivers/pinctrl/pinctrl-single.c')
-rw-r--r--drivers/pinctrl/pinctrl-single.c27
1 files changed, 27 insertions, 0 deletions
diff --git a/drivers/pinctrl/pinctrl-single.c b/drivers/pinctrl/pinctrl-single.c
index 2899c866a3fb..6866548fab31 100644
--- a/drivers/pinctrl/pinctrl-single.c
+++ b/drivers/pinctrl/pinctrl-single.c
@@ -1483,6 +1483,29 @@ static int pcs_add_gpio_func(struct device_node *node, struct pcs_device *pcs)
1483 return ret; 1483 return ret;
1484} 1484}
1485 1485
1486static int pinctrl_single_suspend(struct platform_device *pdev,
1487 pm_message_t state)
1488{
1489 struct pcs_device *pcs;
1490
1491 pcs = platform_get_drvdata(pdev);
1492 if (!pcs)
1493 return -EINVAL;
1494
1495 return pinctrl_force_sleep(pcs->pctl);
1496}
1497
1498static int pinctrl_single_resume(struct platform_device *pdev)
1499{
1500 struct pcs_device *pcs;
1501
1502 pcs = platform_get_drvdata(pdev);
1503 if (!pcs)
1504 return -EINVAL;
1505
1506 return pinctrl_force_default(pcs->pctl);
1507}
1508
1486static int pcs_probe(struct platform_device *pdev) 1509static int pcs_probe(struct platform_device *pdev)
1487{ 1510{
1488 struct device_node *np = pdev->dev.of_node; 1511 struct device_node *np = pdev->dev.of_node;
@@ -1631,6 +1654,10 @@ static struct platform_driver pcs_driver = {
1631 .name = DRIVER_NAME, 1654 .name = DRIVER_NAME,
1632 .of_match_table = pcs_of_match, 1655 .of_match_table = pcs_of_match,
1633 }, 1656 },
1657#ifdef CONFIG_PM
1658 .suspend = pinctrl_single_suspend,
1659 .resume = pinctrl_single_resume,
1660#endif
1634}; 1661};
1635 1662
1636module_platform_driver(pcs_driver); 1663module_platform_driver(pcs_driver);