uart: Support multiple ports
The port for console remains to be a compile time constant.
The Kconfig option is changed to select an UART port with index
to avoid putting map of UART base addresses in Kconfigs.
With this change it is possible to have other than debug console
on different UART port.
Change-Id: Ie1845a946f8d3b2604ef5404edb31b2e811f3ccd
Signed-off-by: Kyösti Mälkki <kyosti.malkki@gmail.com>
Reviewed-on: http://review.coreboot.org/5342
Tested-by: build bot (Jenkins)
Reviewed-by: David Hendricks <dhendrix@chromium.org>
Reviewed-by: Paul Menzel <paulepanter@users.sourceforge.net>
diff --git a/src/drivers/uart/pl011.c b/src/drivers/uart/pl011.c
index 41e66fa..e2db877 100644
--- a/src/drivers/uart/pl011.c
+++ b/src/drivers/uart/pl011.c
@@ -21,26 +21,21 @@
*uart_base = (unsigned int)data;
}
-unsigned int uart_platform_base(int idx)
-{
- return CONFIG_CONSOLE_SERIAL_UART_ADDRESS;
-}
-
-void uart_init(void)
+void uart_init(int idx)
{
}
-void uart_tx_byte(unsigned char data)
+void uart_tx_byte(int idx, unsigned char data)
{
- unsigned int *uart_base = uart_platform_baseptr(0);
+ unsigned int *uart_base = uart_platform_baseptr(idx);
pl011_uart_tx_byte(uart_base, data);
}
-void uart_tx_flush(void)
+void uart_tx_flush(int idx)
{
}
-unsigned char uart_rx_byte(void)
+unsigned char uart_rx_byte(int idx)
{
return 0;
}
@@ -50,7 +45,7 @@
{
struct lb_serial serial;
serial.type = LB_SERIAL_TYPE_MEMORY_MAPPED;
- serial.baseaddr = uart_platform_base(0);
+ serial.baseaddr = uart_platform_base(CONFIG_UART_FOR_CONSOLE);
serial.baud = default_baudrate();
lb_add_serial(&serial, data);