Linux kernel mirror (for testing) git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
kernel os linux
1
fork

Configure Feed

Select the types of activity you want to include in your feed.

Merge tag 'tty-4.11-rc5' of git://git.kernel.org/pub/scm/linux/kernel/git/gregkh/tty

Pull tty/serial fixes from Greg KH:
"Here are some small fixes for some serial drivers and Kconfig help
text for 4.11-rc5. Nothing major here at all, a few things resolving
reported bugs in some random serial drivers.

I don't think these made the last linux-next due to me getting to them
yesterday, but I am not sure, they might have snuck in. The patches
only affect drivers that the maintainers of sent me these patches for,
so we should be safe here :)"

* tag 'tty-4.11-rc5' of git://git.kernel.org/pub/scm/linux/kernel/git/gregkh/tty:
tty: pl011: fix earlycon work-around for QDF2400 erratum 44
serial: 8250_EXAR: fix duplicate Kconfig text and add missing help text
tty/serial: atmel: fix TX path in atmel_console_write()
tty/serial: atmel: fix race condition (TX+DMA)
serial: mxs-auart: Fix baudrate calculation

+36 -5
+6 -2
drivers/tty/serial/8250/Kconfig
··· 128 128 by the parport_serial driver, enabled with CONFIG_PARPORT_SERIAL. 129 129 130 130 config SERIAL_8250_EXAR 131 - tristate "8250/16550 PCI device support" 132 - depends on SERIAL_8250_PCI 131 + tristate "8250/16550 Exar/Commtech PCI/PCIe device support" 132 + depends on SERIAL_8250_PCI 133 133 default SERIAL_8250 134 + help 135 + This builds support for XR17C1xx, XR17V3xx and some Commtech 136 + 422x PCIe serial cards that are not covered by the more generic 137 + SERIAL_8250_PCI option. 134 138 135 139 config SERIAL_8250_HP300 136 140 tristate
+21 -2
drivers/tty/serial/amba-pl011.c
··· 2452 2452 uart_console_write(&dev->port, s, n, pl011_putc); 2453 2453 } 2454 2454 2455 + /* 2456 + * On non-ACPI systems, earlycon is enabled by specifying 2457 + * "earlycon=pl011,<address>" on the kernel command line. 2458 + * 2459 + * On ACPI ARM64 systems, an "early" console is enabled via the SPCR table, 2460 + * by specifying only "earlycon" on the command line. Because it requires 2461 + * SPCR, the console starts after ACPI is parsed, which is later than a 2462 + * traditional early console. 2463 + * 2464 + * To get the traditional early console that starts before ACPI is parsed, 2465 + * specify the full "earlycon=pl011,<address>" option. 2466 + */ 2455 2467 static int __init pl011_early_console_setup(struct earlycon_device *device, 2456 2468 const char *opt) 2457 2469 { 2458 2470 if (!device->port.membase) 2459 2471 return -ENODEV; 2460 2472 2461 - device->con->write = qdf2400_e44_present ? 2462 - qdf2400_e44_early_write : pl011_early_write; 2473 + /* On QDF2400 SOCs affected by Erratum 44, the "qdf2400_e44" must 2474 + * also be specified, e.g. "earlycon=pl011,<address>,qdf2400_e44". 2475 + */ 2476 + if (!strcmp(device->options, "qdf2400_e44")) 2477 + device->con->write = qdf2400_e44_early_write; 2478 + else 2479 + device->con->write = pl011_early_write; 2480 + 2463 2481 return 0; 2464 2482 } 2465 2483 OF_EARLYCON_DECLARE(pl011, "arm,pl011", pl011_early_console_setup); 2466 2484 OF_EARLYCON_DECLARE(pl011, "arm,sbsa-uart", pl011_early_console_setup); 2485 + EARLYCON_DECLARE(qdf2400_e44, pl011_early_console_setup); 2467 2486 2468 2487 #else 2469 2488 #define AMBA_CONSOLE NULL
+8
drivers/tty/serial/atmel_serial.c
··· 1951 1951 atmel_uart_writel(port, ATMEL_PDC_TCR, 0); 1952 1952 atmel_port->pdc_tx.ofs = 0; 1953 1953 } 1954 + /* 1955 + * in uart_flush_buffer(), the xmit circular buffer has just 1956 + * been cleared, so we have to reset tx_len accordingly. 1957 + */ 1958 + atmel_port->tx_len = 0; 1954 1959 } 1955 1960 1956 1961 /* ··· 2487 2482 /* Store PDC transmit status and disable it */ 2488 2483 pdc_tx = atmel_uart_readl(port, ATMEL_PDC_PTSR) & ATMEL_PDC_TXTEN; 2489 2484 atmel_uart_writel(port, ATMEL_PDC_PTCR, ATMEL_PDC_TXTDIS); 2485 + 2486 + /* Make sure that tx path is actually able to send characters */ 2487 + atmel_uart_writel(port, ATMEL_US_CR, ATMEL_US_TXEN); 2490 2488 2491 2489 uart_console_write(port, s, count, atmel_console_putchar); 2492 2490
+1 -1
drivers/tty/serial/mxs-auart.c
··· 1088 1088 AUART_LINECTRL_BAUD_DIV_MAX); 1089 1089 baud_max = u->uartclk * 32 / AUART_LINECTRL_BAUD_DIV_MIN; 1090 1090 baud = uart_get_baud_rate(u, termios, old, baud_min, baud_max); 1091 - div = u->uartclk * 32 / baud; 1091 + div = DIV_ROUND_CLOSEST(u->uartclk * 32, baud); 1092 1092 } 1093 1093 1094 1094 ctrl |= AUART_LINECTRL_BAUD_DIVFRAC(div & 0x3F);