diff --git a/cpu/mcf52x2/serial.c b/cpu/mcf52x2/serial.c index 8be09e3..8f0a892 100644 --- a/cpu/mcf52x2/serial.c +++ b/cpu/mcf52x2/serial.c @@ -65,6 +65,9 @@ void rs_serial_setbaudrate(int port,int else uartp = (volatile unsigned char *) (CFG_MBAR + MCFUART_BASE2); + uartp[MCFUART_UCR] = MCFUART_UCR_CMDRESETTX; /* reset TX */ + uartp[MCFUART_UCR] = MCFUART_UCR_CMDRESETRX; /* reset RX */ + clock = DoubleClock(baudrate); /* Set baud above */ uartp[MCFUART_UBG1] = (((int)clock >> 8) & 0xff); /* set msb baud */ @@ -74,6 +77,7 @@ void rs_serial_setbaudrate(int port,int fraction = ((clock - (int)clock) * 16.0) + 0.5; uartp[MCFUART_UFPD] = ((int)fraction & 0xf); /* set baud fraction adjust */ # endif + #endif #if defined(CONFIG_M5282) @@ -91,12 +95,17 @@ void rs_serial_setbaudrate(int port,int uartp = (volatile unsigned char *) (CFG_MBAR + MCFUART_BASE1); } + uartp[MCFUART_UCR] = MCFUART_UCR_CMDRESETTX; /* reset TX */ + uartp[MCFUART_UCR] = MCFUART_UCR_CMDRESETRX; /* reset RX */ + clock = (long) CFG_CLK / ((long) 32 * baudrate); /* Set baud above */ uartp[MCFUART_UBG1] = (((int)clock >> 8) & 0xff); /* set msb baud */ uartp[MCFUART_UBG2] = ((int) clock & 0xff); /* set lsb baud */ - #endif + + /* Enable Tx/Rx */ + uartp[MCFUART_UCR] = MCFUART_UCR_RXENABLE | MCFUART_UCR_TXENABLE; }; void rs_serial_init (int port, int baudrate) @@ -139,9 +148,6 @@ void rs_serial_init (int port, int baudr rs_serial_setbaudrate (port, baudrate); - /* Enable Tx/Rx */ - uartp[MCFUART_UCR] = MCFUART_UCR_RXENABLE | MCFUART_UCR_TXENABLE; - return; } @@ -183,7 +189,7 @@ int rs_get_char(void) } void serial_setbrg(void) { - rs_serial_setbaudrate(0,gd->bd->bi_baudrate); + rs_serial_setbaudrate(0,gd->baudrate); } int serial_init(void) {