On Fri, Mar 13, 2015 at 03:56:21PM +0000, Dave Martin wrote: > The current PL011 driver transmits a dummy character when the UART > is opened, to assert the TX IRQ for the first time > (see pl011_startup()). The UART is put in loopback mode temporarily, > so the receiver presumably shouldn't see anything. > > However... > > At least some platforms containing a PL011 send characters down the > wire even when loopback mode is enabled. This means that a > spurious NUL character may be seen at the receiver when the PL011 is > opened through the TTY layer. > > The current code also temporarily sets the baud rate to maximum and > the character width to the minimum, to that the dummy TX completes > as quickly as possible. If this is seen by the receiver it will > result in a framing error and can knock the receiver out of sync -- > turning subsequent output into garbage until synchronisation > is reestablished. (Particularly problematic during boot with systemd.) > > To avoid spurious transmissions, this patch removes assumptions about > whether the TX IRQ will fire until at least one TX IRQ has been seen. > > Instead, the UART will unmask the TX IRQ and then slow-start via > polling and timer-based soft IRQs initially. If the TTY layer writes > enough data to fill the FIFO to the interrupt threshold in one go, > the TX IRQ should assert, at which point the driver changes to > fully interrupt-driven TX. > > This should also mean that the driver works on the SBSA Generic > UART[1] (a cut-down PL011) without invasive changes. The Generic > UART lacks some features needed for the dummy TX approach to work > (FIFO disabling and loopback). > > [1] Server Base System Architecture (ARM-DEN-0029-v2.3) > http://infocenter.arm.com/ > (click-thru required :/) > > Signed-off-by: Dave Martin <Dave.Martin@xxxxxxx> > --- > drivers/tty/serial/amba-pl011.c | 121 +++++++++++++++++++++++++-------------- > 1 file changed, 78 insertions(+), 43 deletions(-) Wait, I already took this patch, right? Was there some difference here with this version? confused, greg k-h -- To unsubscribe from this list: send the line "unsubscribe linux-serial" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html