diff options
| -rw-r--r-- | drivers/tty/serial/omap-serial.c | 11 |
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 |