1 /* SPDX-License-Identifier: GPL-2.0-only */
7 * As a rule of thumb, GPIO pins used by coreboot should be initialized at
8 * bootblock while GPIO pins used only by the OS should be initialized at
11 static const struct soc_amd_gpio gpio_set_stage_ram
[] = {
13 PAD_NF(GPIO_0
, PWR_BTN_L
, PULL_NONE
),
15 PAD_NF(GPIO_1
, SYS_RESET_L
, PULL_NONE
),
17 PAD_NF_SCI(GPIO_2
, WAKE_L
, PULL_NONE
, EDGE_LOW
),
19 PAD_SCI(GPIO_3
, PULL_NONE
, EDGE_LOW
),
20 /* UART_WAKE_L_M2_APU */
21 PAD_SCI(GPIO_4
, PULL_UP
, EDGE_LOW
),
22 /* MPM_EVENT_L, input or OD output */
23 PAD_GPI(GPIO_5
, PULL_UP
),
25 PAD_SCI(GPIO_6
, PULL_UP
, EDGE_LOW
),
27 PAD_SCI(GPIO_7
, PULL_UP
, EDGE_LOW
),
29 PAD_SCI(GPIO_8
, PULL_UP
, EDGE_LOW
),
31 PAD_GPI(GPIO_9
, PULL_UP
), /* Unclear if this needs to be SCI */
32 /* GPIO_10: VDD_MEM_VID0 - Controlled by firmware outside of coreboot (ABL) */
34 PAD_GPI(GPIO_11
, PULL_UP
),
36 PAD_GPO(GPIO_12
, HIGH
),
37 /* GPIO_13 - GPIO_15: Not available */
39 PAD_NF(GPIO_16
, USB_OC0_L
, PULL_NONE
),
41 PAD_SCI(GPIO_17
, PULL_UP
, EDGE_LOW
),
42 /* PCIE_WLAN_WAKE_L */
43 PAD_SCI(GPIO_18
, PULL_UP
, EDGE_LOW
),
45 PAD_NF(GPIO_19
, I2C3_SCL
, PULL_NONE
),
47 PAD_NF(GPIO_20
, I2C3_SDA
, PULL_NONE
),
49 PAD_NF(GPIO_21
, KBRST_L
, PULL_NONE
),
51 PAD_NF(GPIO_22
, ESPI_ALERT_D1
, PULL_NONE
),
53 PAD_NF(GPIO_23
, AC_PRES
, PULL_NONE
),
55 PAD_SCI(GPIO_24
, PULL_UP
, EDGE_LOW
),
56 /* GPIO_25: Not available */
58 PAD_NFO(GPIO_26
, PCIE_RST0_L
, HIGH
),
60 PAD_NFO(GPIO_27
, PCIE_RST1_L
, HIGH
),
61 /* GPIO_28: Not available */
63 PAD_NF(GPIO_29
, SPI_TPM_CS_L
, PULL_NONE
),
65 PAD_NF(GPIO_30
, ESPI_CS_L
, PULL_NONE
),
67 PAD_INT(GPIO_31
, PULL_NONE
, EDGE_LOW
, STATUS_DELIVERY
),
69 PAD_NF(GPIO_32
, LPC_RST_L
, PULL_NONE
),
70 /* GPIO_33 - GPIO_37: Not available */
72 PAD_NF(GPIO_38
, CLK_REQ5_L
, PULL_NONE
),
74 PAD_NF(GPIO_39
, CLK_REQ6_L
, PULL_NONE
),
75 /* USB2_HDR_P0/1_SMI */
76 PAD_SCI(GPIO_40
, PULL_UP
, EDGE_LOW
),
77 /* GPIO_41: Not available */
78 /* GPIO_42: VDD_MEM_VID1 - Controlled by firmware outside of coreboot (ABL) */
79 /* GPIO_43 - GPIO_66: Not available */
81 PAD_NF(GPIO_67
, SPI_ROM_REQ
, PULL_NONE
),
83 PAD_NF(GPIO_68
, SPI1_DAT2
, PULL_NONE
),
85 PAD_NF(GPIO_69
, SPI1_DAT3
, PULL_NONE
),
87 PAD_NF(GPIO_70
, SPI2_CLK
, PULL_NONE
),
88 /* GPIO_71 - GPIO_73: Not available */
89 /* APU_NFC_DWL_REQ_1V8 */
90 PAD_GPO(GPIO_74
, LOW
),
92 PAD_NF(GPIO_75
, SPI2_CS1_L
, PULL_NONE
),
94 PAD_NF(GPIO_76
, SPI_ROM_GNT
, PULL_NONE
),
96 PAD_NF(GPIO_77
, SPI1_CLK
, PULL_NONE
),
98 PAD_GPO(GPIO_78
, HIGH
),
100 PAD_GPO(GPIO_79
, HIGH
),
102 PAD_NF(GPIO_80
, SPI1_DAT1
, PULL_NONE
),
104 PAD_NF(GPIO_81
, SPI1_DAT0
, PULL_NONE
),
105 /* GPIO_82 - GPIO_83: Not available */
107 PAD_NF(GPIO_84
, FANIN0
, PULL_NONE
),
109 PAD_NF(GPIO_85
, FANOUT0
, PULL_NONE
),
110 /* GPIO_86 - GPIO_88: Not available */
112 PAD_SCI(GPIO_89
, PULL_UP
, EDGE_LOW
),
113 /* ALERT_L_M2_SSD0 */
114 PAD_SCI(GPIO_90
, PULL_UP
, EDGE_LOW
),
116 PAD_SCI(GPIO_91
, PULL_UP
, EDGE_LOW
),
118 PAD_NF(GPIO_92
, CLK_REQ0_L
, PULL_NONE
),
119 /* GPIO_93 - GPIO_103: Not available */
121 PAD_NF(GPIO_104
, SPI2_DAT0
, PULL_NONE
),
123 PAD_NF(GPIO_105
, SPI2_DAT1
, PULL_NONE
),
125 PAD_NF(GPIO_106
, SPI2_DAT2
, PULL_NONE
),
127 PAD_NF(GPIO_107
, SPI2_DAT3
, PULL_NONE
),
128 /* GPIO_108 - GPIO_112: Not available */
130 PAD_NF(GPIO_113
, I2C2_SCL
, PULL_NONE
),
132 PAD_NF(GPIO_114
, I2C2_SDA
, PULL_NONE
),
134 PAD_NF(GPIO_115
, CLK_REQ1_L
, PULL_NONE
),
136 PAD_NF(GPIO_116
, CLK_REQ2_L
, PULL_NONE
),
137 /* GPIO_117 - GPIO_129: Not available */
139 PAD_INT(GPIO_130
, PULL_NONE
, EDGE_LOW
, STATUS_DELIVERY
),
141 PAD_NF(GPIO_131
, CLK_REQ3_L
, PULL_NONE
),
143 PAD_NF(GPIO_132
, CLK_REQ4_L
, PULL_NONE
),
144 /* GPIO_133 - GPIO_134: Not available */
146 PAD_NF(GPIO_135
, UART2_CTS_L
, PULL_NONE
),
148 PAD_NF(GPIO_136
, UART2_RXD
, PULL_NONE
),
150 PAD_NF(GPIO_137
, UART2_RTS_L
, PULL_NONE
),
152 PAD_NF(GPIO_138
, UART2_TXD
, PULL_NONE
),
154 PAD_GPO(GPIO_139
, HIGH
),
156 PAD_NF(GPIO_140
, UART0_CTS_L
, PULL_NONE
),
158 PAD_NF(GPIO_141
, UART0_RXD
, PULL_NONE
),
160 PAD_NF(GPIO_142
, UART0_RTS_L
, PULL_NONE
),
162 PAD_NF(GPIO_143
, UART0_TXD
, PULL_NONE
),
164 PAD_GPO(GPIO_144
, HIGH
),
166 PAD_NF(GPIO_145
, I2C0_SCL
, PULL_NONE
),
168 PAD_NF(GPIO_146
, I2C0_SDA
, PULL_NONE
),
170 PAD_NF(GPIO_147
, I2C1_SCL
, PULL_NONE
),
172 PAD_NF(GPIO_148
, I2C1_SDA
, PULL_NONE
),
173 /* GPIO_149 - GPIO_152: Not available */
175 PAD_NF(GPIO_153
, UART4_CTS_L
, PULL_NONE
),
177 PAD_NF(GPIO_154
, UART4_RTS_L
, PULL_NONE
),
179 PAD_NF(GPIO_155
, UART4_RXD
, PULL_NONE
),
181 PAD_NF(GPIO_156
, UART4_TXD
, PULL_NONE
),
183 PAD_GPO(GPIO_157
, HIGH
),
186 void mainboard_program_gpios(void)
188 gpio_configure_pads(gpio_set_stage_ram
, ARRAY_SIZE(gpio_set_stage_ram
));