summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJim Wylder <jwylder@motorola.com>2014-07-28 16:02:17 -0500
committerJim Wylder <jwylder@motorola.com>2014-07-28 16:59:21 -0500
commitee5c3d5cbcb7726eff03c12efedc064a678be923 (patch)
tree6e033bd2940a60ec98de97459885a60895447669
parent3386ca0b87e167f323010f487e7e40662dba6e18 (diff)
downloadolio-linux-3.10-ee5c3d5cbcb7726eff03c12efedc064a678be923.tar.xz
olio-linux-3.10-ee5c3d5cbcb7726eff03c12efedc064a678be923.zip
IKXCLOCK-3293 tty: omap: support power->resume_noidle configuration
The omap-serial uart2, relies on the autosuspend timer to ensure that it is ready to handle incoming data after an initial wakeup. Use the resume_noidle to prevent device_complete from truncating the timeout. Change-Id: I81316ffe29afd00cb5404c4c195a3d4313611351 Signed-off-by: Jim Wylder <jwylder@motorola.com>
-rw-r--r--Documentation/devicetree/bindings/serial/omap_serial.txt5
-rw-r--r--drivers/tty/serial/omap-serial.c9
2 files changed, 12 insertions, 2 deletions
diff --git a/Documentation/devicetree/bindings/serial/omap_serial.txt b/Documentation/devicetree/bindings/serial/omap_serial.txt
index b4e9c8f7286..35fea37890e 100644
--- a/Documentation/devicetree/bindings/serial/omap_serial.txt
+++ b/Documentation/devicetree/bindings/serial/omap_serial.txt
@@ -10,3 +10,8 @@ Optional properties:
- clock-frequency : frequency of the clock input to the UART
- flags : an integer specifying the UPF flags of the uart port
- ti,no-pm-qos: empty property that disables PM QoS for the UART
+
+- resume-noidle: device_complete should call pm_runtime_put_noidle
+ rather than pm_runtime_put. This prevents a bounce on serial
+ devices that require a strict autosuspend delay.
+
diff --git a/drivers/tty/serial/omap-serial.c b/drivers/tty/serial/omap-serial.c
index 625cf102cc3..178fc097af1 100644
--- a/drivers/tty/serial/omap-serial.c
+++ b/drivers/tty/serial/omap-serial.c
@@ -1565,9 +1565,14 @@ static int serial_omap_probe(struct platform_device *pdev)
up->port.fifosize = 64;
up->port.ops = &serial_omap_pops;
- if (pdev->dev.of_node)
+ if (pdev->dev.of_node) {
up->port.line = of_alias_get_id(pdev->dev.of_node, "serial");
- else
+ pdev->dev.power.resume_noidle =
+ of_property_read_bool(pdev->dev.of_node,
+ "resume-noidle");
+ dev_info(&pdev->dev, "resume-noidle = %d\n",
+ pdev->dev.power.resume_noidle);
+ } else
up->port.line = pdev->id;
if (up->port.line < 0) {