commit: http://blackfin.uclinux.org/git/?p=u-boot;a=commitdiff;h=9400caed9b2ad9226c70d7863e0a0720e2261c56
branch: http://blackfin.uclinux.org/git/?p=u-boot;a=shortlog;h=refs/heads/trunk

Remove blackfin specific implementation of the generic serial API when
early print macro is defined.

Signed-off-by: Sonic Zhang <sonic.zh...@analog.com>
---
 arch/blackfin/cpu/serial.c        |   92 +++++++++++++-----------------------
 arch/blackfin/cpu/serial.h        |   14 ++++--
 include/configs/bfin_adi_common.h |    3 -
 3 files changed, 42 insertions(+), 67 deletions(-)

diff --git a/arch/blackfin/cpu/serial.c b/arch/blackfin/cpu/serial.c
index ecd981b..4e07509 100644
--- a/arch/blackfin/cpu/serial.c
+++ b/arch/blackfin/cpu/serial.c
@@ -197,12 +197,15 @@ static void uart_loop(uint32_t uart_base, int state)
 
 static inline void __serial_set_baud(uint32_t uart_base, uint32_t baud)
 {
+#ifdef CONFIG_DEBUG_EARLY_SERIAL
+	serial_early_set_baud(uart_base, baud);
+#else
 	uint16_t divisor = (get_uart_clk() + (baud * 8)) / (baud * 16) - ANOMALY_05000230;
 
 	/* Program the divisor to get the baud rate we want */
 	serial_set_divisor(uart_base, divisor);
+#endif
 }
-#ifdef CONFIG_SYS_BFIN_UART
 
 static void uart_puts(uint32_t uart_base, const char *s)
 {
@@ -312,103 +315,74 @@ void bfin_serial_initialize(void)
 #endif
 }
 
-#else
-
 /* Symbol for our assembly to call. */
-void serial_set_baud(uint32_t baud)
+void _serial_early_set_baud(uint32_t baud)
 {
 	serial_early_set_baud(UART_BASE, baud);
 }
 
-/* Symbol for common u-boot code to call.
- * Setup the baudrate (brg: baudrate generator).
- */
-void serial_setbrg(void)
-{
-	serial_set_baud(gd->baudrate);
-}
-
 /* Symbol for our assembly to call. */
-void serial_initialize(void)
+void _serial_early_init(void)
 {
 	serial_early_init(UART_BASE);
 }
 
-/* Symbol for common u-boot code to call. */
-int serial_init(void)
-{
-	serial_initialize();
-	serial_setbrg();
-	uart_lsr_clear(UART_BASE);
-	return 0;
-}
-
-int serial_tstc(void)
-{
-	return uart_tstc(UART_BASE);
-}
-
-int serial_getc(void)
-{
-	return uart_getc(UART_BASE);
-}
-
-void serial_putc(const char c)
-{
-	uart_putc(UART_BASE, c);
-}
-
-void serial_puts(const char *s)
-{
-	while (*s)
-		serial_putc(*s++);
-}
-
-LOOP(
-void serial_loop(int state)
-{
-	uart_loop(UART_BASE, state);
-}
-)
-
-#endif
-
 #elif defined(CONFIG_UART_MEM)
 
 char serial_logbuf[CONFIG_UART_MEM];
 char *serial_logbuf_head = serial_logbuf;
 
-int serial_init(void)
+int serial_mem_init(void)
 {
 	serial_logbuf_head = serial_logbuf;
 	return 0;
 }
 
-void serial_setbrg(void)
+void serial_mem_setbrg(void)
 {
 }
 
-int serial_tstc(void)
+int serial_mem_tstc(void)
 {
 	return 0;
 }
 
-int serial_getc(void)
+int serial_mem_getc(void)
 {
 	return 0;
 }
 
-void serial_putc(const char c)
+void serial_mem_putc(const char c)
 {
 	*serial_logbuf_head = c;
 	if (++serial_logbuf_head == serial_logbuf + CONFIG_UART_MEM)
 		serial_logbuf_head = serial_logbuf;
 }
 
-void serial_puts(const char *s)
+void serial_mem_puts(const char *s)
 {
 	while (*s)
 		serial_putc(*s++);
 }
 
-#endif
+struct serial_device bfin_serial_mem_device = {
+	.name   = "bfin_uart_mem",
+	.start  = serial_mem_init,
+	.setbrg = serial_mem_setbrg,
+	.getc   = serial_mem_getc,
+	.tstc   = serial_mem_tstc,
+	.putc   = serial_mem_putc,
+	.puts   = serial_mem_puts,
+};
+
+
+__weak struct serial_device *default_serial_console(void)
+{
+	return &bfin_serial_mem_device;
+}
+
+void bfin_serial_initialize(void)
+{
+	serial_register(&bfin_serial_mem_device);
+}
+#endif /* CONFIG_UART_MEM */
diff --git a/arch/blackfin/cpu/serial.h b/arch/blackfin/cpu/serial.h
index d67fd81..a21393f 100644
--- a/arch/blackfin/cpu/serial.h
+++ b/arch/blackfin/cpu/serial.h
@@ -78,16 +78,20 @@ static inline void serial_early_puts(const char *s)
 #else
 
 .macro serial_early_init
-#if defined(CONFIG_DEBUG_EARLY_SERIAL) && defined(BFIN_BOOT_BYPASS)
-	call _serial_initialize;
+#if defined(CONFIG_DEBUG_EARLY_SERIAL) && \
+	CONFIG_BFIN_BOOT_MODE == BFIN_BOOT_BYPASS && \
+	!defined(CONFIG_UART_MEM)
+	call __serial_early_init;
 #endif
 .endm
 
 .macro serial_early_set_baud
-#if defined(CONFIG_DEBUG_EARLY_SERIAL) && defined(BFIN_BOOT_BYPASS)
+#if defined(CONFIG_DEBUG_EARLY_SERIAL) && \
+	CONFIG_BFIN_BOOT_MODE == BFIN_BOOT_BYPASS && \
+	!defined(CONFIG_UART_MEM)
 	R0.L = LO(CONFIG_BAUDRATE);
 	R0.H = HI(CONFIG_BAUDRATE);
-	call _serial_set_baud;
+	call __serial_early_set_baud;
 #endif
 .endm
 
@@ -116,7 +120,7 @@ static inline void serial_early_puts(const char *s)
 	.ascii __FILE__; \
 	.ascii ": "; \
 	.ascii str; \
-	.asciz "\n"; \
+	.ascii "\n"; \
 	.previous; \
 	R0.L = 7b; \
 	R0.H = 7b; \
diff --git a/include/configs/bfin_adi_common.h b/include/configs/bfin_adi_common.h
index d3ae3a7..c986ba3 100644
--- a/include/configs/bfin_adi_common.h
+++ b/include/configs/bfin_adi_common.h
@@ -111,9 +111,6 @@
 #ifndef CONFIG_BAUDRATE
 # define CONFIG_BAUDRATE	57600
 #endif
-#ifndef CONFIG_DEBUG_EARLY_SERIAL
-# define CONFIG_SYS_BFIN_UART
-#endif
 
 /*
  * Debug Settings
_______________________________________________
U-Boot-commits mailing list
U-Boot-commits@blackfin.uclinux.org
https://blackfin.uclinux.org/mailman/listinfo/u-boot-commits

Reply via email to