From: Jean-Christophe PLAGNIOL-VILLARD Date: Sat, 8 Dec 2007 15:34:08 +0000 (+0100) Subject: IXP: Add full baud-rate support for ixp42x, ixp45x and ixp46x X-Git-Tag: v1.3.2-rc1~100^2~33^2~25 X-Git-Url: https://git.librecmc.org/?a=commitdiff_plain;h=7b74ebe723e576baedf5a8b6240589b19b845a1b;p=oweals%2Fu-boot.git IXP: Add full baud-rate support for ixp42x, ixp45x and ixp46x Signed-off-by: Jean-Christophe PLAGNIOL-VILLARD --- diff --git a/cpu/ixp/serial.c b/cpu/ixp/serial.c index 2015958571..df379f380a 100644 --- a/cpu/ixp/serial.c +++ b/cpu/ixp/serial.c @@ -31,25 +31,22 @@ #include #include +/* + * 14.7456 MHz + * Baud Rate = -------------- + * 16 x Divisor + */ +#define SERIAL_CLOCK 921600 + DECLARE_GLOBAL_DATA_PTR; void serial_setbrg (void) { unsigned int quot = 0; int uart = CFG_IXP425_CONSOLE; - - if (gd->baudrate == 1200) - quot = 192; - else if (gd->baudrate == 9600) - quot = 96; - else if (gd->baudrate == 19200) - quot = 48; - else if (gd->baudrate == 38400) - quot = 24; - else if (gd->baudrate == 57600) - quot = 16; - else if (gd->baudrate == 115200) - quot = 8; + + if ((gd->baudrate <= SERIAL_CLOCK) && (SERIAL_CLOCK % gd->baudrate == 0)) + quot = SERIAL_CLOCK / gd->baudrate; else hang (); @@ -65,7 +62,6 @@ void serial_setbrg (void) IER(uart) = IER_UUE; } - /* * Initialise the serial port with the given baudrate. The settings * are always 8 data bits, no parity, 1 stop bit, no start bits.