]> git.proxmox.com Git - mirror_ubuntu-bionic-kernel.git/blob - drivers/staging/dgnc/digi.h
Merge tag 'iio-for-4.8b' of git://git.kernel.org/pub/scm/linux/kernel/git/jic23/iio...
[mirror_ubuntu-bionic-kernel.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 /************************************************************************
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 tx_in;
113 unsigned long tx_out;
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 */