diff options
author | Jean-Christophe PLAGNIOL-VILLARD <plagnioj@jcrosoft.com> | 2007-12-08 16:34:08 +0100 |
---|---|---|
committer | Wolfgang Denk <wd@denx.de> | 2008-01-09 11:53:58 +0100 |
commit | 7b74ebe723e576baedf5a8b6240589b19b845a1b (patch) | |
tree | adedccf12890c21a02e824abbddbbbe7842d6c08 | |
parent | a2df4da31b1a1e41e3e9e1358cfc52b806046ce1 (diff) |
IXP: Add full baud-rate support for ixp42x, ixp45x and ixp46x
Signed-off-by: Jean-Christophe PLAGNIOL-VILLARD <plagnioj@jcrosoft.com>
-rw-r--r-- | cpu/ixp/serial.c | 24 |
1 files changed, 10 insertions, 14 deletions
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 <common.h> #include <asm/arch/ixp425.h> +/* + * 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. |