blob: 6d7a08b85f87f3007da4f74d9fc18bf19795a1fb (
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
|
#define FEPCODESEG 0x0200L
#define FEPCODE 0x2000L
#define BIOSCODE 0xf800L
#define MISCGLOBAL 0x0C00L
#define NPORT 0x0C22L
#define MBOX 0x0C40L
#define PORTBASE 0x0C90L
#define FEPCLR 0x00
#define FEPMEM 0x02
#define FEPRST 0x04
#define FEPINT 0x08
#define FEPMASK 0x0e
#define FEPWIN 0x80
/* Maximum Number of Boards supported */
#define MAX_DIGI_BOARDS 4
#define PCXX_NUM_TYPES 4
#define PCXI 0
#define PCXE 1
#define PCXEVE 2
#define PCXEM 3
static char *board_desc[] = {
"PC/Xi",
"PC/Xe",
"PC/Xeve",
"PC/Xem",
};
static char *board_mem[] = {
"64k",
"64k",
"8k",
"32k",
};
#define STARTC 021
#define STOPC 023
#define IAIXON 0x2000
struct board_info {
unchar status;
unchar type;
unchar altpin;
ushort numports;
ushort port;
ulong membase;
ulong memsize;
ushort first_minor;
};
#define TXSTOPPED 0x01
#define LOWWAIT 0x02
#define EMPTYWAIT 0x04
#define RXSTOPPED 0x08
#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_CALLOUT 2
#define PCXE_EVENT_HANGUP 1
#define PCXX_MAGIC 0x5c6df104L
struct channel {
/* --------- Board/channel information ---------- */
long magic;
unchar boardnum;
unchar channelnum;
uint dev;
long session;
long pgrp;
struct tty_struct *tty;
struct board_info *board;
volatile struct board_chan *brdchan;
volatile struct global_data *mailbox;
int asyncflags;
int count;
int blocked_open;
int close_delay;
int event;
wait_queue_head_t open_wait;
wait_queue_head_t close_wait;
struct tq_struct tqueue;
/* ------------ Async control data ------------- */
unchar modemfake; /* Modem values to be forced */
unchar modem; /* Force values */
ulong statusflags;
unchar omodem; /* FEP output modem status */
unchar imodem; /* FEP input modem status */
unchar hflow;
unchar dsr;
unchar dcd;
unchar stopc;
unchar startc;
unchar stopca;
unchar startca;
unchar fepstopc;
unchar fepstartc;
unchar fepstopca;
unchar fepstartca;
ushort fepiflag;
ushort fepcflag;
ushort fepoflag;
/* ---------- Transmit/receive system ---------- */
unchar txwin;
unchar rxwin;
ushort txbufsize;
ushort rxbufsize;
unchar *txptr;
unchar *rxptr;
unchar *tmp_buf; /* Temp buffer */
/* ---- Termios data ---- */
ulong c_iflag;
ulong c_cflag;
ulong c_lflag;
ulong c_oflag;
struct termios normal_termios;
struct termios callout_termios;
struct digi_struct digiext;
ulong dummy[8];
};
|