summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--src/drivers/uart/Kconfig4
-rw-r--r--src/drivers/uart/Makefile.inc10
-rw-r--r--src/drivers/uart/pl011.c (renamed from src/mainboard/emulation/qemu-armv7/uart.c)22
-rw-r--r--src/mainboard/emulation/qemu-armv7/Kconfig8
-rw-r--r--src/mainboard/emulation/qemu-armv7/Makefile.inc4
5 files changed, 26 insertions, 22 deletions
diff --git a/src/drivers/uart/Kconfig b/src/drivers/uart/Kconfig
index c1c30907c3..5c9a9d129c 100644
--- a/src/drivers/uart/Kconfig
+++ b/src/drivers/uart/Kconfig
@@ -12,3 +12,7 @@ config HAVE_UART_SPECIAL
bool
default n
+config DRIVERS_UART_PL011
+ bool
+ default n
+ select HAVE_UART_SPECIAL
diff --git a/src/drivers/uart/Makefile.inc b/src/drivers/uart/Makefile.inc
index c797d4b44d..52a7024318 100644
--- a/src/drivers/uart/Makefile.inc
+++ b/src/drivers/uart/Makefile.inc
@@ -4,3 +4,13 @@ ramstage-y += util.c
bootblock-y += util.c
smm-y += util.c
endif
+
+ifeq ($(CONFIG_CONSOLE_SERIAL_UART),y)
+
+ifeq ($(CONFIG_DRIVERS_UART_PL011),y)
+bootblock-$(CONFIG_BOOTBLOCK_CONSOLE) += pl011.c
+romstage-$(CONFIG_EARLY_CONSOLE) += pl011.c
+ramstage-y += pl011.c
+endif
+
+endif
diff --git a/src/mainboard/emulation/qemu-armv7/uart.c b/src/drivers/uart/pl011.c
index dfe5d0ac12..af085acbea 100644
--- a/src/mainboard/emulation/qemu-armv7/uart.c
+++ b/src/drivers/uart/pl011.c
@@ -16,37 +16,27 @@
#include <console/console.h>
#include <uart.h>
-#define VEXPRESS_UART0_IO_ADDRESS (0x10009000)
-
-static void pl011_init_dev(void) {
-}
-
-static void pl011_uart_tx_byte(unsigned char data) {
+static void pl011_uart_tx_byte(unsigned char data)
+{
static volatile unsigned int *uart0_address =
- (unsigned int *)VEXPRESS_UART0_IO_ADDRESS;
+ (unsigned int *) CONFIG_CONSOLE_SERIAL_UART_ADDRESS;
*uart0_address = (unsigned int)data;
}
-static void pl011_uart_tx_flush(void) {
-}
-
#if !defined(__PRE_RAM__)
static const struct console_driver pl011_uart_console __console = {
- .init = pl011_init_dev,
.tx_byte = pl011_uart_tx_byte,
- .tx_flush = pl011_uart_tx_flush,
};
uint32_t uartmem_getbaseaddr(void)
{
- return VEXPRESS_UART0_IO_ADDRESS;
+ return CONFIG_CONSOLE_SERIAL_UART_ADDRESS;
}
#else
void uart_init(void)
{
- pl011_init_dev();
}
void uart_tx_byte(unsigned char data)
@@ -54,7 +44,7 @@ void uart_tx_byte(unsigned char data)
pl011_uart_tx_byte(data);
}
-void uart_tx_flush(void) {
- pl011_uart_tx_flush();
+void uart_tx_flush(void)
+{
}
#endif
diff --git a/src/mainboard/emulation/qemu-armv7/Kconfig b/src/mainboard/emulation/qemu-armv7/Kconfig
index 9ab9767ed1..edba627984 100644
--- a/src/mainboard/emulation/qemu-armv7/Kconfig
+++ b/src/mainboard/emulation/qemu-armv7/Kconfig
@@ -25,8 +25,7 @@ config BOARD_SPECIFIC_OPTIONS # dummy
def_bool y
select ARCH_ARMV7
select CPU_ARMLTD_CORTEX_A9
- select HAVE_UART_MEMORY_MAPPED
- select HAVE_UART_SPECIAL
+ select DRIVERS_UART_PL011
select BOARD_ROMSIZE_KB_4096
config MAINBOARD_DIR
@@ -49,6 +48,11 @@ config DRAM_SIZE_MB
int
default 1024
+config CONSOLE_SERIAL_UART_ADDRESS
+ hex
+ depends on CONSOLE_SERIAL_UART
+ default 0x10009000
+
# Memory map for qemu vexpress-a9:
#
# 0x0000_0000: jump instruction (by qemu)
diff --git a/src/mainboard/emulation/qemu-armv7/Makefile.inc b/src/mainboard/emulation/qemu-armv7/Makefile.inc
index 431d9ab865..d15495fbeb 100644
--- a/src/mainboard/emulation/qemu-armv7/Makefile.inc
+++ b/src/mainboard/emulation/qemu-armv7/Makefile.inc
@@ -21,7 +21,3 @@ ramstage-y += media.c
bootblock-y += timer.c
romstage-y += timer.c
ramstage-y += timer.c
-
-bootblock-$(CONFIG_BOOTBLOCK_CONSOLE) += uart.c
-romstage-$(CONFIG_EARLY_CONSOLE) += uart.c
-ramstage-y += uart.c