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