console: Override uart base address
Add a new CONFIG_OVERRIDE_UART_FOR_CONSOLE token to override the index of uart port, platform use a get_uart_for_console routine to decide what index value should be used for console. Signed-off-by: Bryant Ou <Bryant.Ou.Q@gmail.com> Change-Id: I2079bd1e5ffa209553383b6aafe3b8724849ba2a Reviewed-on: https://review.coreboot.org/c/coreboot/+/45405 Tested-by: build bot (Jenkins) <no-reply@coreboot.org> Reviewed-by: Marc Jones <marc@marcjonesconsulting.com> Reviewed-by: Jonathan Zhang <jonzhang@fb.com>
This commit is contained in:
parent
12985c1dd7
commit
0ee920bf64
|
@ -58,6 +58,14 @@ if CONSOLE_SERIAL
|
||||||
comment "device-specific UART"
|
comment "device-specific UART"
|
||||||
depends on HAVE_UART_SPECIAL
|
depends on HAVE_UART_SPECIAL
|
||||||
|
|
||||||
|
config OVERRIDE_UART_FOR_CONSOLE
|
||||||
|
bool
|
||||||
|
help
|
||||||
|
Set to "y" when the platform overrides the index of uart port by providing
|
||||||
|
a get_uart_for_console routine.
|
||||||
|
|
||||||
|
if !OVERRIDE_UART_FOR_CONSOLE
|
||||||
|
|
||||||
config UART_FOR_CONSOLE
|
config UART_FOR_CONSOLE
|
||||||
int
|
int
|
||||||
prompt "Index for UART port to use for console" if !FIXED_UART_FOR_CONSOLE
|
prompt "Index for UART port to use for console" if !FIXED_UART_FOR_CONSOLE
|
||||||
|
@ -87,6 +95,8 @@ depends on DRIVERS_UART_8250IO && UART_FOR_CONSOLE = 2
|
||||||
comment "Serial port base address = 0x2e8"
|
comment "Serial port base address = 0x2e8"
|
||||||
depends on DRIVERS_UART_8250IO && UART_FOR_CONSOLE = 3
|
depends on DRIVERS_UART_8250IO && UART_FOR_CONSOLE = 3
|
||||||
|
|
||||||
|
endif
|
||||||
|
|
||||||
config UART_OVERRIDE_BAUDRATE
|
config UART_OVERRIDE_BAUDRATE
|
||||||
bool
|
bool
|
||||||
help
|
help
|
||||||
|
|
|
@ -20,6 +20,18 @@ static inline unsigned int get_uart_baudrate(void)
|
||||||
}
|
}
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
#if CONFIG(OVERRIDE_UART_FOR_CONSOLE)
|
||||||
|
/* Return the index of uart port, define this in your platform
|
||||||
|
* when need to use variables to override the index.
|
||||||
|
*/
|
||||||
|
unsigned int get_uart_for_console(void);
|
||||||
|
#else
|
||||||
|
static inline unsigned int get_uart_for_console(void)
|
||||||
|
{
|
||||||
|
return CONFIG_UART_FOR_CONSOLE;
|
||||||
|
}
|
||||||
|
#endif
|
||||||
|
|
||||||
/* Returns the divisor value for a given baudrate.
|
/* Returns the divisor value for a given baudrate.
|
||||||
* The formula to satisfy is:
|
* The formula to satisfy is:
|
||||||
* refclk / divisor = baudrate * oversample
|
* refclk / divisor = baudrate * oversample
|
||||||
|
@ -56,15 +68,15 @@ void oxford_remap(unsigned int new_base);
|
||||||
#if __CONSOLE_SERIAL_ENABLE__
|
#if __CONSOLE_SERIAL_ENABLE__
|
||||||
static inline void __uart_init(void)
|
static inline void __uart_init(void)
|
||||||
{
|
{
|
||||||
uart_init(CONFIG_UART_FOR_CONSOLE);
|
uart_init(get_uart_for_console());
|
||||||
}
|
}
|
||||||
static inline void __uart_tx_byte(u8 data)
|
static inline void __uart_tx_byte(u8 data)
|
||||||
{
|
{
|
||||||
uart_tx_byte(CONFIG_UART_FOR_CONSOLE, data);
|
uart_tx_byte(get_uart_for_console(), data);
|
||||||
}
|
}
|
||||||
static inline void __uart_tx_flush(void)
|
static inline void __uart_tx_flush(void)
|
||||||
{
|
{
|
||||||
uart_tx_flush(CONFIG_UART_FOR_CONSOLE);
|
uart_tx_flush(get_uart_for_console());
|
||||||
}
|
}
|
||||||
#else
|
#else
|
||||||
static inline void __uart_init(void) {}
|
static inline void __uart_init(void) {}
|
||||||
|
|
Loading…
Reference in New Issue