File: /usr/src/linux/drivers/char/pcxx.h

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