IXP: Add full baud-rate support for ixp42x, ixp45x and ixp46x
authorJean-Christophe PLAGNIOL-VILLARD <plagnioj@jcrosoft.com>
Sat, 8 Dec 2007 15:34:08 +0000 (16:34 +0100)
committerWolfgang Denk <wd@denx.de>
Wed, 9 Jan 2008 10:53:58 +0000 (11:53 +0100)
Signed-off-by: Jean-Christophe PLAGNIOL-VILLARD <plagnioj@jcrosoft.com>
cpu/ixp/serial.c

index 2015958571423aa5705e46b8525bcc2309b841c1..df379f380a732fb44e3516a0a8f3eaa32cbea17b 100644 (file)
 #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.