| From aa16319bc84ef2b1c48898c340accb81575be000 Mon Sep 17 00:00:00 2001 |
| From: Paul Gortmaker <paul.gortmaker@windriver.com> |
| Date: Thu, 8 Mar 2012 19:12:09 -0500 |
| Subject: serial: make 8250's serial_in shareable to other drivers. |
| |
| Currently 8250.c has serial_in and serial_out as shortcuts |
| to doing the port I/O. They are implemented as macros a |
| ways down in the file. This isn't by accident, but is |
| implicitly required, so cpp doesn't mangle other instances |
| of the common string "serial_in", as it exists as a field |
| in the port struct itself. |
| |
| The above mangling avoidance violates the principle of least |
| surprise, and it also prevents the shortcuts from being |
| relocated up to the top of file, or into 8250.h -- either |
| being a better location than the current one. |
| |
| Move them to 8250.h so other 8250-like drivers can also use |
| the shortcuts, and in the process, make the conflicting |
| names go away by using static inlines instead of macros. |
| The object file size remains unchanged with this modification. |
| |
| Signed-off-by: Paul Gortmaker <paul.gortmaker@windriver.com> |
| Acked-by: Alan Cox <alan@linux.intel.com> |
| Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org> |
| (cherry picked from commit 3f0ab32753b49ae7afc5b69e3f23152d92aa1f85) |
| |
| Signed-off-by: Simon Horman <horms@verge.net.au> |
| --- |
| drivers/tty/serial/8250/8250.c | 5 ----- |
| drivers/tty/serial/8250/8250.h | 10 ++++++++++ |
| 2 files changed, 10 insertions(+), 5 deletions(-) |
| |
| diff --git a/drivers/tty/serial/8250/8250.c b/drivers/tty/serial/8250/8250.c |
| index fe75134..06e17d5 100644 |
| --- a/drivers/tty/serial/8250/8250.c |
| +++ b/drivers/tty/serial/8250/8250.c |
| @@ -482,11 +482,6 @@ serial_out_sync(struct uart_8250_port *up, int offset, int value) |
| } |
| } |
| |
| -#define serial_in(up, offset) \ |
| - (up->port.serial_in(&(up)->port, (offset))) |
| -#define serial_out(up, offset, value) \ |
| - (up->port.serial_out(&(up)->port, (offset), (value))) |
| - |
| /* Uart divisor latch read */ |
| static inline int _serial_dl_read(struct uart_8250_port *up) |
| { |
| diff --git a/drivers/tty/serial/8250/8250.h b/drivers/tty/serial/8250/8250.h |
| index ae027be..2868a1d 100644 |
| --- a/drivers/tty/serial/8250/8250.h |
| +++ b/drivers/tty/serial/8250/8250.h |
| @@ -86,6 +86,16 @@ struct serial8250_config { |
| #define SERIAL8250_SHARE_IRQS 0 |
| #endif |
| |
| +static inline int serial_in(struct uart_8250_port *up, int offset) |
| +{ |
| + return up->port.serial_in(&up->port, offset); |
| +} |
| + |
| +static inline void serial_out(struct uart_8250_port *up, int offset, int value) |
| +{ |
| + up->port.serial_out(&up->port, offset, value); |
| +} |
| + |
| #if defined(__alpha__) && !defined(CONFIG_PCI) |
| /* |
| * Digital did something really horribly wrong with the OUT1 and OUT2 |
| -- |
| 1.7.10.1.362.g242cab3 |
| |