aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--drivers/tty/serial/omap-serial.c33
1 files changed, 22 insertions, 11 deletions
diff --git a/drivers/tty/serial/omap-serial.c b/drivers/tty/serial/omap-serial.c
index d3fbb70a8e8a..b2043df42a4f 100644
--- a/drivers/tty/serial/omap-serial.c
+++ b/drivers/tty/serial/omap-serial.c
@@ -165,7 +165,8 @@ static void serial_omap_enable_ms(struct uart_port *port)
165 pm_runtime_get_sync(up->dev); 165 pm_runtime_get_sync(up->dev);
166 up->ier |= UART_IER_MSI; 166 up->ier |= UART_IER_MSI;
167 serial_out(up, UART_IER, up->ier); 167 serial_out(up, UART_IER, up->ier);
168 pm_runtime_put(up->dev); 168 pm_runtime_mark_last_busy(up->dev);
169 pm_runtime_put_autosuspend(up->dev);
169} 170}
170 171
171static void serial_omap_stop_tx(struct uart_port *port) 172static void serial_omap_stop_tx(struct uart_port *port)
@@ -415,7 +416,8 @@ static unsigned int serial_omap_tx_empty(struct uart_port *port)
415 spin_lock_irqsave(&up->port.lock, flags); 416 spin_lock_irqsave(&up->port.lock, flags);
416 ret = serial_in(up, UART_LSR) & UART_LSR_TEMT ? TIOCSER_TEMT : 0; 417 ret = serial_in(up, UART_LSR) & UART_LSR_TEMT ? TIOCSER_TEMT : 0;
417 spin_unlock_irqrestore(&up->port.lock, flags); 418 spin_unlock_irqrestore(&up->port.lock, flags);
418 pm_runtime_put(up->dev); 419 pm_runtime_mark_last_busy(up->dev);
420 pm_runtime_put_autosuspend(up->dev);
419 return ret; 421 return ret;
420} 422}
421 423
@@ -427,7 +429,8 @@ static unsigned int serial_omap_get_mctrl(struct uart_port *port)
427 429
428 pm_runtime_get_sync(up->dev); 430 pm_runtime_get_sync(up->dev);
429 status = check_modem_status(up); 431 status = check_modem_status(up);
430 pm_runtime_put(up->dev); 432 pm_runtime_mark_last_busy(up->dev);
433 pm_runtime_put_autosuspend(up->dev);
431 434
432 dev_dbg(up->port.dev, "serial_omap_get_mctrl+%d\n", up->port.line); 435 dev_dbg(up->port.dev, "serial_omap_get_mctrl+%d\n", up->port.line);
433 436
@@ -463,7 +466,8 @@ static void serial_omap_set_mctrl(struct uart_port *port, unsigned int mctrl)
463 up->mcr = serial_in(up, UART_MCR); 466 up->mcr = serial_in(up, UART_MCR);
464 up->mcr |= mcr; 467 up->mcr |= mcr;
465 serial_out(up, UART_MCR, up->mcr); 468 serial_out(up, UART_MCR, up->mcr);
466 pm_runtime_put(up->dev); 469 pm_runtime_mark_last_busy(up->dev);
470 pm_runtime_put_autosuspend(up->dev);
467 471
468 if (gpio_is_valid(up->DTR_gpio) && 472 if (gpio_is_valid(up->DTR_gpio) &&
469 !!(mctrl & TIOCM_DTR) != up->DTR_active) { 473 !!(mctrl & TIOCM_DTR) != up->DTR_active) {
@@ -490,7 +494,8 @@ static void serial_omap_break_ctl(struct uart_port *port, int break_state)
490 up->lcr &= ~UART_LCR_SBC; 494 up->lcr &= ~UART_LCR_SBC;
491 serial_out(up, UART_LCR, up->lcr); 495 serial_out(up, UART_LCR, up->lcr);
492 spin_unlock_irqrestore(&up->port.lock, flags); 496 spin_unlock_irqrestore(&up->port.lock, flags);
493 pm_runtime_put(up->dev); 497 pm_runtime_mark_last_busy(up->dev);
498 pm_runtime_put_autosuspend(up->dev);
494} 499}
495 500
496static int serial_omap_startup(struct uart_port *port) 501static int serial_omap_startup(struct uart_port *port)
@@ -588,7 +593,8 @@ static void serial_omap_shutdown(struct uart_port *port)
588 if (serial_in(up, UART_LSR) & UART_LSR_DR) 593 if (serial_in(up, UART_LSR) & UART_LSR_DR)
589 (void) serial_in(up, UART_RX); 594 (void) serial_in(up, UART_RX);
590 595
591 pm_runtime_put(up->dev); 596 pm_runtime_mark_last_busy(up->dev);
597 pm_runtime_put_autosuspend(up->dev);
592 free_irq(up->port.irq, up); 598 free_irq(up->port.irq, up);
593} 599}
594 600
@@ -862,7 +868,8 @@ serial_omap_set_termios(struct uart_port *port, struct ktermios *termios,
862 serial_omap_configure_xonxoff(up, termios); 868 serial_omap_configure_xonxoff(up, termios);
863 869
864 spin_unlock_irqrestore(&up->port.lock, flags); 870 spin_unlock_irqrestore(&up->port.lock, flags);
865 pm_runtime_put(up->dev); 871 pm_runtime_mark_last_busy(up->dev);
872 pm_runtime_put_autosuspend(up->dev);
866 dev_dbg(up->port.dev, "serial_omap_set_termios+%d\n", up->port.line); 873 dev_dbg(up->port.dev, "serial_omap_set_termios+%d\n", up->port.line);
867} 874}
868 875
@@ -893,7 +900,8 @@ serial_omap_pm(struct uart_port *port, unsigned int state,
893 pm_runtime_allow(up->dev); 900 pm_runtime_allow(up->dev);
894 } 901 }
895 902
896 pm_runtime_put(up->dev); 903 pm_runtime_mark_last_busy(up->dev);
904 pm_runtime_put_autosuspend(up->dev);
897} 905}
898 906
899static void serial_omap_release_port(struct uart_port *port) 907static void serial_omap_release_port(struct uart_port *port)
@@ -975,7 +983,8 @@ static void serial_omap_poll_put_char(struct uart_port *port, unsigned char ch)
975 pm_runtime_get_sync(up->dev); 983 pm_runtime_get_sync(up->dev);
976 wait_for_xmitr(up); 984 wait_for_xmitr(up);
977 serial_out(up, UART_TX, ch); 985 serial_out(up, UART_TX, ch);
978 pm_runtime_put(up->dev); 986 pm_runtime_mark_last_busy(up->dev);
987 pm_runtime_put_autosuspend(up->dev);
979} 988}
980 989
981static int serial_omap_poll_get_char(struct uart_port *port) 990static int serial_omap_poll_get_char(struct uart_port *port)
@@ -989,7 +998,8 @@ static int serial_omap_poll_get_char(struct uart_port *port)
989 return NO_POLL_CHAR; 998 return NO_POLL_CHAR;
990 999
991 status = serial_in(up, UART_RX); 1000 status = serial_in(up, UART_RX);
992 pm_runtime_put(up->dev); 1001 pm_runtime_mark_last_busy(up->dev);
1002 pm_runtime_put_autosuspend(up->dev);
993 return status; 1003 return status;
994} 1004}
995 1005
@@ -1340,7 +1350,8 @@ static int serial_omap_probe(struct platform_device *pdev)
1340 if (ret != 0) 1350 if (ret != 0)
1341 goto err_add_port; 1351 goto err_add_port;
1342 1352
1343 pm_runtime_put(&pdev->dev); 1353 pm_runtime_mark_last_busy(up->dev);
1354 pm_runtime_put_autosuspend(up->dev);
1344 platform_set_drvdata(pdev, up); 1355 platform_set_drvdata(pdev, up);
1345 return 0; 1356 return 0;
1346 1357