1#define XEMPORTS 0xC02
2#define XEPORTS 0xC22
3
4#define MAX_ALLOC 0x100
5
6#define MAXBOARDS 12
7#define FEPCODESEG 0x0200L
8#define FEPCODE 0x2000L
9#define BIOSCODE 0xf800L
10
11#define MISCGLOBAL 0x0C00L
12#define NPORT 0x0C22L
13#define MBOX 0x0C40L
14#define PORTBASE 0x0C90L
15
16
17
18#define INVALID_BOARD_TYPE 0x1
19#define INVALID_NUM_PORTS 0x2
20#define INVALID_MEM_BASE 0x4
21#define INVALID_PORT_BASE 0x8
22#define INVALID_BOARD_STATUS 0x10
23#define INVALID_ALTPIN 0x20
24
25
26
27
28#define FEPCLR 0x00
29#define FEPMEM 0x02
30#define FEPRST 0x04
31#define FEPINT 0x08
32#define FEPMASK 0x0e
33#define FEPWIN 0x80
34
35#define PCXE 0
36#define PCXEVE 1
37#define PCXEM 2
38#define EISAXEM 3
39#define PC64XE 4
40#define PCXI 5
41#define PCIXEM 7
42#define PCICX 8
43#define PCIXR 9
44#define PCIXRJ 10
45#define EPCA_NUM_TYPES 6
46
47
48static char *board_desc[] =
49{
50 "PC/Xe",
51 "PC/Xeve",
52 "PC/Xem",
53 "EISA/Xem",
54 "PC/64Xe",
55 "PC/Xi",
56 "unknown",
57 "PCI/Xem",
58 "PCI/CX",
59 "PCI/Xr",
60 "PCI/Xrj",
61};
62
63#define STARTC 021
64#define STOPC 023
65#define IAIXON 0x2000
66
67
68#define TXSTOPPED 0x1
69#define LOWWAIT 0x2
70#define EMPTYWAIT 0x4
71#define RXSTOPPED 0x8
72#define TXBUSY 0x10
73
74#define DISABLED 0
75#define ENABLED 1
76#define OFF 0
77#define ON 1
78
79#define FEPTIMEOUT 200000
80#define SERIAL_TYPE_NORMAL 1
81#define SERIAL_TYPE_CALLOUT 2
82#define SERIAL_TYPE_INFO 3
83#define EPCA_EVENT_HANGUP 1
84#define EPCA_MAGIC 0x5c6df104L
85
86struct channel
87{
88 long magic;
89 unchar boardnum;
90 unchar channelnum;
91 unchar omodem;
92 unchar imodem;
93 unchar modemfake;
94 unchar modem;
95 unchar hflow;
96 unchar dsr;
97 unchar dcd;
98 unchar m_rts ;
99 unchar m_dcd ;
100 unchar m_dsr ;
101 unchar m_cts ;
102 unchar m_ri ;
103 unchar m_dtr ;
104 unchar stopc;
105 unchar startc;
106 unchar stopca;
107 unchar startca;
108 unchar fepstopc;
109 unchar fepstartc;
110 unchar fepstopca;
111 unchar fepstartca;
112 unchar txwin;
113 unchar rxwin;
114 ushort fepiflag;
115 ushort fepcflag;
116 ushort fepoflag;
117 ushort txbufhead;
118 ushort txbufsize;
119 ushort rxbufhead;
120 ushort rxbufsize;
121 int close_delay;
122 int count;
123 int blocked_open;
124 int event;
125 int asyncflags;
126 uint dev;
127 long session;
128 long pgrp;
129 ulong statusflags;
130 ulong c_iflag;
131 ulong c_cflag;
132 ulong c_lflag;
133 ulong c_oflag;
134 unchar *txptr;
135 unchar *rxptr;
136 unchar *tmp_buf;
137 struct board_info *board;
138 volatile struct board_chan *brdchan;
139 struct digi_struct digiext;
140 struct tty_struct *tty;
141 struct termios normal_termios;
142 struct termios callout_termios;
143 wait_queue_head_t open_wait;
144 wait_queue_head_t close_wait;
145 struct tq_struct tqueue;
146 volatile struct global_data *mailbox;
147};
148
149struct board_info
150{
151 unchar status;
152 unchar type;
153 unchar altpin;
154 ushort numports;
155 unchar *port;
156 unchar *membase;
157 unchar *re_map_port;
158 unchar *re_map_membase;
159 ulong memory_seg;
160 void ( * memwinon ) (struct board_info *, unsigned int) ;
161 void ( * memwinoff ) (struct board_info *, unsigned int) ;
162 void ( * globalwinon ) (struct channel *) ;
163 void ( * txwinon ) (struct channel *) ;
164 void ( * rxwinon ) (struct channel *) ;
165 void ( * memoff ) (struct channel *) ;
166 void ( * assertgwinon ) (struct channel *) ;
167 void ( * assertmemoff ) (struct channel *) ;
168 unchar poller_inhibited ;
169};
170
171