import of ftp.dlink.com/GPL/DSMG-600_reB/ppclinux.tar.gz
[linux-2.4.21-pre4.git] / drivers / char / epca.h
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 /* Begin code defines used for epca_setup */
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 /* End code defines used for epca_setup */
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
48 static 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
86 struct channel 
87 {
88         long   magic;
89         unchar boardnum;
90         unchar channelnum;
91         unchar omodem;         /* FEP output modem status     */
92         unchar imodem;         /* FEP input modem status      */
93         unchar modemfake;      /* Modem values to be forced   */
94         unchar modem;          /* Force values                */
95         unchar hflow;
96         unchar dsr;
97         unchar dcd;
98         unchar m_rts ;          /* The bits used in whatever FEP */
99         unchar m_dcd ;          /* is indiginous to this board to */
100         unchar m_dsr ;          /* represent each of the physical */
101         unchar m_cts ;          /* handshake lines */
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
149 struct 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