[coreboot-gerrit] New patch to review for coreboot: 1ecc8db console: Use single driver entry for UARTs

Kyösti Mälkki (kyosti.malkki@gmail.com) gerrit at coreboot.org
Thu Feb 27 13:28:56 CET 2014


Kyösti Mälkki (kyosti.malkki at gmail.com) just uploaded a new patch set to gerrit, which you can find at http://review.coreboot.org/5308

-gerrit

commit 1ecc8db65955362c6b34528c8a0e921e662c8ba4
Author: Kyösti Mälkki <kyosti.malkki at gmail.com>
Date:   Fri Feb 14 10:31:38 2014 +0200

    console: Use single driver entry for UARTs
    
    UARTs now have unified prototypes and can use a single entry
    in the list of drivers for ramstage.
    
    Change-Id: I315daaf9a83cfa60f1a270146c729907a1d6d45b
    Signed-off-by: Kyösti Mälkki <kyosti.malkki at gmail.com>
---
 src/console/Makefile.inc             |  3 +-
 src/console/uart8250_console.c       | 54 ---------------------------------
 src/console/uart8250mem_console.c    | 54 ---------------------------------
 src/console/uart_console.c           | 59 ++++++++++++++++++++++++++++++++++++
 src/cpu/allwinner/a10/uart_console.c | 33 +++-----------------
 src/cpu/samsung/exynos5250/uart.c    | 15 +--------
 src/cpu/samsung/exynos5420/uart.c    | 15 +--------
 src/cpu/ti/am335x/uart.c             | 25 ++++-----------
 src/drivers/uart/pl011.c             | 10 ++----
 9 files changed, 75 insertions(+), 193 deletions(-)

diff --git a/src/console/Makefile.inc b/src/console/Makefile.inc
index f158670..df08e80 100644
--- a/src/console/Makefile.inc
+++ b/src/console/Makefile.inc
@@ -17,8 +17,7 @@ bootblock-$(CONFIG_BOOTBLOCK_CONSOLE) += vtxprintf.c
 bootblock-y += console.c
 bootblock-y += die.c
 
-ramstage-$(CONFIG_CONSOLE_SERIAL8250) += uart8250_console.c
-ramstage-$(CONFIG_CONSOLE_SERIAL8250MEM) += uart8250mem_console.c
+ramstage-$(CONFIG_CONSOLE_SERIAL) += uart_console.c
 ramstage-$(CONFIG_SPKMODEM) += spkmodem_console.c
 ramstage-$(CONFIG_CONSOLE_USB) += usbdebug_console.c
 ramstage-$(CONFIG_CONSOLE_NE2K) += ne2k_console.c
diff --git a/src/console/uart8250_console.c b/src/console/uart8250_console.c
deleted file mode 100644
index 52f59f6..0000000
--- a/src/console/uart8250_console.c
+++ /dev/null
@@ -1,54 +0,0 @@
-/*
- * This file is part of the coreboot project.
- *
- * Copyright (C) 2003 Eric Biederman
- *
- * This program is free software; you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation; version 2 of the License.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program; if not, write to the Free Software
- * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
- */
-
-#include <console/console.h>
-#include <console/uart.h>
-
-static void ttyS0_init(void)
-{
-	uart_init();
-}
-
-static void ttyS0_tx_byte(unsigned char data)
-{
-	uart_tx_byte(data);
-}
-
-static void ttyS0_tx_flush(void)
-{
-	uart_tx_flush();
-}
-
-static unsigned char ttyS0_rx_byte(void)
-{
-	return uart_rx_byte();
-}
-
-static int ttyS0_tst_byte(void)
-{
-	return uart_can_rx_byte();
-}
-
-static const struct console_driver uart8250_console __console = {
-	.init     = ttyS0_init,
-	.tx_byte  = ttyS0_tx_byte,
-	.tx_flush = ttyS0_tx_flush,
-	.rx_byte  = ttyS0_rx_byte,
-	.tst_byte = ttyS0_tst_byte,
-};
diff --git a/src/console/uart8250mem_console.c b/src/console/uart8250mem_console.c
deleted file mode 100644
index 7e52aed..0000000
--- a/src/console/uart8250mem_console.c
+++ /dev/null
@@ -1,54 +0,0 @@
-/*
- * This file is part of the coreboot project.
- *
- * Copyright (C) 2003 Eric Biederman
- *
- * This program is free software; you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation; version 2 of the License.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program; if not, write to the Free Software
- * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
- */
-
-#include <console/console.h>
-#include <console/uart.h>
-
-static void uartmem_init(void)
-{
-	uart_init();
-}
-
-static void uartmem_tx_byte(unsigned char data)
-{
-	uart_tx_byte(data);
-}
-
-static void uartmem_tx_flush(void)
-{
-	uart_tx_flush();
-}
-
-static unsigned char uartmem_rx_byte(void)
-{
-	return uart_rx_byte();
-}
-
-static int uartmem_tst_byte(void)
-{
-	return uart_can_rx_byte();
-}
-
-static const struct console_driver uart8250mem_console __console = {
-	.init     = uartmem_init,
-	.tx_byte  = uartmem_tx_byte,
-	.tx_flush = uartmem_tx_flush,
-	.rx_byte  = uartmem_rx_byte,
-	.tst_byte = uartmem_tst_byte,
-};
diff --git a/src/console/uart_console.c b/src/console/uart_console.c
new file mode 100644
index 0000000..f5535d7
--- /dev/null
+++ b/src/console/uart_console.c
@@ -0,0 +1,59 @@
+/*
+ * This file is part of the coreboot project.
+ *
+ * Copyright (C) 2003 Eric Biederman
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; version 2 of the License.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
+ */
+
+#include <console/console.h>
+#include <console/uart.h>
+
+static void uartmem_init(void)
+{
+	uart_init();
+}
+
+static void uartmem_tx_byte(unsigned char data)
+{
+	uart_tx_byte(data);
+}
+
+static void uartmem_tx_flush(void)
+{
+	uart_tx_flush();
+}
+
+static unsigned char uartmem_rx_byte(void)
+{
+	return uart_rx_byte();
+}
+
+/* This only relevant with x86 with GDB_STUB enabled.*/
+static int uartmem_tst_byte(void)
+{
+#if CONFIG_DRIVERS_UART_8250IO || CONFIG_DRIVERS_UART_8250MEM
+	return uart_can_rx_byte();
+#else
+	return 0;
+#endif
+}
+
+static const struct console_driver uart_console __console = {
+	.init     = uartmem_init,
+	.tx_byte  = uartmem_tx_byte,
+	.tx_flush = uartmem_tx_flush,
+	.rx_byte  = uartmem_rx_byte,
+	.tst_byte = uartmem_tst_byte,
+};
diff --git a/src/cpu/allwinner/a10/uart_console.c b/src/cpu/allwinner/a10/uart_console.c
index af66cb7..aea1189 100644
--- a/src/cpu/allwinner/a10/uart_console.c
+++ b/src/cpu/allwinner/a10/uart_console.c
@@ -11,7 +11,6 @@
 #include <console/uart.h>
 #include <arch/io.h>
 
-#include <console/console.h>
 #include <cpu/allwinner/a10/uart.h>
 
 static void *get_console_uart_base_addr(void)
@@ -44,7 +43,7 @@ unsigned int uart_platform_refclk(void)
 	return 24000000;
 }
 
-static void a10_uart_init_dev(void)
+void uart_init(void)
 {
 	void *uart_base = get_console_uart_base_addr();
 
@@ -54,46 +53,24 @@ static void a10_uart_init_dev(void)
 	a10_uart_enable_fifos(uart_base);
 }
 
-static unsigned char a10_uart_rx_byte(void)
+unsigned char uart_rx_byte(void)
 {
 	return a10_uart_rx_blocking(get_console_uart_base_addr());
 }
 
-static void a10_uart_tx_byte(unsigned char data)
+void uart_tx_byte(unsigned char data)
 {
 	a10_uart_tx_blocking(get_console_uart_base_addr(), data);
 }
 
+#if !defined(__PRE_RAM__)
 uint32_t uartmem_getbaseaddr(void)
 {
 	return (uint32_t) get_console_uart_base_addr();
 }
-
-#if !defined(__PRE_RAM__)
-static const struct console_driver a10_uart_console __console = {
-	.init = a10_uart_init_dev,
-	.tx_byte = a10_uart_tx_byte,
-	.rx_byte = a10_uart_rx_byte,
-};
-#else
-
-void uart_init(void)
-{
-	a10_uart_init_dev();
-}
-
-unsigned char uart_rx_byte(void)
-{
-	return a10_uart_rx_byte();
-}
-
-void uart_tx_byte(unsigned char data)
-{
-	a10_uart_tx_byte(data);
-}
+#endif
 
 void uart_tx_flush(void)
 {
 }
 
-#endif
diff --git a/src/cpu/samsung/exynos5250/uart.c b/src/cpu/samsung/exynos5250/uart.c
index c9d8d25..14d140c 100644
--- a/src/cpu/samsung/exynos5250/uart.c
+++ b/src/cpu/samsung/exynos5250/uart.c
@@ -17,7 +17,6 @@
  * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
  */
 
-#include <console/console.h>	/* for __console definition */
 #include <console/uart.h>
 #include <arch/io.h>
 #include "uart.h"
@@ -169,21 +168,11 @@ static void exynos5_uart_tx_flush(void)
 }
 
 #if !defined(__PRE_RAM__)
-
-static const struct console_driver exynos5_uart_console __console = {
-	.init     = exynos5_init_dev,
-	.tx_byte  = exynos5_uart_tx_byte,
-	.tx_flush = exynos5_uart_tx_flush,
-	.rx_byte  = exynos5_uart_rx_byte,
-//	.tst_byte = exynos5_uart_tst_byte,
-};
-
 uint32_t uartmem_getbaseaddr(void)
 {
 	return base_port;
 }
-
-#else
+#endif
 
 void uart_init(void)
 {
@@ -204,5 +193,3 @@ void uart_tx_flush(void)
 {
 	exynos5_uart_tx_flush();
 }
-
-#endif
diff --git a/src/cpu/samsung/exynos5420/uart.c b/src/cpu/samsung/exynos5420/uart.c
index f9dd268..d05adcd 100644
--- a/src/cpu/samsung/exynos5420/uart.c
+++ b/src/cpu/samsung/exynos5420/uart.c
@@ -17,7 +17,6 @@
  * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
  */
 
-#include <console/console.h>	/* for __console definition */
 #include <console/uart.h>
 #include <arch/io.h>
 #include "uart.h"
@@ -159,21 +158,11 @@ static void exynos5_uart_tx_byte(unsigned char data)
 }
 
 #if !defined(__PRE_RAM__)
-
-static const struct console_driver exynos5_uart_console __console = {
-	.init     = exynos5_init_dev,
-	.tx_byte  = exynos5_uart_tx_byte,
-//	.tx_flush = exynos5_uart_tx_flush,
-	.rx_byte  = exynos5_uart_rx_byte,
-//	.tst_byte = exynos5_uart_tst_byte,
-};
-
 uint32_t uartmem_getbaseaddr(void)
 {
 	return base_port;
 }
-
-#else
+#endif
 
 void uart_init(void)
 {
@@ -193,5 +182,3 @@ void uart_tx_byte(unsigned char data)
 void uart_tx_flush(void)
 {
 }
-
-#endif
diff --git a/src/cpu/ti/am335x/uart.c b/src/cpu/ti/am335x/uart.c
index f6f1a8d..27051ea 100644
--- a/src/cpu/ti/am335x/uart.c
+++ b/src/cpu/ti/am335x/uart.c
@@ -20,9 +20,6 @@
 #include <types.h>
 #include <console/uart.h>
 #include <arch/io.h>
-
-#include <console/console.h>	/* for __console definition */
-
 #include <cpu/ti/am335x/uart.h>
 
 #define EFR_ENHANCED_EN		(1 << 4)
@@ -162,28 +159,18 @@ unsigned int uart_platform_refclk(void)
 	return 48000000;
 }
 
-static void am335x_uart_init_dev(void)
-{
-	uint16_t div = (uint16_t) uart_baudrate_divisor(
-		default_baudrate(), uart_platform_refclk(), 16);
-	am335x_uart_init(div);
-}
-
 #if !defined(__PRE_RAM__)
 uint32_t uartmem_getbaseaddr(void)
 {
 	return CONFIG_CONSOLE_SERIAL_UART_ADDRESS;
 }
+#endif
 
-static const struct console_driver exynos5_uart_console __console = {
-	.init     = am335x_uart_init_dev,
-	.tx_byte  = am335x_uart_tx_byte,
-	.rx_byte  = am335x_uart_rx_byte,
-};
-#else
 void uart_init(void)
 {
-	am335x_uart_init_dev();
+	uint16_t div = (uint16_t) uart_baudrate_divisor(
+		default_baudrate(), uart_platform_refclk(), 16);
+	am335x_uart_init(div);
 }
 
 unsigned char uart_rx_byte(void)
@@ -196,6 +183,6 @@ void uart_tx_byte(unsigned char data)
 	am335x_uart_tx_byte(data);
 }
 
-void uart_tx_flush(void) {
+void uart_tx_flush(void)
+{
 }
-#endif
diff --git a/src/drivers/uart/pl011.c b/src/drivers/uart/pl011.c
index 376e95c..2bca796 100644
--- a/src/drivers/uart/pl011.c
+++ b/src/drivers/uart/pl011.c
@@ -13,7 +13,6 @@
  * GNU General Public License for more details.
  */
 
-#include <console/console.h>
 #include <console/uart.h>
 
 static void pl011_uart_tx_byte(unsigned char data)
@@ -25,16 +24,12 @@ static void pl011_uart_tx_byte(unsigned char data)
 }
 
 #if !defined(__PRE_RAM__)
-
-static const struct console_driver pl011_uart_console __console = {
-	.tx_byte  = pl011_uart_tx_byte,
-};
-
 uint32_t uartmem_getbaseaddr(void)
 {
 	return CONFIG_CONSOLE_SERIAL_UART_ADDRESS;
 }
-#else
+#endif
+
 void uart_init(void)
 {
 }
@@ -47,4 +42,3 @@ void uart_tx_byte(unsigned char data)
 void uart_tx_flush(void)
 {
 }
-#endif



More information about the coreboot-gerrit mailing list