diff --git a/drivers/serial/serial_mxc.c b/drivers/serial/serial_mxc.c
index fbf8e51591a9425e4dd54508a932c24410314e8c..cf6f0447f2731290aa631bc03945d30c099afabf 100644
--- a/drivers/serial/serial_mxc.c
+++ b/drivers/serial/serial_mxc.c
@@ -162,6 +162,9 @@ static void mxc_serial_setbrg(void)
 	writel(0xf, &mxc_base->bir);
 	writel(clk / (2 * gd->baudrate), &mxc_base->bmr);
 
+	writel(UCR2_WS | UCR2_IRTS | UCR2_RXEN | UCR2_TXEN | UCR2_SRST,
+	       &mxc_base->cr2);
+	writel(UCR1_UARTEN, &mxc_base->cr1);
 }
 
 static int mxc_serial_getc(void)
@@ -216,11 +219,6 @@ static int mxc_serial_init(void)
 
 	serial_setbrg();
 
-	writel(UCR2_WS | UCR2_IRTS | UCR2_RXEN | UCR2_TXEN | UCR2_SRST,
-	       &mxc_base->cr2);
-
-	writel(UCR1_UARTEN, &mxc_base->cr1);
-
 	return 0;
 }