driver/uart: Introduce a way for mainboard to override the baudrate
The rationale is to allow the mainboard to override the default baudrate for instance by sampling GPIOs at boot. A new configuration option is available for mainboards to select this behaviour. It will then have to define the function get_uart_baudrate to return the computed baudrate. Change-Id: I970ee788bf90b9e1a8c6ccdc5eee8029d9af0ecc Signed-off-by: Julien Viard de Galbert <jviarddegalbert@online.net> Reviewed-on: https://review.coreboot.org/23713 Tested-by: build bot (Jenkins) <no-reply@coreboot.org> Reviewed-by: Nico Huber <nico.h@gmx.de>
This commit is contained in:
committed by
Martin Roth
parent
fa650f5e8c
commit
235daa4bf6
@@ -51,7 +51,7 @@ void uart_fill_lb(void *data)
|
||||
struct lb_serial serial;
|
||||
serial.type = LB_SERIAL_TYPE_MEMORY_MAPPED;
|
||||
serial.baseaddr = uart_platform_base(CONFIG_UART_FOR_CONSOLE);
|
||||
serial.baud = CONFIG_TTYS0_BAUD;
|
||||
serial.baud = get_uart_baudrate();
|
||||
serial.regwidth = 1;
|
||||
serial.input_hertz = uart_platform_refclk();
|
||||
serial.uart_pci_addr = CONFIG_UART_PCI_ADDR;
|
||||
|
@@ -107,7 +107,7 @@ void uart_init(int idx)
|
||||
{
|
||||
if (!IS_ENABLED(CONFIG_DRIVERS_UART_8250IO_SKIP_INIT)) {
|
||||
unsigned int div;
|
||||
div = uart_baudrate_divisor(CONFIG_TTYS0_BAUD,
|
||||
div = uart_baudrate_divisor(get_uart_baudrate(),
|
||||
uart_platform_refclk(), uart_input_clock_divider());
|
||||
uart8250_init(uart_platform_base(idx), div);
|
||||
}
|
||||
@@ -134,7 +134,7 @@ void uart_fill_lb(void *data)
|
||||
struct lb_serial serial;
|
||||
serial.type = LB_SERIAL_TYPE_IO_MAPPED;
|
||||
serial.baseaddr = uart_platform_base(CONFIG_UART_FOR_CONSOLE);
|
||||
serial.baud = CONFIG_TTYS0_BAUD;
|
||||
serial.baud = get_uart_baudrate();
|
||||
serial.regwidth = 1;
|
||||
serial.input_hertz = uart_platform_refclk();
|
||||
serial.uart_pci_addr = CONFIG_UART_PCI_ADDR;
|
||||
|
@@ -119,7 +119,7 @@ void uart_init(int idx)
|
||||
return;
|
||||
|
||||
unsigned int div;
|
||||
div = uart_baudrate_divisor(CONFIG_TTYS0_BAUD,
|
||||
div = uart_baudrate_divisor(get_uart_baudrate(),
|
||||
uart_platform_refclk(), uart_input_clock_divider());
|
||||
uart8250_mem_init(base, div);
|
||||
}
|
||||
@@ -156,7 +156,7 @@ void uart_fill_lb(void *data)
|
||||
serial.baseaddr = uart_platform_base(CONFIG_UART_FOR_CONSOLE);
|
||||
if (!serial.baseaddr)
|
||||
return;
|
||||
serial.baud = CONFIG_TTYS0_BAUD;
|
||||
serial.baud = get_uart_baudrate();
|
||||
if (IS_ENABLED(CONFIG_DRIVERS_UART_8250MEM_32))
|
||||
serial.regwidth = sizeof(uint32_t);
|
||||
else
|
||||
|
Reference in New Issue
Block a user