Linus Torvalds | 1da177e | 2005-04-16 15:20:36 -0700 | [diff] [blame] | 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 |
Adrian Bunk | 995c6ed | 2005-06-25 14:59:16 -0700 | [diff] [blame] | 100 | //static UCHAR ct47[]={ 7, BTH, 0x2F,0,0,0,0,0,0 }; // UNIX FLAGS |
Linus Torvalds | 1da177e | 2005-04-16 15:20:36 -0700 | [diff] [blame] | 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 |
Linus Torvalds | 1da177e | 2005-04-16 15:20:36 -0700 | [diff] [blame] | 142 | //static UCHAR ct90[]={ 3, BYP, 0x5A,0,0 }; // Set SILO |
| 143 | //static UCHAR ct91[]={ 2, BYP, 0x5B,0 }; // timed break |
| 144 | |
| 145 | // Some composite commands as well |
| 146 | //static UCHAR cc01[]={ 2, BTH, 0x02,0x04 }; // DTR & RTS UP |
| 147 | //static UCHAR cc02[]={ 2, BTH, 0x03,0x05 }; // DTR & RTS DN |
| 148 | |
| 149 | //******** |
| 150 | //* Code * |
| 151 | //******** |
| 152 | |
| 153 | //****************************************************************************** |
| 154 | // Function: i2cmdUnixFlags(iflag, cflag, lflag) |
| 155 | // Parameters: Unix tty flags |
| 156 | // |
| 157 | // Returns: Pointer to command structure |
| 158 | // |
| 159 | // Description: |
| 160 | // |
| 161 | // This routine sets the parameters of command 47 and returns a pointer to the |
| 162 | // appropriate structure. |
| 163 | //****************************************************************************** |
Adrian Bunk | 995c6ed | 2005-06-25 14:59:16 -0700 | [diff] [blame] | 164 | #if 0 |
Linus Torvalds | 1da177e | 2005-04-16 15:20:36 -0700 | [diff] [blame] | 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 | } |
Adrian Bunk | 995c6ed | 2005-06-25 14:59:16 -0700 | [diff] [blame] | 178 | #endif /* 0 */ |
Linus Torvalds | 1da177e | 2005-04-16 15:20:36 -0700 | [diff] [blame] | 179 | |
| 180 | //****************************************************************************** |
| 181 | // Function: i2cmdBaudDef(which, rate) |
| 182 | // Parameters: ? |
| 183 | // |
| 184 | // Returns: Pointer to command structure |
| 185 | // |
| 186 | // Description: |
| 187 | // |
| 188 | // This routine sets the parameters of commands 54 or 55 (according to the |
| 189 | // argument which), and returns a pointer to the appropriate structure. |
| 190 | //****************************************************************************** |
Adrian Bunk | 995c6ed | 2005-06-25 14:59:16 -0700 | [diff] [blame] | 191 | static cmdSyntaxPtr |
Linus Torvalds | 1da177e | 2005-04-16 15:20:36 -0700 | [diff] [blame] | 192 | i2cmdBaudDef(int which, unsigned short rate) |
| 193 | { |
| 194 | cmdSyntaxPtr pCM; |
| 195 | |
| 196 | switch(which) |
| 197 | { |
| 198 | case 1: |
| 199 | pCM = (cmdSyntaxPtr) ct54; |
| 200 | break; |
| 201 | default: |
| 202 | case 2: |
| 203 | pCM = (cmdSyntaxPtr) ct55; |
| 204 | break; |
| 205 | } |
| 206 | pCM->cmd[1] = (unsigned char) rate; |
| 207 | pCM->cmd[2] = (unsigned char) (rate >> 8); |
| 208 | return pCM; |
| 209 | } |
| 210 | |