]> git.sur5r.net Git - u-boot/blobdiff - drivers/serial/mcfuart.c
fex_mxc: add imx25 support
[u-boot] / drivers / serial / mcfuart.c
index 39d4e18166bbf6574947d43f5953920b6b499204..0b531402e4be44790f172fb1cf15c39e610a72e1 100644 (file)
  */
 
 #include <common.h>
+
 #include <asm/immap.h>
 #include <asm/uart.h>
 
 DECLARE_GLOBAL_DATA_PTR;
 
-#ifdef CONFIG_MCFUART
+extern void uart_port_conf(void);
+
 int serial_init(void)
 {
        volatile uart_t *uart;
        u32 counter;
 
-       uart = (volatile uart_t *)(CFG_UART_BASE);
+       uart = (volatile uart_t *)(CONFIG_SYS_UART_BASE);
+
+       uart_port_conf();
 
        /* write to SICR: SIM2 = uart mode,dcd does not affect rx */
        uart->ucr = UART_UCR_RESET_RX;
@@ -57,8 +61,8 @@ int serial_init(void)
        uart->umr = UART_UMR_SB_STOP_BITS_1;
 
        /* Setting up BaudRate */
-       counter = (u32) (gd->bus_clk / (gd->baudrate));
-       counter >>= 5;
+       counter = (u32) ((gd->bus_clk / 32) + (gd->baudrate / 2));
+       counter = counter / gd->baudrate;
 
        /* write to CTUR: divide counter upper byte */
        uart->ubg1 = (u8) ((counter & 0xff00) >> 8);
@@ -72,7 +76,7 @@ int serial_init(void)
 
 void serial_putc(const char c)
 {
-       volatile uart_t *uart = (volatile uart_t *)(CFG_UART_BASE);
+       volatile uart_t *uart = (volatile uart_t *)(CONFIG_SYS_UART_BASE);
 
        if (c == '\n')
                serial_putc('\r');
@@ -92,7 +96,7 @@ void serial_puts(const char *s)
 
 int serial_getc(void)
 {
-       volatile uart_t *uart = (volatile uart_t *)(CFG_UART_BASE);
+       volatile uart_t *uart = (volatile uart_t *)(CONFIG_SYS_UART_BASE);
 
        /* Wait for a character to arrive. */
        while (!(uart->usr & UART_USR_RXRDY)) ;
@@ -101,18 +105,19 @@ int serial_getc(void)
 
 int serial_tstc(void)
 {
-       volatile uart_t *uart = (volatile uart_t *)(CFG_UART_BASE);
+       volatile uart_t *uart = (volatile uart_t *)(CONFIG_SYS_UART_BASE);
 
        return (uart->usr & UART_USR_RXRDY);
 }
 
 void serial_setbrg(void)
 {
-       volatile uart_t *uart = (volatile uart_t *)(CFG_UART_BASE);
+       volatile uart_t *uart = (volatile uart_t *)(CONFIG_SYS_UART_BASE);
        u32 counter;
 
-       counter = ((gd->bus_clk / gd->baudrate)) >> 5;
-       counter++;
+       /* Setting up BaudRate */
+       counter = (u32) ((gd->bus_clk / 32) + (gd->baudrate / 2));
+       counter = counter / gd->baudrate;
 
        /* write to CTUR: divide counter upper byte */
        uart->ubg1 = ((counter & 0xff00) >> 8);
@@ -124,4 +129,3 @@ void serial_setbrg(void)
 
        uart->ucr = UART_UCR_RX_ENABLED | UART_UCR_TX_ENABLED;
 }
-#endif                         /* CONFIG_MCFUART */