]> git.karo-electronics.de Git - karo-tx-linux.git/blob - drivers/staging/dgnc/digi.h
Merge branch 'smp-urgent-for-linus' of git://git.kernel.org/pub/scm/linux/kernel...
[karo-tx-linux.git] / drivers / staging / dgnc / digi.h
1 /*
2  * Copyright 2003 Digi International (www.digi.com)
3  *      Scott H Kilau <Scott_Kilau at digi dot com>
4  *
5  * This program is free software; you can redistribute it and/or modify
6  * it under the terms of the GNU General Public License as published by
7  * the Free Software Foundation; either version 2, or (at your option)
8  * any later version.
9  *
10  * This program is distributed in the hope that it will be useful,
11  * but WITHOUT ANY WARRANTY, EXPRESS OR IMPLIED; without even the
12  * implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR
13  * PURPOSE.  See the GNU General Public License for more details.
14  */
15
16 #ifndef __DIGI_H
17 #define __DIGI_H
18
19 #ifndef TIOCM_LE
20 #define         TIOCM_LE        0x01            /* line enable */
21 #define         TIOCM_DTR       0x02            /* data terminal ready */
22 #define         TIOCM_RTS       0x04            /* request to send */
23 #define         TIOCM_ST        0x08            /* secondary transmit */
24 #define         TIOCM_SR        0x10            /* secondary receive */
25 #define         TIOCM_CTS       0x20            /* clear to send */
26 #define         TIOCM_CAR       0x40            /* carrier detect */
27 #define         TIOCM_RNG       0x80            /* ring indicator */
28 #define         TIOCM_DSR       0x100           /* data set ready */
29 #define         TIOCM_RI        TIOCM_RNG       /* ring (alternate) */
30 #define         TIOCM_CD        TIOCM_CAR       /* carrier detect (alt) */
31 #endif
32
33 #if !defined(TIOCMSET)
34 #define TIOCMSET        (('d' << 8) | 252)      /* set modem ctrl state */
35 #define TIOCMGET        (('d' << 8) | 253)      /* set modem ctrl state */
36 #endif
37
38 #if !defined(TIOCMBIC)
39 #define TIOCMBIC        (('d' << 8) | 254)      /* set modem ctrl state */
40 #define TIOCMBIS        (('d' << 8) | 255)      /* set modem ctrl state */
41 #endif
42
43 #define DIGI_GETA       (('e' << 8) | 94)       /* Read params */
44 #define DIGI_SETA       (('e' << 8) | 95)       /* Set params */
45 #define DIGI_SETAW      (('e' << 8) | 96)       /* Drain & set params */
46 #define DIGI_SETAF      (('e' << 8) | 97)       /* Drain, flush & set params */
47 #define DIGI_GET_NI_INFO (('d' << 8) | 250)     /* Non-intelligent state info */
48 #define DIGI_LOOPBACK (('d' << 8) | 252)        /*
49                                                  * Enable/disable UART
50                                                  * internal loopback
51                                                  */
52 #define DIGI_FAST       0x0002          /* Fast baud rates */
53 #define RTSPACE         0x0004          /* RTS input flow control */
54 #define CTSPACE         0x0008          /* CTS output flow control */
55 #define DIGI_COOK       0x0080          /* Cooked processing done in FEP */
56 #define DIGI_FORCEDCD   0x0100          /* Force carrier */
57 #define DIGI_ALTPIN     0x0200          /* Alternate RJ-45 pin config */
58 #define DIGI_PRINTER    0x0800          /* Hold port open for flow cntrl*/
59 #define DIGI_DTR_TOGGLE 0x2000          /* Support DTR Toggle */
60 #define DIGI_RTS_TOGGLE 0x8000          /* Support RTS Toggle */
61 #define DIGI_PLEN       28              /* String length */
62 #define DIGI_TSIZ       10              /* Terminal string len */
63
64 /*
65  * Structure used with ioctl commands for DIGI parameters.
66  */
67 struct digi_t {
68         unsigned short  digi_flags;             /* Flags (see above) */
69         unsigned short  digi_maxcps;            /* Max printer CPS */
70         unsigned short  digi_maxchar;           /* Max chars in print queue */
71         unsigned short  digi_bufsize;           /* Buffer size */
72         unsigned char   digi_onlen;             /* Length of ON string */
73         unsigned char   digi_offlen;            /* Length of OFF string */
74         char            digi_onstr[DIGI_PLEN];  /* Printer on string */
75         char            digi_offstr[DIGI_PLEN]; /* Printer off string */
76         char            digi_term[DIGI_TSIZ];   /* terminal string */
77 };
78
79 /* Structure to get driver status information */
80
81 struct digi_dinfo {
82         unsigned int    dinfo_nboards;          /* # boards configured */
83         char            dinfo_reserved[12];     /* for future expansion */
84         char            dinfo_version[16];      /* driver version */
85 };
86
87 #define DIGI_GETDD      (('d' << 8) | 248)      /* get driver info */
88
89 /*
90  * Structure used with ioctl commands for per-board information
91  *
92  * physsize and memsize differ when board has "windowed" memory
93  */
94 struct digi_info {
95         unsigned int    info_bdnum;             /* Board number (0 based) */
96         unsigned int    info_ioport;            /* io port address */
97         unsigned int    info_physaddr;          /* memory address */
98         unsigned int    info_physsize;          /* Size of host mem window */
99         unsigned int    info_memsize;           /* Amount of dual-port mem */
100                                                 /* on board */
101         unsigned short  info_bdtype;            /* Board type */
102         unsigned short  info_nports;            /* number of ports */
103         char            info_bdstate;           /* board state */
104         char            info_reserved[7];       /* for future expansion */
105 };
106
107 #define DIGI_GETBD      (('d' << 8) | 249)      /* get board info */
108
109 struct digi_getbuffer /* Struct for holding buffer use counts */
110 {
111         unsigned long tx_in;
112         unsigned long tx_out;
113         unsigned long rxbuf;
114         unsigned long txbuf;
115         unsigned long txdone;
116 };
117
118 struct digi_getcounter {
119         unsigned long norun;            /* number of UART overrun errors */
120         unsigned long noflow;           /* number of buffer overflow errors */
121         unsigned long nframe;           /* number of framing errors */
122         unsigned long nparity;          /* number of parity errors */
123         unsigned long nbreak;           /* number of breaks received */
124         unsigned long rbytes;           /* number of received bytes */
125         unsigned long tbytes;           /* number of bytes transmitted fully */
126 };
127
128 /* Board State Definitions */
129 #define BD_RUNNING      0x0
130 #define BD_NOFEP        0x5
131
132 #define DIGI_SETCUSTOMBAUD _IOW('e', 106, int)  /* Set integer baud rate */
133 #define DIGI_GETCUSTOMBAUD _IOR('e', 107, int)  /* Get integer baud rate */
134
135 #define DIGI_REALPORT_GETBUFFERS (('e' << 8) | 108)
136 #define DIGI_REALPORT_SENDIMMEDIATE (('e' << 8) | 109)
137 #define DIGI_REALPORT_GETCOUNTERS (('e' << 8) | 110)
138 #define DIGI_REALPORT_GETEVENTS (('e' << 8) | 111)
139
140 #define EV_OPU 0x0001 /* !<Output paused by client */
141 #define EV_OPS 0x0002 /* !<Output paused by regular sw flowctrl */
142 #define EV_IPU 0x0010 /* !<Input paused unconditionally by user */
143 #define EV_IPS 0x0020 /* !<Input paused by high/low water marks */
144 #define EV_TXB 0x0040 /* !<Transmit break pending */
145
146 /*
147  * This structure holds data needed for the intelligent <--> nonintelligent
148  * DPA translation
149  */
150 struct ni_info {
151         int board;
152         int channel;
153         int dtr;
154         int rts;
155         int cts;
156         int dsr;
157         int ri;
158         int dcd;
159         int curtx;
160         int currx;
161         unsigned short iflag;
162         unsigned short oflag;
163         unsigned short cflag;
164         unsigned short lflag;
165         unsigned int mstat;
166         unsigned char hflow;
167         unsigned char xmit_stopped;
168         unsigned char recv_stopped;
169         unsigned int baud;
170 };
171
172 #define T_CLASSIC 0002
173 #define T_PCIBUS 0400
174 #define T_NEO_EXPRESS 0001
175 #define T_NEO 0000
176
177 #define TTY_FLIPBUF_SIZE 512
178 #endif /* DIGI_H */