From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Ond=C5=99ej=20Jirman?= <megi@xff.cz>
Date: Sat, 1 Feb 2020 23:40:41 +0100
Subject: tty: serial: 8250-dw: Use fifo-size from DTS

Saves 20ms per port of boot time.

Signed-off-by: Ondrej Jirman <megi@xff.cz>
---
 drivers/tty/serial/8250/8250_dw.c   | 4 ++++
 drivers/tty/serial/8250/8250_port.c | 3 +++
 2 files changed, 7 insertions(+)

diff --git a/drivers/tty/serial/8250/8250_dw.c b/drivers/tty/serial/8250/8250_dw.c
index e6218766d0c8..860e70dde279 100644
--- a/drivers/tty/serial/8250/8250_dw.c
+++ b/drivers/tty/serial/8250/8250_dw.c
@@ -592,6 +592,10 @@ static int dw8250_probe(struct platform_device *pdev)
 	/* Always ask for fixed clock rate from a property. */
 	device_property_read_u32(dev, "clock-frequency", &p->uartclk);
 
+	val = 0;
+	device_property_read_u32(dev, "fifo-size", &val);
+	p->fifosize = val;
+
 	/* If there is separate baudclk, get the rate from it. */
 	data->clk = devm_clk_get_optional_enabled(dev, "baudclk");
 	if (data->clk == NULL)
diff --git a/drivers/tty/serial/8250/8250_port.c b/drivers/tty/serial/8250/8250_port.c
index 8ca061d3bbb9..8d3408a00e00 100644
--- a/drivers/tty/serial/8250/8250_port.c
+++ b/drivers/tty/serial/8250/8250_port.c
@@ -789,6 +789,9 @@ static int size_fifo(struct uart_8250_port *up)
 	u32 old_dl;
 	int count;
 
+	if (up->port.fifosize)
+		return up->port.fifosize;
+
 	old_lcr = serial_in(up, UART_LCR);
 	serial_out(up, UART_LCR, 0);
 	old_fcr = serial_in(up, UART_FCR);
-- 
Armbian

