Re: [Patch] new serial flow control

From: Samuel Thibault
Date: Fri Oct 08 2004 - 14:04:46 EST


Le jeu 07 oct 2004 à 20:08:56 +0100, Alan Cox wrote:
> On Maw, 2004-10-05 at 18:25, Samuel Thibault wrote:
> > No: data actually pass _after_ CTS and RTS are lowered back: the flow control
> > only indicate the beginning of one frame.
>
> Ok I've pondered this somewhat. I don't think the hack proposed is the
> right answer for this. I believe you should implement a simple line
> discipline for this device so that it stays out of the general code.
>
> Right now that poses a challenge but if drivers were to implement
> ldisc->modem_change() or a similar callback for such events an ldisc
> could then handle many of the grungy suprises and handle them once and
> in one place.

Serial drivers should then at least (when seeing ldisc->modem_change
!= NULL) do no RTS/CTS/DTR/etc handling at all (to avoid interfering),
and activate "MSI" for calling modem_change in the interrupt handler.

Being able to call port->ops->start/stop_tx by some way will also be
necessary, by grouping
{
struct uart_state *state = tty->driver_data;
struct uart_port *port = state->port;
tty->hw_stopped = 0;
port->ops->start_tx(port, 0);
uart_write_wakeup(port);
}
and its dual in some function for instance.

Regards,
Samuel Thibault
-
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/