don't broke other archs, we're close to mainstream (i hope)
[openwrt-10.03/.git] / target / linux / ar7 / patches-2.6.22 / 500-serial_kludge.patch
1 diff -urN linux-2.6.22.orig/drivers/serial/8250.c linux-2.6.22/drivers/serial/8250.c
2 --- linux-2.6.22.orig/drivers/serial/8250.c     2007-07-09 01:32:17.000000000 +0200
3 +++ linux-2.6.22/drivers/serial/8250.c  2007-07-11 03:08:57.000000000 +0200
4 @@ -258,6 +258,13 @@
5                 .fcr            = UART_FCR_ENABLE_FIFO | UART_FCR_R_TRIG_10,
6                 .flags          = UART_CAP_FIFO,
7         },
8 +       [PORT_AR7] = {
9 +               .name           = "TI-AR7",
10 +               .fifo_size      = 16,
11 +               .tx_loadsz      = 16,
12 +               .fcr            = UART_FCR_ENABLE_FIFO | UART_FCR_R_TRIG_00,
13 +               .flags          = UART_CAP_FIFO | UART_CAP_AFE,
14 +       },
15  };
16  
17  #if defined (CONFIG_SERIAL_8250_AU1X00)
18 @@ -2453,7 +2453,11 @@
19  {
20         struct uart_8250_port *up = (struct uart_8250_port *)port;
21  
22 +#ifdef CONFIG_AR7
23 +       wait_for_xmitr(up, BOTH_EMPTY);
24 +#else
25         wait_for_xmitr(up, UART_LSR_THRE);
26 +#endif
27         serial_out(up, UART_TX, ch);
28  }
29  
30 diff -urN linux-2.6.22.orig/include/linux/serial_core.h linux-2.6.22/include/linux/serial_core.h
31 --- linux-2.6.22.orig/include/linux/serial_core.h       2007-07-09 01:32:17.000000000 +0200
32 +++ linux-2.6.22/include/linux/serial_core.h    2007-07-11 03:09:49.000000000 +0200
33 @@ -40,6 +40,7 @@
34  #define PORT_NS16550A  14
35  #define PORT_XSCALE    15
36  #define PORT_RM9000    16      /* PMC-Sierra RM9xxx internal UART */
37 +#define PORT_AR7       16
38  #define PORT_MAX_8250  16      /* max port ID */
39  
40  /*
41 diff -urN linux-2.6.22.orig/include/linux/serialP.h linux-2.6.22/include/linux/serialP.h
42 --- linux-2.6.22.orig/include/linux/serialP.h   2007-07-09 01:32:17.000000000 +0200
43 +++ linux-2.6.22/include/linux/serialP.h        2007-07-11 03:08:57.000000000 +0200
44 @@ -135,6 +135,10 @@
45   * the interrupt line _up_ instead of down, so if we register the IRQ
46   * while the UART is in that state, we die in an IRQ storm. */
47  #define ALPHA_KLUDGE_MCR (UART_MCR_OUT2)
48 +#elif defined(CONFIG_AR7)
49 +/* This is how it is set up by bootloader... */
50 +#define ALPHA_KLUDGE_MCR (UART_MCR_OUT2 | UART_MCR_OUT1 \
51 +                       | UART_MCR_RTS | UART_MCR_DTR)
52  #else
53  #define ALPHA_KLUDGE_MCR 0
54  #endif