summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
Diffstat (limited to 'src')
-rw-r--r--src/drivers/uart/pl011.c18
-rw-r--r--src/drivers/uart/sifive.c3
-rw-r--r--src/drivers/uart/uart8250io.c18
-rw-r--r--src/drivers/uart/uart8250mem.c22
-rw-r--r--src/include/boot/coreboot_tables.h3
-rw-r--r--src/lib/coreboot_table.c29
-rw-r--r--src/mainboard/emulation/qemu-power8/uart.c17
-rw-r--r--src/soc/mediatek/common/uart.c18
-rw-r--r--src/soc/nvidia/tegra124/uart.c18
-rw-r--r--src/soc/nvidia/tegra210/uart.c18
-rw-r--r--src/soc/qualcomm/common/qupv3_uart.c16
-rw-r--r--src/soc/qualcomm/common/uart_bitbang.c4
-rw-r--r--src/soc/qualcomm/ipq40xx/uart.c17
-rw-r--r--src/soc/qualcomm/ipq806x/uart.c3
-rw-r--r--src/soc/qualcomm/qcs405/uart.c17
-rw-r--r--src/soc/samsung/exynos5250/uart.c18
-rw-r--r--src/soc/samsung/exynos5420/uart.c18
-rw-r--r--src/soc/ti/am335x/uart.c18
18 files changed, 125 insertions, 150 deletions
diff --git a/src/drivers/uart/pl011.c b/src/drivers/uart/pl011.c
index 3653262700..0661de174f 100644
--- a/src/drivers/uart/pl011.c
+++ b/src/drivers/uart/pl011.c
@@ -35,15 +35,13 @@ unsigned char uart_rx_byte(unsigned int idx)
return read8(&regs->dr);
}
-void uart_fill_lb(void *data)
+enum cb_err fill_lb_serial(struct lb_serial *serial)
{
- struct lb_serial serial;
- serial.type = LB_SERIAL_TYPE_MEMORY_MAPPED;
- serial.baseaddr = uart_platform_base(CONFIG_UART_FOR_CONSOLE);
- serial.baud = get_uart_baudrate();
- serial.regwidth = 1;
- serial.input_hertz = uart_platform_refclk();
- lb_add_serial(&serial, data);
-
- lb_add_console(LB_TAG_CONSOLE_SERIAL8250MEM, data);
+ serial->type = LB_SERIAL_TYPE_MEMORY_MAPPED;
+ serial->baseaddr = uart_platform_base(CONFIG_UART_FOR_CONSOLE);
+ serial->baud = get_uart_baudrate();
+ serial->regwidth = 1;
+ serial->input_hertz = uart_platform_refclk();
+
+ return CB_SUCCESS;
}
diff --git a/src/drivers/uart/sifive.c b/src/drivers/uart/sifive.c
index 31181aa51f..d1b89dc745 100644
--- a/src/drivers/uart/sifive.c
+++ b/src/drivers/uart/sifive.c
@@ -100,7 +100,8 @@ unsigned int uart_input_clock_divider(void)
return 1;
}
-void uart_fill_lb(void *data)
+enum cb_err fill_lb_serial(struct lb_serial *serial)
{
+ return CB_ERR;
/* TODO */
}
diff --git a/src/drivers/uart/uart8250io.c b/src/drivers/uart/uart8250io.c
index 7ca24529bc..a7fc3466f3 100644
--- a/src/drivers/uart/uart8250io.c
+++ b/src/drivers/uart/uart8250io.c
@@ -109,15 +109,13 @@ void uart_tx_flush(unsigned int idx)
uart8250_tx_flush(uart_platform_base(idx));
}
-void uart_fill_lb(void *data)
+enum cb_err fill_lb_serial(struct lb_serial *serial)
{
- struct lb_serial serial;
- serial.type = LB_SERIAL_TYPE_IO_MAPPED;
- serial.baseaddr = uart_platform_base(CONFIG_UART_FOR_CONSOLE);
- serial.baud = get_uart_baudrate();
- serial.regwidth = 1;
- serial.input_hertz = uart_platform_refclk();
- lb_add_serial(&serial, data);
-
- lb_add_console(LB_TAG_CONSOLE_SERIAL8250, data);
+ serial->type = LB_SERIAL_TYPE_IO_MAPPED;
+ serial->baseaddr = uart_platform_base(CONFIG_UART_FOR_CONSOLE);
+ serial->baud = get_uart_baudrate();
+ serial->regwidth = 1;
+ serial->input_hertz = uart_platform_refclk();
+
+ return CB_SUCCESS;
}
diff --git a/src/drivers/uart/uart8250mem.c b/src/drivers/uart/uart8250mem.c
index 79e786bf12..19677a8a6a 100644
--- a/src/drivers/uart/uart8250mem.c
+++ b/src/drivers/uart/uart8250mem.c
@@ -133,20 +133,18 @@ void uart_tx_flush(unsigned int idx)
uart8250_mem_tx_flush(base);
}
-void uart_fill_lb(void *data)
+enum cb_err fill_lb_serial(struct lb_serial *serial)
{
- struct lb_serial serial;
- serial.type = LB_SERIAL_TYPE_MEMORY_MAPPED;
- serial.baseaddr = uart_platform_base(CONFIG_UART_FOR_CONSOLE);
- if (!serial.baseaddr)
- return;
- serial.baud = get_uart_baudrate();
+ serial->type = LB_SERIAL_TYPE_MEMORY_MAPPED;
+ serial->baseaddr = uart_platform_base(CONFIG_UART_FOR_CONSOLE);
+ if (!serial->baseaddr)
+ return CB_ERR;
+ serial->baud = get_uart_baudrate();
if (CONFIG(DRIVERS_UART_8250MEM_32))
- serial.regwidth = sizeof(uint32_t);
+ serial->regwidth = sizeof(uint32_t);
else
- serial.regwidth = sizeof(uint8_t);
- serial.input_hertz = uart_platform_refclk();
- lb_add_serial(&serial, data);
+ serial->regwidth = sizeof(uint8_t);
+ serial->input_hertz = uart_platform_refclk();
- lb_add_console(LB_TAG_CONSOLE_SERIAL8250MEM, data);
+ return CB_SUCCESS;
}
diff --git a/src/include/boot/coreboot_tables.h b/src/include/boot/coreboot_tables.h
index 6188ce0984..4aab80e866 100644
--- a/src/include/boot/coreboot_tables.h
+++ b/src/include/boot/coreboot_tables.h
@@ -19,8 +19,7 @@ void fill_lb_gpios(struct lb_gpios *gpios);
void lb_add_gpios(struct lb_gpios *gpios, const struct lb_gpio *gpio_table,
size_t count);
-void uart_fill_lb(void *data);
-void lb_add_serial(struct lb_serial *serial, void *data);
+enum cb_err fill_lb_serial(struct lb_serial *serial);
void lb_add_console(uint16_t consoletype, void *data);
enum cb_err lb_fill_pcie(struct lb_pcie *pcie);
diff --git a/src/lib/coreboot_table.c b/src/lib/coreboot_table.c
index 4df703958f..6c09cb13c4 100644
--- a/src/lib/coreboot_table.c
+++ b/src/lib/coreboot_table.c
@@ -96,19 +96,22 @@ static struct lb_memory *lb_memory(struct lb_header *header)
return mem;
}
-void lb_add_serial(struct lb_serial *new_serial, void *data)
+static void lb_add_serial(struct lb_header *header)
{
- struct lb_header *header = (struct lb_header *)data;
- struct lb_serial *serial;
-
- serial = (struct lb_serial *)lb_new_record(header);
- serial->tag = LB_TAG_SERIAL;
- serial->size = sizeof(*serial);
- serial->type = new_serial->type;
- serial->baseaddr = new_serial->baseaddr;
- serial->baud = new_serial->baud;
- serial->regwidth = new_serial->regwidth;
- serial->input_hertz = new_serial->input_hertz;
+ struct lb_serial new_serial = { .tag = LB_TAG_SERIAL,
+ .size = sizeof(struct lb_serial),
+ };
+ if (fill_lb_serial(&new_serial) != CB_SUCCESS)
+ return;
+
+ struct lb_serial *serial = (struct lb_serial *)lb_new_record(header);
+ memcpy(serial, &new_serial, sizeof(*serial));
+ assert(serial->type == LB_SERIAL_TYPE_IO_MAPPED
+ || serial->type == LB_SERIAL_TYPE_MEMORY_MAPPED)
+ if (serial->type == LB_SERIAL_TYPE_IO_MAPPED)
+ lb_add_console(LB_TAG_CONSOLE_SERIAL8250, header);
+ else
+ lb_add_console(LB_TAG_CONSOLE_SERIAL8250MEM, header);
}
void lb_add_console(uint16_t consoletype, void *data)
@@ -492,7 +495,7 @@ static uintptr_t write_coreboot_table(uintptr_t rom_table_end)
/* Record the serial ports and consoles */
if (CONFIG(CONSOLE_SERIAL))
- uart_fill_lb(head);
+ lb_add_serial(head);
if (CONFIG(CONSOLE_USB))
lb_add_console(LB_TAG_CONSOLE_EHCI, head);
diff --git a/src/mainboard/emulation/qemu-power8/uart.c b/src/mainboard/emulation/qemu-power8/uart.c
index a2f9116875..a369e62ba5 100644
--- a/src/mainboard/emulation/qemu-power8/uart.c
+++ b/src/mainboard/emulation/qemu-power8/uart.c
@@ -28,16 +28,13 @@ void uart_tx_flush(unsigned int idx)
{
}
-void uart_fill_lb(void *data)
+enum cb_err fill_lb_serial(struct lb_serial *serial)
{
- struct lb_serial serial;
+ serial->type = LB_SERIAL_TYPE_MEMORY_MAPPED;
+ serial->baseaddr = 0;
+ serial->baud = 115200;
+ serial->regwidth = 1;
+ serial->input_hertz = uart_platform_refclk();
- serial.type = LB_SERIAL_TYPE_MEMORY_MAPPED;
- serial.baseaddr = 0;
- serial.baud = 115200;
- serial.regwidth = 1;
- serial.input_hertz = uart_platform_refclk();
- lb_add_serial(&serial, data);
-
- lb_add_console(LB_TAG_CONSOLE_SERIAL8250MEM, data);
+ return CB_SUCCESS;
}
diff --git a/src/soc/mediatek/common/uart.c b/src/soc/mediatek/common/uart.c
index 11c3452ce2..79ca07230f 100644
--- a/src/soc/mediatek/common/uart.c
+++ b/src/soc/mediatek/common/uart.c
@@ -159,15 +159,13 @@ void uart_tx_flush(unsigned int idx)
mtk_uart_tx_flush();
}
-void uart_fill_lb(void *data)
+enum cb_err fill_lb_serial(struct lb_serial *serial)
{
- struct lb_serial serial;
- serial.type = LB_SERIAL_TYPE_MEMORY_MAPPED;
- serial.baseaddr = UART0_BASE;
- serial.baud = get_uart_baudrate();
- serial.regwidth = 4;
- serial.input_hertz = UART_HZ;
- lb_add_serial(&serial, data);
-
- lb_add_console(LB_TAG_CONSOLE_SERIAL8250MEM, data);
+ serial->type = LB_SERIAL_TYPE_MEMORY_MAPPED;
+ serial->baseaddr = UART0_BASE;
+ serial->baud = get_uart_baudrate();
+ serial->regwidth = 4;
+ serial->input_hertz = UART_HZ;
+
+ return CB_SUCCESS;
}
diff --git a/src/soc/nvidia/tegra124/uart.c b/src/soc/nvidia/tegra124/uart.c
index 77d6de2c9d..557f0e82fe 100644
--- a/src/soc/nvidia/tegra124/uart.c
+++ b/src/soc/nvidia/tegra124/uart.c
@@ -114,15 +114,13 @@ void uart_tx_flush(unsigned int idx)
tegra124_uart_tx_flush(uart_ptr);
}
-void uart_fill_lb(void *data)
+enum cb_err fill_lb_serial(struct lb_serial *serial)
{
- struct lb_serial serial;
- serial.type = LB_SERIAL_TYPE_MEMORY_MAPPED;
- serial.baseaddr = uart_platform_base(CONFIG_UART_FOR_CONSOLE);
- serial.baud = get_uart_baudrate();
- serial.regwidth = 4;
- serial.input_hertz = uart_platform_refclk();
- lb_add_serial(&serial, data);
-
- lb_add_console(LB_TAG_CONSOLE_SERIAL8250MEM, data);
+ serial->type = LB_SERIAL_TYPE_MEMORY_MAPPED;
+ serial->baseaddr = uart_platform_base(CONFIG_UART_FOR_CONSOLE);
+ serial->baud = get_uart_baudrate();
+ serial->regwidth = 4;
+ serial->input_hertz = uart_platform_refclk();
+
+ return CB_SUCCESS;
}
diff --git a/src/soc/nvidia/tegra210/uart.c b/src/soc/nvidia/tegra210/uart.c
index b2cdf67aa2..33660659f8 100644
--- a/src/soc/nvidia/tegra210/uart.c
+++ b/src/soc/nvidia/tegra210/uart.c
@@ -101,15 +101,13 @@ unsigned char uart_rx_byte(unsigned int idx)
return tegra210_uart_rx_byte();
}
-void uart_fill_lb(void *data)
+enum cb_err fill_lb_serial(struct lb_serial *serial)
{
- struct lb_serial serial;
- serial.type = LB_SERIAL_TYPE_MEMORY_MAPPED;
- serial.baseaddr = CONFIG_CONSOLE_SERIAL_TEGRA210_UART_ADDRESS;
- serial.baud = get_uart_baudrate();
- serial.regwidth = 4;
- serial.input_hertz = uart_platform_refclk();
- lb_add_serial(&serial, data);
-
- lb_add_console(LB_TAG_CONSOLE_SERIAL8250MEM, data);
+ serial->type = LB_SERIAL_TYPE_MEMORY_MAPPED;
+ serial->baseaddr = CONFIG_CONSOLE_SERIAL_TEGRA210_UART_ADDRESS;
+ serial->baud = get_uart_baudrate();
+ serial->regwidth = 4;
+ serial->input_hertz = uart_platform_refclk();
+
+ return CB_SUCCESS;
}
diff --git a/src/soc/qualcomm/common/qupv3_uart.c b/src/soc/qualcomm/common/qupv3_uart.c
index 2086c1df70..f4ff53b8b1 100644
--- a/src/soc/qualcomm/common/qupv3_uart.c
+++ b/src/soc/qualcomm/common/qupv3_uart.c
@@ -140,15 +140,13 @@ uintptr_t uart_platform_base(unsigned int idx)
return (uintptr_t)qup[idx].regs;
}
-void uart_fill_lb(void *data)
+enum cb_err fill_lb_serial(struct lb_serial *serial)
{
- struct lb_serial serial = {0};
+ serial->type = LB_SERIAL_TYPE_MEMORY_MAPPED;
+ serial->baseaddr = (uint32_t)uart_platform_base(CONFIG_UART_FOR_CONSOLE);
+ serial->baud = get_uart_baudrate();
+ serial->regwidth = 4;
+ serial->input_hertz = SRC_XO_HZ;
- serial.type = LB_SERIAL_TYPE_MEMORY_MAPPED;
- serial.baseaddr = (uint32_t)uart_platform_base(CONFIG_UART_FOR_CONSOLE);
- serial.baud = get_uart_baudrate();
- serial.regwidth = 4;
- serial.input_hertz = SRC_XO_HZ;
-
- lb_add_serial(&serial, data);
+ return CB_SUCCESS;
}
diff --git a/src/soc/qualcomm/common/uart_bitbang.c b/src/soc/qualcomm/common/uart_bitbang.c
index 943dcf8a06..d6447f1f18 100644
--- a/src/soc/qualcomm/common/uart_bitbang.c
+++ b/src/soc/qualcomm/common/uart_bitbang.c
@@ -5,9 +5,9 @@
#include <boot/coreboot_tables.h>
#include <soc/uart.h>
-void uart_fill_lb(void *data)
+enum cb_err fill_lb_serial(struct lb_serial *serial)
{
-
+ return CB_ERR;
}
static void set_tx(int line_state)
diff --git a/src/soc/qualcomm/ipq40xx/uart.c b/src/soc/qualcomm/ipq40xx/uart.c
index c04a773bce..45dc09af35 100644
--- a/src/soc/qualcomm/ipq40xx/uart.c
+++ b/src/soc/qualcomm/ipq40xx/uart.c
@@ -256,16 +256,13 @@ uint8_t uart_rx_byte(unsigned int idx)
}
/* TODO: Implement function */
-void uart_fill_lb(void *data)
+enum cb_err fill_lb_serial(struct lb_serial *serial)
{
- struct lb_serial serial;
+ serial->type = LB_SERIAL_TYPE_MEMORY_MAPPED;
+ serial->baseaddr = (uint32_t)UART1_DM_BASE;
+ serial->baud = get_uart_baudrate();
+ serial->regwidth = 1;
+ serial->input_hertz = uart_platform_refclk();
- serial.type = LB_SERIAL_TYPE_MEMORY_MAPPED;
- serial.baseaddr = (uint32_t)UART1_DM_BASE;
- serial.baud = get_uart_baudrate();
- serial.regwidth = 1;
- serial.input_hertz = uart_platform_refclk();
- lb_add_serial(&serial, data);
-
- lb_add_console(LB_TAG_CONSOLE_SERIAL8250MEM, data);
+ return CB_SUCCESS;
}
diff --git a/src/soc/qualcomm/ipq806x/uart.c b/src/soc/qualcomm/ipq806x/uart.c
index 15a0998fb5..6d69edc991 100644
--- a/src/soc/qualcomm/ipq806x/uart.c
+++ b/src/soc/qualcomm/ipq806x/uart.c
@@ -368,6 +368,7 @@ uint8_t uart_rx_byte(unsigned int idx)
}
/* TODO: Implement function */
-void uart_fill_lb(void *data)
+enum cb_err fill_lb_serial(struct lb_serial *serial)
{
+ return CB_ERR;
}
diff --git a/src/soc/qualcomm/qcs405/uart.c b/src/soc/qualcomm/qcs405/uart.c
index 007a98093f..16c71b4205 100644
--- a/src/soc/qualcomm/qcs405/uart.c
+++ b/src/soc/qualcomm/qcs405/uart.c
@@ -257,16 +257,13 @@ uint8_t uart_rx_byte(unsigned int idx)
}
#endif
-void uart_fill_lb(void *data)
+enum cb_err fill_lb_serial(struct lb_serial *serial)
{
- struct lb_serial serial;
+ serial->type = LB_SERIAL_TYPE_MEMORY_MAPPED;
+ serial->baseaddr = (uint64_t)UART2_DM_BASE;
+ serial->baud = get_uart_baudrate();
+ serial->regwidth = 1;
+ serial->input_hertz = uart_platform_refclk();
- serial.type = LB_SERIAL_TYPE_MEMORY_MAPPED;
- serial.baseaddr = (uint64_t)UART2_DM_BASE;
- serial.baud = get_uart_baudrate();
- serial.regwidth = 1;
- serial.input_hertz = uart_platform_refclk();
- lb_add_serial(&serial, data);
-
- lb_add_console(LB_TAG_CONSOLE_SERIAL8250MEM, data);
+ return CB_SUCCESS;
}
diff --git a/src/soc/samsung/exynos5250/uart.c b/src/soc/samsung/exynos5250/uart.c
index 7943651d85..7cd1d4671a 100644
--- a/src/soc/samsung/exynos5250/uart.c
+++ b/src/soc/samsung/exynos5250/uart.c
@@ -132,15 +132,13 @@ void uart_tx_flush(unsigned int idx)
exynos5_uart_tx_flush(uart);
}
-void uart_fill_lb(void *data)
+enum cb_err fill_lb_serial(struct lb_serial *serial)
{
- struct lb_serial serial;
- serial.type = LB_SERIAL_TYPE_MEMORY_MAPPED;
- serial.baseaddr = uart_platform_base(CONFIG_UART_FOR_CONSOLE);
- serial.baud = get_uart_baudrate();
- serial.regwidth = 4;
- serial.input_hertz = uart_platform_refclk();
- lb_add_serial(&serial, data);
-
- lb_add_console(LB_TAG_CONSOLE_SERIAL8250MEM, data);
+ serial->type = LB_SERIAL_TYPE_MEMORY_MAPPED;
+ serial->baseaddr = uart_platform_base(CONFIG_UART_FOR_CONSOLE);
+ serial->baud = get_uart_baudrate();
+ serial->regwidth = 4;
+ serial->input_hertz = uart_platform_refclk();
+
+ return CB_SUCCESS;
}
diff --git a/src/soc/samsung/exynos5420/uart.c b/src/soc/samsung/exynos5420/uart.c
index 12681834bf..eb1d3f9fca 100644
--- a/src/soc/samsung/exynos5420/uart.c
+++ b/src/soc/samsung/exynos5420/uart.c
@@ -123,15 +123,13 @@ void uart_tx_flush(unsigned int idx)
/* Exynos5250 implements this too. */
}
-void uart_fill_lb(void *data)
+enum cb_err fill_lb_serial(struct lb_serial *serial)
{
- struct lb_serial serial;
- serial.type = LB_SERIAL_TYPE_MEMORY_MAPPED;
- serial.baseaddr = uart_platform_base(CONFIG_UART_FOR_CONSOLE);
- serial.baud = get_uart_baudrate();
- serial.regwidth = 4;
- serial.input_hertz = uart_platform_refclk();
- lb_add_serial(&serial, data);
-
- lb_add_console(LB_TAG_CONSOLE_SERIAL8250MEM, data);
+ serial->type = LB_SERIAL_TYPE_MEMORY_MAPPED;
+ serial->baseaddr = uart_platform_base(CONFIG_UART_FOR_CONSOLE);
+ serial->baud = get_uart_baudrate();
+ serial->regwidth = 4;
+ serial->input_hertz = uart_platform_refclk();
+
+ return CB_SUCCESS;
}
diff --git a/src/soc/ti/am335x/uart.c b/src/soc/ti/am335x/uart.c
index 136d785059..b19ba96aec 100644
--- a/src/soc/ti/am335x/uart.c
+++ b/src/soc/ti/am335x/uart.c
@@ -170,15 +170,13 @@ void uart_tx_flush(unsigned int idx)
{
}
-void uart_fill_lb(void *data)
+enum cb_err fill_lb_serial(struct lb_serial *serial)
{
- struct lb_serial serial;
- serial.type = LB_SERIAL_TYPE_MEMORY_MAPPED;
- serial.baseaddr = uart_platform_base(CONFIG_UART_FOR_CONSOLE);
- serial.baud = get_uart_baudrate();
- serial.regwidth = 2;
- serial.input_hertz = uart_platform_refclk();
- lb_add_serial(&serial, data);
-
- lb_add_console(LB_TAG_CONSOLE_SERIAL8250MEM, data);
+ serial->type = LB_SERIAL_TYPE_MEMORY_MAPPED;
+ serial->baseaddr = uart_platform_base(CONFIG_UART_FOR_CONSOLE);
+ serial->baud = get_uart_baudrate();
+ serial->regwidth = 2;
+ serial->input_hertz = uart_platform_refclk();
+
+ return CB_SUCCESS;
}