]> git.ipfire.org Git - thirdparty/kernel/linux.git/commitdiff
MIPS: dts: loongson64g-package: Switch to Loongson UART driver
authorRong Zhang <rongrong@oss.cipunited.com>
Sun, 15 Mar 2026 18:44:00 +0000 (02:44 +0800)
committerThomas Bogendoerfer <tsbogend@alpha.franken.de>
Mon, 6 Apr 2026 12:14:24 +0000 (14:14 +0200)
Loongson64g is Loongson 3A4000, whose UART controller is compatible with
Loongson 2K1500, which is NS16550A-compatible with an additional
fractional frequency divisor register.

Update the compatible strings to reflect this, so that 3A4000 can
benefit from the fractional frequency divisor provided by loongson-uart.
This is required on some devices, otherwise their UART can't work at
some high baud rates, e.g., 115200.

Tested on Loongson-LS3A4000-7A1000-NUC-SE with a 25MHz UART clock.
Without fractional frequency divisor, the actual baud rate was 111607
(25MHz / 16 / 14, measured value: 111545) and some USB-to-UART
converters couldn't work with it at all. With fractional frequency
divisor, the measured baud rate becomes 115207, which is quite accurate.

Signed-off-by: Rong Zhang <rongrong@oss.cipunited.com>
Signed-off-by: Thomas Bogendoerfer <tsbogend@alpha.franken.de>
arch/mips/boot/dts/loongson/loongson64g-package.dtsi

index d4314f62ccc209c232122230f7d52583fa6cf904..029daeedd0ab65324658a5c714f0e89ed6f48d53 100644 (file)
@@ -40,7 +40,7 @@
                };
 
                cpu_uart0: serial@1fe00100 {
-                       compatible = "ns16550a";
+                       compatible = "loongson,ls3a4000-uart", "loongson,ls2k1500-uart", "ns16550a";
                        reg = <0 0x1fe00100 0x10>;
                        clock-frequency = <100000000>;
                        interrupt-parent = <&liointc>;
@@ -50,7 +50,7 @@
 
                cpu_uart1: serial@1fe00110 {
                        status = "disabled";
-                       compatible = "ns16550a";
+                       compatible = "loongson,ls3a4000-uart", "loongson,ls2k1500-uart", "ns16550a";
                        reg = <0 0x1fe00110 0x10>;
                        clock-frequency = <100000000>;
                        interrupts = <15 IRQ_TYPE_LEVEL_HIGH>;