Merge branch 'master' of rsync://rsync.denx.de/git/u-boot
[platform/kernel/u-boot.git] / cpu / mpc5xxx / serial.c
index 1e9628c..cacb9f0 100644 (file)
@@ -33,6 +33,8 @@
 #include <common.h>
 #include <mpc5xxx.h>
 
+DECLARE_GLOBAL_DATA_PTR;
+
 #if defined(CONFIG_PSC_CONSOLE)
 
 #if CONFIG_PSC_CONSOLE == 1
@@ -55,8 +57,6 @@
 
 int serial_init (void)
 {
-       DECLARE_GLOBAL_DATA_PTR;
-
        volatile struct mpc5xxx_psc *psc = (struct mpc5xxx_psc *)PSC_BASE;
        unsigned long baseclk;
        int div;
@@ -146,20 +146,18 @@ serial_tstc(void)
 void
 serial_setbrg(void)
 {
-       DECLARE_GLOBAL_DATA_PTR;
-
        volatile struct mpc5xxx_psc *psc = (struct mpc5xxx_psc *)PSC_BASE;
        unsigned long baseclk, div;
 
 #if defined(CONFIG_MGT5100)
-       baseclk = CFG_MPC5XXX_CLKIN / 32;
+       baseclk = (CFG_MPC5XXX_CLKIN + 16) / 32;
 #elif defined(CONFIG_MPC5200)
        baseclk = (gd->ipb_clk + 16) / 32;
 #endif
 
        /* set up UART divisor */
        div = (baseclk + (gd->baudrate/2)) / gd->baudrate;
-       psc->ctur = div >> 8;
-       psc->ctlr = div & 0xff;
+       psc->ctur = (div >> 8) & 0xFF;
+       psc->ctlr =  div & 0xff;
 }
 #endif /* CONFIG_PSC_CONSOLE */