Re: serial ports now asserting DTR and RTS during boot; breaks connectedhardware

From: Jiri Slaby
Date: Tue Jan 03 2012 - 11:00:57 EST


On 01/03/2012 04:37 PM, Dave Jones wrote:
> Jiri,
> We got this report from a user who notes a change in behaviour for
> his serial hardware over the last few kernel versions.

Hi!

I'm busy right now, however just after a quick look, it may be related to:
https://lkml.org/lkml/2011/12/6/573

I'll take a look later.

> https://bugzilla.redhat.com/show_bug.cgi?id=771010
>
> This sounds like it might be related to your DTR/RTS changes back in March 2011 maybe ?

What changes do you mean? In serial-core.c? That one is not used by USB
serials. Hence this wouldn't occur with FTDI.

> > Description of problem:
> >
> > After upgrade from FC14 to FC16, it was discovered that during kernel boot, the
> > DTR and RTS signals of serial devices (both real UART and FTDI USB devices) are
> > being asserted from driver load to approx 20 seconds afterward. This causes
> > some types of hardware connected to these ports to fail as they expect a
> > different sequence or controlled activation of these signals. In particular,
> > ham radio equipment that uses these signals to key transmitters is now going
> > into uncontrolled transmit for nearly the duration of kernel boot.
> >
> >
> > Steps to Reproduce:
> > 1. connect RS232 breakout box to serial port
> > 2. boot system
> > 3. watch DTR and RTS LEDs light as kernel is booting
> >
> > Actual results:
> >
> > LEDs light and stay light for almost entire boot duration indicating that DTR
> > and RTS are asserting as the kernel boots.
> >
> > Expected results:
> >
> > DTR and RTS should not activate while kernel is booting. They should only
> > activate when the port is opened by an application and it has performed a
> > termios function to enable these signals.
> >
> >
> > Additional info:
> >
> > The following code in the ftdi_sio driver is one suspect but this behavior
> > happens on 8250 UARTs also so it is systemic now,
> >
> > ftdi_sio.c, line 2161,
> >
> > /* Ensure RTS and DTR are raised when baudrate changed from 0
> > */
> > if (!old_termios || (old_termios->c_cflag & CBAUD) == B0)
> > set_mctrl(port, TIOCM_DTR | TIOCM_RTS);
> >
>
>

regards,
--
js
suse labs
--
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at http://vger.kernel.org/majordomo-info.html
Please read the FAQ at http://www.tux.org/lkml/