diff options
author | Ralf Baechle <ralf@linux-mips.org> | 2001-04-01 03:05:39 +0000 |
---|---|---|
committer | Ralf Baechle <ralf@linux-mips.org> | 2001-04-01 03:05:39 +0000 |
commit | 06b423060071b0e4f3b0cd4fd4b1e6985a9a8e9a (patch) | |
tree | 8d7b0958a9e1201c5b1abcb1d625e1a9033e6843 /drivers/char/serial_tx3912.h | |
parent | 1eb1d8f4cf7668cf937ad74824c985b88aa62cf3 (diff) |
Serial driver for TX3912 builtin UART.
Diffstat (limited to 'drivers/char/serial_tx3912.h')
-rw-r--r-- | drivers/char/serial_tx3912.h | 92 |
1 files changed, 92 insertions, 0 deletions
diff --git a/drivers/char/serial_tx3912.h b/drivers/char/serial_tx3912.h new file mode 100644 index 000000000..8276797e1 --- /dev/null +++ b/drivers/char/serial_tx3912.h @@ -0,0 +1,92 @@ +/* + * drivers/char/serial_tx3912.h + * + * Copyright (C) 1999 Harald Koerfgen + * Copyright (C) 2000 Jim Pick <jim@jimpick.com> + * Copyright (C) 2001 Steven J. Hill (sjhill@realitydiluted.com) + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License version 2 as + * published by the Free Software Foundation. + * + * Serial driver for TMPR3912/05 and PR31700 processors + */ +#include <linux/serialP.h> +#include <linux/generic_serial.h> + +/* UART Interrupt (Interrupt 2) bits (UARTA,UARTB) */ +#define UART_RX_INT 9 /* receiver holding register full (31, 21) */ +#define UART_RXOVERRUN_INT 8 /* receiver overrun error (30, 20) */ +#define UART_FRAMEERR_INT 7 /* receiver frame error (29, 19) */ +#define UART_BREAK_INT 6 /* received break signal (28, 18) */ +#define UART_PARITYERR_INT 5 /* receiver parity error (27, 17) */ +#define UART_TX_INT 4 /* transmit holding register empty (26, 16) */ +#define UART_TXOVERRUN_INT 3 /* transmit overrun error (25, 15) */ +#define UART_EMPTY_INT 2 /* both trans/recv regs empty (24, 14) */ +#define UART_DMAFULL_INT 1 /* DMA at end of buffer (23, 13) */ +#define UART_DMAHALF_INT 0 /* DMA halfway through buffer */ (22, 12) */ + +#define UARTA_SHIFT 22 +#define UARTB_SHIFT 12 + +#define INTTYPE(interrupttype) (1 << interrupttype) + +/* + * This driver can spew a whole lot of debugging output at you. If you + * need maximum performance, you should disable the DEBUG define. + */ +#undef TX3912_UART_DEBUG + +#ifdef TX3912_UART_DEBUG +#define TX3912_UART_DEBUG_OPEN 0x00000001 +#define TX3912_UART_DEBUG_SETTING 0x00000002 +#define TX3912_UART_DEBUG_FLOW 0x00000004 +#define TX3912_UART_DEBUG_MODEMSIGNALS 0x00000008 +#define TX3912_UART_DEBUG_TERMIOS 0x00000010 +#define TX3912_UART_DEBUG_TRANSMIT 0x00000020 +#define TX3912_UART_DEBUG_RECEIVE 0x00000040 +#define TX3912_UART_DEBUG_INTERRUPTS 0x00000080 +#define TX3912_UART_DEBUG_PROBE 0x00000100 +#define TX3912_UART_DEBUG_INIT 0x00000200 +#define TX3912_UART_DEBUG_CLEANUP 0x00000400 +#define TX3912_UART_DEBUG_CLOSE 0x00000800 +#define TX3912_UART_DEBUG_FIRMWARE 0x00001000 +#define TX3912_UART_DEBUG_MEMTEST 0x00002000 +#define TX3912_UART_DEBUG_THROTTLE 0x00004000 +#define TX3912_UART_DEBUG_ALL 0xffffffff + +int rs_debug = TX3912_UART_DEBUG_ALL & ~TX3912_UART_DEBUG_TRANSMIT; + +#define rs_dprintk(f, str...) if (rs_debug & f) printk (str) +#define func_enter() rs_dprintk (TX3912_UART_DEBUG_FLOW, \ + "rs: enter " __FUNCTION__ "\n") +#define func_exit() rs_dprintk (TX3912_UART_DEBUG_FLOW, \ + "rs: exit " __FUNCTION__ "\n") + +#else +#define rs_dprintk(f, str...) +#define func_enter() +#define func_exit() + +#endif /* TX3912_UART_DEBUG */ + +/* + * Number of serial ports + */ +#define TX3912_UART_NPORTS 2 + +/* + * Hardware specific serial port structure + */ +struct rs_port { + struct gs_port gs; /* Must be first field! */ + + unsigned long base; + int intshift; /* Register shift */ + struct wait_queue *shutdown_wait; + int stat_flags; + struct async_icount icount; /* Counters for 4 input IRQs */ + int read_status_mask; + int ignore_status_mask; + int x_char; /* XON/XOFF character */ +}; |