浏览代码

serial: imx: make setup_ufcr more useful

This function currently doesn't use its parameter.

Change prototype to pass in watermark levels, so we can reuse this
function in the DMA setup paths. Also relocate to be near the calling
functions.

Signed-off-by: Lucas Stach <l.stach@pengutronix.de>
Acked-by: Jiada Wang <jiada_wang@mentor.com>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
Lucas Stach 10 年之前
父节点
当前提交
cc32382d9f
共有 1 个文件被更改,包括 19 次插入18 次删除
  1. 19 18
      drivers/tty/serial/imx.c

+ 19 - 18
drivers/tty/serial/imx.c

@@ -852,19 +852,6 @@ static void imx_break_ctl(struct uart_port *port, int break_state)
 	spin_unlock_irqrestore(&sport->port.lock, flags);
 	spin_unlock_irqrestore(&sport->port.lock, flags);
 }
 }
 
 
-#define TXTL 2 /* reset default */
-#define RXTL 1 /* reset default */
-
-static void imx_setup_ufcr(struct imx_port *sport, unsigned int mode)
-{
-	unsigned int val;
-
-	/* set receiver / transmitter trigger level */
-	val = readl(sport->port.membase + UFCR) & (UFCR_RFDIV | UFCR_DCEDTE);
-	val |= TXTL << UFCR_TXTL_SHF | RXTL;
-	writel(val, sport->port.membase + UFCR);
-}
-
 #define RX_BUF_SIZE	(PAGE_SIZE)
 #define RX_BUF_SIZE	(PAGE_SIZE)
 static void imx_rx_dma_done(struct imx_port *sport)
 static void imx_rx_dma_done(struct imx_port *sport)
 {
 {
@@ -980,6 +967,20 @@ static int start_rx_dma(struct imx_port *sport)
 	return 0;
 	return 0;
 }
 }
 
 
+#define TXTL_DEFAULT 2 /* reset default */
+#define RXTL_DEFAULT 1 /* reset default */
+
+static void imx_setup_ufcr(struct imx_port *sport,
+			  unsigned char txwl, unsigned char rxwl)
+{
+	unsigned int val;
+
+	/* set receiver / transmitter trigger level */
+	val = readl(sport->port.membase + UFCR) & (UFCR_RFDIV | UFCR_DCEDTE);
+	val |= txwl << UFCR_TXTL_SHF | rxwl;
+	writel(val, sport->port.membase + UFCR);
+}
+
 static void imx_uart_dma_exit(struct imx_port *sport)
 static void imx_uart_dma_exit(struct imx_port *sport)
 {
 {
 	if (sport->dma_chan_rx) {
 	if (sport->dma_chan_rx) {
@@ -1015,7 +1016,7 @@ static int imx_uart_dma_init(struct imx_port *sport)
 	slave_config.direction = DMA_DEV_TO_MEM;
 	slave_config.direction = DMA_DEV_TO_MEM;
 	slave_config.src_addr = sport->port.mapbase + URXD0;
 	slave_config.src_addr = sport->port.mapbase + URXD0;
 	slave_config.src_addr_width = DMA_SLAVE_BUSWIDTH_1_BYTE;
 	slave_config.src_addr_width = DMA_SLAVE_BUSWIDTH_1_BYTE;
-	slave_config.src_maxburst = RXTL;
+	slave_config.src_maxburst = RXTL_DEFAULT;
 	ret = dmaengine_slave_config(sport->dma_chan_rx, &slave_config);
 	ret = dmaengine_slave_config(sport->dma_chan_rx, &slave_config);
 	if (ret) {
 	if (ret) {
 		dev_err(dev, "error in RX dma configuration.\n");
 		dev_err(dev, "error in RX dma configuration.\n");
@@ -1039,7 +1040,7 @@ static int imx_uart_dma_init(struct imx_port *sport)
 	slave_config.direction = DMA_MEM_TO_DEV;
 	slave_config.direction = DMA_MEM_TO_DEV;
 	slave_config.dst_addr = sport->port.mapbase + URTX0;
 	slave_config.dst_addr = sport->port.mapbase + URTX0;
 	slave_config.dst_addr_width = DMA_SLAVE_BUSWIDTH_1_BYTE;
 	slave_config.dst_addr_width = DMA_SLAVE_BUSWIDTH_1_BYTE;
-	slave_config.dst_maxburst = TXTL;
+	slave_config.dst_maxburst = TXTL_DEFAULT;
 	ret = dmaengine_slave_config(sport->dma_chan_tx, &slave_config);
 	ret = dmaengine_slave_config(sport->dma_chan_tx, &slave_config);
 	if (ret) {
 	if (ret) {
 		dev_err(dev, "error in TX dma configuration.");
 		dev_err(dev, "error in TX dma configuration.");
@@ -1115,7 +1116,7 @@ static int imx_startup(struct uart_port *port)
 		return retval;
 		return retval;
 	}
 	}
 
 
-	imx_setup_ufcr(sport, 0);
+	imx_setup_ufcr(sport, TXTL_DEFAULT, RXTL_DEFAULT);
 
 
 	/* disable the DREN bit (Data Ready interrupt enable) before
 	/* disable the DREN bit (Data Ready interrupt enable) before
 	 * requesting IRQs
 	 * requesting IRQs
@@ -1503,7 +1504,7 @@ static int imx_poll_init(struct uart_port *port)
 	if (retval)
 	if (retval)
 		clk_disable_unprepare(sport->clk_ipg);
 		clk_disable_unprepare(sport->clk_ipg);
 
 
-	imx_setup_ufcr(sport, 0);
+	imx_setup_ufcr(sport, TXTL_DEFAULT, RXTL_DEFAULT);
 
 
 	spin_lock_irqsave(&sport->port.lock, flags);
 	spin_lock_irqsave(&sport->port.lock, flags);
 
 
@@ -1773,7 +1774,7 @@ imx_console_setup(struct console *co, char *options)
 	else
 	else
 		imx_console_get_options(sport, &baud, &parity, &bits);
 		imx_console_get_options(sport, &baud, &parity, &bits);
 
 
-	imx_setup_ufcr(sport, 0);
+	imx_setup_ufcr(sport, TXTL_DEFAULT, RXTL_DEFAULT);
 
 
 	retval = uart_set_options(&sport->port, co, baud, parity, bits, flow);
 	retval = uart_set_options(&sport->port, co, baud, parity, bits, flow);