serial: introduce generic port in/out helpers
authorPaul Gortmaker <paul.gortmaker@windriver.com>
Fri, 9 Mar 2012 00:12:12 +0000 (19:12 -0500)
committerGreg Kroah-Hartman <gregkh@linuxfoundation.org>
Fri, 9 Mar 2012 20:47:56 +0000 (12:47 -0800)
Looking at the existing serial drivers (esp. the 8250 derived
variants) we see a common trend.  They create a hardware specific
port struct, which in turn contains a generic serial_port struct.

The other trend, is that they all create some sort of shortcut
to go through the hardware specific struct, to the serial_port
struct, which has the basic in/out operations within.  Looking
for the serial_in and serial_out in several drivers shows this.

Rather than let this continue, lets create a generic set of
similar helper wrappers that can be used on a struct port, so
we can eliminate bouncing out through hardware specific struct
pointers just to come back into struct port where possible.

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>
include/linux/serial_core.h

index 585bfd03d2ee22b4fa9b0733c2b4d64c44b83d0b..f51bf2e70c69605d8e298929a251490dbcf23bd2 100644 (file)
@@ -383,6 +383,16 @@ struct uart_port {
        void                    *private_data;          /* generic platform data pointer */
 };
 
+static inline int serial_port_in(struct uart_port *up, int offset)
+{
+       return up->serial_in(up, offset);
+}
+
+static inline void serial_port_out(struct uart_port *up, int offset, int value)
+{
+       up->serial_out(up, offset, value);
+}
+
 /*
  * This is the state information which is persistent across opens.
  */