patch-2.4.21 linux-2.4.21/drivers/usb/serial/keyspan.c
Next file: linux-2.4.21/drivers/usb/serial/keyspan.h
Previous file: linux-2.4.21/drivers/usb/serial/ipaq.h
Back to the patch index
Back to the overall index
- Lines: 137
- Date:
2003-06-13 07:51:37.000000000 -0700
- Orig file:
linux-2.4.20/drivers/usb/serial/keyspan.c
- Orig date:
2002-11-28 15:53:14.000000000 -0800
diff -urN linux-2.4.20/drivers/usb/serial/keyspan.c linux-2.4.21/drivers/usb/serial/keyspan.c
@@ -28,6 +28,27 @@
Change History
+ 2003Apr16 LPM (Keyspan) fix delayed control message resend for multi-port
+ 'Open' case. Fix 'mpr' entries in keyspan.h (previously broken)
+
+ Wed Feb 19 22:00:00 PST 2003 (Jeffrey S. Laing <keyspan@jsl.com>)
+ Merged the current (1/31/03) Keyspan code with the current (2.4.21-pre4)
+ Linux source tree. The Linux tree lacked support for the 49WLC and
+ others. The Keyspan patches didn't work with the current kernel.
+
+ 2003jan30 LPM add support for the 49WLC and MPR
+
+ Wed Apr 25 12:00:00 PST 2002 (Keyspan)
+ Started with Hugh Blemings' code dated Jan 17, 2002. All adapters
+ now supported (including QI and QW). Modified port open, port
+ close, and send setup() logic to fix various data and endpoint
+ synchronization bugs and device LED status bugs. Changed keyspan_
+ write_room() to accurately return transmit buffer availability.
+ Changed forwardingLength from 1 to 16 for all adapters.
+
+ Fri Oct 12 16:45:00 EST 2001
+ Preliminary USA-19QI and USA-28 support (both test OK for me, YMMV)
+
Wed Apr 25 12:00:00 PST 2002 (Keyspan)
Started with Hugh Blemings' code dated Jan 17, 2002. All adapters
now supported (including QI and QW). Modified port open, port
@@ -102,7 +123,7 @@
/*
* Version Information
*/
-#define DRIVER_VERSION "v1.1.3"
+#define DRIVER_VERSION "v1.1.4"
#define DRIVER_AUTHOR "Hugh Blemings <hugh@misc.nu"
#define DRIVER_DESC "Keyspan USB to Serial Converter Driver"
@@ -343,7 +364,7 @@
if (this_urb->status == -EINPROGRESS) {
if (this_urb->transfer_flags & USB_ASYNC_UNLINK)
break;
- if (jiffies - p_priv->tx_start_time[flip] < 10 * HZ)
+ if (time_before(jiffies, p_priv->tx_start_time[flip] + 10 * HZ))
break;
this_urb->transfer_flags |= USB_ASYNC_UNLINK;
usb_unlink_urb(this_urb);
@@ -530,6 +551,7 @@
dbg("%s - resubmit read urb failed. (%d)", __FUNCTION__, err);
}
exit:
+ ;
}
static void usa26_glocont_callback(struct urb *urb)
@@ -665,6 +687,7 @@
dbg("%s - resubmit read urb failed. (%d)", __FUNCTION__, err);
}
exit:
+ ;
}
static void usa28_glocont_callback(struct urb *urb)
@@ -758,6 +781,7 @@
dbg("%s - resubmit read urb failed. (%d)", __FUNCTION__, err);
}
exit:
+ ;
}
static void usa49_inack_callback(struct urb *urb)
@@ -901,6 +925,9 @@
/* usb_settoggle(urb->dev, usb_pipeendpoint(urb->pipe), usb_pipeout(urb->pipe), 0); */
}
+ // if the device is a USA49x, determine whether it is an W or WLC model
+ // and set the baud clock accordingly
+
keyspan_send_setup(port, 1);
//mdelay(100);
keyspan_set_termios(port, NULL);
@@ -1009,6 +1036,11 @@
fw_name = "USA19QI";
break;
+ case keyspan_mpr_pre_product_id:
+ record = &keyspan_mpr_firmware[0];
+ fw_name = "MPR";
+ break;
+
case keyspan_usa19qw_pre_product_id:
record = &keyspan_usa19qw_firmware[0];
fw_name = "USA19QI";
@@ -1029,6 +1061,11 @@
fw_name = "USA49W";
break;
+ case keyspan_usa49wlc_pre_product_id:
+ record = &keyspan_usa49wlc_firmware[0];
+ fw_name = "USA49WLC";
+ break;
+
default:
record = NULL;
fw_name = "Unknown";
@@ -1393,8 +1430,8 @@
}
/* Save reset port val for resend.
- Don't overwrite resend for close condition. */
- if (p_priv->resend_cont != 3)
+ Don't overwrite resend for open/close condition. */
+ if ((reset_port + 1) > p_priv->resend_cont)
p_priv->resend_cont = reset_port + 1;
if (this_urb->status == -EINPROGRESS) {
/* dbg ("%s - already writing", __FUNCTION__); */
@@ -1543,8 +1580,8 @@
}
/* Save reset port val for resend.
- Don't overwrite resend for close condition. */
- if (p_priv->resend_cont != 3)
+ Don't overwrite resend for open/close condition. */
+ if ((reset_port + 1) > p_priv->resend_cont)
p_priv->resend_cont = reset_port + 1;
if (this_urb->status == -EINPROGRESS) {
dbg ("%s already writing", __FUNCTION__);
@@ -1675,8 +1712,8 @@
}
/* Save reset port val for resend.
- Don't overwrite resend for close condition. */
- if (p_priv->resend_cont != 3)
+ Don't overwrite resend for open/close condition. */
+ if ((reset_port+1) > p_priv->resend_cont)
p_priv->resend_cont = reset_port + 1;
if (this_urb->status == -EINPROGRESS) {
/* dbg ("%s - already writing", __FUNCTION__); */
FUNET's LINUX-ADM group, linux-adm@nic.funet.fi
TCL-scripts by Sam Shen (who was at: slshen@lbl.gov)