[U-Boot] [PATCH] serial: ns16550: Fix Debug UART initialization for AM335x

Fixed the init sequence in debug_uart_init() to match the one in NS16550_init(). Also, fixed the build by conditionally turning on some of the required code.
Signed-off-by: Vasili Galka vasili@visionmap.com --- drivers/serial/ns16550.c | 20 +++++++++++++++++++- 1 file changed, 19 insertions(+), 1 deletion(-)
diff --git a/drivers/serial/ns16550.c b/drivers/serial/ns16550.c index 03beab5..7af6bd8 100644 --- a/drivers/serial/ns16550.c +++ b/drivers/serial/ns16550.c @@ -54,7 +54,7 @@ DECLARE_GLOBAL_DATA_PTR; #define CONFIG_SYS_NS16550_IER 0x00 #endif /* CONFIG_SYS_NS16550_IER */
-#ifdef CONFIG_DM_SERIAL +#if defined(CONFIG_DM_SERIAL) || defined(CONFIG_DEBUG_UART_NS16550)
static inline void serial_out_shift(unsigned char *addr, int shift, int value) { @@ -85,6 +85,9 @@ static inline int serial_in_shift(unsigned char *addr, int shift) return readb(addr); #endif } +#endif + +#if defined(CONFIG_DM_SERIAL)
static void ns16550_writeb(NS16550_t port, int offset, int value) { @@ -255,6 +258,15 @@ void debug_uart_init(void) CONFIG_BAUDRATE);
serial_out_shift(&com_port->ier, 0, CONFIG_SYS_NS16550_IER); +#if defined(CONFIG_OMAP) || defined(CONFIG_AM33XX) || \ + defined(CONFIG_TI81XX) || defined(CONFIG_AM43XX) + serial_out_shift(&com_port->mdr1, 0, 0x7); /* mode select reset TL16C750*/ +#endif + serial_out_shift(&com_port->lcr, 0, UART_LCR_BKSE | UART_LCRVAL); + serial_out_shift(&com_port->dll, 0, 0); + serial_out_shift(&com_port->dlm, 0, 0); + serial_out_shift(&com_port->lcr, 0, UART_LCRVAL); + serial_out_shift(&com_port->mcr, 0, UART_MCRVAL); serial_out_shift(&com_port->fcr, 0, UART_FCRVAL);
@@ -262,6 +274,12 @@ void debug_uart_init(void) serial_out_shift(&com_port->dll, 0, baud_divisor & 0xff); serial_out_shift(&com_port->dlm, 0, (baud_divisor >> 8) & 0xff); serial_out_shift(&com_port->lcr, 0, UART_LCRVAL); +#if defined(CONFIG_OMAP) || \ + defined(CONFIG_AM33XX) || defined(CONFIG_SOC_DA8XX) || \ + defined(CONFIG_TI81XX) || defined(CONFIG_AM43XX) + /* /16 is proper to hit 115200 with 48MHz */ + serial_out_shift(&com_port->mdr1, 0, 0); +#endif /* CONFIG_OMAP */ }
static inline void _debug_uart_putc(int ch)

Hi Vasili,
On 4 May 2015 at 12:04, Vasili Galka vvv444@gmail.com wrote:
Fixed the init sequence in debug_uart_init() to match the one in NS16550_init(). Also, fixed the build by conditionally turning on some of the required code.
Signed-off-by: Vasili Galka vasili@visionmap.com
drivers/serial/ns16550.c | 20 +++++++++++++++++++- 1 file changed, 19 insertions(+), 1 deletion(-)
Can you please check that you are using the latest mainline?
diff --git a/drivers/serial/ns16550.c b/drivers/serial/ns16550.c index 03beab5..7af6bd8 100644 --- a/drivers/serial/ns16550.c +++ b/drivers/serial/ns16550.c @@ -54,7 +54,7 @@ DECLARE_GLOBAL_DATA_PTR; #define CONFIG_SYS_NS16550_IER 0x00 #endif /* CONFIG_SYS_NS16550_IER */
-#ifdef CONFIG_DM_SERIAL +#if defined(CONFIG_DM_SERIAL) || defined(CONFIG_DEBUG_UART_NS16550)
static inline void serial_out_shift(unsigned char *addr, int shift, int value) { @@ -85,6 +85,9 @@ static inline int serial_in_shift(unsigned char *addr, int shift) return readb(addr); #endif } +#endif
+#if defined(CONFIG_DM_SERIAL)
static void ns16550_writeb(NS16550_t port, int offset, int value) { @@ -255,6 +258,15 @@ void debug_uart_init(void) CONFIG_BAUDRATE);
serial_out_shift(&com_port->ier, 0, CONFIG_SYS_NS16550_IER);
+#if defined(CONFIG_OMAP) || defined(CONFIG_AM33XX) || \
defined(CONFIG_TI81XX) || defined(CONFIG_AM43XX)
serial_out_shift(&com_port->mdr1, 0, 0x7); /* mode select reset TL16C750*/
+#endif
serial_out_shift(&com_port->lcr, 0, UART_LCR_BKSE | UART_LCRVAL);
serial_out_shift(&com_port->dll, 0, 0);
serial_out_shift(&com_port->dlm, 0, 0);
serial_out_shift(&com_port->lcr, 0, UART_LCRVAL);
serial_out_shift(&com_port->mcr, 0, UART_MCRVAL); serial_out_shift(&com_port->fcr, 0, UART_FCRVAL);
@@ -262,6 +274,12 @@ void debug_uart_init(void) serial_out_shift(&com_port->dll, 0, baud_divisor & 0xff); serial_out_shift(&com_port->dlm, 0, (baud_divisor >> 8) & 0xff); serial_out_shift(&com_port->lcr, 0, UART_LCRVAL); +#if defined(CONFIG_OMAP) || \
defined(CONFIG_AM33XX) || defined(CONFIG_SOC_DA8XX) || \
defined(CONFIG_TI81XX) || defined(CONFIG_AM43XX)
/* /16 is proper to hit 115200 with 48MHz */
serial_out_shift(&com_port->mdr1, 0, 0);
+#endif /* CONFIG_OMAP */ }
static inline void _debug_uart_putc(int ch)
1.9.1
Regards, Simon
participants (2)
-
Simon Glass
-
Vasili Galka