patch-2.4.20 linux-2.4.20/drivers/usb/serial/keyspan_usa49msg.h
Next file: linux-2.4.20/drivers/usb/serial/keyspan_usa49w_fw.h
Previous file: linux-2.4.20/drivers/usb/serial/keyspan_usa28xb_fw.h
Back to the patch index
Back to the overall index
- Lines: 161
- Date:
Thu Nov 28 15:53:15 2002
- Orig file:
linux-2.4.19/drivers/usb/serial/keyspan_usa49msg.h
- Orig date:
Tue Oct 9 15:15:03 2001
diff -urN linux-2.4.19/drivers/usb/serial/keyspan_usa49msg.h linux-2.4.20/drivers/usb/serial/keyspan_usa49msg.h
@@ -41,14 +41,10 @@
4th revision: USA49W version
- See usa26msg.h for description of message formats
-
- Third revision: USA28X version (aka USA26)
-
Buffer formats for RX/TX data messages are not defined by
a structure, but are described here:
- USB OUT (host -> USA26, transmit) messages contain a
+ USB OUT (host -> USAxx, transmit) messages contain a
REQUEST_ACK indicator (set to 0xff to request an ACK at the
completion of transmit; 0x00 otherwise), followed by data:
@@ -56,17 +52,28 @@
with a total data length of 63.
- USB IN (USA26 -> host, receive) messages contain either a zero
- flag (indicating no error in any data bytes):
+ USB IN (USAxx -> host, receive) messages begin with a status
+ byte in which the 0x80 bit is either:
+
+ (a) 0x80 bit clear
+ indicates that the bytes following it are all data
+ bytes:
+
+ STAT DATA DATA DATA DATA DATA ...
+
+ for a total of up to 63 DATA bytes,
+
+ or:
- 00 DAT DAT DAT ...
+ (b) 0x80 bit set
+ indiates that the bytes following alternate data and
+ status bytes:
- for a total of 63 data bytes, or a non-zero status flag (indicating
- that all data bytes will be preceded by status flag):
+ STAT DATA STAT DATA STAT DATA STAT DATA ...
- STAT DAT STAT DAT STAT DAT ...
+ for a total of up to 32 DATA bytes.
- for a total of 32 data bytes. The valid bits in the STAT bytes are:
+ The valid bits in the STAT bytes are:
OVERRUN 0x02
PARITY 0x04
@@ -75,9 +82,19 @@
Notes:
- 1. a "no status" RX data message (first byte zero) can serve as
- a "break off" indicator.
- 2. a control message specifying disablePort will be answered
+ (1) The OVERRUN bit can appear in either (a) or (b) format
+ messages, but the but the PARITY/FRAMING/BREAK bits
+ only appear in (b) format messages.
+ (2) For the host to determine the exact point at which the
+ overrun occurred (to identify the point in the data
+ stream at which the data was lost), it needs to count
+ 128 characters, starting at the first character of the
+ message in which OVERRUN was reported; the lost character(s)
+ would have been received between the 128th and 129th
+ characters.
+ (3) An RX data message in which the first byte has 0x80 clear
+ serves as a "break off" indicator.
+ (4) a control message specifying disablePort will be answered
with a status message, but no further status will be sent
until a control messages with enablePort is sent
@@ -92,6 +109,7 @@
2000mar09 change to support 4 ports
2000may03 change external clocking to match USA-49W hardware
2000jun01 add extended BSD-style copyright text
+ 2001jul05 change message format to improve OVERRUN case
*/
#ifndef __USA49MSG__
@@ -107,7 +125,7 @@
0x80 globalControlMessage
*/
-typedef struct keyspan_usa49_portControlMessage
+struct keyspan_usa49_portControlMessage
{
/*
0. 0/1/2/3 port control message follows
@@ -173,7 +191,7 @@
enablePort, // start servicing port (move data, check status)
disablePort; // stop servicing port (does implicit tx/rx flush/off)
-} keyspan_usa49_portControlMessage;
+};
// defines for bits in lcr
#define USA_DATABITS_5 0x00
@@ -201,7 +219,7 @@
sends any control message (either global or port-specific).
*/
-typedef struct keyspan_usa49_globalControlMessage
+struct keyspan_usa49_globalControlMessage
{
u8 portNumber, // 0x80
sendGlobalStatus, // 1/2=number of status responses requested
@@ -209,7 +227,7 @@
resetStatusCount, // a cycling value
remoteWakeupEnable, // 0x10=P1, 0x20=P2, 0x40=P3, 0x80=P4
disableStatusMessages; // 1=send no status until host talks
-} keyspan_usa49_globalControlMessage;
+};
/*
Device->host messages send on the global status endpoint
@@ -221,7 +239,7 @@
0x81 globalDebugMessage
*/
-typedef struct keyspan_usa49_portStatusMessage // one for each port
+struct keyspan_usa49_portStatusMessage // one for each port
{
u8 portNumber, // 0,1,2,3
cts, // reports CTS pin
@@ -234,7 +252,7 @@
controlResponse,// 1=a control message has been processed
txAck, // ACK (data TX complete)
rs232valid; // RS-232 signal valid
-} keyspan_usa49_portStatusMessage;
+};
// bits in RX data message when STAT byte is included
#define RXERROR_OVERRUN 0x02
@@ -242,19 +260,19 @@
#define RXERROR_FRAMING 0x08
#define RXERROR_BREAK 0x10
-typedef struct keyspan_usa49_globalStatusMessage
+struct keyspan_usa49_globalStatusMessage
{
u8 portNumber, // 0x80=globalStatusMessage
sendGlobalStatus, // from request, decremented
resetStatusCount; // as in request
-} keyspan_usa49_globalStatusMessage;
+};
-typedef struct keyspan_usa49_globalDebugMessage
+struct keyspan_usa49_globalDebugMessage
{
u8 portNumber, // 0x81=globalDebugMessage
n, // typically a count/status byte
b; // typically a data byte
-} keyspan_usa49_globalDebugMessage;
+};
// ie: the maximum length of an EZUSB endpoint buffer
#define MAX_DATA_LEN 64
FUNET's LINUX-ADM group, linux-adm@nic.funet.fi
TCL-scripts by Sam Shen (who was at: slshen@lbl.gov)