soc/amd/stoneyridge: initialize GPIOs for serial console

Initialize the two GPIOs of the SoC UART if it's used for serial console
to be sure that the I/O mux is configured correctly without having to
rely on the bootblock_mainboard_early_init call to do this. This brings
Stoneyridge more in line with the other AMD SoCs. Since this code will
be factored out to the common AMD SoC code in a follow-up patch, the
function prototype is added to southbridge.h instead of creating a new
uart.h header file.

Signed-off-by: Felix Held <felix-coreboot@felixheld.de>
Change-Id: Id4aa6734e63dad204d22ce962b983cde6e3abd62
Reviewed-on: https://review.coreboot.org/c/coreboot/+/68533
Tested-by: build bot (Jenkins) <no-reply@coreboot.org>
Reviewed-by: Fred Reitberger <reitbergerfred@gmail.com>
This commit is contained in:
Felix Held 2022-10-18 19:48:41 +02:00
parent c6e4cc8873
commit f1a03b1d6d
3 changed files with 14 additions and 0 deletions

View File

@ -127,6 +127,9 @@ void bootblock_fch_early_init(void)
fch_enable_legacy_io(); fch_enable_legacy_io();
enable_aoac_devices(); enable_aoac_devices();
if (CONFIG(AMD_SOC_CONSOLE_UART))
set_uart_config(CONFIG_UART_FOR_CONSOLE);
/* disable the keyboard reset function before mainboard GPIO setup */ /* disable the keyboard reset function before mainboard GPIO setup */
if (CONFIG(DISABLE_KEYBOARD_RESET_PIN)) if (CONFIG(DISABLE_KEYBOARD_RESET_PIN))
fch_disable_kb_rst(); fch_disable_kb_rst();

View File

@ -184,6 +184,8 @@ void fch_final(void *chip_info);
void enable_aoac_devices(void); void enable_aoac_devices(void);
void fch_clk_output_48Mhz(u32 osc); void fch_clk_output_48Mhz(u32 osc);
void set_uart_config(unsigned int idx);
/* /*
* Call the mainboard to get the USB Over Current Map. The mainboard * Call the mainboard to get the USB Over Current Map. The mainboard
* returns the map and 0 on Success or -1 on error or no map. There is * returns the map and 0 on Success or -1 on error or no map. There is

View File

@ -6,6 +6,7 @@
#include <soc/aoac_defs.h> #include <soc/aoac_defs.h>
#include <soc/gpio.h> #include <soc/gpio.h>
#include <soc/iomap.h> #include <soc/iomap.h>
#include <soc/southbridge.h>
#include <types.h> #include <types.h>
static const struct soc_uart_ctrlr_info uart_info[] = { static const struct soc_uart_ctrlr_info uart_info[] = {
@ -26,3 +27,11 @@ uintptr_t get_uart_base(unsigned int idx)
return uart_info[idx].base; return uart_info[idx].base;
} }
void set_uart_config(unsigned int idx)
{
if (idx >= ARRAY_SIZE(uart_info))
return;
gpio_configure_pads(uart_info[idx].mux, 2);
}