summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJim Wylder <jwylder@motorola.com>2014-07-28 16:21:09 -0500
committerJim Wylder <jwylder@motorola.com>2014-07-28 16:59:35 -0500
commit62c90d667b9b067336a4505f83b0b9c1e11b9539 (patch)
tree68c5aeb9f17310f1d2528686a7d816fd4ddbfa18
parent043567cd79eb156efdc67f9f64424eb360084dc0 (diff)
downloadolio-linux-3.10-62c90d667b9b067336a4505f83b0b9c1e11b9539.tar.xz
olio-linux-3.10-62c90d667b9b067336a4505f83b0b9c1e11b9539.zip
IKXCLOCK-3293 tty: omap: set RTS low later in resume
RTS should be set high whenever we are unable to quickly respond to data from the BT chip. Move the set and release to earlier in runtime_suspend and later in runtime_resume to minimize the time RTS is low during state transitions. Change-Id: I15e21dc8456c12f37ebf4d55675e6dcaf9a46f81 Signed-off-by: Jim Wylder <jwylder@motorola.com>
-rw-r--r--drivers/tty/serial/omap-serial.c11
1 files changed, 5 insertions, 6 deletions
diff --git a/drivers/tty/serial/omap-serial.c b/drivers/tty/serial/omap-serial.c
index 178fc097af1..8ec43253e64 100644
--- a/drivers/tty/serial/omap-serial.c
+++ b/drivers/tty/serial/omap-serial.c
@@ -1756,6 +1756,8 @@ static int serial_omap_runtime_suspend(struct device *dev)
if (!up)
return -EINVAL;
+ if (up->pin_idle)
+ pinctrl_select_state(up->pins, up->pin_idle);
up->context_loss_cnt = serial_omap_get_context_loss_count(up);
if (device_may_wakeup(dev)) {
@@ -1765,9 +1767,6 @@ static int serial_omap_runtime_suspend(struct device *dev)
up->latency = PM_QOS_CPU_DMA_LAT_DEFAULT_VALUE;
serial_omap_uart_qos(up);
- if (up->pin_idle)
- pinctrl_select_state(up->pins, up->pin_idle);
-
return 0;
}
@@ -1776,9 +1775,6 @@ static int serial_omap_runtime_resume(struct device *dev)
int loss_cnt;
struct uart_omap_port *up = dev_get_drvdata(dev);
- if (up->pin_default && up->pin_idle)
- pinctrl_select_state(up->pins, up->pin_default);
-
loss_cnt = serial_omap_get_context_loss_count(up);
if (loss_cnt < 0) {
serial_omap_restore_context(up);
@@ -1791,6 +1787,9 @@ static int serial_omap_runtime_resume(struct device *dev)
}
up->latency = up->calc_latency;
serial_omap_uart_qos(up);
+ if (up->pin_default && up->pin_idle)
+ pinctrl_select_state(up->pins, up->pin_default);
+
return 0;
}
#endif