Kyösti Mälkki (kyosti.malkki@gmail.com) just uploaded a new patch set to gerrit, which you can find at http://review.coreboot.org/5162
-gerrit
commit 9f1dd927dae40157bfe2102f2f16831594e9479c Author: Kyösti Mälkki kyosti.malkki@gmail.com Date: Mon Feb 10 23:21:14 2014 +0200
pl011 UART: Move under drivers/uart
Currently this is only a minimal stub to get console on qemu-armv7.
Change-Id: I3f20b7f944bc7d0e5ace9d22198d4c16a3839d2c Signed-off-by: Kyösti Mälkki kyosti.malkki@gmail.com --- src/drivers/uart/Kconfig | 4 ++ src/drivers/uart/Makefile.inc | 9 ++++ src/drivers/uart/pl011.c | 51 +++++++++++++++++++++ src/mainboard/emulation/qemu-armv7/Kconfig | 8 +++- src/mainboard/emulation/qemu-armv7/Makefile.inc | 4 -- src/mainboard/emulation/qemu-armv7/uart.c | 60 ------------------------- 6 files changed, 70 insertions(+), 66 deletions(-)
diff --git a/src/drivers/uart/Kconfig b/src/drivers/uart/Kconfig index c1c3090..5c9a9d1 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 new file mode 100644 index 0000000..9a8121e --- /dev/null +++ b/src/drivers/uart/Makefile.inc @@ -0,0 +1,9 @@ +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/drivers/uart/pl011.c b/src/drivers/uart/pl011.c new file mode 100644 index 0000000..a880c77 --- /dev/null +++ b/src/drivers/uart/pl011.c @@ -0,0 +1,51 @@ +/* + * This file is part of the coreboot project. + * + * Copyright (C) 2013 Google, Inc. + * + * This software is licensed under the terms of the GNU General Public + * License version 2, as published by the Free Software Foundation, and + * may be copied, distributed, and modified under those terms. + * + * 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. + */ + +#include <console/console.h> +#include <console/uart.h> + +static const uint32_t uart_base = CONFIG_CONSOLE_SERIAL_UART_ADDRESS; + +static void pl011_uart_tx_byte(unsigned int *tx_fifo, unsigned char data) +{ + *tx_fifo = (unsigned int)data; +} + +#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; +} +#else +void uart_init(void) +{ +} + +void uart_tx_byte(unsigned char data) +{ + pl011_uart_tx_byte((unsigned int *)uart_base, data); +} + +void uart_tx_flush(void) +{ +} +#endif diff --git a/src/mainboard/emulation/qemu-armv7/Kconfig b/src/mainboard/emulation/qemu-armv7/Kconfig index 9ab9767..edba627 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 431d9ab..d15495f 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 diff --git a/src/mainboard/emulation/qemu-armv7/uart.c b/src/mainboard/emulation/qemu-armv7/uart.c deleted file mode 100644 index 0be1cf9..0000000 --- a/src/mainboard/emulation/qemu-armv7/uart.c +++ /dev/null @@ -1,60 +0,0 @@ -/* - * This file is part of the coreboot project. - * - * Copyright (C) 2013 Google, Inc. - * - * This software is licensed under the terms of the GNU General Public - * License version 2, as published by the Free Software Foundation, and - * may be copied, distributed, and modified under those terms. - * - * 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. - */ - -#include <console/console.h> -#include <console/uart.h> - -#define VEXPRESS_UART0_IO_ADDRESS (0x10009000) - -static void pl011_init_dev(void) { -} - -static void pl011_uart_tx_byte(unsigned char data) { - static volatile unsigned int *uart0_address = - (unsigned int *)VEXPRESS_UART0_IO_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; -} -#else -void uart_init(void) -{ - pl011_init_dev(); -} - -void uart_tx_byte(unsigned char data) -{ - pl011_uart_tx_byte(data); -} - -void uart_tx_flush(void) { - pl011_uart_tx_flush(); -} -#endif