patch-2.4.20 linux-2.4.20/drivers/usb/serial/keyspan_usa26msg.h
Next file: linux-2.4.20/drivers/usb/serial/keyspan_usa28_fw.h
Previous file: linux-2.4.20/drivers/usb/serial/keyspan_usa19w_fw.h
Back to the patch index
Back to the overall index
- Lines: 146
- Date:
Thu Nov 28 15:53:14 2002
- Orig file:
linux-2.4.19/drivers/usb/serial/keyspan_usa26msg.h
- Orig date:
Tue Oct 9 15:15:02 2001
diff -urN linux-2.4.19/drivers/usb/serial/keyspan_usa26msg.h linux-2.4.20/drivers/usb/serial/keyspan_usa26msg.h
@@ -44,7 +44,7 @@
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:
@@ -52,25 +52,48 @@
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:
- 00 DAT DAT DAT ...
+ (a) 0x80 bit clear
+ indicates that the bytes following it are all data
+ 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 DATA DATA DATA DATA ...
- STAT DAT STAT DAT STAT DAT ...
+ for a total of up to 63 DATA bytes,
- for a total of 32 data bytes. The valid bits in the STAT bytes are:
+ or:
+
+ (b) 0x80 bit set
+ indiates that the bytes following alternate data and
+ status bytes:
+
+ STAT DATA STAT DATA STAT DATA STAT DATA ...
+
+ for a total of up to 32 DATA bytes.
+
+ The valid bits in the STAT bytes are:
OVERRUN 0x02
PARITY 0x04
FRAMING 0x08
BREAK 0x10
- Note: a "no status" RX data message (first byte zero) can serve as
- a "break off" indicator.
+ Notes:
+
+ (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.
revision history:
@@ -80,6 +103,7 @@
1999apr14 add resetDataToggle to control message
2000jan04 merge with usa17msg.h
2000jun01 add extended BSD-style copyright text
+ 2001jul05 change message format to improve OVERRUN case
Note on shared names:
@@ -93,7 +117,7 @@
#define __USA26MSG__
-typedef struct keyspan_usa26_portControlMessage
+struct keyspan_usa26_portControlMessage
{
/*
there are three types of "commands" sent in the control message:
@@ -164,7 +188,7 @@
returnStatus, // BOTH: return current status (even if it hasn't changed)
resetDataToggle;// BOTH: reset data toggle state to DATA0
-} keyspan_usa26_portControlMessage;
+};
// defines for bits in lcr
#define USA_DATABITS_5 0x00
@@ -182,7 +206,7 @@
// all things called "StatusMessage" are sent on the status endpoint
-typedef struct keyspan_usa26_portStatusMessage // one for each port
+struct keyspan_usa26_portStatusMessage // one for each port
{
u8 port, // BOTH: 0=first, 1=second, other=see below
hskia_cts, // USA26: reports HSKIA pin
@@ -195,7 +219,7 @@
_txXoff, // port is in XOFF state (either host or RX XOFF)
rxEnabled, // as configured by rxOn/rxOff 1=on, 0=off
controlResponse;// 1=a control message has been processed
-} keyspan_usa26_portStatusMessage;
+};
// bits in RX data message when STAT byte is included
#define RXERROR_OVERRUN 0x02
@@ -203,28 +227,28 @@
#define RXERROR_FRAMING 0x08
#define RXERROR_BREAK 0x10
-typedef struct keyspan_usa26_globalControlMessage
+struct keyspan_usa26_globalControlMessage
{
u8 sendGlobalStatus, // 2=request for two status responses
resetStatusToggle, // 1=reset global status toggle
resetStatusCount; // a cycling value
-} keyspan_usa26_globalControlMessage;
+};
-typedef struct keyspan_usa26_globalStatusMessage
+struct keyspan_usa26_globalStatusMessage
{
u8 port, // 3
sendGlobalStatus, // from request, decremented
resetStatusCount; // as in request
-} keyspan_usa26_globalStatusMessage;
+};
-typedef struct keyspan_usa26_globalDebugMessage
+struct keyspan_usa26_globalDebugMessage
{
u8 port, // 2
a,
b,
c,
d;
-} keyspan_usa26_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)