diff options
author | Linus Torvalds <torvalds@ppc970.osdl.org> | 2005-04-16 18:20:36 -0400 |
---|---|---|
committer | Linus Torvalds <torvalds@ppc970.osdl.org> | 2005-04-16 18:20:36 -0400 |
commit | 1da177e4c3f41524e886b7f1b8a0c1fc7321cac2 (patch) | |
tree | 0bba044c4ce775e45a88a51686b5d9f90697ea9d /drivers/char/ip2/i2cmd.c |
Linux-2.6.12-rc2v2.6.12-rc2
Initial git repository build. I'm not bothering with the full history,
even though we have it. We can create a separate "historical" git
archive of that later if we want to, and in the meantime it's about
3.2GB when imported into git - space that would just make the early
git days unnecessarily complicated, when we don't have a lot of good
infrastructure for it.
Let it rip!
Diffstat (limited to 'drivers/char/ip2/i2cmd.c')
-rw-r--r-- | drivers/char/ip2/i2cmd.c | 209 |
1 files changed, 209 insertions, 0 deletions
diff --git a/drivers/char/ip2/i2cmd.c b/drivers/char/ip2/i2cmd.c new file mode 100644 index 000000000000..fd299d6c42ac --- /dev/null +++ b/drivers/char/ip2/i2cmd.c | |||
@@ -0,0 +1,209 @@ | |||
1 | /******************************************************************************* | ||
2 | * | ||
3 | * (c) 1998 by Computone Corporation | ||
4 | * | ||
5 | ******************************************************************************** | ||
6 | * | ||
7 | * | ||
8 | * PACKAGE: Linux tty Device Driver for IntelliPort family of multiport | ||
9 | * serial I/O controllers. | ||
10 | * | ||
11 | * DESCRIPTION: Definition table for In-line and Bypass commands. Applicable | ||
12 | * only when the standard loadware is active. (This is included | ||
13 | * source code, not a separate compilation module.) | ||
14 | * | ||
15 | *******************************************************************************/ | ||
16 | |||
17 | //------------------------------------------------------------------------------ | ||
18 | // | ||
19 | // Revision History: | ||
20 | // | ||
21 | // 10 October 1991 MAG First Draft | ||
22 | // 7 November 1991 MAG Reflects additional commands. | ||
23 | // 24 February 1992 MAG Additional commands for 1.4.x loadware | ||
24 | // 11 March 1992 MAG Additional commands | ||
25 | // 30 March 1992 MAG Additional command: CMD_DSS_NOW | ||
26 | // 18 May 1992 MAG Discovered commands 39 & 40 must be at the end of a | ||
27 | // packet: affects implementation. | ||
28 | //------------------------------------------------------------------------------ | ||
29 | |||
30 | //************ | ||
31 | //* Includes * | ||
32 | //************ | ||
33 | |||
34 | #include "i2cmd.h" /* To get some bit-defines */ | ||
35 | |||
36 | //------------------------------------------------------------------------------ | ||
37 | // Here is the table of global arrays which represent each type of command | ||
38 | // supported in the IntelliPort standard loadware. See also i2cmd.h | ||
39 | // for a more complete explanation of what is going on. | ||
40 | //------------------------------------------------------------------------------ | ||
41 | |||
42 | // Here are the various globals: note that the names are not used except through | ||
43 | // the macros defined in i2cmd.h. Also note that although they are character | ||
44 | // arrays here (for extendability) they are cast to structure pointers in the | ||
45 | // i2cmd.h macros. See i2cmd.h for flags definitions. | ||
46 | |||
47 | // Length Flags Command | ||
48 | static UCHAR ct02[] = { 1, BTH, 0x02 }; // DTR UP | ||
49 | static UCHAR ct03[] = { 1, BTH, 0x03 }; // DTR DN | ||
50 | static UCHAR ct04[] = { 1, BTH, 0x04 }; // RTS UP | ||
51 | static UCHAR ct05[] = { 1, BTH, 0x05 }; // RTS DN | ||
52 | static UCHAR ct06[] = { 1, BYP, 0x06 }; // START FL | ||
53 | static UCHAR ct07[] = { 2, BTH, 0x07,0 }; // BAUD | ||
54 | static UCHAR ct08[] = { 2, BTH, 0x08,0 }; // BITS | ||
55 | static UCHAR ct09[] = { 2, BTH, 0x09,0 }; // STOP | ||
56 | static UCHAR ct10[] = { 2, BTH, 0x0A,0 }; // PARITY | ||
57 | static UCHAR ct11[] = { 2, BTH, 0x0B,0 }; // XON | ||
58 | static UCHAR ct12[] = { 2, BTH, 0x0C,0 }; // XOFF | ||
59 | static UCHAR ct13[] = { 1, BTH, 0x0D }; // STOP FL | ||
60 | static UCHAR ct14[] = { 1, BYP|VIP, 0x0E }; // ACK HOTK | ||
61 | //static UCHAR ct15[]={ 2, BTH|VIP, 0x0F,0 }; // IRQ SET | ||
62 | static UCHAR ct16[] = { 2, INL, 0x10,0 }; // IXONOPTS | ||
63 | static UCHAR ct17[] = { 2, INL, 0x11,0 }; // OXONOPTS | ||
64 | static UCHAR ct18[] = { 1, INL, 0x12 }; // CTSENAB | ||
65 | static UCHAR ct19[] = { 1, BTH, 0x13 }; // CTSDSAB | ||
66 | static UCHAR ct20[] = { 1, INL, 0x14 }; // DCDENAB | ||
67 | static UCHAR ct21[] = { 1, BTH, 0x15 }; // DCDDSAB | ||
68 | static UCHAR ct22[] = { 1, BTH, 0x16 }; // DSRENAB | ||
69 | static UCHAR ct23[] = { 1, BTH, 0x17 }; // DSRDSAB | ||
70 | static UCHAR ct24[] = { 1, BTH, 0x18 }; // RIENAB | ||
71 | static UCHAR ct25[] = { 1, BTH, 0x19 }; // RIDSAB | ||
72 | static UCHAR ct26[] = { 2, BTH, 0x1A,0 }; // BRKENAB | ||
73 | static UCHAR ct27[] = { 1, BTH, 0x1B }; // BRKDSAB | ||
74 | //static UCHAR ct28[]={ 2, BTH, 0x1C,0 }; // MAXBLOKSIZE | ||
75 | //static UCHAR ct29[]={ 2, 0, 0x1D,0 }; // reserved | ||
76 | static UCHAR ct30[] = { 1, INL, 0x1E }; // CTSFLOWENAB | ||
77 | static UCHAR ct31[] = { 1, INL, 0x1F }; // CTSFLOWDSAB | ||
78 | static UCHAR ct32[] = { 1, INL, 0x20 }; // RTSFLOWENAB | ||
79 | static UCHAR ct33[] = { 1, INL, 0x21 }; // RTSFLOWDSAB | ||
80 | static UCHAR ct34[] = { 2, BTH, 0x22,0 }; // ISTRIPMODE | ||
81 | static UCHAR ct35[] = { 2, BTH|END, 0x23,0 }; // SENDBREAK | ||
82 | static UCHAR ct36[] = { 2, BTH, 0x24,0 }; // SETERRMODE | ||
83 | //static UCHAR ct36a[]={ 3, INL, 0x24,0,0 }; // SET_REPLACE | ||
84 | |||
85 | // The following is listed for completeness, but should never be sent directly | ||
86 | // by user-level code. It is sent only by library routines in response to data | ||
87 | // movement. | ||
88 | //static UCHAR ct37[]={ 5, BYP|VIP, 0x25,0,0,0,0 }; // FLOW PACKET | ||
89 | |||
90 | // Back to normal | ||
91 | //static UCHAR ct38[] = {11, BTH|VAR, 0x26,0,0,0,0,0,0,0,0,0,0 }; // DEF KEY SEQ | ||
92 | //static UCHAR ct39[]={ 3, BTH|END, 0x27,0,0 }; // OPOSTON | ||
93 | //static UCHAR ct40[]={ 1, BTH|END, 0x28 }; // OPOSTOFF | ||
94 | static UCHAR ct41[] = { 1, BYP, 0x29 }; // RESUME | ||
95 | //static UCHAR ct42[]={ 2, BTH, 0x2A,0 }; // TXBAUD | ||
96 | //static UCHAR ct43[]={ 2, BTH, 0x2B,0 }; // RXBAUD | ||
97 | //static UCHAR ct44[]={ 2, BTH, 0x2C,0 }; // MS PING | ||
98 | //static UCHAR ct45[]={ 1, BTH, 0x2D }; // HOTENAB | ||
99 | //static UCHAR ct46[]={ 1, BTH, 0x2E }; // HOTDSAB | ||
100 | static UCHAR ct47[] = { 7, BTH, 0x2F,0,0,0,0,0,0 }; // UNIX FLAGS | ||
101 | //static UCHAR ct48[]={ 1, BTH, 0x30 }; // DSRFLOWENAB | ||
102 | //static UCHAR ct49[]={ 1, BTH, 0x31 }; // DSRFLOWDSAB | ||
103 | //static UCHAR ct50[]={ 1, BTH, 0x32 }; // DTRFLOWENAB | ||
104 | //static UCHAR ct51[]={ 1, BTH, 0x33 }; // DTRFLOWDSAB | ||
105 | //static UCHAR ct52[]={ 1, BTH, 0x34 }; // BAUDTABRESET | ||
106 | //static UCHAR ct53[] = { 3, BTH, 0x35,0,0 }; // BAUDREMAP | ||
107 | static UCHAR ct54[] = { 3, BTH, 0x36,0,0 }; // CUSTOMBAUD1 | ||
108 | static UCHAR ct55[] = { 3, BTH, 0x37,0,0 }; // CUSTOMBAUD2 | ||
109 | static UCHAR ct56[] = { 2, BTH|END, 0x38,0 }; // PAUSE | ||
110 | static UCHAR ct57[] = { 1, BYP, 0x39 }; // SUSPEND | ||
111 | static UCHAR ct58[] = { 1, BYP, 0x3A }; // UNSUSPEND | ||
112 | static UCHAR ct59[] = { 2, BTH, 0x3B,0 }; // PARITYCHK | ||
113 | static UCHAR ct60[] = { 1, INL|VIP, 0x3C }; // BOOKMARKREQ | ||
114 | //static UCHAR ct61[]={ 2, BTH, 0x3D,0 }; // INTERNALLOOP | ||
115 | //static UCHAR ct62[]={ 2, BTH, 0x3E,0 }; // HOTKTIMEOUT | ||
116 | static UCHAR ct63[] = { 2, INL, 0x3F,0 }; // SETTXON | ||
117 | static UCHAR ct64[] = { 2, INL, 0x40,0 }; // SETTXOFF | ||
118 | //static UCHAR ct65[]={ 2, BTH, 0x41,0 }; // SETAUTORTS | ||
119 | //static UCHAR ct66[]={ 2, BTH, 0x42,0 }; // SETHIGHWAT | ||
120 | //static UCHAR ct67[]={ 2, BYP, 0x43,0 }; // STARTSELFL | ||
121 | //static UCHAR ct68[]={ 2, INL, 0x44,0 }; // ENDSELFL | ||
122 | //static UCHAR ct69[]={ 1, BYP, 0x45 }; // HWFLOW_OFF | ||
123 | //static UCHAR ct70[]={ 1, BTH, 0x46 }; // ODSRFL_ENAB | ||
124 | //static UCHAR ct71[]={ 1, BTH, 0x47 }; // ODSRFL_DSAB | ||
125 | //static UCHAR ct72[]={ 1, BTH, 0x48 }; // ODCDFL_ENAB | ||
126 | //static UCHAR ct73[]={ 1, BTH, 0x49 }; // ODCDFL_DSAB | ||
127 | //static UCHAR ct74[]={ 2, BTH, 0x4A,0 }; // LOADLEVEL | ||
128 | //static UCHAR ct75[]={ 2, BTH, 0x4B,0 }; // STATDATA | ||
129 | //static UCHAR ct76[]={ 1, BYP, 0x4C }; // BREAK_ON | ||
130 | //static UCHAR ct77[]={ 1, BYP, 0x4D }; // BREAK_OFF | ||
131 | //static UCHAR ct78[]={ 1, BYP, 0x4E }; // GETFC | ||
132 | static UCHAR ct79[] = { 2, BYP, 0x4F,0 }; // XMIT_NOW | ||
133 | //static UCHAR ct80[]={ 4, BTH, 0x50,0,0,0 }; // DIVISOR_LATCH | ||
134 | //static UCHAR ct81[]={ 1, BYP, 0x51 }; // GET_STATUS | ||
135 | //static UCHAR ct82[]={ 1, BYP, 0x52 }; // GET_TXCNT | ||
136 | //static UCHAR ct83[]={ 1, BYP, 0x53 }; // GET_RXCNT | ||
137 | //static UCHAR ct84[]={ 1, BYP, 0x54 }; // GET_BOXIDS | ||
138 | //static UCHAR ct85[]={10, BYP, 0x55,0,0,0,0,0,0,0,0,0 }; // ENAB_MULT | ||
139 | //static UCHAR ct86[]={ 2, BTH, 0x56,0 }; // RCV_ENABLE | ||
140 | static UCHAR ct87[] = { 1, BYP, 0x57 }; // HW_TEST | ||
141 | //static UCHAR ct88[]={ 3, BTH, 0x58,0,0 }; // RCV_THRESHOLD | ||
142 | static UCHAR ct89[]={ 1, BYP, 0x59 }; // DSS_NOW | ||
143 | //static UCHAR ct90[]={ 3, BYP, 0x5A,0,0 }; // Set SILO | ||
144 | //static UCHAR ct91[]={ 2, BYP, 0x5B,0 }; // timed break | ||
145 | |||
146 | // Some composite commands as well | ||
147 | //static UCHAR cc01[]={ 2, BTH, 0x02,0x04 }; // DTR & RTS UP | ||
148 | //static UCHAR cc02[]={ 2, BTH, 0x03,0x05 }; // DTR & RTS DN | ||
149 | |||
150 | //******** | ||
151 | //* Code * | ||
152 | //******** | ||
153 | |||
154 | //****************************************************************************** | ||
155 | // Function: i2cmdUnixFlags(iflag, cflag, lflag) | ||
156 | // Parameters: Unix tty flags | ||
157 | // | ||
158 | // Returns: Pointer to command structure | ||
159 | // | ||
160 | // Description: | ||
161 | // | ||
162 | // This routine sets the parameters of command 47 and returns a pointer to the | ||
163 | // appropriate structure. | ||
164 | //****************************************************************************** | ||
165 | cmdSyntaxPtr | ||
166 | i2cmdUnixFlags(unsigned short iflag,unsigned short cflag,unsigned short lflag) | ||
167 | { | ||
168 | cmdSyntaxPtr pCM = (cmdSyntaxPtr) ct47; | ||
169 | |||
170 | pCM->cmd[1] = (unsigned char) iflag; | ||
171 | pCM->cmd[2] = (unsigned char) (iflag >> 8); | ||
172 | pCM->cmd[3] = (unsigned char) cflag; | ||
173 | pCM->cmd[4] = (unsigned char) (cflag >> 8); | ||
174 | pCM->cmd[5] = (unsigned char) lflag; | ||
175 | pCM->cmd[6] = (unsigned char) (lflag >> 8); | ||
176 | return pCM; | ||
177 | } | ||
178 | |||
179 | //****************************************************************************** | ||
180 | // Function: i2cmdBaudDef(which, rate) | ||
181 | // Parameters: ? | ||
182 | // | ||
183 | // Returns: Pointer to command structure | ||
184 | // | ||
185 | // Description: | ||
186 | // | ||
187 | // This routine sets the parameters of commands 54 or 55 (according to the | ||
188 | // argument which), and returns a pointer to the appropriate structure. | ||
189 | //****************************************************************************** | ||
190 | cmdSyntaxPtr | ||
191 | i2cmdBaudDef(int which, unsigned short rate) | ||
192 | { | ||
193 | cmdSyntaxPtr pCM; | ||
194 | |||
195 | switch(which) | ||
196 | { | ||
197 | case 1: | ||
198 | pCM = (cmdSyntaxPtr) ct54; | ||
199 | break; | ||
200 | default: | ||
201 | case 2: | ||
202 | pCM = (cmdSyntaxPtr) ct55; | ||
203 | break; | ||
204 | } | ||
205 | pCM->cmd[1] = (unsigned char) rate; | ||
206 | pCM->cmd[2] = (unsigned char) (rate >> 8); | ||
207 | return pCM; | ||
208 | } | ||
209 | |||