Browse Source

Merge branch 'fixes' into tty-next

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>
Greg Kroah-Hartman 11 years ago
parent
commit
4fbd269f1f
3 changed files with 16 additions and 6 deletions
  1. 2 2
      drivers/tty/serial/icom.c
  2. 7 3
      drivers/tty/serial/pch_uart.c
  3. 7 1
      drivers/tty/serial/samsung.c

+ 2 - 2
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++)
 	for (index = 0; index < fw->size; index++)
 		new_page[index] = fw->data[index];
 		new_page[index] = fw->data[index];
 
 
-	release_firmware(fw);
-
 	writeb((char) ((fw->size + 16)/16), &icom_port->dram->mac_length);
 	writeb((char) ((fw->size + 16)/16), &icom_port->dram->mac_length);
 	writel(temp_pci, &icom_port->dram->mac_load_addr);
 	writel(temp_pci, &icom_port->dram->mac_load_addr);
 
 
+	release_firmware(fw);
+
 	/*Setting the syncReg to 0x80 causes adapter to start downloading
 	/*Setting the syncReg to 0x80 causes adapter to start downloading
 	   the personality code into adapter instruction RAM.
 	   the personality code into adapter instruction RAM.
 	   Once code is loaded, it will begin executing and, based on
 	   Once code is loaded, it will begin executing and, based on

+ 7 - 3
drivers/tty/serial/pch_uart.c

@@ -1508,10 +1508,14 @@ static int pch_uart_verify_port(struct uart_port *port,
 			__func__);
 			__func__);
 		return -EOPNOTSUPP;
 		return -EOPNOTSUPP;
 #endif
 #endif
-		dev_info(priv->port.dev, "PCH UART : Use DMA Mode\n");
-		if (!priv->use_dma)
+		if (!priv->use_dma) {
 			pch_request_dma(port);
 			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;
 	return 0;

+ 7 - 1
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) */
 	/* reset the fifos (and setup the uart) */
 	s3c24xx_serial_resetport(port, cfg);
 	s3c24xx_serial_resetport(port, cfg);
-	clk_disable_unprepare(ourport->clk);
 	return 0;
 	return 0;
 }
 }
 
 
@@ -1287,6 +1286,13 @@ static int s3c24xx_serial_probe(struct platform_device *pdev)
 	uart_add_one_port(&s3c24xx_uart_drv, &ourport->port);
 	uart_add_one_port(&s3c24xx_uart_drv, &ourport->port);
 	platform_set_drvdata(pdev, &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
 #ifdef CONFIG_SAMSUNG_CLOCK
 	ret = device_create_file(&pdev->dev, &dev_attr_clock_source);
 	ret = device_create_file(&pdev->dev, &dev_attr_clock_source);
 	if (ret < 0)
 	if (ret < 0)