diff options
author | Anton Vorontsov <cbouatmailru@gmail.com> | 2010-10-01 09:21:25 -0400 |
---|---|---|
committer | Greg Kroah-Hartman <gregkh@suse.de> | 2010-10-22 13:20:07 -0400 |
commit | 54381067ed7873e6173d6fe32818a585ad667723 (patch) | |
tree | 188acc1fdb9741188cfa3be68b20c76607a70135 /drivers/serial | |
parent | 8ee16a1b8985ac930d293553f589b5894eb6a60e (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.c | 14 |
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 */ | ||
1726 | static 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 | ||
1748 | static void serial8250_backup_timeout(unsigned long data) | 1742 | static 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 | ||
1793 | static unsigned int serial8250_tx_empty(struct uart_port *port) | 1787 | static 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) |