diff options
Diffstat (limited to 'drivers/tty/serial/8250.h')
-rw-r--r-- | drivers/tty/serial/8250.h | 80 |
1 files changed, 80 insertions, 0 deletions
diff --git a/drivers/tty/serial/8250.h b/drivers/tty/serial/8250.h new file mode 100644 index 000000000000..6e19ea3e48d5 --- /dev/null +++ b/drivers/tty/serial/8250.h | |||
@@ -0,0 +1,80 @@ | |||
1 | /* | ||
2 | * linux/drivers/char/8250.h | ||
3 | * | ||
4 | * Driver for 8250/16550-type serial ports | ||
5 | * | ||
6 | * Based on drivers/char/serial.c, by Linus Torvalds, Theodore Ts'o. | ||
7 | * | ||
8 | * Copyright (C) 2001 Russell King. | ||
9 | * | ||
10 | * This program is free software; you can redistribute it and/or modify | ||
11 | * it under the terms of the GNU General Public License as published by | ||
12 | * the Free Software Foundation; either version 2 of the License, or | ||
13 | * (at your option) any later version. | ||
14 | */ | ||
15 | |||
16 | #include <linux/serial_8250.h> | ||
17 | |||
18 | struct old_serial_port { | ||
19 | unsigned int uart; | ||
20 | unsigned int baud_base; | ||
21 | unsigned int port; | ||
22 | unsigned int irq; | ||
23 | unsigned int flags; | ||
24 | unsigned char hub6; | ||
25 | unsigned char io_type; | ||
26 | unsigned char *iomem_base; | ||
27 | unsigned short iomem_reg_shift; | ||
28 | unsigned long irqflags; | ||
29 | }; | ||
30 | |||
31 | /* | ||
32 | * This replaces serial_uart_config in include/linux/serial.h | ||
33 | */ | ||
34 | struct serial8250_config { | ||
35 | const char *name; | ||
36 | unsigned short fifo_size; | ||
37 | unsigned short tx_loadsz; | ||
38 | unsigned char fcr; | ||
39 | unsigned int flags; | ||
40 | }; | ||
41 | |||
42 | #define UART_CAP_FIFO (1 << 8) /* UART has FIFO */ | ||
43 | #define UART_CAP_EFR (1 << 9) /* UART has EFR */ | ||
44 | #define UART_CAP_SLEEP (1 << 10) /* UART has IER sleep */ | ||
45 | #define UART_CAP_AFE (1 << 11) /* MCR-based hw flow control */ | ||
46 | #define UART_CAP_UUE (1 << 12) /* UART needs IER bit 6 set (Xscale) */ | ||
47 | |||
48 | #define UART_BUG_QUOT (1 << 0) /* UART has buggy quot LSB */ | ||
49 | #define UART_BUG_TXEN (1 << 1) /* UART has buggy TX IIR status */ | ||
50 | #define UART_BUG_NOMSR (1 << 2) /* UART has buggy MSR status bits (Au1x00) */ | ||
51 | #define UART_BUG_THRE (1 << 3) /* UART has buggy THRE reassertion */ | ||
52 | |||
53 | #define PROBE_RSA (1 << 0) | ||
54 | #define PROBE_ANY (~0) | ||
55 | |||
56 | #define HIGH_BITS_OFFSET ((sizeof(long)-sizeof(int))*8) | ||
57 | |||
58 | #ifdef CONFIG_SERIAL_8250_SHARE_IRQ | ||
59 | #define SERIAL8250_SHARE_IRQS 1 | ||
60 | #else | ||
61 | #define SERIAL8250_SHARE_IRQS 0 | ||
62 | #endif | ||
63 | |||
64 | #if defined(__alpha__) && !defined(CONFIG_PCI) | ||
65 | /* | ||
66 | * Digital did something really horribly wrong with the OUT1 and OUT2 | ||
67 | * lines on at least some ALPHA's. The failure mode is that if either | ||
68 | * is cleared, the machine locks up with endless interrupts. | ||
69 | */ | ||
70 | #define ALPHA_KLUDGE_MCR (UART_MCR_OUT2 | UART_MCR_OUT1) | ||
71 | #elif defined(CONFIG_SBC8560) | ||
72 | /* | ||
73 | * WindRiver did something similarly broken on their SBC8560 board. The | ||
74 | * UART tristates its IRQ output while OUT2 is clear, but they pulled | ||
75 | * the interrupt line _up_ instead of down, so if we register the IRQ | ||
76 | * while the UART is in that state, we die in an IRQ storm. */ | ||
77 | #define ALPHA_KLUDGE_MCR (UART_MCR_OUT2) | ||
78 | #else | ||
79 | #define ALPHA_KLUDGE_MCR 0 | ||
80 | #endif | ||