diff options
author | Linus Torvalds <torvalds@linux-foundation.org> | 2014-01-28 21:50:24 -0500 |
---|---|---|
committer | Linus Torvalds <torvalds@linux-foundation.org> | 2014-01-28 21:50:24 -0500 |
commit | 2ad48ee810335bdd99de96e1a0796ba34c0e8301 (patch) | |
tree | 23fb16423129a22e3e866005883b4f461aadcd84 /drivers/tty/serial | |
parent | d30492adea3a82e7120bcf60893aaaab711f90a6 (diff) | |
parent | 4fbd269f1f9f8020dd9474b60e55c4f34d267b08 (diff) |
Merge tag 'tty-3.14-rc1' of git://git.kernel.org/pub/scm/linux/kernel/git/gregkh/tty
Pull serial fixes from Greg KH:
"Here are tiny and assorted serial driver fixes that have been in a
branch in my tree for a while and somehow did not get properly merged
into my big TTY / Serial pull request for 3.14-rc1. Sorry about that.
All have been in linux-next for a while with no issues"
* tag 'tty-3.14-rc1' of git://git.kernel.org/pub/scm/linux/kernel/git/gregkh/tty:
tty: xuartps: Properly guard sysrq specific code
serial: 8250: Fix initialisation of Quatech cards with the AMCC PCI chip
serial: icom: dereference after free in load_code()
serial: 8250_dw: add new ACPI IDs
tty: serial: pch: don't crash if DMA enabled but not loaded
serial: samsung: move clock deactivation below uart registration
Diffstat (limited to 'drivers/tty/serial')
-rw-r--r-- | drivers/tty/serial/icom.c | 4 | ||||
-rw-r--r-- | drivers/tty/serial/pch_uart.c | 10 | ||||
-rw-r--r-- | drivers/tty/serial/samsung.c | 8 |
3 files changed, 16 insertions, 6 deletions
diff --git a/drivers/tty/serial/icom.c b/drivers/tty/serial/icom.c index d98e43348970..67423805e6d9 100644 --- a/drivers/tty/serial/icom.c +++ b/drivers/tty/serial/icom.c | |||
@@ -455,11 +455,11 @@ static void load_code(struct icom_port *icom_port) | |||
455 | for (index = 0; index < fw->size; index++) | 455 | for (index = 0; index < fw->size; index++) |
456 | new_page[index] = fw->data[index]; | 456 | new_page[index] = fw->data[index]; |
457 | 457 | ||
458 | release_firmware(fw); | ||
459 | |||
460 | writeb((char) ((fw->size + 16)/16), &icom_port->dram->mac_length); | 458 | writeb((char) ((fw->size + 16)/16), &icom_port->dram->mac_length); |
461 | writel(temp_pci, &icom_port->dram->mac_load_addr); | 459 | writel(temp_pci, &icom_port->dram->mac_load_addr); |
462 | 460 | ||
461 | release_firmware(fw); | ||
462 | |||
463 | /*Setting the syncReg to 0x80 causes adapter to start downloading | 463 | /*Setting the syncReg to 0x80 causes adapter to start downloading |
464 | the personality code into adapter instruction RAM. | 464 | the personality code into adapter instruction RAM. |
465 | Once code is loaded, it will begin executing and, based on | 465 | Once code is loaded, it will begin executing and, based on |
diff --git a/drivers/tty/serial/pch_uart.c b/drivers/tty/serial/pch_uart.c index 9cbd3acaf37f..8fa1134e0051 100644 --- a/drivers/tty/serial/pch_uart.c +++ b/drivers/tty/serial/pch_uart.c | |||
@@ -1508,10 +1508,14 @@ static int pch_uart_verify_port(struct uart_port *port, | |||
1508 | __func__); | 1508 | __func__); |
1509 | return -EOPNOTSUPP; | 1509 | return -EOPNOTSUPP; |
1510 | #endif | 1510 | #endif |
1511 | dev_info(priv->port.dev, "PCH UART : Use DMA Mode\n"); | 1511 | if (!priv->use_dma) { |
1512 | if (!priv->use_dma) | ||
1513 | pch_request_dma(port); | 1512 | pch_request_dma(port); |
1514 | priv->use_dma = 1; | 1513 | if (priv->chan_rx) |
1514 | priv->use_dma = 1; | ||
1515 | } | ||
1516 | dev_info(priv->port.dev, "PCH UART: %s\n", | ||
1517 | priv->use_dma ? | ||
1518 | "Use DMA Mode" : "No DMA"); | ||
1515 | } | 1519 | } |
1516 | 1520 | ||
1517 | return 0; | 1521 | return 0; |
diff --git a/drivers/tty/serial/samsung.c b/drivers/tty/serial/samsung.c index c1af04d46682..9cd706df3b33 100644 --- a/drivers/tty/serial/samsung.c +++ b/drivers/tty/serial/samsung.c | |||
@@ -1209,7 +1209,6 @@ static int s3c24xx_serial_init_port(struct s3c24xx_uart_port *ourport, | |||
1209 | 1209 | ||
1210 | /* reset the fifos (and setup the uart) */ | 1210 | /* reset the fifos (and setup the uart) */ |
1211 | s3c24xx_serial_resetport(port, cfg); | 1211 | s3c24xx_serial_resetport(port, cfg); |
1212 | clk_disable_unprepare(ourport->clk); | ||
1213 | return 0; | 1212 | return 0; |
1214 | } | 1213 | } |
1215 | 1214 | ||
@@ -1287,6 +1286,13 @@ static int s3c24xx_serial_probe(struct platform_device *pdev) | |||
1287 | uart_add_one_port(&s3c24xx_uart_drv, &ourport->port); | 1286 | uart_add_one_port(&s3c24xx_uart_drv, &ourport->port); |
1288 | platform_set_drvdata(pdev, &ourport->port); | 1287 | platform_set_drvdata(pdev, &ourport->port); |
1289 | 1288 | ||
1289 | /* | ||
1290 | * Deactivate the clock enabled in s3c24xx_serial_init_port here, | ||
1291 | * so that a potential re-enablement through the pm-callback overlaps | ||
1292 | * and keeps the clock enabled in this case. | ||
1293 | */ | ||
1294 | clk_disable_unprepare(ourport->clk); | ||
1295 | |||
1290 | #ifdef CONFIG_SAMSUNG_CLOCK | 1296 | #ifdef CONFIG_SAMSUNG_CLOCK |
1291 | ret = device_create_file(&pdev->dev, &dev_attr_clock_source); | 1297 | ret = device_create_file(&pdev->dev, &dev_attr_clock_source); |
1292 | if (ret < 0) | 1298 | if (ret < 0) |