|
@@ -732,29 +732,6 @@ static void imx_disable_rx_int(struct imx_port *sport)
|
|
|
}
|
|
|
|
|
|
static void clear_rx_errors(struct imx_port *sport);
|
|
|
-static int start_rx_dma(struct imx_port *sport);
|
|
|
-/*
|
|
|
- * If the RXFIFO is filled with some data, and then we
|
|
|
- * arise a DMA operation to receive them.
|
|
|
- */
|
|
|
-static void imx_dma_rxint(struct imx_port *sport)
|
|
|
-{
|
|
|
- unsigned long temp;
|
|
|
- unsigned long flags;
|
|
|
-
|
|
|
- spin_lock_irqsave(&sport->port.lock, flags);
|
|
|
-
|
|
|
- temp = readl(sport->port.membase + USR2);
|
|
|
- if ((temp & USR2_RDR) && !sport->dma_is_rxing) {
|
|
|
-
|
|
|
- imx_disable_rx_int(sport);
|
|
|
-
|
|
|
- /* tell the DMA to receive the data. */
|
|
|
- start_rx_dma(sport);
|
|
|
- }
|
|
|
-
|
|
|
- spin_unlock_irqrestore(&sport->port.lock, flags);
|
|
|
-}
|
|
|
|
|
|
/*
|
|
|
* We have a modem side uart, so the meanings of RTS and CTS are inverted.
|
|
@@ -816,11 +793,8 @@ static irqreturn_t imx_int(int irq, void *dev_id)
|
|
|
sts = readl(sport->port.membase + USR1);
|
|
|
sts2 = readl(sport->port.membase + USR2);
|
|
|
|
|
|
- if (sts & (USR1_RRDY | USR1_AGTIM)) {
|
|
|
- if (sport->dma_is_enabled)
|
|
|
- imx_dma_rxint(sport);
|
|
|
- else
|
|
|
- imx_rxint(irq, dev_id);
|
|
|
+ if (!sport->dma_is_enabled && (sts & (USR1_RRDY | USR1_AGTIM))) {
|
|
|
+ imx_rxint(irq, dev_id);
|
|
|
ret = IRQ_HANDLED;
|
|
|
}
|
|
|
|