1 #define FEPCODESEG  0x0200L
2 #define FEPCODE     0x2000L
3 #define BIOSCODE    0xf800L
4 
5 #define MISCGLOBAL  0x0C00L
6 #define NPORT       0x0C22L
7 #define MBOX        0x0C40L
8 #define PORTBASE    0x0C90L
9 
10 #define FEPCLR      0x00
11 #define FEPMEM      0x02
12 #define FEPRST      0x04
13 #define FEPINT      0x08
14 #define	FEPMASK     0x0e
15 #define	FEPWIN      0x80
16 
17 /* Maximum Number of Boards supported */
18 #define MAX_DIGI_BOARDS 4
19 
20 #define PCXX_NUM_TYPES	4
21 
22 #define PCXI		0
23 #define PCXE		1
24 #define	PCXEVE		2
25 #define PCXEM		3
26 
27 static char *board_desc[] = {
28 	"PC/Xi",
29 	"PC/Xe",
30 	"PC/Xeve",
31 	"PC/Xem",
32 };
33 
34 static char *board_mem[] = {
35 	"64k",
36 	"64k",
37 	"8k",
38 	"32k",
39 };
40 #define STARTC      021
41 #define STOPC       023
42 #define IAIXON      0x2000
43 
44 
45 struct board_info	{
46 	unchar status;
47 	unchar type;
48 	unchar altpin;
49 	ushort numports;
50 	ushort port;
51 	ulong  membase;
52 	ulong  memsize;
53 	ushort first_minor;
54 	void *region;
55 };
56 
57 
58 #define TXSTOPPED   0x01
59 #define LOWWAIT		0x02
60 #define EMPTYWAIT	0x04
61 #define RXSTOPPED	0x08
62 #define TXBUSY		0x10
63 
64 #define DISABLED   0
65 #define ENABLED    1
66 #define OFF        0
67 #define ON         1
68 
69 #define FEPTIMEOUT 200000
70 #define SERIAL_TYPE_NORMAL	1
71 #define SERIAL_TYPE_CALLOUT	2
72 #define PCXE_EVENT_HANGUP   1
73 #define PCXX_MAGIC	0x5c6df104L
74 
75 struct channel {
76 							/* --------- Board/channel information ---------- */
77 	long						magic;
78 	unchar						boardnum;
79 	unchar						channelnum;
80 	uint						dev;
81 	long						session;
82 	long						pgrp;
83 	struct tty_struct			*tty;
84 	struct board_info			*board;
85 	volatile struct board_chan	*brdchan;
86 	volatile struct global_data *mailbox;
87 	int							asyncflags;
88 	int							count;
89 	int							blocked_open;
90 	int							close_delay;
91 	int							event;
92 	wait_queue_head_t			open_wait;
93 	wait_queue_head_t			close_wait;
94 	struct tq_struct			tqueue;
95 							/* ------------ Async control data ------------- */
96 	unchar						modemfake;      /* Modem values to be forced */
97 	unchar						modem;          /* Force values */
98 	ulong						statusflags;
99 	unchar						omodem;         /* FEP output modem status */
100 	unchar						imodem;         /* FEP input modem status */
101 	unchar						hflow;
102 	unchar						dsr;
103 	unchar						dcd;
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 	ushort						fepiflag;
113 	ushort						fepcflag;
114 	ushort						fepoflag;
115 							/* ---------- Transmit/receive system ---------- */
116 	unchar						txwin;
117 	unchar						rxwin;
118 	ushort						txbufsize;
119 	ushort						rxbufsize;
120 	unchar						*txptr;
121 	unchar						*rxptr;
122 	unchar						*tmp_buf;		/* Temp buffer */
123 	struct semaphore				tmp_buf_sem;
124 							/* ---- Termios data ---- */
125 	ulong						c_iflag;
126 	ulong						c_cflag;
127 	ulong						c_lflag;
128 	ulong						c_oflag;
129 	struct termios				normal_termios;
130 	struct termios				callout_termios;
131 	struct digi_struct			digiext;
132 	ulong						dummy[8];
133 };
134