soc/cavium: Clean uart code
* Only init UART_FOR_CONSOLE * Allow UART init with zero baudrate. * Init UART0..3 on Cavium's cn8100_sff_evb to fix kernel panic. Tested on CN8100_SFF_EVB. Change-Id: I1043b30318ec6210e2dd6b7ac313a41171d37f55 Signed-off-by: Patrick Rudolph <patrick.rudolph@9elements.com> Reviewed-on: https://review.coreboot.org/25448 Tested-by: build bot (Jenkins) <no-reply@coreboot.org> Reviewed-by: David Hendricks <david.hendricks@gmail.com>
This commit is contained in:
parent
06c7d64be9
commit
d0dcf877e4
|
@ -21,10 +21,8 @@
|
|||
void bootblock_mainboard_early_init(void)
|
||||
{
|
||||
if (IS_ENABLED(CONFIG_BOOTBLOCK_CONSOLE)) {
|
||||
if (!uart_is_enabled(0))
|
||||
uart_setup(0, CONFIG_TTYS0_BAUD);
|
||||
if (!uart_is_enabled(1))
|
||||
uart_setup(0, CONFIG_TTYS0_BAUD);
|
||||
if (!uart_is_enabled(CONFIG_UART_FOR_CONSOLE))
|
||||
uart_setup(CONFIG_UART_FOR_CONSOLE, CONFIG_TTYS0_BAUD);
|
||||
}
|
||||
}
|
||||
|
||||
|
|
|
@ -22,12 +22,19 @@
|
|||
#include <soc/twsi.h>
|
||||
#include <soc/gpio.h>
|
||||
#include <delay.h>
|
||||
#include <soc/uart.h>
|
||||
|
||||
extern const struct bdk_devicetree_key_value devtree[];
|
||||
|
||||
static void mainboard_init(struct device *dev)
|
||||
{
|
||||
/* FIXME: stub */
|
||||
size_t i;
|
||||
|
||||
/* Init UARTs */
|
||||
for (i = 0; i < 4; i++) {
|
||||
if (!uart_is_enabled(i))
|
||||
uart_setup(i, 0);
|
||||
}
|
||||
}
|
||||
|
||||
static void mainboard_enable(struct device *dev)
|
||||
|
|
|
@ -232,6 +232,14 @@ int uart_setup(const size_t bus, int baudrate)
|
|||
ctl.s.csclk_en = 1;
|
||||
write64(&uart->uctl_ctl, ctl.u);
|
||||
|
||||
/**
|
||||
* Exit here if the UART is not going to be used in coreboot.
|
||||
* The previous initialization steps are sufficient to make the Linux
|
||||
* kernel not panic.
|
||||
*/
|
||||
if (!baudrate)
|
||||
return 0;
|
||||
|
||||
/**
|
||||
* 7. Initialize the integer and fractional baud rate divider registers
|
||||
* UARTIBRD and UARTFBRD as follows:
|
||||
|
|
Loading…
Reference in New Issue