Add the rt linux 4.1.3-rt3 as base
[kvmfornfv.git] / kernel / 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 /************************************************************************
80  * Structure to get driver status information
81  ************************************************************************/
82 struct digi_dinfo {
83         unsigned int    dinfo_nboards;          /* # boards configured  */
84         char            dinfo_reserved[12];     /* for future expansion */
85         char            dinfo_version[16];      /* driver version       */
86 };
87
88 #define DIGI_GETDD      (('d'<<8) | 248)        /* get driver info      */
89
90 /************************************************************************
91  * Structure used with ioctl commands for per-board information
92  *
93  * physsize and memsize differ when board has "windowed" memory
94  ************************************************************************/
95 struct digi_info {
96         unsigned int    info_bdnum;             /* Board number (0 based)  */
97         unsigned int    info_ioport;            /* io port address         */
98         unsigned int    info_physaddr;          /* memory address          */
99         unsigned int    info_physsize;          /* Size of host mem window */
100         unsigned int    info_memsize;           /* Amount of dual-port mem */
101                                                 /* on board                */
102         unsigned short  info_bdtype;            /* Board type              */
103         unsigned short  info_nports;            /* number of ports         */
104         char            info_bdstate;           /* board state             */
105         char            info_reserved[7];       /* for future expansion    */
106 };
107
108 #define DIGI_GETBD      (('d'<<8) | 249)        /* get board info          */
109
110 struct digi_getbuffer /* Struct for holding buffer use counts */
111 {
112         unsigned long tIn;
113         unsigned long tOut;
114         unsigned long rxbuf;
115         unsigned long txbuf;
116         unsigned long txdone;
117 };
118
119 struct digi_getcounter {
120         unsigned long norun;            /* number of UART overrun errors */
121         unsigned long noflow;           /* number of buffer overflow errors */
122         unsigned long nframe;           /* number of framing errors */
123         unsigned long nparity;          /* number of parity errors */
124         unsigned long nbreak;           /* number of breaks received */
125         unsigned long rbytes;           /* number of received bytes */
126         unsigned long tbytes;           /* number of bytes transmitted fully */
127 };
128
129 /* Board State Definitions */
130 #define BD_RUNNING      0x0
131 #define BD_NOFEP        0x5
132
133 #define DIGI_SETCUSTOMBAUD      _IOW('e', 106, int)     /* Set integer baud rate */
134 #define DIGI_GETCUSTOMBAUD      _IOR('e', 107, int)     /* Get integer baud rate */
135
136 #define DIGI_REALPORT_GETBUFFERS (('e'<<8) | 108)
137 #define DIGI_REALPORT_SENDIMMEDIATE (('e'<<8) | 109)
138 #define DIGI_REALPORT_GETCOUNTERS (('e'<<8) | 110)
139 #define DIGI_REALPORT_GETEVENTS (('e'<<8) | 111)
140
141 #define EV_OPU          0x0001          /* !<Output paused by client */
142 #define EV_OPS          0x0002          /* !<Output paused by reqular sw flowctrl */
143 #define EV_IPU          0x0010          /* !<Input paused unconditionally by user */
144 #define EV_IPS          0x0020          /* !<Input paused by high/low water marks */
145 #define EV_TXB          0x0040          /* !<Transmit break pending */
146
147 /*
148  * This structure holds data needed for the intelligent <--> nonintelligent
149  * DPA translation
150  */
151 struct ni_info {
152         int board;
153         int channel;
154         int dtr;
155         int rts;
156         int cts;
157         int dsr;
158         int ri;
159         int dcd;
160         int curtx;
161         int currx;
162         unsigned short iflag;
163         unsigned short oflag;
164         unsigned short cflag;
165         unsigned short lflag;
166         unsigned int mstat;
167         unsigned char hflow;
168         unsigned char xmit_stopped;
169         unsigned char recv_stopped;
170         unsigned int baud;
171 };
172
173 #define T_CLASSIC 0002
174 #define T_PCIBUS 0400
175 #define T_NEO_EXPRESS 0001
176 #define T_NEO 0000
177
178 #define TTY_FLIPBUF_SIZE 512
179 #endif /* DIGI_H */