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

Jacob Siverskog jacob at teenage.engineering
Thu Nov 10 12:00:09 CET 2016


Fixed the init sequence in debug_uart_init() to match the one in
NS16550_init(). Without this I was unable to get debug UART working on
AM335x. Based on a patch by Vasili Galka.

Signed-off-by: Jacob Siverskog <jacob at teenage.engineering>
---
 drivers/serial/ns16550.c | 13 +++++++++++++
 1 file changed, 13 insertions(+)

diff --git a/drivers/serial/ns16550.c b/drivers/serial/ns16550.c
index 6e9b946..40fe246 100644
--- a/drivers/serial/ns16550.c
+++ b/drivers/serial/ns16550.c
@@ -262,6 +262,11 @@ static inline void _debug_uart_init(void)
 	baud_divisor = ns16550_calc_divisor(com_port, CONFIG_DEBUG_UART_CLOCK,
 					    CONFIG_BAUDRATE);
 	serial_dout(&com_port->ier, CONFIG_SYS_NS16550_IER);
+#if defined(CONFIG_OMAP) || defined(CONFIG_AM33XX) || \
+			defined(CONFIG_TI81XX) || defined(CONFIG_AM43XX)
+	serial_dout(&com_port->mdr1, 0x7);	/* mode select reset TL16C750*/
+#endif
+
 	serial_dout(&com_port->mcr, UART_MCRVAL);
 	serial_dout(&com_port->fcr, UART_FCRVAL);
 
@@ -269,6 +274,14 @@ static inline void _debug_uart_init(void)
 	serial_dout(&com_port->dll, baud_divisor & 0xff);
 	serial_dout(&com_port->dlm, (baud_divisor >> 8) & 0xff);
 	serial_dout(&com_port->lcr, 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_dout(&com_port->mdr1, 0);
+#endif /* CONFIG_OMAP */
 }
 
 static inline void _debug_uart_putc(int ch)
-- 
2.10.2



More information about the U-Boot mailing list