Merge branch 'for_linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tytso/ext4
[safe/jmp/linux-2.6] / include / linux / serial_core.h
index fd11d4d..8c3dd36 100644 (file)
@@ -20,6 +20,8 @@
 #ifndef LINUX_SERIAL_CORE_H
 #define LINUX_SERIAL_CORE_H
 
+#include <linux/serial.h>
+
 /*
  * The type definitions.  These are from Ted Ts'o's serial.h
  */
 /* Qualcomm MSM SoCs */
 #define PORT_MSM       88
 
+/* BCM63xx family SoCs */
+#define PORT_BCM63XX   89
+
+/* Aeroflex Gaisler GRLIB APBUART */
+#define PORT_APBUART    90
+
 #ifdef __KERNEL__
 
 #include <linux/compiler.h>
@@ -335,47 +343,16 @@ struct uart_port {
 };
 
 /*
- * This is the state information which is only valid when the port
- * is open; it may be cleared the core driver once the device has
- * been closed.  Either the low level driver or the core can modify
- * stuff here.
- */
-typedef unsigned int __bitwise__ uif_t;
-
-
-/*
  * This is the state information which is persistent across opens.
- * The low level driver must not to touch any elements contained
- * within.
  */
 struct uart_state {
        struct tty_port         port;
 
-#define USF_CLOSING_WAIT_INF   (0)
-#define USF_CLOSING_WAIT_NONE  (~0U)
-
-       int                     count;
        int                     pm_state;
        struct circ_buf         xmit;
-       uif_t                   flags;
-
-/*
- * Definitions for info->flags.  These are _private_ to serial_core, and
- * are specific to this structure.  They may be queried by low level drivers.
- *
- * FIXME: use the ASY_ definitions
- */
-#define UIF_CHECK_CD           ((__force uif_t) (1 << 25))
-#define UIF_CTS_FLOW           ((__force uif_t) (1 << 26))
-#define UIF_NORMAL_ACTIVE      ((__force uif_t) (1 << 29))
-#define UIF_INITIALIZED                ((__force uif_t) (1 << 31))
-#define UIF_SUSPENDED          ((__force uif_t) (1 << 30))
 
        struct tasklet_struct   tlet;
-       wait_queue_head_t       delta_msr_wait;
        struct uart_port        *uart_port;
-
-       struct mutex            mutex;
 };
 
 #define UART_XMIT_SIZE PAGE_SIZE
@@ -506,53 +483,54 @@ static inline int uart_handle_break(struct uart_port *port)
 
 /**
  *     uart_handle_dcd_change - handle a change of carrier detect state
- *     @port: uart_port structure for the open port
+ *     @uport: uart_port structure for the open port
  *     @status: new carrier detect status, nonzero if active
  */
 static inline void
-uart_handle_dcd_change(struct uart_port *port, unsigned int status)
+uart_handle_dcd_change(struct uart_port *uport, unsigned int status)
 {
-       struct uart_state *state = port->state;
+       struct uart_state *state = uport->state;
+       struct tty_port *port = &state->port;
 
-       port->icount.dcd++;
+       uport->icount.dcd++;
 
 #ifdef CONFIG_HARD_PPS
-       if ((port->flags & UPF_HARDPPS_CD) && status)
+       if ((uport->flags & UPF_HARDPPS_CD) && status)
                hardpps();
 #endif
 
-       if (state->flags & UIF_CHECK_CD) {
+       if (port->flags & ASYNC_CHECK_CD) {
                if (status)
-                       wake_up_interruptible(&state->port.open_wait);
-               else if (state->port.tty)
-                       tty_hangup(state->port.tty);
+                       wake_up_interruptible(&port->open_wait);
+               else if (port->tty)
+                       tty_hangup(port->tty);
        }
 }
 
 /**
  *     uart_handle_cts_change - handle a change of clear-to-send state
- *     @port: uart_port structure for the open port
+ *     @uport: uart_port structure for the open port
  *     @status: new clear to send status, nonzero if active
  */
 static inline void
-uart_handle_cts_change(struct uart_port *port, unsigned int status)
+uart_handle_cts_change(struct uart_port *uport, unsigned int status)
 {
-       struct uart_state *state = port->state;
-       struct tty_struct *tty = state->port.tty;
+       struct tty_port *port = &uport->state->port;
+       struct tty_struct *tty = port->tty;
 
-       port->icount.cts++;
+       uport->icount.cts++;
 
-       if (state->flags & UIF_CTS_FLOW) {
+       if (port->flags & ASYNC_CTS_FLOW) {
                if (tty->hw_stopped) {
                        if (status) {
                                tty->hw_stopped = 0;
-                               port->ops->start_tx(port);
-                               uart_write_wakeup(port);
+                               uport->ops->start_tx(uport);
+                               uart_write_wakeup(uport);
                        }
                } else {
                        if (!status) {
                                tty->hw_stopped = 1;
-                               port->ops->stop_tx(port);
+                               uport->ops->stop_tx(uport);
                        }
                }
        }