#define UCR3_RXDSEN    (1<<6)  /* Receive status interrupt enable */
 #define UCR3_AIRINTEN  (1<<5)  /* Async IR wake interrupt enable */
 #define UCR3_AWAKEN    (1<<4)  /* Async wake interrupt enable */
+#define UCR3_DTRDEN    (1<<3)  /* Data Terminal Ready Delta Enable. */
 #define IMX21_UCR3_RXDMUXSEL   (1<<2)  /* RXD Muxed Input Select */
 #define UCR3_INVT      (1<<1)  /* Inverted Infrared transmission */
 #define UCR3_BPEN      (1<<0)  /* Preset registers enable */
 #define USR1_FRAMERR   (1<<10) /* Frame error interrupt flag */
 #define USR1_RRDY      (1<<9)   /* Receiver ready interrupt/dma flag */
 #define USR1_AGTIM     (1<<8)   /* Ageing timer interrupt flag */
-#define USR1_TIMEOUT   (1<<7)   /* Receive timeout interrupt status */
+#define USR1_DTRD      (1<<7)   /* DTR Delta */
 #define USR1_RXDS       (1<<6)  /* Receiver idle interrupt flag */
 #define USR1_AIRINT     (1<<5)  /* Async IR wake interrupt flag */
 #define USR1_AWAKE      (1<<4)  /* Aysnc wake interrupt flag */
                ret = IRQ_HANDLED;
        }
 
+       if (sts & USR1_DTRD) {
+               unsigned long flags;
+
+               if (sts & USR1_DTRD)
+                       writel(USR1_DTRD, sport->port.membase + USR1);
+
+               spin_lock_irqsave(&sport->port.lock, flags);
+               imx_mctrl_check(sport);
+               spin_unlock_irqrestore(&sport->port.lock, flags);
+
+               ret = IRQ_HANDLED;
+       }
+
        if (sts & USR1_RTSD) {
                imx_rtsint(irq, dev_id);
                ret = IRQ_HANDLED;
        /*
         * Finally, clear and enable interrupts
         */
-       writel(USR1_RTSD, sport->port.membase + USR1);
+       writel(USR1_RTSD | USR1_DTRD, sport->port.membase + USR1);
        writel(USR2_ORE, sport->port.membase + USR2);
 
        if (sport->dma_is_inited && !sport->dma_is_enabled)
                 * now, too.
                 */
                temp |= IMX21_UCR3_RXDMUXSEL | UCR3_ADNIMP |
-                       UCR3_RI | UCR3_DCD;
+                       UCR3_DTRDEN | UCR3_RI | UCR3_DCD;
 
                if (sport->dte_mode)
                        temp &= ~(UCR3_RI | UCR3_DCD);