coreboot
coreboot is an Open Source project aimed at replacing the proprietary BIOS found in most computers.
early_gpio.c
Go to the documentation of this file.
1 /* SPDX-License-Identifier: GPL-2.0-only */
2 
3 #include <soc/gpio.h>
4 #include "gpio.h"
5 
6 /* GPIO pins used by coreboot should be initialized in bootblock */
7 
8 static const struct soc_amd_gpio gpio_set_stage_reset[] = {
9  /* TPM CS */
10  PAD_NF(GPIO_29, SPI_TPM_CS_L, PULL_NONE),
11  /* ESPI_CS_L */
12  PAD_NF(GPIO_30, ESPI_CS_L, PULL_NONE),
13  /* ESPI_SOC_CLK */
14  PAD_NF(GPIO_77, SPI1_CLK, PULL_NONE),
15  /* ESPI_DATA0 */
16  PAD_NF(GPIO_81, SPI1_DAT0, PULL_NONE),
17  /* ESPI_DATA1 */
18  PAD_NF(GPIO_80, SPI1_DAT1, PULL_NONE),
19  /* ESPI_DATA2 */
20  PAD_NF(GPIO_68, SPI1_DAT2, PULL_NONE),
21  /* ESPI_DATA3 */
22  PAD_NF(GPIO_69, SPI1_DAT3, PULL_NONE),
23  /* ESPI_ALERT_L */
24  PAD_NF(GPIO_22, ESPI_ALERT_D1, PULL_NONE),
25  /* TPM IRQ */
26  PAD_SCI(GPIO_130, PULL_UP, EDGE_LOW),
27  /* SPI_ROM_REQ */
28  PAD_NF(GPIO_67, SPI_ROM_REQ, PULL_NONE),
29  /* SPI_ROM_GNT */
30  PAD_NF(GPIO_76, SPI_ROM_GNT, PULL_NONE),
31  /* KBRST_L */
32  PAD_NF(GPIO_21, KBRST_L, PULL_NONE),
33 
34  /* Deassert PCIe Reset lines */
35  /* PCIE_RST0_L */
36  PAD_NFO(GPIO_26, PCIE_RST0_L, HIGH),
37  /* PCIE_RST1_L */
38  PAD_NFO(GPIO_27, PCIE_RST1_L, HIGH),
39 
40  /* PC beep to codec */
41  PAD_NF(GPIO_91, SPKR, PULL_NONE),
42  /* Enable UART 2 */
43  /* UART2_RXD */
44  PAD_NF(GPIO_136, UART2_RXD, PULL_NONE),
45  /* UART2_TXD */
46  PAD_NF(GPIO_138, UART2_TXD, PULL_NONE),
47  /* Enable UART 0 */
48  /* UART0_RXD */
49  PAD_NF(GPIO_141, UART0_RXD, PULL_NONE),
50  /* UART0_TXD */
51  PAD_NF(GPIO_143, UART0_TXD, PULL_NONE),
52  /* FANOUT0 */
53  PAD_NF(GPIO_85, FANOUT0, PULL_NONE),
54 
55  /* I2C0 SCL */
56  PAD_NF(GPIO_145, I2C0_SCL, PULL_NONE),
57  /* I2C0 SDA */
58  PAD_NF(GPIO_146, I2C0_SDA, PULL_NONE),
59  /* I2C1 SCL */
60  PAD_NF(GPIO_147, I2C1_SCL, PULL_NONE),
61  /* I2C1 SDA */
62  PAD_NF(GPIO_148, I2C1_SDA, PULL_NONE),
63  /* I2C2_SCL */
64  PAD_NF(GPIO_113, I2C2_SCL, PULL_NONE),
65  /* I2C2_SDA */
66  PAD_NF(GPIO_114, I2C2_SDA, PULL_NONE),
67  /* I2C3_SCL */
68  PAD_NF(GPIO_19, I2C3_SCL, PULL_NONE),
69  /* I2C3_SDA */
70  PAD_NF(GPIO_20, I2C3_SDA, PULL_NONE),
71 };
72 
74 {
76 }
void mainboard_program_early_gpios(void)
Definition: early_gpio.c:32
static const struct soc_amd_gpio gpio_set_stage_reset[]
Definition: early_gpio.c:8
#define GPIO_22
Definition: gpio_ftns.h:14
#define GPIO_68
Definition: gpio_ftns.h:26
#define ARRAY_SIZE(a)
Definition: helpers.h:12
#define PULL_UP
Definition: buildOpts.c:70
#define PULL_NONE
Definition: buildOpts.c:72
#define GPIO_91
Definition: gpio.h:67
#define GPIO_30
Definition: gpio.h:46
#define GPIO_76
Definition: gpio.h:59
#define GPIO_27
Definition: gpio.h:44
#define GPIO_143
Definition: gpio.h:90
#define GPIO_69
Definition: gpio.h:55
#define GPIO_113
Definition: gpio.h:75
#define GPIO_130
Definition: gpio.h:84
#define GPIO_141
Definition: gpio.h:88
#define GPIO_67
Definition: gpio.h:53
#define GPIO_147
Definition: gpio.h:94
#define GPIO_148
Definition: gpio.h:95
#define GPIO_20
Definition: gpio.h:38
#define GPIO_19
Definition: gpio.h:37
#define GPIO_26
Definition: gpio.h:43
#define GPIO_29
Definition: gpio.h:45
#define GPIO_145
Definition: gpio.h:92
#define GPIO_146
Definition: gpio.h:93
#define GPIO_85
Definition: gpio.h:61
#define GPIO_21
Definition: gpio.h:39
#define GPIO_114
Definition: gpio.h:76
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
#define PAD_NFO(pin, func, direction)
Definition: gpio_defs.h:212
#define PAD_SCI(pin, pull, trigger)
Definition: gpio_defs.h:229
#define PAD_NF(pin, func, pull)
Definition: gpio_defs.h:208
#define GPIO_136
Definition: gpio.h:91
#define GPIO_138
Definition: gpio.h:93
#define GPIO_81
Definition: gpio.h:68
#define GPIO_77
Definition: gpio.h:64
#define GPIO_80
Definition: gpio.h:67