[PATCH v2 1/2] serial/amba-pl011: Activate TX IRQ passively

Greg Kroah-Hartman gregkh at linuxfoundation.org
Thu Mar 26 14:27:27 PDT 2015


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 at arm.com>
> ---
>  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



More information about the linux-arm-kernel mailing list