| 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 |  |