}
 
 /*
- * There are three kinds of RX DMA interrupts(such as in the MX6Q):
+ * There are two kinds of RX DMA interrupts(such as in the MX6Q):
  *   [1] the RX DMA buffer is full.
- *   [2] the Aging timer expires(wait for 8 bytes long)
- *   [3] the Idle Condition Detect(enabled the UCR4_IDDMAEN).
+ *   [2] the aging timer expires
  *
- * The [2] is trigger when a character was been sitting in the FIFO
- * meanwhile [3] can wait for 32 bytes long when the RX line is
- * on IDLE state and RxFIFO is empty.
+ * Condition [2] is triggered when a character has been sitting in the FIFO
+ * for at least 8 byte durations.
  */
 static void dma_rx_callback(void *data)
 {
        status = dmaengine_tx_status(chan, (dma_cookie_t)0, &state);
        count = RX_BUF_SIZE - state.residue;
 
-       if (readl(sport->port.membase + USR2) & USR2_IDLE) {
-               /* In condition [3] the SDMA counted up too early */
-               count--;
-
-               writel(USR2_IDLE, sport->port.membase + USR2);
-       }
-
        dev_dbg(sport->port.dev, "We get %d bytes.\n", count);
 
        if (count) {
 
        /* set UCR1 */
        temp = readl(sport->port.membase + UCR1);
-       temp |= UCR1_RDMAEN | UCR1_TDMAEN | UCR1_ATDMAEN |
-               /* wait for 32 idle frames for IDDMA interrupt */
-               UCR1_ICD_REG(3);
+       temp |= UCR1_RDMAEN | UCR1_TDMAEN | UCR1_ATDMAEN;
        writel(temp, sport->port.membase + UCR1);
 
        temp = readl(sport->port.membase + UCR2);
        temp |= UCR2_ATEN;
        writel(temp, sport->port.membase + UCR2);
 
-       /* set UCR4 */
-       temp = readl(sport->port.membase + UCR4);
-       temp |= UCR4_IDDMAEN;
-       writel(temp, sport->port.membase + UCR4);
-
        imx_setup_ufcr(sport, TXTL_DMA, RXTL_DMA);
 
        sport->dma_is_enabled = 1;
        temp &= ~(UCR2_CTSC | UCR2_CTS | UCR2_ATEN);
        writel(temp, sport->port.membase + UCR2);
 
-       /* clear UCR4 */
-       temp = readl(sport->port.membase + UCR4);
-       temp &= ~UCR4_IDDMAEN;
-       writel(temp, sport->port.membase + UCR4);
-
        imx_setup_ufcr(sport, TXTL_DEFAULT, RXTL_DEFAULT);
 
        sport->dma_is_enabled = 0;