On Thu, Jun 03, 2010 at 01:55:02PM +0200, Daniel Mack wrote: > Call set_mctrl() and clear_mctrl() according to the flow control mode > selected. This makes serial communication for FT232 connected devices > work when CRTSCTS is not set. > > This fixes a regression introduced by 4175f3e31 ("tty_port: If we are > opened non blocking we still need to raise the carrier"). This patch > calls the low-level driver's dtr_rts() function which consequently sets > TIOCM_DTR | TIOCM_RTS. A later call to set_termios() without CRTSCTS in > cflags, however, does not reset these bits, and so data is not actually > sent out on the serial wire. > > Signed-off-by: Daniel Mack <daniel@xxxxxxxx> > Cc: Greg Kroah-Hartman <gregkh@xxxxxxx> > Cc: Johan Hovold <jhovold@xxxxxxxxx> > Cc: Alan Cox <alan@xxxxxxxxxxxxxxx> > Cc: linux-usb@xxxxxxxxxxxxxxx Oops. I forgot to Cc: stable@xxxxxxxxxxx This is in fact broken since 2.6.31-something. > --- > drivers/usb/serial/ftdi_sio.c | 4 ++++ > 1 files changed, 4 insertions(+), 0 deletions(-) > > diff --git a/drivers/usb/serial/ftdi_sio.c b/drivers/usb/serial/ftdi_sio.c > index 050211a..79dd1ae 100644 > --- a/drivers/usb/serial/ftdi_sio.c > +++ b/drivers/usb/serial/ftdi_sio.c > @@ -2005,6 +2005,8 @@ static void ftdi_set_termios(struct tty_struct *tty, > "urb failed to set to rts/cts flow control\n"); > } > > + /* raise DTR/RTS */ > + set_mctrl(port, TIOCM_DTR | TIOCM_RTS); > } else { > /* > * Xon/Xoff code > @@ -2052,6 +2054,8 @@ static void ftdi_set_termios(struct tty_struct *tty, > } > } > > + /* lower DTR/RTS */ > + clear_mctrl(port, TIOCM_DTR | TIOCM_RTS); > } > return; > } > -- > 1.7.1 > -- To unsubscribe from this list: send the line "unsubscribe linux-usb" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html