aboutsummaryrefslogtreecommitdiffstats
path: root/drivers/tty/serial
diff options
context:
space:
mode:
authorLinus Torvalds <torvalds@linux-foundation.org>2014-01-28 21:50:24 -0500
committerLinus Torvalds <torvalds@linux-foundation.org>2014-01-28 21:50:24 -0500
commit2ad48ee810335bdd99de96e1a0796ba34c0e8301 (patch)
tree23fb16423129a22e3e866005883b4f461aadcd84 /drivers/tty/serial
parentd30492adea3a82e7120bcf60893aaaab711f90a6 (diff)
parent4fbd269f1f9f8020dd9474b60e55c4f34d267b08 (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.c4
-rw-r--r--drivers/tty/serial/pch_uart.c10
-rw-r--r--drivers/tty/serial/samsung.c8
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)