diff options
Diffstat (limited to 'drivers/serial/imx.c')
-rw-r--r-- | drivers/serial/imx.c | 14 |
1 files changed, 7 insertions, 7 deletions
diff --git a/drivers/serial/imx.c b/drivers/serial/imx.c index e216dcf29376..04cc88cc528c 100644 --- a/drivers/serial/imx.c +++ b/drivers/serial/imx.c | |||
@@ -154,7 +154,7 @@ static inline void imx_transmit_buffer(struct imx_port *sport) | |||
154 | { | 154 | { |
155 | struct circ_buf *xmit = &sport->port.info->xmit; | 155 | struct circ_buf *xmit = &sport->port.info->xmit; |
156 | 156 | ||
157 | do { | 157 | while (!(UTS((u32)sport->port.membase) & UTS_TXFULL)) { |
158 | /* send xmit->buf[xmit->tail] | 158 | /* send xmit->buf[xmit->tail] |
159 | * out the port here */ | 159 | * out the port here */ |
160 | URTX0((u32)sport->port.membase) = xmit->buf[xmit->tail]; | 160 | URTX0((u32)sport->port.membase) = xmit->buf[xmit->tail]; |
@@ -163,7 +163,7 @@ static inline void imx_transmit_buffer(struct imx_port *sport) | |||
163 | sport->port.icount.tx++; | 163 | sport->port.icount.tx++; |
164 | if (uart_circ_empty(xmit)) | 164 | if (uart_circ_empty(xmit)) |
165 | break; | 165 | break; |
166 | } while (!(UTS((u32)sport->port.membase) & UTS_TXFULL)); | 166 | } |
167 | 167 | ||
168 | if (uart_circ_empty(xmit)) | 168 | if (uart_circ_empty(xmit)) |
169 | imx_stop_tx(&sport->port); | 169 | imx_stop_tx(&sport->port); |
@@ -178,8 +178,7 @@ static void imx_start_tx(struct uart_port *port) | |||
178 | 178 | ||
179 | UCR1((u32)sport->port.membase) |= UCR1_TXMPTYEN; | 179 | UCR1((u32)sport->port.membase) |= UCR1_TXMPTYEN; |
180 | 180 | ||
181 | if(UTS((u32)sport->port.membase) & UTS_TXEMPTY) | 181 | imx_transmit_buffer(sport); |
182 | imx_transmit_buffer(sport); | ||
183 | } | 182 | } |
184 | 183 | ||
185 | static irqreturn_t imx_rtsint(int irq, void *dev_id) | 184 | static irqreturn_t imx_rtsint(int irq, void *dev_id) |
@@ -404,7 +403,8 @@ static int imx_startup(struct uart_port *port) | |||
404 | if (retval) goto error_out2; | 403 | if (retval) goto error_out2; |
405 | 404 | ||
406 | retval = request_irq(sport->rtsirq, imx_rtsint, | 405 | retval = request_irq(sport->rtsirq, imx_rtsint, |
407 | IRQF_TRIGGER_FALLING | IRQF_TRIGGER_RISING, | 406 | (sport->rtsirq < IMX_IRQS) ? 0 : |
407 | IRQF_TRIGGER_FALLING | IRQF_TRIGGER_RISING, | ||
408 | DRIVER_NAME, sport); | 408 | DRIVER_NAME, sport); |
409 | if (retval) goto error_out3; | 409 | if (retval) goto error_out3; |
410 | 410 | ||
@@ -678,7 +678,7 @@ static struct imx_port imx_ports[] = { | |||
678 | .mapbase = IMX_UART1_BASE, /* FIXME */ | 678 | .mapbase = IMX_UART1_BASE, /* FIXME */ |
679 | .irq = UART1_MINT_RX, | 679 | .irq = UART1_MINT_RX, |
680 | .uartclk = 16000000, | 680 | .uartclk = 16000000, |
681 | .fifosize = 8, | 681 | .fifosize = 32, |
682 | .flags = UPF_BOOT_AUTOCONF, | 682 | .flags = UPF_BOOT_AUTOCONF, |
683 | .ops = &imx_pops, | 683 | .ops = &imx_pops, |
684 | .line = 0, | 684 | .line = 0, |
@@ -694,7 +694,7 @@ static struct imx_port imx_ports[] = { | |||
694 | .mapbase = IMX_UART2_BASE, /* FIXME */ | 694 | .mapbase = IMX_UART2_BASE, /* FIXME */ |
695 | .irq = UART2_MINT_RX, | 695 | .irq = UART2_MINT_RX, |
696 | .uartclk = 16000000, | 696 | .uartclk = 16000000, |
697 | .fifosize = 8, | 697 | .fifosize = 32, |
698 | .flags = UPF_BOOT_AUTOCONF, | 698 | .flags = UPF_BOOT_AUTOCONF, |
699 | .ops = &imx_pops, | 699 | .ops = &imx_pops, |
700 | .line = 1, | 700 | .line = 1, |