diff options
| -rw-r--r-- | drivers/char/hpet.c | 4 | ||||
| -rw-r--r-- | drivers/isdn/gigaset/interface.c | 2 | ||||
| -rw-r--r-- | drivers/tty/serial/8250/8250.c | 12 | ||||
| -rw-r--r-- | drivers/tty/serial/8250/8250_pci.c | 16 | ||||
| -rw-r--r-- | drivers/tty/serial/Kconfig | 2 | ||||
| -rw-r--r-- | drivers/tty/serial/altera_uart.c | 4 | ||||
| -rw-r--r-- | drivers/tty/serial/amba-pl011.c | 8 | ||||
| -rw-r--r-- | drivers/tty/serial/atmel_serial.c | 4 | ||||
| -rw-r--r-- | drivers/tty/serial/omap-serial.c | 43 | ||||
| -rw-r--r-- | drivers/tty/serial/pch_uart.c | 8 | ||||
| -rw-r--r-- | drivers/tty/serial/samsung.c | 1 | ||||
| -rw-r--r-- | drivers/tty/vt/vt.c | 3 | ||||
| -rw-r--r-- | include/linux/serial_core.h | 2 |
13 files changed, 52 insertions, 57 deletions
diff --git a/drivers/char/hpet.c b/drivers/char/hpet.c index 3845ab44c330..dfd7876f127c 100644 --- a/drivers/char/hpet.c +++ b/drivers/char/hpet.c | |||
| @@ -906,8 +906,8 @@ int hpet_alloc(struct hpet_data *hdp) | |||
| 906 | hpetp->hp_which, hdp->hd_phys_address, | 906 | hpetp->hp_which, hdp->hd_phys_address, |
| 907 | hpetp->hp_ntimer > 1 ? "s" : ""); | 907 | hpetp->hp_ntimer > 1 ? "s" : ""); |
| 908 | for (i = 0; i < hpetp->hp_ntimer; i++) | 908 | for (i = 0; i < hpetp->hp_ntimer; i++) |
| 909 | printk("%s %d", i > 0 ? "," : "", hdp->hd_irq[i]); | 909 | printk(KERN_CONT "%s %d", i > 0 ? "," : "", hdp->hd_irq[i]); |
| 910 | printk("\n"); | 910 | printk(KERN_CONT "\n"); |
| 911 | 911 | ||
| 912 | temp = hpetp->hp_tick_freq; | 912 | temp = hpetp->hp_tick_freq; |
| 913 | remainder = do_div(temp, 1000000); | 913 | remainder = do_div(temp, 1000000); |
diff --git a/drivers/isdn/gigaset/interface.c b/drivers/isdn/gigaset/interface.c index b3d6ac17272d..a6d9fd2858f7 100644 --- a/drivers/isdn/gigaset/interface.c +++ b/drivers/isdn/gigaset/interface.c | |||
| @@ -176,7 +176,7 @@ static void if_close(struct tty_struct *tty, struct file *filp) | |||
| 176 | struct cardstate *cs = tty->driver_data; | 176 | struct cardstate *cs = tty->driver_data; |
| 177 | 177 | ||
| 178 | if (!cs) { /* happens if we didn't find cs in open */ | 178 | if (!cs) { /* happens if we didn't find cs in open */ |
| 179 | printk(KERN_DEBUG "%s: no cardstate\n", __func__); | 179 | gig_dbg(DEBUG_IF, "%s: no cardstate", __func__); |
| 180 | return; | 180 | return; |
| 181 | } | 181 | } |
| 182 | 182 | ||
diff --git a/drivers/tty/serial/8250/8250.c b/drivers/tty/serial/8250/8250.c index 5b149b466ec8..5c27f7e6c9f1 100644 --- a/drivers/tty/serial/8250/8250.c +++ b/drivers/tty/serial/8250/8250.c | |||
| @@ -1572,13 +1572,11 @@ static irqreturn_t serial8250_interrupt(int irq, void *dev_id) | |||
| 1572 | do { | 1572 | do { |
| 1573 | struct uart_8250_port *up; | 1573 | struct uart_8250_port *up; |
| 1574 | struct uart_port *port; | 1574 | struct uart_port *port; |
| 1575 | bool skip; | ||
| 1576 | 1575 | ||
| 1577 | up = list_entry(l, struct uart_8250_port, list); | 1576 | up = list_entry(l, struct uart_8250_port, list); |
| 1578 | port = &up->port; | 1577 | port = &up->port; |
| 1579 | skip = pass_counter && up->port.flags & UPF_IIR_ONCE; | ||
| 1580 | 1578 | ||
| 1581 | if (!skip && port->handle_irq(port)) { | 1579 | if (port->handle_irq(port)) { |
| 1582 | handled = 1; | 1580 | handled = 1; |
| 1583 | end = NULL; | 1581 | end = NULL; |
| 1584 | } else if (end == NULL) | 1582 | } else if (end == NULL) |
| @@ -2037,10 +2035,12 @@ static int serial8250_startup(struct uart_port *port) | |||
| 2037 | spin_unlock_irqrestore(&port->lock, flags); | 2035 | spin_unlock_irqrestore(&port->lock, flags); |
| 2038 | 2036 | ||
| 2039 | /* | 2037 | /* |
| 2040 | * If the interrupt is not reasserted, setup a timer to | 2038 | * If the interrupt is not reasserted, or we otherwise |
| 2041 | * kick the UART on a regular basis. | 2039 | * don't trust the iir, setup a timer to kick the UART |
| 2040 | * on a regular basis. | ||
| 2042 | */ | 2041 | */ |
| 2043 | if (!(iir1 & UART_IIR_NO_INT) && (iir & UART_IIR_NO_INT)) { | 2042 | if ((!(iir1 & UART_IIR_NO_INT) && (iir & UART_IIR_NO_INT)) || |
| 2043 | up->port.flags & UPF_BUG_THRE) { | ||
| 2044 | up->bugs |= UART_BUG_THRE; | 2044 | up->bugs |= UART_BUG_THRE; |
| 2045 | pr_debug("ttyS%d - using backup timer\n", | 2045 | pr_debug("ttyS%d - using backup timer\n", |
| 2046 | serial_index(port)); | 2046 | serial_index(port)); |
diff --git a/drivers/tty/serial/8250/8250_pci.c b/drivers/tty/serial/8250/8250_pci.c index da2b0b0a183f..858dca865d6a 100644 --- a/drivers/tty/serial/8250/8250_pci.c +++ b/drivers/tty/serial/8250/8250_pci.c | |||
| @@ -1096,7 +1096,7 @@ static int kt_serial_setup(struct serial_private *priv, | |||
| 1096 | const struct pciserial_board *board, | 1096 | const struct pciserial_board *board, |
| 1097 | struct uart_port *port, int idx) | 1097 | struct uart_port *port, int idx) |
| 1098 | { | 1098 | { |
| 1099 | port->flags |= UPF_IIR_ONCE; | 1099 | port->flags |= UPF_BUG_THRE; |
| 1100 | return skip_tx_en_setup(priv, board, port, idx); | 1100 | return skip_tx_en_setup(priv, board, port, idx); |
| 1101 | } | 1101 | } |
| 1102 | 1102 | ||
| @@ -1118,18 +1118,6 @@ pci_xr17c154_setup(struct serial_private *priv, | |||
| 1118 | return pci_default_setup(priv, board, port, idx); | 1118 | return pci_default_setup(priv, board, port, idx); |
| 1119 | } | 1119 | } |
| 1120 | 1120 | ||
| 1121 | static int try_enable_msi(struct pci_dev *dev) | ||
| 1122 | { | ||
| 1123 | /* use msi if available, but fallback to legacy otherwise */ | ||
| 1124 | pci_enable_msi(dev); | ||
| 1125 | return 0; | ||
| 1126 | } | ||
| 1127 | |||
| 1128 | static void disable_msi(struct pci_dev *dev) | ||
| 1129 | { | ||
| 1130 | pci_disable_msi(dev); | ||
| 1131 | } | ||
| 1132 | |||
| 1133 | #define PCI_VENDOR_ID_SBSMODULARIO 0x124B | 1121 | #define PCI_VENDOR_ID_SBSMODULARIO 0x124B |
| 1134 | #define PCI_SUBVENDOR_ID_SBSMODULARIO 0x124B | 1122 | #define PCI_SUBVENDOR_ID_SBSMODULARIO 0x124B |
| 1135 | #define PCI_DEVICE_ID_OCTPRO 0x0001 | 1123 | #define PCI_DEVICE_ID_OCTPRO 0x0001 |
| @@ -1249,9 +1237,7 @@ static struct pci_serial_quirk pci_serial_quirks[] __refdata = { | |||
| 1249 | .device = PCI_DEVICE_ID_INTEL_PATSBURG_KT, | 1237 | .device = PCI_DEVICE_ID_INTEL_PATSBURG_KT, |
| 1250 | .subvendor = PCI_ANY_ID, | 1238 | .subvendor = PCI_ANY_ID, |
| 1251 | .subdevice = PCI_ANY_ID, | 1239 | .subdevice = PCI_ANY_ID, |
| 1252 | .init = try_enable_msi, | ||
| 1253 | .setup = kt_serial_setup, | 1240 | .setup = kt_serial_setup, |
| 1254 | .exit = disable_msi, | ||
| 1255 | }, | 1241 | }, |
| 1256 | /* | 1242 | /* |
| 1257 | * ITE | 1243 | * ITE |
diff --git a/drivers/tty/serial/Kconfig b/drivers/tty/serial/Kconfig index 665beb68f670..070b442c1f81 100644 --- a/drivers/tty/serial/Kconfig +++ b/drivers/tty/serial/Kconfig | |||
| @@ -1041,7 +1041,7 @@ config SERIAL_OMAP | |||
| 1041 | 1041 | ||
| 1042 | config SERIAL_OMAP_CONSOLE | 1042 | config SERIAL_OMAP_CONSOLE |
| 1043 | bool "Console on OMAP serial port" | 1043 | bool "Console on OMAP serial port" |
| 1044 | depends on SERIAL_OMAP | 1044 | depends on SERIAL_OMAP=y |
| 1045 | select SERIAL_CORE_CONSOLE | 1045 | select SERIAL_CORE_CONSOLE |
| 1046 | help | 1046 | help |
| 1047 | Select this option if you would like to use omap serial port as | 1047 | Select this option if you would like to use omap serial port as |
diff --git a/drivers/tty/serial/altera_uart.c b/drivers/tty/serial/altera_uart.c index e7903751e058..1f0330915d5a 100644 --- a/drivers/tty/serial/altera_uart.c +++ b/drivers/tty/serial/altera_uart.c | |||
| @@ -556,7 +556,7 @@ static int __devinit altera_uart_probe(struct platform_device *pdev) | |||
| 556 | res_mem = platform_get_resource(pdev, IORESOURCE_MEM, 0); | 556 | res_mem = platform_get_resource(pdev, IORESOURCE_MEM, 0); |
| 557 | if (res_mem) | 557 | if (res_mem) |
| 558 | port->mapbase = res_mem->start; | 558 | port->mapbase = res_mem->start; |
| 559 | else if (platp->mapbase) | 559 | else if (platp) |
| 560 | port->mapbase = platp->mapbase; | 560 | port->mapbase = platp->mapbase; |
| 561 | else | 561 | else |
| 562 | return -EINVAL; | 562 | return -EINVAL; |
| @@ -564,7 +564,7 @@ static int __devinit altera_uart_probe(struct platform_device *pdev) | |||
| 564 | res_irq = platform_get_resource(pdev, IORESOURCE_IRQ, 0); | 564 | res_irq = platform_get_resource(pdev, IORESOURCE_IRQ, 0); |
| 565 | if (res_irq) | 565 | if (res_irq) |
| 566 | port->irq = res_irq->start; | 566 | port->irq = res_irq->start; |
| 567 | else if (platp->irq) | 567 | else if (platp) |
| 568 | port->irq = platp->irq; | 568 | port->irq = platp->irq; |
| 569 | 569 | ||
| 570 | /* Check platform data first so we can override device node data */ | 570 | /* Check platform data first so we can override device node data */ |
diff --git a/drivers/tty/serial/amba-pl011.c b/drivers/tty/serial/amba-pl011.c index 0c65c9e66986..3d569cd68f58 100644 --- a/drivers/tty/serial/amba-pl011.c +++ b/drivers/tty/serial/amba-pl011.c | |||
| @@ -1946,10 +1946,6 @@ static int pl011_probe(struct amba_device *dev, const struct amba_id *id) | |||
| 1946 | goto unmap; | 1946 | goto unmap; |
| 1947 | } | 1947 | } |
| 1948 | 1948 | ||
| 1949 | /* Ensure interrupts from this UART are masked and cleared */ | ||
| 1950 | writew(0, uap->port.membase + UART011_IMSC); | ||
| 1951 | writew(0xffff, uap->port.membase + UART011_ICR); | ||
| 1952 | |||
| 1953 | uap->vendor = vendor; | 1949 | uap->vendor = vendor; |
| 1954 | uap->lcrh_rx = vendor->lcrh_rx; | 1950 | uap->lcrh_rx = vendor->lcrh_rx; |
| 1955 | uap->lcrh_tx = vendor->lcrh_tx; | 1951 | uap->lcrh_tx = vendor->lcrh_tx; |
| @@ -1967,6 +1963,10 @@ static int pl011_probe(struct amba_device *dev, const struct amba_id *id) | |||
| 1967 | uap->port.line = i; | 1963 | uap->port.line = i; |
| 1968 | pl011_dma_probe(uap); | 1964 | pl011_dma_probe(uap); |
| 1969 | 1965 | ||
| 1966 | /* Ensure interrupts from this UART are masked and cleared */ | ||
| 1967 | writew(0, uap->port.membase + UART011_IMSC); | ||
| 1968 | writew(0xffff, uap->port.membase + UART011_ICR); | ||
| 1969 | |||
| 1970 | snprintf(uap->type, sizeof(uap->type), "PL011 rev%u", amba_rev(dev)); | 1970 | snprintf(uap->type, sizeof(uap->type), "PL011 rev%u", amba_rev(dev)); |
| 1971 | 1971 | ||
| 1972 | amba_ports[i] = uap; | 1972 | amba_ports[i] = uap; |
diff --git a/drivers/tty/serial/atmel_serial.c b/drivers/tty/serial/atmel_serial.c index f9a6be7a9bed..3d7e1ee2fa57 100644 --- a/drivers/tty/serial/atmel_serial.c +++ b/drivers/tty/serial/atmel_serial.c | |||
| @@ -389,6 +389,8 @@ static void atmel_start_rx(struct uart_port *port) | |||
| 389 | { | 389 | { |
| 390 | UART_PUT_CR(port, ATMEL_US_RSTSTA); /* reset status and receiver */ | 390 | UART_PUT_CR(port, ATMEL_US_RSTSTA); /* reset status and receiver */ |
| 391 | 391 | ||
| 392 | UART_PUT_CR(port, ATMEL_US_RXEN); | ||
| 393 | |||
| 392 | if (atmel_use_dma_rx(port)) { | 394 | if (atmel_use_dma_rx(port)) { |
| 393 | /* enable PDC controller */ | 395 | /* enable PDC controller */ |
| 394 | UART_PUT_IER(port, ATMEL_US_ENDRX | ATMEL_US_TIMEOUT | | 396 | UART_PUT_IER(port, ATMEL_US_ENDRX | ATMEL_US_TIMEOUT | |
| @@ -404,6 +406,8 @@ static void atmel_start_rx(struct uart_port *port) | |||
| 404 | */ | 406 | */ |
| 405 | static void atmel_stop_rx(struct uart_port *port) | 407 | static void atmel_stop_rx(struct uart_port *port) |
| 406 | { | 408 | { |
| 409 | UART_PUT_CR(port, ATMEL_US_RXDIS); | ||
| 410 | |||
| 407 | if (atmel_use_dma_rx(port)) { | 411 | if (atmel_use_dma_rx(port)) { |
| 408 | /* disable PDC receive */ | 412 | /* disable PDC receive */ |
| 409 | UART_PUT_PTCR(port, ATMEL_PDC_RXTDIS); | 413 | UART_PUT_PTCR(port, ATMEL_PDC_RXTDIS); |
diff --git a/drivers/tty/serial/omap-serial.c b/drivers/tty/serial/omap-serial.c index 0121486ac4fa..d00b38eb268e 100644 --- a/drivers/tty/serial/omap-serial.c +++ b/drivers/tty/serial/omap-serial.c | |||
| @@ -1381,29 +1381,24 @@ static int serial_omap_probe(struct platform_device *pdev) | |||
| 1381 | return -ENODEV; | 1381 | return -ENODEV; |
| 1382 | } | 1382 | } |
| 1383 | 1383 | ||
| 1384 | if (!request_mem_region(mem->start, resource_size(mem), | 1384 | if (!devm_request_mem_region(&pdev->dev, mem->start, resource_size(mem), |
| 1385 | pdev->dev.driver->name)) { | 1385 | pdev->dev.driver->name)) { |
| 1386 | dev_err(&pdev->dev, "memory region already claimed\n"); | 1386 | dev_err(&pdev->dev, "memory region already claimed\n"); |
| 1387 | return -EBUSY; | 1387 | return -EBUSY; |
| 1388 | } | 1388 | } |
| 1389 | 1389 | ||
| 1390 | dma_rx = platform_get_resource_byname(pdev, IORESOURCE_DMA, "rx"); | 1390 | dma_rx = platform_get_resource_byname(pdev, IORESOURCE_DMA, "rx"); |
| 1391 | if (!dma_rx) { | 1391 | if (!dma_rx) |
| 1392 | ret = -EINVAL; | 1392 | return -ENXIO; |
| 1393 | goto err; | ||
| 1394 | } | ||
| 1395 | 1393 | ||
| 1396 | dma_tx = platform_get_resource_byname(pdev, IORESOURCE_DMA, "tx"); | 1394 | dma_tx = platform_get_resource_byname(pdev, IORESOURCE_DMA, "tx"); |
| 1397 | if (!dma_tx) { | 1395 | if (!dma_tx) |
| 1398 | ret = -EINVAL; | 1396 | return -ENXIO; |
| 1399 | goto err; | 1397 | |
| 1400 | } | 1398 | up = devm_kzalloc(&pdev->dev, sizeof(*up), GFP_KERNEL); |
| 1399 | if (!up) | ||
| 1400 | return -ENOMEM; | ||
| 1401 | 1401 | ||
| 1402 | up = kzalloc(sizeof(*up), GFP_KERNEL); | ||
| 1403 | if (up == NULL) { | ||
| 1404 | ret = -ENOMEM; | ||
| 1405 | goto do_release_region; | ||
| 1406 | } | ||
| 1407 | up->pdev = pdev; | 1402 | up->pdev = pdev; |
| 1408 | up->port.dev = &pdev->dev; | 1403 | up->port.dev = &pdev->dev; |
| 1409 | up->port.type = PORT_OMAP; | 1404 | up->port.type = PORT_OMAP; |
| @@ -1423,16 +1418,17 @@ static int serial_omap_probe(struct platform_device *pdev) | |||
| 1423 | dev_err(&pdev->dev, "failed to get alias/pdev id, errno %d\n", | 1418 | dev_err(&pdev->dev, "failed to get alias/pdev id, errno %d\n", |
| 1424 | up->port.line); | 1419 | up->port.line); |
| 1425 | ret = -ENODEV; | 1420 | ret = -ENODEV; |
| 1426 | goto err; | 1421 | goto err_port_line; |
| 1427 | } | 1422 | } |
| 1428 | 1423 | ||
| 1429 | sprintf(up->name, "OMAP UART%d", up->port.line); | 1424 | sprintf(up->name, "OMAP UART%d", up->port.line); |
| 1430 | up->port.mapbase = mem->start; | 1425 | up->port.mapbase = mem->start; |
| 1431 | up->port.membase = ioremap(mem->start, resource_size(mem)); | 1426 | up->port.membase = devm_ioremap(&pdev->dev, mem->start, |
| 1427 | resource_size(mem)); | ||
| 1432 | if (!up->port.membase) { | 1428 | if (!up->port.membase) { |
| 1433 | dev_err(&pdev->dev, "can't ioremap UART\n"); | 1429 | dev_err(&pdev->dev, "can't ioremap UART\n"); |
| 1434 | ret = -ENOMEM; | 1430 | ret = -ENOMEM; |
| 1435 | goto err; | 1431 | goto err_ioremap; |
| 1436 | } | 1432 | } |
| 1437 | 1433 | ||
| 1438 | up->port.flags = omap_up_info->flags; | 1434 | up->port.flags = omap_up_info->flags; |
| @@ -1478,16 +1474,19 @@ static int serial_omap_probe(struct platform_device *pdev) | |||
| 1478 | 1474 | ||
| 1479 | ret = uart_add_one_port(&serial_omap_reg, &up->port); | 1475 | ret = uart_add_one_port(&serial_omap_reg, &up->port); |
| 1480 | if (ret != 0) | 1476 | if (ret != 0) |
| 1481 | goto do_release_region; | 1477 | goto err_add_port; |
| 1482 | 1478 | ||
| 1483 | pm_runtime_put(&pdev->dev); | 1479 | pm_runtime_put(&pdev->dev); |
| 1484 | platform_set_drvdata(pdev, up); | 1480 | platform_set_drvdata(pdev, up); |
| 1485 | return 0; | 1481 | return 0; |
| 1486 | err: | 1482 | |
| 1483 | err_add_port: | ||
| 1484 | pm_runtime_put(&pdev->dev); | ||
| 1485 | pm_runtime_disable(&pdev->dev); | ||
| 1486 | err_ioremap: | ||
| 1487 | err_port_line: | ||
| 1487 | dev_err(&pdev->dev, "[UART%d]: failure [%s]: %d\n", | 1488 | dev_err(&pdev->dev, "[UART%d]: failure [%s]: %d\n", |
| 1488 | pdev->id, __func__, ret); | 1489 | pdev->id, __func__, ret); |
| 1489 | do_release_region: | ||
| 1490 | release_mem_region(mem->start, resource_size(mem)); | ||
| 1491 | return ret; | 1490 | return ret; |
| 1492 | } | 1491 | } |
| 1493 | 1492 | ||
| @@ -1499,8 +1498,6 @@ static int serial_omap_remove(struct platform_device *dev) | |||
| 1499 | pm_runtime_disable(&up->pdev->dev); | 1498 | pm_runtime_disable(&up->pdev->dev); |
| 1500 | uart_remove_one_port(&serial_omap_reg, &up->port); | 1499 | uart_remove_one_port(&serial_omap_reg, &up->port); |
| 1501 | pm_qos_remove_request(&up->pm_qos_request); | 1500 | pm_qos_remove_request(&up->pm_qos_request); |
| 1502 | |||
| 1503 | kfree(up); | ||
| 1504 | } | 1501 | } |
| 1505 | 1502 | ||
| 1506 | platform_set_drvdata(dev, NULL); | 1503 | platform_set_drvdata(dev, NULL); |
diff --git a/drivers/tty/serial/pch_uart.c b/drivers/tty/serial/pch_uart.c index 08b9962b8fda..bbbec4a74cfb 100644 --- a/drivers/tty/serial/pch_uart.c +++ b/drivers/tty/serial/pch_uart.c | |||
| @@ -210,6 +210,7 @@ enum { | |||
| 210 | #define CMITC_UARTCLK 192000000 /* 192.0000 MHz */ | 210 | #define CMITC_UARTCLK 192000000 /* 192.0000 MHz */ |
| 211 | #define FRI2_64_UARTCLK 64000000 /* 64.0000 MHz */ | 211 | #define FRI2_64_UARTCLK 64000000 /* 64.0000 MHz */ |
| 212 | #define FRI2_48_UARTCLK 48000000 /* 48.0000 MHz */ | 212 | #define FRI2_48_UARTCLK 48000000 /* 48.0000 MHz */ |
| 213 | #define NTC1_UARTCLK 64000000 /* 64.0000 MHz */ | ||
| 213 | 214 | ||
| 214 | struct pch_uart_buffer { | 215 | struct pch_uart_buffer { |
| 215 | unsigned char *buf; | 216 | unsigned char *buf; |
| @@ -384,6 +385,12 @@ static int pch_uart_get_uartclk(void) | |||
| 384 | if (cmp && strstr(cmp, "Fish River Island II")) | 385 | if (cmp && strstr(cmp, "Fish River Island II")) |
| 385 | return FRI2_48_UARTCLK; | 386 | return FRI2_48_UARTCLK; |
| 386 | 387 | ||
| 388 | /* Kontron COMe-mTT10 (nanoETXexpress-TT) */ | ||
| 389 | cmp = dmi_get_system_info(DMI_BOARD_NAME); | ||
| 390 | if (cmp && (strstr(cmp, "COMe-mTT") || | ||
| 391 | strstr(cmp, "nanoETXexpress-TT"))) | ||
| 392 | return NTC1_UARTCLK; | ||
| 393 | |||
| 387 | return DEFAULT_UARTCLK; | 394 | return DEFAULT_UARTCLK; |
| 388 | } | 395 | } |
| 389 | 396 | ||
| @@ -1651,6 +1658,7 @@ static struct eg20t_port *pch_uart_init_port(struct pci_dev *pdev, | |||
| 1651 | } | 1658 | } |
| 1652 | 1659 | ||
| 1653 | pci_enable_msi(pdev); | 1660 | pci_enable_msi(pdev); |
| 1661 | pci_set_master(pdev); | ||
| 1654 | 1662 | ||
| 1655 | iobase = pci_resource_start(pdev, 0); | 1663 | iobase = pci_resource_start(pdev, 0); |
| 1656 | mapbase = pci_resource_start(pdev, 1); | 1664 | mapbase = pci_resource_start(pdev, 1); |
diff --git a/drivers/tty/serial/samsung.c b/drivers/tty/serial/samsung.c index de249d265bec..d8b0aee35632 100644 --- a/drivers/tty/serial/samsung.c +++ b/drivers/tty/serial/samsung.c | |||
| @@ -982,6 +982,7 @@ static void s3c24xx_serial_resetport(struct uart_port *port, | |||
| 982 | 982 | ||
| 983 | ucon &= ucon_mask; | 983 | ucon &= ucon_mask; |
| 984 | wr_regl(port, S3C2410_UCON, ucon | cfg->ucon); | 984 | wr_regl(port, S3C2410_UCON, ucon | cfg->ucon); |
| 985 | wr_regl(port, S3C2410_ULCON, cfg->ulcon); | ||
| 985 | 986 | ||
| 986 | /* reset both fifos */ | 987 | /* reset both fifos */ |
| 987 | wr_regl(port, S3C2410_UFCON, cfg->ufcon | S3C2410_UFCON_RESETBOTH); | 988 | wr_regl(port, S3C2410_UFCON, cfg->ufcon | S3C2410_UFCON_RESETBOTH); |
diff --git a/drivers/tty/vt/vt.c b/drivers/tty/vt/vt.c index 3bdd4b19dd06..2156188db4a6 100644 --- a/drivers/tty/vt/vt.c +++ b/drivers/tty/vt/vt.c | |||
| @@ -2932,11 +2932,10 @@ static int __init con_init(void) | |||
| 2932 | gotoxy(vc, vc->vc_x, vc->vc_y); | 2932 | gotoxy(vc, vc->vc_x, vc->vc_y); |
| 2933 | csi_J(vc, 0); | 2933 | csi_J(vc, 0); |
| 2934 | update_screen(vc); | 2934 | update_screen(vc); |
| 2935 | pr_info("Console: %s %s %dx%d", | 2935 | pr_info("Console: %s %s %dx%d\n", |
| 2936 | vc->vc_can_do_color ? "colour" : "mono", | 2936 | vc->vc_can_do_color ? "colour" : "mono", |
| 2937 | display_desc, vc->vc_cols, vc->vc_rows); | 2937 | display_desc, vc->vc_cols, vc->vc_rows); |
| 2938 | printable = 1; | 2938 | printable = 1; |
| 2939 | printk("\n"); | ||
| 2940 | 2939 | ||
| 2941 | console_unlock(); | 2940 | console_unlock(); |
| 2942 | 2941 | ||
diff --git a/include/linux/serial_core.h b/include/linux/serial_core.h index f51bf2e70c69..2db407a40051 100644 --- a/include/linux/serial_core.h +++ b/include/linux/serial_core.h | |||
| @@ -357,7 +357,7 @@ struct uart_port { | |||
| 357 | #define UPF_CONS_FLOW ((__force upf_t) (1 << 23)) | 357 | #define UPF_CONS_FLOW ((__force upf_t) (1 << 23)) |
| 358 | #define UPF_SHARE_IRQ ((__force upf_t) (1 << 24)) | 358 | #define UPF_SHARE_IRQ ((__force upf_t) (1 << 24)) |
| 359 | #define UPF_EXAR_EFR ((__force upf_t) (1 << 25)) | 359 | #define UPF_EXAR_EFR ((__force upf_t) (1 << 25)) |
| 360 | #define UPF_IIR_ONCE ((__force upf_t) (1 << 26)) | 360 | #define UPF_BUG_THRE ((__force upf_t) (1 << 26)) |
| 361 | /* The exact UART type is known and should not be probed. */ | 361 | /* The exact UART type is known and should not be probed. */ |
| 362 | #define UPF_FIXED_TYPE ((__force upf_t) (1 << 27)) | 362 | #define UPF_FIXED_TYPE ((__force upf_t) (1 << 27)) |
| 363 | #define UPF_BOOT_AUTOCONF ((__force upf_t) (1 << 28)) | 363 | #define UPF_BOOT_AUTOCONF ((__force upf_t) (1 << 28)) |
