| From f1e4b73758b9bead03589febddcb3dba5132ddf7 Mon Sep 17 00:00:00 2001 |
| From: Paul Gortmaker <paul.gortmaker@windriver.com> |
| Date: Sun, 4 Dec 2011 18:42:22 -0500 |
| Subject: serial: manually inline serial8250_handle_port |
| |
| Currently serial8250_handle_irq is a trivial wrapper around |
| serial8250_handle_port, which actually does all the work. |
| |
| Since there are no other callers of serial8250_handle_port, we |
| can just move it inline into serial8250_handle_irq. This also |
| makes it more clear what functionality any custom IRQ handlers |
| need to provide if not using serial8250_default_handle_irq. |
| |
| Signed-off-by: Paul Gortmaker <paul.gortmaker@windriver.com> |
| Acked-by: Alan Cox <alan@linux.intel.com> |
| Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de> |
| (cherry picked from commit 86b21199fc45e0052e181fefc07c747e9dc903b3) |
| |
| Signed-off-by: Simon Horman <horms@verge.net.au> |
| --- |
| drivers/tty/serial/8250.c | 23 ++++++++--------------- |
| 1 file changed, 8 insertions(+), 15 deletions(-) |
| |
| diff --git a/drivers/tty/serial/8250.c b/drivers/tty/serial/8250.c |
| index a5c6c7d..047221d 100644 |
| --- a/drivers/tty/serial/8250.c |
| +++ b/drivers/tty/serial/8250.c |
| @@ -1528,10 +1528,15 @@ EXPORT_SYMBOL_GPL(serial8250_modem_status); |
| /* |
| * This handles the interrupt from one port. |
| */ |
| -static void serial8250_handle_port(struct uart_8250_port *up) |
| +int serial8250_handle_irq(struct uart_port *port, unsigned int iir) |
| { |
| unsigned char status; |
| unsigned long flags; |
| + struct uart_8250_port *up = |
| + container_of(port, struct uart_8250_port, port); |
| + |
| + if (iir & UART_IIR_NO_INT) |
| + return 0; |
| |
| spin_lock_irqsave(&up->port.lock, flags); |
| |
| @@ -1546,19 +1551,7 @@ static void serial8250_handle_port(struct uart_8250_port *up) |
| serial8250_tx_chars(up); |
| |
| spin_unlock_irqrestore(&up->port.lock, flags); |
| -} |
| - |
| -int serial8250_handle_irq(struct uart_port *port, unsigned int iir) |
| -{ |
| - struct uart_8250_port *up = |
| - container_of(port, struct uart_8250_port, port); |
| - |
| - if (!(iir & UART_IIR_NO_INT)) { |
| - serial8250_handle_port(up); |
| - return 1; |
| - } |
| - |
| - return 0; |
| + return 1; |
| } |
| EXPORT_SYMBOL_GPL(serial8250_handle_irq); |
| |
| @@ -2825,7 +2818,7 @@ serial8250_console_write(struct console *co, const char *s, unsigned int count) |
| |
| local_irq_save(flags); |
| if (up->port.sysrq) { |
| - /* serial8250_handle_port() already took the lock */ |
| + /* serial8250_handle_irq() already took the lock */ |
| locked = 0; |
| } else if (oops_in_progress) { |
| locked = spin_trylock(&up->port.lock); |
| -- |
| 1.7.10.1.362.g242cab3 |
| |