uart: pass register width in the coreboot table

Some SOCs (like pistachio, for instance) provide an 8250 compatible
UART, which has the same register layout, but mapped to a bus of a
different width.

Instead of adding a new driver for these controllers, it is better to
have coreboot report UART register width to libpayload, and have it
adjust the offsets accordingly when accessing the UART.

BRANCH=none
BUG=chrome-os-partner:31438
TEST=with the rest of the patches integrated depthcharge console messages
     show up when running on the FPGA board

Change-Id: I30b742146069450941164afb04641b967a214d6d
Signed-off-by: Patrick Georgi <pgeorgi@chromium.org>
Original-Commit-Id: 2c30845f269ec6ae1d53ddc5cda0b4320008fa42
Original-Change-Id: Ia0a37cd5f24a1ee4d0334f8a7e3da5df0069cec4
Original-Signed-off-by: Vadim Bendebury <vbendeb@chromium.org>
Original-Reviewed-on: https://chromium-review.googlesource.com/240027
Original-Reviewed-by: Aaron Durbin <adurbin@chromium.org>
Reviewed-on: http://review.coreboot.org/9738
Tested-by: build bot (Jenkins)
Reviewed-by: Patrick Georgi <pgeorgi@google.com>
This commit is contained in:
Vadim Bendebury 2015-01-09 16:54:19 -08:00 committed by Patrick Georgi
parent f7da3d2a94
commit 9dccf1c40b
14 changed files with 14 additions and 0 deletions

View File

@ -34,6 +34,7 @@ void uart_fill_lb(void *data)
serial.type = LB_SERIAL_TYPE_MEMORY_MAPPED; serial.type = LB_SERIAL_TYPE_MEMORY_MAPPED;
serial.baseaddr = uart_platform_base(CONFIG_UART_FOR_CONSOLE); serial.baseaddr = uart_platform_base(CONFIG_UART_FOR_CONSOLE);
serial.baud = default_baudrate(); serial.baud = default_baudrate();
serial.regwidth = 1;
lb_add_serial(&serial, data); lb_add_serial(&serial, data);
lb_add_console(LB_TAG_CONSOLE_SERIAL8250MEM, data); lb_add_console(LB_TAG_CONSOLE_SERIAL8250MEM, data);

View File

@ -195,6 +195,7 @@ void uart_fill_lb(void *data)
serial.type = LB_SERIAL_TYPE_MEMORY_MAPPED; serial.type = LB_SERIAL_TYPE_MEMORY_MAPPED;
serial.baseaddr = uart_platform_base(CONFIG_UART_FOR_CONSOLE); serial.baseaddr = uart_platform_base(CONFIG_UART_FOR_CONSOLE);
serial.baud = default_baudrate(); serial.baud = default_baudrate();
serial.regwidth = 2;
lb_add_serial(&serial, data); lb_add_serial(&serial, data);
lb_add_console(LB_TAG_CONSOLE_SERIAL8250MEM, data); lb_add_console(LB_TAG_CONSOLE_SERIAL8250MEM, data);

View File

@ -99,6 +99,7 @@ void uart_fill_lb(void *data)
serial.type = LB_SERIAL_TYPE_MEMORY_MAPPED; serial.type = LB_SERIAL_TYPE_MEMORY_MAPPED;
serial.baseaddr = uart_platform_base(CONFIG_UART_FOR_CONSOLE); serial.baseaddr = uart_platform_base(CONFIG_UART_FOR_CONSOLE);
serial.baud = default_baudrate(); serial.baud = default_baudrate();
serial.regwidth = 1;
lb_add_serial(&serial, data); lb_add_serial(&serial, data);
lb_add_console(LB_TAG_CONSOLE_SERIAL8250MEM, data); lb_add_console(LB_TAG_CONSOLE_SERIAL8250MEM, data);

View File

@ -47,6 +47,7 @@ void uart_fill_lb(void *data)
serial.type = LB_SERIAL_TYPE_MEMORY_MAPPED; serial.type = LB_SERIAL_TYPE_MEMORY_MAPPED;
serial.baseaddr = uart_platform_base(CONFIG_UART_FOR_CONSOLE); serial.baseaddr = uart_platform_base(CONFIG_UART_FOR_CONSOLE);
serial.baud = default_baudrate(); serial.baud = default_baudrate();
serial.regwidth = 1;
lb_add_serial(&serial, data); lb_add_serial(&serial, data);
lb_add_console(LB_TAG_CONSOLE_SERIAL8250MEM, data); lb_add_console(LB_TAG_CONSOLE_SERIAL8250MEM, data);

View File

@ -142,6 +142,7 @@ void uart_fill_lb(void *data)
serial.type = LB_SERIAL_TYPE_IO_MAPPED; serial.type = LB_SERIAL_TYPE_IO_MAPPED;
serial.baseaddr = uart_platform_base(CONFIG_UART_FOR_CONSOLE); serial.baseaddr = uart_platform_base(CONFIG_UART_FOR_CONSOLE);
serial.baud = default_baudrate(); serial.baud = default_baudrate();
serial.regwidth = 1;
lb_add_serial(&serial, data); lb_add_serial(&serial, data);
lb_add_console(LB_TAG_CONSOLE_SERIAL8250, data); lb_add_console(LB_TAG_CONSOLE_SERIAL8250, data);

View File

@ -159,6 +159,7 @@ struct lb_serial {
uint32_t type; uint32_t type;
uint32_t baseaddr; uint32_t baseaddr;
uint32_t baud; uint32_t baud;
uint32_t regwidth;
}; };
#define LB_TAG_CONSOLE 0x0010 #define LB_TAG_CONSOLE 0x0010

View File

@ -115,6 +115,7 @@ void lb_add_serial(struct lb_serial *new_serial, void *data)
serial->type = new_serial->type; serial->type = new_serial->type;
serial->baseaddr = new_serial->baseaddr; serial->baseaddr = new_serial->baseaddr;
serial->baud = new_serial->baud; serial->baud = new_serial->baud;
serial->regwidth = new_serial->regwidth;
} }
void lb_add_console(uint16_t consoletype, void *data) void lb_add_console(uint16_t consoletype, void *data)

View File

@ -53,6 +53,7 @@ void uart_fill_lb(void *data)
serial.type = LB_SERIAL_TYPE_MEMORY_MAPPED; serial.type = LB_SERIAL_TYPE_MEMORY_MAPPED;
serial.baseaddr = 0x3f8; serial.baseaddr = 0x3f8;
serial.baud = 115200; serial.baud = 115200;
serial.regwidth = 1;
lb_add_serial(&serial, data); lb_add_serial(&serial, data);
lb_add_console(LB_TAG_CONSOLE_SERIAL8250MEM, data); lb_add_console(LB_TAG_CONSOLE_SERIAL8250MEM, data);
} }

View File

@ -179,6 +179,7 @@ void uart_fill_lb(void *data)
serial.type = LB_SERIAL_TYPE_MEMORY_MAPPED; serial.type = LB_SERIAL_TYPE_MEMORY_MAPPED;
serial.baseaddr = uart_platform_base(CONFIG_UART_FOR_CONSOLE); serial.baseaddr = uart_platform_base(CONFIG_UART_FOR_CONSOLE);
serial.baud = default_baudrate(); serial.baud = default_baudrate();
serial.regwidth = 1;
lb_add_serial(&serial, data); lb_add_serial(&serial, data);
lb_add_console(LB_TAG_CONSOLE_SERIAL8250MEM, data); lb_add_console(LB_TAG_CONSOLE_SERIAL8250MEM, data);

View File

@ -141,6 +141,7 @@ void uart_fill_lb(void *data)
serial.type = LB_SERIAL_TYPE_MEMORY_MAPPED; serial.type = LB_SERIAL_TYPE_MEMORY_MAPPED;
serial.baseaddr = uart_platform_base(CONFIG_UART_FOR_CONSOLE); serial.baseaddr = uart_platform_base(CONFIG_UART_FOR_CONSOLE);
serial.baud = default_baudrate(); serial.baud = default_baudrate();
serial.regwidth = 1;
lb_add_serial(&serial, data); lb_add_serial(&serial, data);
lb_add_console(LB_TAG_CONSOLE_SERIAL8250MEM, data); lb_add_console(LB_TAG_CONSOLE_SERIAL8250MEM, data);

View File

@ -154,6 +154,7 @@ void uart_fill_lb(void *data)
serial.type = LB_SERIAL_TYPE_MEMORY_MAPPED; serial.type = LB_SERIAL_TYPE_MEMORY_MAPPED;
serial.baseaddr = uart_platform_base(CONFIG_UART_FOR_CONSOLE); serial.baseaddr = uart_platform_base(CONFIG_UART_FOR_CONSOLE);
serial.baud = default_baudrate(); serial.baud = default_baudrate();
serial.regwidth = 1;
lb_add_serial(&serial, data); lb_add_serial(&serial, data);
lb_add_console(LB_TAG_CONSOLE_SERIAL8250MEM, data); lb_add_console(LB_TAG_CONSOLE_SERIAL8250MEM, data);

View File

@ -160,6 +160,7 @@ void uart_fill_lb(void *data)
serial.type = LB_SERIAL_TYPE_MEMORY_MAPPED; serial.type = LB_SERIAL_TYPE_MEMORY_MAPPED;
serial.baseaddr = CONFIG_CONSOLE_SERIAL_UART_ADDRESS; serial.baseaddr = CONFIG_CONSOLE_SERIAL_UART_ADDRESS;
serial.baud = default_baudrate(); serial.baud = default_baudrate();
serial.regwidth = 1;
lb_add_serial(&serial, data); lb_add_serial(&serial, data);
lb_add_console(LB_TAG_CONSOLE_SERIAL8250MEM, data); lb_add_console(LB_TAG_CONSOLE_SERIAL8250MEM, data);

View File

@ -195,6 +195,7 @@ void uart_fill_lb(void *data)
serial.type = LB_SERIAL_TYPE_MEMORY_MAPPED; serial.type = LB_SERIAL_TYPE_MEMORY_MAPPED;
serial.baseaddr = uart_platform_base(CONFIG_UART_FOR_CONSOLE); serial.baseaddr = uart_platform_base(CONFIG_UART_FOR_CONSOLE);
serial.baud = default_baudrate(); serial.baud = default_baudrate();
serial.regwidth = 1;
lb_add_serial(&serial, data); lb_add_serial(&serial, data);
lb_add_console(LB_TAG_CONSOLE_SERIAL8250MEM, data); lb_add_console(LB_TAG_CONSOLE_SERIAL8250MEM, data);

View File

@ -186,6 +186,7 @@ void uart_fill_lb(void *data)
serial.type = LB_SERIAL_TYPE_MEMORY_MAPPED; serial.type = LB_SERIAL_TYPE_MEMORY_MAPPED;
serial.baseaddr = uart_platform_base(CONFIG_UART_FOR_CONSOLE); serial.baseaddr = uart_platform_base(CONFIG_UART_FOR_CONSOLE);
serial.baud = default_baudrate(); serial.baud = default_baudrate();
serial.regwidth = 1;
lb_add_serial(&serial, data); lb_add_serial(&serial, data);
lb_add_console(LB_TAG_CONSOLE_SERIAL8250MEM, data); lb_add_console(LB_TAG_CONSOLE_SERIAL8250MEM, data);