[Damn this stupid email client! Still eating tabs. Resending patch as
an inline attachement.]
On Friday 25 June 2004 21:56, Croy, Nathan wrote:
> SUMMARY
> =======
> ftdi_sio never reasserts modem control lines once the baud has been
> set to B0.
>
> DESCRIPTION
> ===========
> Setting the baud to B0 (hangup) drops DTR. When the baud is raised
> again, DTR is not raised. This can cause a modem to ignore any
> commands sent to it until the device is closed and reopened. This
> renders minicom (and other software) useless, unless you instruct the
> modem to ignore DTR.
>
> The following patch is intended to make ftdi_sio act like other
> serial devices I have used (i.e. the standard serial ports
> (/dev/ttyS*) and stallion ports (/dev/ttyE*)). Upon setting the baud
> to something other than B0, it ensures the modem control lines are
> set back to the way they were when the port was opened.
>
> Thanks to Ian Abbott for confirming my suspicions:
>
http://sourceforge.net/mailarchive/forum.php?thread_id=4984710&forum_id=12120
Nathan's email suffered from a line-folding bug (blame M$, probably!),
so his patch came out corrupted. I reposted an uncorrupted version a
few days later. It showed up in 2.6.9, but not in 2.4.28, so I'm
resubmitting the patch against 2.4.28.
Please apply to 2.4, thanks.
Signed off by: Ian Abbott <[EMAIL PROTECTED]>
diff -ur linux-2.4.28/drivers/usb/serial/ftdi_sio.c linux-2.4.28-ia/drivers/usb/serial/ftdi_sio.c
--- linux-2.4.28/drivers/usb/serial/ftdi_sio.c 2004-08-08 00:26:05.000000000 +0100
+++ linux-2.4.28-ia/drivers/usb/serial/ftdi_sio.c 2004-11-18 13:37:00.512114760 +0000
@@ -1857,6 +1857,13 @@
if (change_speed(port)) {
err("%s urb failed to set baurdrate", __FUNCTION__);
}
+ /* Ensure RTS and DTR are raised */
+ else if (set_dtr(port, HIGH) < 0){
+ err("%s Error from DTR HIGH urb", __FUNCTION__);
+ }
+ else if (set_rts(port, HIGH) < 0){
+ err("%s Error from RTS HIGH urb", __FUNCTION__);
+ }
}
/* Set flow control */