coreboot
coreboot is an Open Source project aimed at replacing the proprietary BIOS found in most computers.
verstage.c
Go to the documentation of this file.
1 /* SPDX-License-Identifier: GPL-2.0-or-later */
2 
3 #include <amdblocks/acpimmio.h>
4 #include <amdblocks/gpio.h>
5 #include <arch/io.h>
6 #include <baseboard/variants.h>
7 #include <psp_verstage.h>
9 #include <soc/southbridge.h>
10 
12 {
13  const struct soc_amd_gpio *gpios, *override_gpios;
14  size_t num_gpios, override_num_gpios;
15 
16  gpios = variant_early_gpio_table(&num_gpios);
17  override_gpios = variant_early_override_gpio_table(&override_num_gpios);
18  gpio_configure_pads_with_override(gpios, num_gpios, override_gpios, override_num_gpios);
19 }
20 
22 {
23  const struct soc_amd_gpio *gpios;
24  size_t num_gpios;
25  uint32_t dword;
26 
27  gpios = variant_espi_gpio_table(&num_gpios);
28  gpio_configure_pads(gpios, num_gpios);
29 
30  /*
31  * TODO : Make common function in cezanne code and just call it
32  * when PCI access is fixed in the PSP (b/186602472).
33  * For now the PSP doesn't configure LPC so it should be fine.
34  */
36  dword |= PM_ESPI_CS_USE_DATA2;
38 
39  dword = pm_io_read32(PM_ACPI_CONF);
42 }
43 
45 {
46  const struct soc_amd_gpio *gpios;
47  size_t num_gpios;
48 
49  gpios = variant_tpm_gpio_table(&num_gpios);
50  gpio_configure_pads(gpios, num_gpios);
51 }
#define PM_ACPI_CONF
Definition: southbridge.h:43
#define PM_ACPI_S5_LPC_PIN_MODE
Definition: southbridge.h:54
#define PM_ESPI_CS_USE_DATA2
Definition: southbridge.h:76
#define PM_SPI_PAD_PU_PD
Definition: southbridge.h:75
#define PM_ACPI_S5_LPC_PIN_MODE_SEL
Definition: southbridge.h:53
const struct pad_config * variant_early_gpio_table(size_t *num)
Definition: gpio.c:204
const __weak struct soc_amd_gpio * variant_espi_gpio_table(size_t *size)
Definition: gpio.c:348
const struct soc_amd_gpio *__weak variant_early_override_gpio_table(size_t *size)
Definition: gpio.c:317
const __weak struct soc_amd_gpio * variant_tpm_gpio_table(size_t *size)
Definition: gpio.c:354
void verstage_mainboard_tpm_init(void)
Definition: verstage.c:44
void verstage_mainboard_early_init(void)
Definition: verstage.c:11
void verstage_mainboard_espi_init(void)
Definition: verstage.c:21
uint32_t pm_io_read32(uint8_t reg)
Definition: mmio_util.c:114
void pm_io_write32(uint8_t reg, uint32_t value)
Definition: mmio_util.c:132
void gpio_configure_pads(const struct soc_amd_gpio *gpio_list_ptr, size_t size)
program a particular set of GPIO
Definition: gpio.c:307
void gpio_configure_pads_with_override(const struct soc_amd_gpio *base_cfg, size_t base_num_pads, const struct soc_amd_gpio *override_cfg, size_t override_num_pads)
Definition: gpio.c:262
unsigned int uint32_t
Definition: stdint.h:14