turns out its a simple fix, on the pl2303 you just need to set OPOST to off on in the set_termios function. this prevents other apps from making a change to the status. after making the addition, echo, cat, and my test app work fine without lockups. this still leaves the issue of not having onlcr translation, but this can be done in userland with a fifo and a filter. this fix should probably be implemented in all of the usb-rs232 adapters since the way the usb to rs232 interface is created none of these devices should support opost. in addition this problem probably also exists with usb modem devices such as the acm module. i'm currently looking at the multitech usb modem using hylafax, so i should know something shortly. attached is a diff of the pl2303.c change on kernel 2.4.21 with your last posted patch, and a diff for 2.6.0-test3 with no patches. please have a look and let me know.
thanks dave anders
--- pl2303.org Tue Aug 26 09:19:37 2003
+++ pl2303.c Tue Aug 26 09:20:38 2003
@@ -242,6 +242,7 @@
port->tty->termios->c_cflag = B9600 | CS8 | CREAD | HUPCL | CLOCAL;
((struct pl2303_private *) port->private)->termios_initialized = 1;
}
+ port->tty->termios->c_cflag &= ~OPOST;
cflag = port->tty->termios->c_cflag;
/* check that they really want us to change something */
if (old_termios) {
--- pl2303.org Tue Aug 26 09:33:01 2003
+++ pl2303.c Tue Aug 26 09:33:48 2003
@@ -261,6 +261,7 @@
}
spin_unlock_irqrestore(&priv->lock, flags);
+ port->tty->termios->c_cflag &= ~OPOST;
cflag = port->tty->termios->c_cflag;
/* check that they really want us to change something */
if (old_termios) {
