Merge branch 'fixes' into tty-next
authorGreg Kroah-Hartman <gregkh@linuxfoundation.org>
Wed, 22 Jan 2014 21:42:19 +0000 (13:42 -0800)
committerGreg Kroah-Hartman <gregkh@linuxfoundation.org>
Wed, 22 Jan 2014 21:42:19 +0000 (13:42 -0800)
This was a "forgotten" branch of tty fixes that somehow didn't make it
into my "main" branches, my fault.

Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
drivers/tty/serial/icom.c
drivers/tty/serial/pch_uart.c
drivers/tty/serial/samsung.c

index d98e4334897040cd7e6a482fee5a7a913338c4ec..67423805e6d9b0ed761c26958e7cf2df9a31e8f0 100644 (file)
@@ -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
index 9cbd3acaf37fca13a55ea6b9a854e259790d1758..8fa1134e005165dc2ca33ef43b9d575368602590 100644 (file)
@@ -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;
index c1af04d46682657794b4893f3eac571a13acc685..9cd706df3b3351cbfa10fa14c254b36724601cc1 100644 (file)
@@ -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)