Merge 4.16-rc6 into tty-next
We want the serial/tty fixes in here as well. Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
This commit is contained in:
@@ -3384,11 +3384,9 @@ static int serial_pci_is_class_communication(struct pci_dev *dev)
|
||||
/*
|
||||
* If it is not a communications device or the programming
|
||||
* interface is greater than 6, give up.
|
||||
*
|
||||
* (Should we try to make guesses for multiport serial devices
|
||||
* later?)
|
||||
*/
|
||||
if ((((dev->class >> 8) != PCI_CLASS_COMMUNICATION_SERIAL) &&
|
||||
((dev->class >> 8) != PCI_CLASS_COMMUNICATION_MULTISERIAL) &&
|
||||
((dev->class >> 8) != PCI_CLASS_COMMUNICATION_MODEM)) ||
|
||||
(dev->class & 0xff) > 6)
|
||||
return -ENODEV;
|
||||
@@ -3425,6 +3423,12 @@ serial_pci_guess_board(struct pci_dev *dev, struct pciserial_board *board)
|
||||
{
|
||||
int num_iomem, num_port, first_port = -1, i;
|
||||
|
||||
/*
|
||||
* Should we try to make guesses for multiport serial devices later?
|
||||
*/
|
||||
if ((dev->class >> 8) == PCI_CLASS_COMMUNICATION_MULTISERIAL)
|
||||
return -ENODEV;
|
||||
|
||||
num_iomem = num_port = 0;
|
||||
for (i = 0; i < PCI_NUM_BAR_RESOURCES; i++) {
|
||||
if (pci_resource_flags(dev, i) & IORESOURCE_IO) {
|
||||
@@ -4695,6 +4699,17 @@ static const struct pci_device_id serial_pci_tbl[] = {
|
||||
{ PCI_VENDOR_ID_INTASHIELD, PCI_DEVICE_ID_INTASHIELD_IS400,
|
||||
PCI_ANY_ID, PCI_ANY_ID, 0, 0, /* 135a.0dc0 */
|
||||
pbn_b2_4_115200 },
|
||||
/*
|
||||
* BrainBoxes UC-260
|
||||
*/
|
||||
{ PCI_VENDOR_ID_INTASHIELD, 0x0D21,
|
||||
PCI_ANY_ID, PCI_ANY_ID,
|
||||
PCI_CLASS_COMMUNICATION_MULTISERIAL << 8, 0xffff00,
|
||||
pbn_b2_4_115200 },
|
||||
{ PCI_VENDOR_ID_INTASHIELD, 0x0E34,
|
||||
PCI_ANY_ID, PCI_ANY_ID,
|
||||
PCI_CLASS_COMMUNICATION_MULTISERIAL << 8, 0xffff00,
|
||||
pbn_b2_4_115200 },
|
||||
/*
|
||||
* Perle PCI-RAS cards
|
||||
*/
|
||||
|
@@ -1734,6 +1734,7 @@ static void atmel_get_ip_name(struct uart_port *port)
|
||||
switch (version) {
|
||||
case 0x302:
|
||||
case 0x10213:
|
||||
case 0x10302:
|
||||
dev_dbg(port->dev, "This version is usart\n");
|
||||
atmel_port->has_frac_baudrate = true;
|
||||
atmel_port->has_hw_timer = true;
|
||||
|
@@ -245,11 +245,12 @@ int __init of_setup_earlycon(const struct earlycon_id *match,
|
||||
}
|
||||
port->mapbase = addr;
|
||||
port->uartclk = BASE_BAUD * 16;
|
||||
port->membase = earlycon_map(port->mapbase, SZ_4K);
|
||||
|
||||
val = of_get_flat_dt_prop(node, "reg-offset", NULL);
|
||||
if (val)
|
||||
port->mapbase += be32_to_cpu(*val);
|
||||
port->membase = earlycon_map(port->mapbase, SZ_4K);
|
||||
|
||||
val = of_get_flat_dt_prop(node, "reg-shift", NULL);
|
||||
if (val)
|
||||
port->regshift = be32_to_cpu(*val);
|
||||
|
@@ -2262,7 +2262,7 @@ static int imx_uart_probe(struct platform_device *pdev)
|
||||
uart_get_rs485_mode(&pdev->dev, &sport->port.rs485);
|
||||
|
||||
if (sport->port.rs485.flags & SER_RS485_ENABLED &&
|
||||
(!sport->have_rtscts || !sport->have_rtsgpio))
|
||||
(!sport->have_rtscts && !sport->have_rtsgpio))
|
||||
dev_err(&pdev->dev, "no RTS control, disabling rs485\n");
|
||||
|
||||
imx_uart_rs485_config(&sport->port, &sport->port.rs485);
|
||||
|
@@ -1144,6 +1144,8 @@ static int uart_do_autoconfig(struct tty_struct *tty,struct uart_state *state)
|
||||
uport->ops->config_port(uport, flags);
|
||||
|
||||
ret = uart_startup(tty, state, 1);
|
||||
if (ret == 0)
|
||||
tty_port_set_initialized(port, true);
|
||||
if (ret > 0)
|
||||
ret = 0;
|
||||
}
|
||||
|
@@ -886,6 +886,8 @@ static void sci_receive_chars(struct uart_port *port)
|
||||
/* Tell the rest of the system the news. New characters! */
|
||||
tty_flip_buffer_push(tport);
|
||||
} else {
|
||||
/* TTY buffers full; read from RX reg to prevent lockup */
|
||||
serial_port_in(port, SCxRDR);
|
||||
serial_port_in(port, SCxSR); /* dummy read */
|
||||
sci_clear_SCxSR(port, SCxSR_RDxF_CLEAR(port));
|
||||
}
|
||||
|
مرجع در شماره جدید
Block a user