hc
2024-01-03 2f7c68cb55ecb7331f2381deb497c27155f32faf
kernel/drivers/tty/serial/8250/8250_dwlib.c
....@@ -80,7 +80,7 @@
8080 void dw8250_setup_port(struct uart_port *p)
8181 {
8282 struct uart_8250_port *up = up_to_u8250p(p);
83
- u32 reg;
83
+ u32 reg, old_dlf;
8484
8585 /*
8686 * If the Component Version Register returns zero, we know that
....@@ -93,9 +93,11 @@
9393 dev_dbg(p->dev, "Designware UART version %c.%c%c\n",
9494 (reg >> 24) & 0xff, (reg >> 16) & 0xff, (reg >> 8) & 0xff);
9595
96
+ /* Preserve value written by firmware or bootloader */
97
+ old_dlf = dw8250_readl_ext(p, DW_UART_DLF);
9698 dw8250_writel_ext(p, DW_UART_DLF, ~0U);
9799 reg = dw8250_readl_ext(p, DW_UART_DLF);
98
- dw8250_writel_ext(p, DW_UART_DLF, 0);
100
+ dw8250_writel_ext(p, DW_UART_DLF, old_dlf);
99101
100102 if (reg) {
101103 struct dw8250_port_data *d = p->private_data;