summaryrefslogtreecommitdiff
path: root/drivers/misc/c55_ctrl.c
diff options
context:
space:
mode:
authorJee Su Chang <w20740@motorola.com>2014-05-23 13:38:22 -0500
committerJee Su Chang <w20740@motorola.com>2014-05-27 14:22:24 +0000
commit80eb3fbe8d147db15182cebbb937486945900be9 (patch)
treebf0f9945e60ac65462b7bb2db01ad0bcd8be6752 /drivers/misc/c55_ctrl.c
parentad4111f4224c565e1dcfa18ca261fdbbc3ce28ba (diff)
downloadolio-linux-3.10-80eb3fbe8d147db15182cebbb937486945900be9.tar.xz
olio-linux-3.10-80eb3fbe8d147db15182cebbb937486945900be9.zip
IKXCLOCK-1114 C55: Set UART pins to mode 0 on resume
When C55 is brought up, if the UART TX (from OMAP) pin is low, it causes C55's UART to get messed up. Change-Id: I6e7267c1eb5ed250b42d217628f914f9ba8f3494
Diffstat (limited to 'drivers/misc/c55_ctrl.c')
-rw-r--r--drivers/misc/c55_ctrl.c25
1 files changed, 25 insertions, 0 deletions
diff --git a/drivers/misc/c55_ctrl.c b/drivers/misc/c55_ctrl.c
index ab934a94dff..9b5bf2587cb 100644
--- a/drivers/misc/c55_ctrl.c
+++ b/drivers/misc/c55_ctrl.c
@@ -357,6 +357,29 @@ static int c55_ctrl_remove(struct platform_device *pdev)
return 0;
}
+#ifdef CONFIG_PM
+static int c55_ctrl_suspend(struct platform_device *dev, pm_message_t state)
+{
+ struct c55_ctrl_data *cdata = dev_get_drvdata(&dev->dev);
+
+ pinctrl_select_state(cdata->pctrl, cdata->states[C55_OFF]);
+
+ return 0;
+}
+
+static int c55_ctrl_resume(struct platform_device *dev)
+{
+ struct c55_ctrl_data *cdata = dev_get_drvdata(&dev->dev);
+
+ pinctrl_select_state(cdata->pctrl, cdata->states[C55_ON]);
+
+ return 0;
+}
+#else
+#define c55_ctrl_suspend NULL
+#define c55_ctrl_resume NULL
+#endif
+
static struct of_device_id c55_ctrl_match[] = {
{.compatible = "ti,c55-ctrl",},
{},
@@ -377,6 +400,8 @@ static struct platform_driver c55_ctrl_driver = {
},
.probe = c55_ctrl_probe,
.remove = c55_ctrl_remove,
+ .suspend = c55_ctrl_suspend,
+ .resume = c55_ctrl_resume,
.id_table = c55_ctrl_id_table,
};