]> git.ipfire.org Git - thirdparty/kernel/linux.git/commitdiff
serial: 8250_pxa: Configure tx_loadsz to match FIFO IRQ level
authorDoug Brown <doug@schmorgal.com>
Sun, 19 May 2024 19:19:30 +0000 (12:19 -0700)
committerGreg Kroah-Hartman <gregkh@linuxfoundation.org>
Tue, 4 Jun 2024 12:08:09 +0000 (14:08 +0200)
The FIFO is 64 bytes, but the FCR is configured to fire the TX interrupt
when the FIFO is half empty (bit 3 = 0). Thus, we should only write 32
bytes when a TX interrupt occurs.

This fixes a problem observed on the PXA168 that dropped a bunch of TX
bytes during large transmissions.

Fixes: ab28f51c77cd ("serial: rewrite pxa2xx-uart to use 8250_core")
Signed-off-by: Doug Brown <doug@schmorgal.com>
Link: https://lore.kernel.org/r/20240519191929.122202-1-doug@schmorgal.com
Cc: stable <stable@kernel.org>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
drivers/tty/serial/8250/8250_pxa.c

index f1a51b00b1b9de84307047e3f216694bfa42fb06..ba96fa913e7f99a28933f15170040c500346a81a 100644 (file)
@@ -125,6 +125,7 @@ static int serial_pxa_probe(struct platform_device *pdev)
        uart.port.iotype = UPIO_MEM32;
        uart.port.regshift = 2;
        uart.port.fifosize = 64;
+       uart.tx_loadsz = 32;
        uart.dl_write = serial_pxa_dl_write;
 
        ret = serial8250_register_8250_port(&uart);