Skip to contentSkip to conversation

patch "8250: use callbacks to access UART_DLL/UART_DLM" added to tty-next

PATCH [email protected] 1 participant 1 message Feb 7, 2016

Subsystems (2)
lore
Share & tools
lore

[email protected]

author maintainer Applied
#0 lore raw

This is a note to let you know that I've just added the patch titled

8250: use callbacks to access UART_DLL/UART_DLM

to my tty git tree which can be found at
git://git.kernel.org/pub/scm/linux/kernel/git/gregkh/tty.git
in the tty-next branch.

The patch will show up in the next release of the linux-next tree (usually sometime within the next 24 hours during the week.)

The patch will also be merged in the next major kernel release during the merge window.

If you have any questions about this process, please let me know.

Quoted 1 line

From 0b41ce991052022c030fd868e03877700220b090 Mon Sep 17 00:00:00 2001

From: Sebastian Frias <[email protected]>
Date: Fri, 18 Dec 2015 17:40:05 +0100
Subject: 8250: use callbacks to access UART_DLL/UART_DLM

Some UART HW has a single register combining UART_DLL/UART_DLM (this was probably forgotten in the change that introduced the callbacks, commit b32b19b8ffc05cbd3bf91c65e205f6a912ca15d9)

Fixes b32b19b8ffc0 ("[SERIAL] 8250: set divisor register correctly ...")
---
 drivers/tty/serial/8250/8250_port.c | 18 ++++++------------
 1 file changed, 6 insertions(+), 12 deletions(-)
drivers/tty/serial/8250/8250_port.c +6 -12
index 01a85a7e7427..c2b650aeb792 100644
@@ -813,22 +813,16 @@ static int size_fifo(struct uart_8250_port *up)
  */
 static unsigned int autoconfig_read_divisor_id(struct uart_8250_port *p)
 {
-	unsigned char old_dll, old_dlm, old_lcr;
-	unsigned int id;
+	unsigned char old_lcr;
+	unsigned int id, old_dl;
 
 	old_lcr = serial_in(p, UART_LCR);
 	serial_out(p, UART_LCR, UART_LCR_CONF_MODE_A);
+	old_dl = serial_dl_read(p);
+	serial_dl_write(p, 0);
+	id = serial_dl_read(p);
+	serial_dl_write(p, old_dl);
 
-	old_dll = serial_in(p, UART_DLL);
-	old_dlm = serial_in(p, UART_DLM);
-
-	serial_out(p, UART_DLL, 0);
-	serial_out(p, UART_DLM, 0);
-
-	id = serial_in(p, UART_DLL) | serial_in(p, UART_DLM) << 8;
-
-	serial_out(p, UART_DLL, old_dll);
-	serial_out(p, UART_DLM, old_dlm);
 	serial_out(p, UART_LCR, old_lcr);
 
 	return id;
Signature · 1 line
2.7.0