static void s3c24xx_serial_set_mctrl(struct uart_port *port, unsigned int mctrl)
 {
        unsigned int umcon = rd_regl(port, S3C2410_UMCON);
+       unsigned int ucon = rd_reg(port, S3C2410_UCON);
 
        if (mctrl & TIOCM_RTS)
                umcon |= S3C2410_UMCOM_RTS_LOW;
                umcon &= ~S3C2410_UMCOM_RTS_LOW;
 
        wr_regl(port, S3C2410_UMCON, umcon);
+
+       if (mctrl & TIOCM_LOOP)
+               ucon |= S3C2410_UCON_LOOPBACK;
+       else
+               ucon &= ~S3C2410_UCON_LOOPBACK;
+
+       wr_regl(port, S3C2410_UCON, ucon);
 }
 
 static void s3c24xx_serial_break_ctl(struct uart_port *port, int break_state)
 
 #define S3C2410_UCON_RXIRQMODE   (1<<0)
 #define S3C2410_UCON_RXFIFO_TOI          (1<<7)
 #define S3C2443_UCON_RXERR_IRQEN  (1<<6)
-#define S3C2443_UCON_LOOPBACK    (1<<5)
+#define S3C2410_UCON_LOOPBACK    (1<<5)
 
 #define S3C2410_UCON_DEFAULT     (S3C2410_UCON_TXILEVEL  | \
                                   S3C2410_UCON_RXILEVEL  | \