You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
49 lines
1.9 KiB
49 lines
1.9 KiB
7 years ago
|
From ee6c9d41de084b2cefd90e5e0c9f30a35f6d3967 Mon Sep 17 00:00:00 2001
|
||
|
From: Jonas Gorski <jonas.gorski@gmail.com>
|
||
|
Date: Sun, 29 Oct 2017 15:50:42 +0100
|
||
|
Subject: [PATCH RFC 3/3] MIPS: AR7: ensure the port type's FCR value is used
|
||
|
|
||
|
Since commit aef9a7bd9b67 ("serial/uart/8250: Add tunable RX interrupt
|
||
|
trigger I/F of FIFO buffers"), the port's default FCR value isn't used
|
||
|
in serial8250_do_set_termios anymore, but copied over once in
|
||
|
serial8250_config_port and then modified as needed.
|
||
|
|
||
|
Unfortunately, serial8250_config_port will never be called if the port
|
||
|
is shared between kernel and userspace, and the port's flag doesn't have
|
||
|
UPF_BOOT_AUTOCONF, which would trigger a serial8250_config_port as well.
|
||
|
|
||
|
This causes garbled output from userspace:
|
||
|
|
||
|
[ 5.220000] random: procd urandom read with 49 bits of entropy available
|
||
|
ers
|
||
|
[kee
|
||
|
|
||
|
Fix this by forcing it to be configured on boot, resulting in the
|
||
|
expected output:
|
||
|
|
||
|
[ 5.250000] random: procd urandom read with 50 bits of entropy available
|
||
|
Press the [f] key and hit [enter] to enter failsafe mode
|
||
|
Press the [1], [2], [3] or [4] key and hit [enter] to select the debug level
|
||
|
|
||
|
Fixes: aef9a7bd9b67 ("serial/uart/8250: Add tunable RX interrupt trigger I/F of FIFO buffers")
|
||
|
Signed-off-by: Jonas Gorski <jonas.gorski@gmail.com>
|
||
|
---
|
||
|
I'm not sure if this is just AR7's issue, or if this points to a general
|
||
|
issue for UARTs used as kernel console and login console with the "fixed"
|
||
|
commit.
|
||
|
|
||
|
arch/mips/ar7/platform.c | 2 +-
|
||
|
1 file changed, 1 insertion(+), 1 deletion(-)
|
||
|
|
||
|
--- a/arch/mips/ar7/platform.c
|
||
|
+++ b/arch/mips/ar7/platform.c
|
||
|
@@ -581,7 +581,7 @@ static int __init ar7_register_uarts(voi
|
||
|
uart_port.type = PORT_AR7;
|
||
|
uart_port.uartclk = clk_get_rate(bus_clk) / 2;
|
||
|
uart_port.iotype = UPIO_MEM32;
|
||
|
- uart_port.flags = UPF_FIXED_TYPE;
|
||
|
+ uart_port.flags = UPF_FIXED_TYPE | UPF_BOOT_AUTOCONF;
|
||
|
uart_port.regshift = 2;
|
||
|
|
||
|
uart_port.line = 0;
|