aboutsummaryrefslogtreecommitdiff
path: root/drivers/char/epca.h
blob: 52205ef7131483ae59a17a0220c3803fe0939741 (plain)
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
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
#define XEMPORTS    0xC02
#define XEPORTS     0xC22

#define MAX_ALLOC   0x100

#define MAXBOARDS   12
#define FEPCODESEG  0x0200L
#define FEPCODE     0x2000L
#define BIOSCODE    0xf800L

#define MISCGLOBAL  0x0C00L
#define NPORT       0x0C22L
#define MBOX        0x0C40L
#define PORTBASE    0x0C90L

/* Begin code defines used for epca_setup */

#define INVALID_BOARD_TYPE   0x1
#define INVALID_NUM_PORTS    0x2
#define INVALID_MEM_BASE     0x4
#define INVALID_PORT_BASE    0x8
#define INVALID_BOARD_STATUS 0x10
#define INVALID_ALTPIN       0x20

/* End code defines used for epca_setup */


#define FEPCLR      0x00
#define FEPMEM      0x02
#define FEPRST      0x04
#define FEPINT      0x08
#define	FEPMASK     0x0e
#define	FEPWIN      0x80

#define PCXE    0
#define PCXEVE  1
#define PCXEM   2   
#define EISAXEM 3
#define PC64XE  4
#define PCXI    5
#define PCIXEM  7
#define PCICX   8
#define PCIXR   9
#define PCIXRJ  10
#define EPCA_NUM_TYPES 6


static char *board_desc[] = 
{
	"PC/Xe",
	"PC/Xeve",
	"PC/Xem",
	"EISA/Xem",
	"PC/64Xe",
	"PC/Xi",
	"unknown",
	"PCI/Xem",
	"PCI/CX",
	"PCI/Xr",
	"PCI/Xrj",
};

#define STARTC      021
#define STOPC       023
#define IAIXON      0x2000


#define TXSTOPPED  0x1
#define LOWWAIT    0x2
#define EMPTYWAIT  0x4
#define RXSTOPPED  0x8
#define TXBUSY     0x10

#define DISABLED   0
#define ENABLED    1
#define OFF        0
#define ON         1

#define FEPTIMEOUT 200000  
#define SERIAL_TYPE_NORMAL  1
#define SERIAL_TYPE_INFO    3
#define EPCA_EVENT_HANGUP   1
#define EPCA_MAGIC          0x5c6df104L

struct channel 
{
	long   magic;
	unchar boardnum;
	unchar channelnum;
	unchar omodem;         /* FEP output modem status     */
	unchar imodem;         /* FEP input modem status      */
	unchar modemfake;      /* Modem values to be forced   */
	unchar modem;          /* Force values                */
	unchar hflow;
	unchar dsr;
	unchar dcd;
	unchar m_rts ; 		/* The bits used in whatever FEP */
	unchar m_dcd ;		/* is indiginous to this board to */
	unchar m_dsr ;		/* represent each of the physical */
	unchar m_cts ;		/* handshake lines */
	unchar m_ri ;
	unchar m_dtr ;
	unchar stopc;
	unchar startc;
	unchar stopca;
	unchar startca;
	unchar fepstopc;
	unchar fepstartc;
	unchar fepstopca;
	unchar fepstartca;
	unchar txwin;
	unchar rxwin;
	ushort fepiflag;
	ushort fepcflag;
	ushort fepoflag;
	ushort txbufhead;
	ushort txbufsize;
	ushort rxbufhead;
	ushort rxbufsize;
	int    close_delay;
	int    count;
	int    blocked_open;
	ulong  event;
	int    asyncflags;
	uint   dev;
	ulong  statusflags;
	ulong  c_iflag;
	ulong  c_cflag;
	ulong  c_lflag;
	ulong  c_oflag;
	unchar *txptr;
	unchar *rxptr;
	unchar *tmp_buf;
	struct board_info           *board;
	volatile struct board_chan  *brdchan;
	struct digi_struct          digiext;
	struct tty_struct           *tty;
	wait_queue_head_t           open_wait;
	wait_queue_head_t           close_wait;
	struct work_struct            tqueue;
	volatile struct global_data *mailbox;
};

struct board_info	
{
	unchar status;
	unchar type;
	unchar altpin;
	ushort numports;
	unchar *port;
	unchar *membase;
	unchar __iomem *re_map_port;
	unchar *re_map_membase;
	ulong  memory_seg;
	void ( * memwinon )	(struct board_info *, unsigned int) ;
	void ( * memwinoff ) 	(struct board_info *, unsigned int) ;
	void ( * globalwinon )	(struct channel *) ;
	void ( * txwinon ) 	(struct channel *) ;
	void ( * rxwinon )	(struct channel *) ;
	void ( * memoff )	(struct channel *) ;
	void ( * assertgwinon )	(struct channel *) ;
	void ( * assertmemoff )	(struct channel *) ;
	unchar poller_inhibited ;
};