]> git.ipfire.org Git - people/ms/u-boot.git/blobdiff - cpu/mcf52x2/serial.c
Add MCF5282 support (without preloader)
[people/ms/u-boot.git] / cpu / mcf52x2 / serial.c
index 79628d03e60c41fb124e44188cbc2768407b320e..fe412a0a3aacca2a3a6fd2df6625ca7211ed3add 100644 (file)
@@ -65,6 +65,28 @@ void rs_serial_setbaudrate(int port,int baudrate)
        uartp[MCFUART_UBG2] = ((int)clock & 0xff);  /* set lsb baud */
        uartp[MCFUART_UFPD] = ((int)fraction & 0xf);  /* set baud fraction adjust */
 #endif
+#if  defined(CONFIG_M5282)
+       volatile unsigned char  *uartp;
+       long clock;
+
+       switch (port)
+       {
+        case 1:
+         uartp = (volatile unsigned char *) (CFG_MBAR + MCFUART_BASE2);
+         break;
+        case 2:
+         uartp = (volatile unsigned char *) (CFG_MBAR + MCFUART_BASE3);
+         break;
+        default:
+         uartp = (volatile unsigned char *) (CFG_MBAR + MCFUART_BASE1);
+       }
+
+       clock = (long) CFG_CLK / ((long) 32 * baudrate);      /* Set baud above */
+
+       uartp[MCFUART_UBG1] = (((int)clock >> 8) & 0xff);  /* set msb baud */
+       uartp[MCFUART_UBG2] = ((int) clock & 0xff);  /* set lsb baud */
+
+#endif
 };
 
 void rs_serial_init(int port,int baudrate)
@@ -74,10 +96,19 @@ void rs_serial_init(int port,int baudrate)
        /*
         *      Reset UART, get it into known state...
         */
-       if (port == 0)
-               uartp = (volatile unsigned char *) (CFG_MBAR + MCFUART_BASE1);
-       else
-               uartp = (volatile unsigned char *) (CFG_MBAR + MCFUART_BASE2);
+       switch (port)
+       {
+        case 1:
+         uartp = (volatile unsigned char *) (CFG_MBAR + MCFUART_BASE2);
+         break;
+       #if  defined(CONFIG_M5282)
+        case 2:
+         uartp = (volatile unsigned char *) (CFG_MBAR + MCFUART_BASE3);
+         break;
+        #endif
+        default:
+         uartp = (volatile unsigned char *) (CFG_MBAR + MCFUART_BASE1);
+       }
 
        uartp[MCFUART_UCR] = MCFUART_UCR_CMDRESETRX;  /* reset RX */
        uartp[MCFUART_UCR] = MCFUART_UCR_CMDRESETTX;  /* reset TX */