1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
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 */
};
|