summaryrefslogtreecommitdiff
path: root/cpu/ixp
diff options
context:
space:
mode:
authorJean-Christophe PLAGNIOL-VILLARD <plagnioj@jcrosoft.com>2007-12-08 16:34:08 +0100
committerWolfgang Denk <wd@denx.de>2008-01-09 11:53:58 +0100
commit7b74ebe723e576baedf5a8b6240589b19b845a1b (patch)
treeadedccf12890c21a02e824abbddbbbe7842d6c08 /cpu/ixp
parenta2df4da31b1a1e41e3e9e1358cfc52b806046ce1 (diff)
IXP: Add full baud-rate support for ixp42x, ixp45x and ixp46x
Signed-off-by: Jean-Christophe PLAGNIOL-VILLARD <plagnioj@jcrosoft.com>
Diffstat (limited to 'cpu/ixp')
-rw-r--r--cpu/ixp/serial.c24
1 files changed, 10 insertions, 14 deletions
diff --git a/cpu/ixp/serial.c b/cpu/ixp/serial.c
index 20159585714..df379f380a7 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.