aboutsummaryrefslogtreecommitdiffstats
path: root/drivers/serial
diff options
context:
space:
mode:
authorAnton Vorontsov <cbouatmailru@gmail.com>2010-10-01 09:21:25 -0400
committerGreg Kroah-Hartman <gregkh@suse.de>2010-10-22 13:20:07 -0400
commit54381067ed7873e6173d6fe32818a585ad667723 (patch)
tree188acc1fdb9741188cfa3be68b20c76607a70135 /drivers/serial
parent8ee16a1b8985ac930d293553f589b5894eb6a60e (diff)
serial: Factor out uart_poll_timeout() from 8250 driver
Soon we will use that handy function in the altera_uart driver. Signed-off-by: Anton Vorontsov <cbouatmailru@gmail.com> Cc: Alan Cox <alan@linux.intel.com> Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
Diffstat (limited to 'drivers/serial')
-rw-r--r--drivers/serial/8250.c14
1 files changed, 4 insertions, 10 deletions
diff --git a/drivers/serial/8250.c b/drivers/serial/8250.c
index 31b8cca179cd..b586406f04ca 100644
--- a/drivers/serial/8250.c
+++ b/drivers/serial/8250.c
@@ -1722,12 +1722,6 @@ static void serial_unlink_irq_chain(struct uart_8250_port *up)
1722 mutex_unlock(&hash_mutex); 1722 mutex_unlock(&hash_mutex);
1723} 1723}
1724 1724
1725/* Base timer interval for polling */
1726static inline int poll_timeout(int timeout)
1727{
1728 return timeout > 6 ? (timeout / 2 - 2) : 1;
1729}
1730
1731/* 1725/*
1732 * This function is used to handle ports that do not have an 1726 * This function is used to handle ports that do not have an
1733 * interrupt. This doesn't work very well for 16450's, but gives 1727 * interrupt. This doesn't work very well for 16450's, but gives
@@ -1742,7 +1736,7 @@ static void serial8250_timeout(unsigned long data)
1742 iir = serial_in(up, UART_IIR); 1736 iir = serial_in(up, UART_IIR);
1743 if (!(iir & UART_IIR_NO_INT)) 1737 if (!(iir & UART_IIR_NO_INT))
1744 serial8250_handle_port(up); 1738 serial8250_handle_port(up);
1745 mod_timer(&up->timer, jiffies + poll_timeout(up->port.timeout)); 1739 mod_timer(&up->timer, jiffies + uart_poll_timeout(&up->port));
1746} 1740}
1747 1741
1748static void serial8250_backup_timeout(unsigned long data) 1742static void serial8250_backup_timeout(unsigned long data)
@@ -1787,7 +1781,7 @@ static void serial8250_backup_timeout(unsigned long data)
1787 1781
1788 /* Standard timer interval plus 0.2s to keep the port running */ 1782 /* Standard timer interval plus 0.2s to keep the port running */
1789 mod_timer(&up->timer, 1783 mod_timer(&up->timer,
1790 jiffies + poll_timeout(up->port.timeout) + HZ / 5); 1784 jiffies + uart_poll_timeout(&up->port) + HZ / 5);
1791} 1785}
1792 1786
1793static unsigned int serial8250_tx_empty(struct uart_port *port) 1787static unsigned int serial8250_tx_empty(struct uart_port *port)
@@ -2071,7 +2065,7 @@ static int serial8250_startup(struct uart_port *port)
2071 up->timer.function = serial8250_backup_timeout; 2065 up->timer.function = serial8250_backup_timeout;
2072 up->timer.data = (unsigned long)up; 2066 up->timer.data = (unsigned long)up;
2073 mod_timer(&up->timer, jiffies + 2067 mod_timer(&up->timer, jiffies +
2074 poll_timeout(up->port.timeout) + HZ / 5); 2068 uart_poll_timeout(port) + HZ / 5);
2075 } 2069 }
2076 2070
2077 /* 2071 /*
@@ -2081,7 +2075,7 @@ static int serial8250_startup(struct uart_port *port)
2081 */ 2075 */
2082 if (!is_real_interrupt(up->port.irq)) { 2076 if (!is_real_interrupt(up->port.irq)) {
2083 up->timer.data = (unsigned long)up; 2077 up->timer.data = (unsigned long)up;
2084 mod_timer(&up->timer, jiffies + poll_timeout(up->port.timeout)); 2078 mod_timer(&up->timer, jiffies + uart_poll_timeout(port));
2085 } else { 2079 } else {
2086 retval = serial_link_irq_chain(up); 2080 retval = serial_link_irq_chain(up);
2087 if (retval) 2081 if (retval)