|
@@ -852,19 +852,6 @@ static void imx_break_ctl(struct uart_port *port, int break_state)
|
|
|
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)
|
|
|
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;
|
|
|
}
|
|
|
|
|
|
+#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)
|
|
|
{
|
|
|
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.src_addr = sport->port.mapbase + URXD0;
|
|
|
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);
|
|
|
if (ret) {
|
|
|
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.dst_addr = sport->port.mapbase + URTX0;
|
|
|
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);
|
|
|
if (ret) {
|
|
|
dev_err(dev, "error in TX dma configuration.");
|
|
@@ -1115,7 +1116,7 @@ static int imx_startup(struct uart_port *port)
|
|
|
return retval;
|
|
|
}
|
|
|
|
|
|
- imx_setup_ufcr(sport, 0);
|
|
|
+ imx_setup_ufcr(sport, TXTL_DEFAULT, RXTL_DEFAULT);
|
|
|
|
|
|
/* disable the DREN bit (Data Ready interrupt enable) before
|
|
|
* requesting IRQs
|
|
@@ -1503,7 +1504,7 @@ static int imx_poll_init(struct uart_port *port)
|
|
|
if (retval)
|
|
|
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);
|
|
|
|
|
@@ -1773,7 +1774,7 @@ imx_console_setup(struct console *co, char *options)
|
|
|
else
|
|
|
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);
|
|
|
|