diff options
author | Linus Torvalds <torvalds@linux-foundation.org> | 2014-01-28 18:50:24 -0800 |
---|---|---|
committer | Linus Torvalds <torvalds@linux-foundation.org> | 2014-01-28 18:50:24 -0800 |
commit | 2ad48ee810335bdd99de96e1a0796ba34c0e8301 (patch) | |
tree | 23fb16423129a22e3e866005883b4f461aadcd84 /drivers | |
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')
-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 d98e4334897..67423805e6d 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) for (index = 0; index < fw->size; index++) new_page[index] = fw->data[index]; - release_firmware(fw); - writeb((char) ((fw->size + 16)/16), &icom_port->dram->mac_length); writel(temp_pci, &icom_port->dram->mac_load_addr); + release_firmware(fw); + /*Setting the syncReg to 0x80 causes adapter to start downloading the personality code into adapter instruction RAM. 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 9cbd3acaf37..8fa1134e005 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, __func__); return -EOPNOTSUPP; #endif - dev_info(priv->port.dev, "PCH UART : Use DMA Mode\n"); - if (!priv->use_dma) + if (!priv->use_dma) { pch_request_dma(port); - priv->use_dma = 1; + if (priv->chan_rx) + priv->use_dma = 1; + } + dev_info(priv->port.dev, "PCH UART: %s\n", + priv->use_dma ? + "Use DMA Mode" : "No DMA"); } return 0; diff --git a/drivers/tty/serial/samsung.c b/drivers/tty/serial/samsung.c index c1af04d4668..9cd706df3b3 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, /* reset the fifos (and setup the uart) */ s3c24xx_serial_resetport(port, cfg); - clk_disable_unprepare(ourport->clk); return 0; } @@ -1287,6 +1286,13 @@ static int s3c24xx_serial_probe(struct platform_device *pdev) uart_add_one_port(&s3c24xx_uart_drv, &ourport->port); platform_set_drvdata(pdev, &ourport->port); + /* + * Deactivate the clock enabled in s3c24xx_serial_init_port here, + * so that a potential re-enablement through the pm-callback overlaps + * and keeps the clock enabled in this case. + */ + clk_disable_unprepare(ourport->clk); + #ifdef CONFIG_SAMSUNG_CLOCK ret = device_create_file(&pdev->dev, &dev_attr_clock_source); if (ret < 0) |