Add the rt linux 4.1.3-rt3 as base
[kvmfornfv.git] / kernel / drivers / usb / serial / keyspan_usa90msg.h
diff --git a/kernel/drivers/usb/serial/keyspan_usa90msg.h b/kernel/drivers/usb/serial/keyspan_usa90msg.h
new file mode 100644 (file)
index 0000000..86708ec
--- /dev/null
@@ -0,0 +1,198 @@
+/*
+       usa90msg.h
+
+       Copyright (c) 1998-2003 InnoSys Incorporated.  All Rights Reserved
+       This file is available under a BSD-style copyright
+
+       Keyspan USB Async Message Formats for the USA19HS
+
+       Redistribution and use in source and binary forms, with or without
+       modification, are permitted provided that the following conditions are
+       met:
+
+       1. Redistributions of source code must retain this licence text
+       without modification, this list of conditions, and the following
+       disclaimer.  The following copyright notice must appear immediately at
+       the beginning of all source files:
+
+               Copyright (c) 1998-2003 InnoSys Incorporated.  All Rights Reserved
+
+               This file is available under a BSD-style copyright
+
+       2. The name of InnoSys Incorporated may not be used to endorse or promote
+       products derived from this software without specific prior written
+       permission.
+
+       THIS SOFTWARE IS PROVIDED BY INNOSYS CORP. ``AS IS'' AND ANY EXPRESS OR
+       IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
+       OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN
+       NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT,
+       INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
+       (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
+       SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
+       CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
+       LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
+       OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
+       SUCH DAMAGE.    
+
+       Revisions:
+
+       2003feb14               add setTxMode/txMode  and cancelRxXoff to portControl
+       2003mar21               change name of PARITY_0/1 to add MARK/SPACE
+*/
+
+#ifndef        __USA90MSG__
+#define        __USA90MSG__
+
+struct keyspan_usa90_portControlMessage
+{
+       /*
+               there are three types of "commands" sent in the control message:
+
+               1.      configuration changes which must be requested by setting
+                       the corresponding "set" flag (and should only be requested
+                       when necessary, to reduce overhead on the device):
+       */
+
+       u8      setClocking,    // host requests baud rate be set
+               baudLo,                 // host does baud divisor calculation
+               baudHi,                 // host does baud divisor calculation 
+               
+               setLcr,                 // host requests lcr be set
+               lcr,                    // use PARITY, STOPBITS, DATABITS below
+               
+               setRxMode,              // set receive mode
+               rxMode,                 // RXMODE_DMA or RXMODE_BYHAND
+
+               setTxMode,              // set transmit mode
+               txMode,                 // TXMODE_DMA or TXMODE_BYHAND
+
+               setTxFlowControl,       // host requests tx flow control be set
+               txFlowControl   ,       // use TX_FLOW... bits below
+               setRxFlowControl,       // host requests rx flow control be set
+               rxFlowControl,  // use RX_FLOW... bits below
+               sendXoff,               // host requests XOFF transmitted immediately
+               sendXon,                // host requests XON char transmitted
+               xonChar,                // specified in current character format
+               xoffChar,               // specified in current character format
+
+               sendChar,               // host requests char transmitted immediately
+               txChar,                 // character to send
+
+               setRts,                 // host requests RTS output be set
+               rts,                    // 1=on, 0=off
+               setDtr,                 // host requests DTR output be set
+               dtr;                    // 1=on, 0=off
+
+       
+       /*
+               2.      configuration data which is simply used as is 
+                       and must be specified correctly in every host message.
+       */
+
+       u8      rxForwardingLength,  // forward when this number of chars available
+               rxForwardingTimeout, // (1-31 in ms)
+               txAckSetting;      // 0=don't ack, 1=normal, 2-255 TBD...
+       /*
+               3.      Firmware states which cause actions if they change                                      
+               and must be specified correctly in every host message.
+       */
+
+       u8      portEnabled,    // 0=disabled, 1=enabled
+               txFlush,                // 0=normal, 1=toss outbound data
+               txBreak,                // 0=break off, 1=break on
+               loopbackMode;   // 0=no loopback, 1=loopback enabled
+
+       /*
+               4.      commands which are flags only; these are processed in order
+                       (so that, e.g., if rxFlush and rxForward flags are set, the
+                       port will have no data to forward); any non-zero value 
+                       is respected
+       */
+
+       u8      rxFlush,                // toss inbound data
+               rxForward,              // forward all inbound data, NOW (as if fwdLen==1)
+               cancelRxXoff,   // cancel any receive XOFF state (_txXoff)
+               returnStatus;   // return current status NOW
+};
+
+// defines for bits in lcr
+#define                USA_DATABITS_5          0x00
+#define                USA_DATABITS_6          0x01
+#define                USA_DATABITS_7          0x02
+#define                USA_DATABITS_8          0x03
+#define                STOPBITS_5678_1         0x00    // 1 stop bit for all byte sizes
+#define                STOPBITS_5_1p5          0x04    // 1.5 stop bits for 5-bit byte
+#define                STOPBITS_678_2          0x04    // 2 stop bits for 6-8 bit byte
+#define                USA_PARITY_NONE         0x00
+#define                USA_PARITY_ODD          0x08
+#define                USA_PARITY_EVEN         0x18
+#define                PARITY_MARK_1           0x28    // force parity MARK
+#define                PARITY_SPACE_0          0x38    // force parity SPACE
+
+#define                TXFLOW_CTS                      0x04    
+#define                TXFLOW_DSR                      0x08
+#define                TXFLOW_XOFF                     0x01    
+#define                TXFLOW_XOFF_ANY         0x02    
+#define                TXFLOW_XOFF_BITS        (TXFLOW_XOFF | TXFLOW_XOFF_ANY)
+
+#define                RXFLOW_XOFF                     0x10    
+#define                RXFLOW_RTS                      0x20    
+#define                RXFLOW_DTR                      0x40
+#define                RXFLOW_DSR_SENSITIVITY  0x80
+
+#define                RXMODE_BYHAND           0x00    
+#define                RXMODE_DMA                      0x02    
+
+#define                TXMODE_BYHAND           0x00    
+#define                TXMODE_DMA                      0x02    
+
+
+// all things called "StatusMessage" are sent on the status endpoint
+
+struct keyspan_usa90_portStatusMessage 
+{
+       u8      msr,                    // reports the actual MSR register
+               cts,                    // reports CTS pin
+               dcd,                    // reports DCD pin
+               dsr,                    // reports DSR pin
+               ri,                             // reports RI pin
+               _txXoff,                // port is in XOFF state (we received XOFF)
+               rxBreak,                // reports break state
+               rxOverrun,              // count of overrun errors (since last reported)
+               rxParity,               // count of parity errors (since last reported)
+               rxFrame,                // count of frame errors (since last reported)
+               portState,              // PORTSTATE_xxx bits (useful for debugging)
+               messageAck,             // message acknowledgement
+               charAck,                // character acknowledgement
+               controlResponse;        // (value = returnStatus) a control message has been processed 
+};
+
+// bits in RX data message when STAT byte is included
+
+#define        RXERROR_OVERRUN         0x02
+#define        RXERROR_PARITY          0x04
+#define        RXERROR_FRAMING         0x08
+#define        RXERROR_BREAK           0x10
+
+#define        PORTSTATE_ENABLED       0x80
+#define        PORTSTATE_TXFLUSH       0x01
+#define        PORTSTATE_TXBREAK       0x02
+#define        PORTSTATE_LOOPBACK      0x04
+
+// MSR bits
+
+#define USA_MSR_dCTS                   0x01            // CTS has changed since last report    
+#define USA_MSR_dDSR                   0x02
+#define USA_MSR_dRI                    0x04
+#define USA_MSR_dDCD                   0x08
+
+#define USA_MSR_CTS                    0x10            // current state of CTS
+#define USA_MSR_DSR                    0x20
+#define USA_USA_MSR_RI                 0x40
+#define MSR_DCD                                0x80
+
+// ie: the maximum length of an endpoint buffer
+#define                MAX_DATA_LEN                    64
+
+#endif