ssb: Fix extraction of values from SPROM
[safe/jmp/linux-2.6] / include / linux / serial_core.h
index 966e2e8..9963f81 100644 (file)
@@ -39,7 +39,8 @@
 #define PORT_RSA       13
 #define PORT_NS16550A  14
 #define PORT_XSCALE    15
-#define PORT_MAX_8250  15      /* max port ID */
+#define PORT_RM9000    16      /* PMC-Sierra RM9xxx internal UART */
+#define PORT_MAX_8250  16      /* max port ID */
 
 /*
  * ARM specific type numbers.  These are not currently guaranteed
 /* NEC v850.  */
 #define PORT_V850E_UART        40
 
-/* DZ */
-#define PORT_DZ                47
+/* DEC */
+#define PORT_DZ                46
+#define PORT_ZS                47
 
 /* Parisc type numbers. */
 #define PORT_MUX       48
 
-/* Atmel AT91RM9200 SoC */
-#define PORT_AT91RM9200 49
+/* Atmel AT91 / AT32 SoC */
+#define PORT_ATMEL     49
 
 /* Macintosh Zilog type numbers */
 #define PORT_MAC_ZILOG 50      /* m68k : not yet implemented */
 /*Digi jsm */
 #define PORT_JSM        69
 
-#define PORT_IP3106    70
+#define PORT_PNX8XXX   70
 
 /* Hilscher netx */
 #define PORT_NETX      71
 /* SUN4V Hypervisor Console */
 #define PORT_SUNHV     72
 
+#define PORT_S3C2412   73
+
+/* Xilinx uartlite */
+#define PORT_UARTLITE  74
+
+/* Blackfin bf5xx */
+#define PORT_BFIN      75
+
+/* Micrel KS8695 */
+#define PORT_KS8695    76
+
+/* Broadcom SB1250, etc. SOC */
+#define PORT_SB1250_DUART      77
+
+/* Freescale ColdFire */
+#define PORT_MCF       78
+
+
 #ifdef __KERNEL__
 
-#include <linux/config.h>
 #include <linux/compiler.h>
 #include <linux/interrupt.h>
 #include <linux/circ_buf.h>
 #include <linux/sched.h>
 #include <linux/tty.h>
 #include <linux/mutex.h>
+#include <linux/sysrq.h>
 
 struct uart_port;
 struct uart_info;
@@ -162,8 +182,8 @@ struct uart_ops {
        void            (*break_ctl)(struct uart_port *, int ctl);
        int             (*startup)(struct uart_port *);
        void            (*shutdown)(struct uart_port *);
-       void            (*set_termios)(struct uart_port *, struct termios *new,
-                                      struct termios *old);
+       void            (*set_termios)(struct uart_port *, struct ktermios *new,
+                                      struct ktermios *old);
        void            (*pm)(struct uart_port *, unsigned int state,
                              unsigned int oldstate);
        int             (*set_wake)(struct uart_port *, unsigned int state);
@@ -225,6 +245,9 @@ struct uart_port {
 #define UPIO_MEM               (2)
 #define UPIO_MEM32             (3)
 #define UPIO_AU                        (4)                     /* Au1x00 type IO */
+#define UPIO_TSI               (5)                     /* Tsi108/109 type IO */
+#define UPIO_DWAPB             (6)                     /* DesignWare APB UART */
+#define UPIO_RM9000            (7)                     /* RM9000 type IO */
 
        unsigned int            read_status_mask;       /* driver specific */
        unsigned int            ignore_status_mask;     /* driver specific */
@@ -255,6 +278,7 @@ struct uart_port {
 #define UPF_CONS_FLOW          ((__force upf_t) (1 << 23))
 #define UPF_SHARE_IRQ          ((__force upf_t) (1 << 24))
 #define UPF_BOOT_AUTOCONF      ((__force upf_t) (1 << 28))
+#define UPF_FIXED_PORT         ((__force upf_t) (1 << 29))
 #define UPF_DEAD               ((__force upf_t) (1 << 30))
 #define UPF_IOREMAP            ((__force upf_t) (1 << 31))
 
@@ -267,10 +291,12 @@ struct uart_port {
        const struct uart_ops   *ops;
        unsigned int            custom_divisor;
        unsigned int            line;                   /* port index */
-       unsigned long           mapbase;                /* for ioremap */
+       resource_size_t         mapbase;                /* for ioremap */
        struct device           *dev;                   /* parent device */
        unsigned char           hub6;                   /* this should be in the 8250 driver */
-       unsigned char           unused[3];
+       unsigned char           suspended;
+       unsigned char           unused[2];
+       void                    *private_data;          /* generic platform data pointer */
 };
 
 /*
@@ -316,6 +342,7 @@ struct uart_info {
 #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))
 
        int                     blocked_open;
 
@@ -335,7 +362,6 @@ struct uart_driver {
        struct module           *owner;
        const char              *driver_name;
        const char              *dev_name;
-       const char              *devfs_name;
        int                      major;
        int                      minor;
        int                      nr;
@@ -356,8 +382,8 @@ void uart_write_wakeup(struct uart_port *port);
  */
 void uart_update_timeout(struct uart_port *port, unsigned int cflag,
                         unsigned int baud);
-unsigned int uart_get_baud_rate(struct uart_port *port, struct termios *termios,
-                               struct termios *old, unsigned int min,
+unsigned int uart_get_baud_rate(struct uart_port *port, struct ktermios *termios,
+                               struct ktermios *old, unsigned int min,
                                unsigned int max);
 unsigned int uart_get_divisor(struct uart_port *port, unsigned int baud);
 
@@ -406,13 +432,12 @@ int uart_resume_port(struct uart_driver *reg, struct uart_port *port);
  * The following are helper functions for the low level drivers.
  */
 static inline int
-uart_handle_sysrq_char(struct uart_port *port, unsigned int ch,
-                      struct pt_regs *regs)
+uart_handle_sysrq_char(struct uart_port *port, unsigned int ch)
 {
 #ifdef SUPPORT_SYSRQ
        if (port->sysrq) {
                if (ch && time_before(jiffies, port->sysrq)) {
-                       handle_sysrq(ch, regs, NULL);
+                       handle_sysrq(ch, port->info ? port->info->tty : NULL);
                        port->sysrq = 0;
                        return 1;
                }
@@ -422,7 +447,7 @@ uart_handle_sysrq_char(struct uart_port *port, unsigned int ch,
        return 0;
 }
 #ifndef SUPPORT_SYSRQ
-#define uart_handle_sysrq_char(port,ch,regs) uart_handle_sysrq_char(port, 0, NULL)
+#define uart_handle_sysrq_char(port,ch) uart_handle_sysrq_char(port, 0)
 #endif
 
 /*