coreboot
coreboot is an Open Source project aimed at replacing the proprietary BIOS found in most computers.
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
/*
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
9
* ramstage.
10
*/
11
static
const
struct
soc_amd_gpio
gpio_set_stage_ram
[] = {
12
/* PWR_BTN_L */
13
PAD_NF
(
GPIO_0
, PWR_BTN_L,
PULL_NONE
),
14
/* SYS_RESET_L */
15
PAD_NF
(
GPIO_1
, SYS_RESET_L,
PULL_NONE
),
16
/* WAKE_L */
17
PAD_NF_SCI
(
GPIO_2
, WAKE_L,
PULL_NONE
, EDGE_LOW),
18
/* INT_CLKREQ */
19
PAD_GPI
(
GPIO_3
,
PULL_UP
),
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
),
24
/* TPNL_INT_L */
25
PAD_SCI
(
GPIO_6
,
PULL_UP
, EDGE_LOW),
26
/* EC SCI */
27
PAD_SCI
(
GPIO_7
,
PULL_UP
, EDGE_LOW),
28
/* TPAD_INT_L */
29
PAD_SCI
(
GPIO_8
,
PULL_UP
, EDGE_LOW),
30
/* FP_IRQ_INT */
31
PAD_SCI
(
GPIO_9
,
PULL_UP
, EDGE_LOW),
32
/* Unused */
33
PAD_NC
(
GPIO_10
),
34
/* HP_MIC_DET_L */
35
PAD_GPI
(
GPIO_11
,
PULL_UP
),
36
/* ALIGN_FLAG_MU_L */
37
PAD_GPO
(
GPIO_12
, HIGH),
38
/* GPIO_13 - GPIO_15: Not available */
39
/* USB_OC0_L */
40
PAD_NF
(
GPIO_16
, USB_OC0_L,
PULL_NONE
),
41
/* WAKE_ON_WAN_L */
42
PAD_SCI
(
GPIO_17
,
PULL_UP
, EDGE_LOW),
43
/* PCIE_WLAN_WAKE_L */
44
PAD_SCI
(
GPIO_18
,
PULL_UP
, EDGE_LOW),
45
/* I2C3_SCL */
46
PAD_NF
(
GPIO_19
, I2C3_SCL,
PULL_NONE
),
47
/* I2C3_SDA */
48
PAD_NF
(
GPIO_20
, I2C3_SDA,
PULL_NONE
),
49
/* KBRST_L */
50
PAD_NF
(
GPIO_21
, KBRST_L,
PULL_NONE
),
51
/* ESPI_ALERT_L */
52
PAD_NF
(
GPIO_22
, ESPI_ALERT_D1,
PULL_NONE
),
53
/* AC_PRES */
54
PAD_NF
(
GPIO_23
, AC_PRES,
PULL_NONE
),
55
/* PCIE_LOM_WAKE_L */
56
PAD_SCI
(
GPIO_24
,
PULL_UP
, EDGE_LOW),
57
/* GPIO_25: Not available */
58
/* PCIE_RST0_L */
59
PAD_NFO
(
GPIO_26
, PCIE_RST0_L, HIGH),
60
/* PCIE_RST1_L */
61
PAD_NFO
(
GPIO_27
, PCIE_RST1_L, HIGH),
62
/* GPIO_28: Not available */
63
/* TPM CS */
64
PAD_NF
(
GPIO_29
, SPI_TPM_CS_L,
PULL_NONE
),
65
/* ESPI_CS_L */
66
PAD_NF
(
GPIO_30
, ESPI_CS_L,
PULL_NONE
),
67
/* GPIO_31: Not available */
68
/* LPC_RST_L */
69
PAD_NF
(
GPIO_32
, LPC_RST_L,
PULL_NONE
),
70
/* GPIO_33 - GPIO_39: Not available */
71
/* USB2_HDR_P0/1_SMI */
72
PAD_SCI
(
GPIO_40
,
PULL_UP
, EDGE_LOW),
73
/* GPIO_41: Not available */
74
/* SSD_AUX_RESET_L */
75
PAD_GPO
(
GPIO_42
, HIGH),
76
/* GPIO_43 - GPIO_66: Not available */
77
/* SPI_ROM_REQ */
78
PAD_NF
(
GPIO_67
, SPI_ROM_REQ,
PULL_NONE
),
79
/* ESPI_DATA2 */
80
PAD_NF
(
GPIO_68
, SPI1_DAT2,
PULL_NONE
),
81
/* ESPI_DATA3 */
82
PAD_NF
(
GPIO_69
, SPI1_DAT3,
PULL_NONE
),
83
/* GPIO_70 - GPIO_73: Not available */
84
/* SPI1_CS1_L */
85
PAD_NF
(
GPIO_74
, SPI1_CS1_L,
PULL_NONE
),
86
/* GPIO_75: Not available */
87
/* SPI_ROM_GNT */
88
PAD_NF
(
GPIO_76
, SPI_ROM_GNT,
PULL_NONE
),
89
/* ESPI_SOC_CLK */
90
PAD_NF
(
GPIO_77
, SPI1_CLK,
PULL_NONE
),
91
/* SPI1_CS1_L */
92
PAD_NF
(
GPIO_78
, SPI1_CS2_L,
PULL_NONE
),
93
/* GPIO_79: Not available */
94
/* ESPI_DATA1 */
95
PAD_NF
(
GPIO_80
, SPI1_DAT1,
PULL_NONE
),
96
/* ESPI_DATA0 */
97
PAD_NF
(
GPIO_81
, SPI1_DAT0,
PULL_NONE
),
98
/* GPIO_82 - GPIO_83: Not available */
99
/* FANIN0 */
100
PAD_NF
(
GPIO_84
, FANIN0,
PULL_NONE
),
101
/* FANOUT0 */
102
PAD_NF
(
GPIO_85
, FANOUT0,
PULL_NONE
),
103
/* GPIO_86 - GPIO_88: Not available */
104
/* I2S CODEC INT */
105
PAD_SCI
(
GPIO_89
,
PULL_UP
, EDGE_LOW),
106
/* ALERT_L_M2_SSD0 */
107
PAD_SCI
(
GPIO_90
,
PULL_UP
, EDGE_LOW),
108
/* PC beep to codec */
109
PAD_NF
(
GPIO_91
, SPKR,
PULL_NONE
),
110
/* CLK_REQ0_L */
111
PAD_NF
(
GPIO_92
, CLK_REQ0_L,
PULL_NONE
),
112
/* GPIO_93 - GPIO_112: Not available */
113
/* I2C2_SCL */
114
PAD_NF
(
GPIO_113
, I2C2_SCL,
PULL_NONE
),
115
/* I2C2_SDA */
116
PAD_NF
(
GPIO_114
, I2C2_SDA,
PULL_NONE
),
117
/* CLK_REQ1_L */
118
PAD_NF
(
GPIO_115
, CLK_REQ1_L,
PULL_NONE
),
119
/* CLK_REQ2_L */
120
PAD_NF
(
GPIO_116
, CLK_REQ2_L,
PULL_NONE
),
121
/* GPIO_117 - GPIO_129: Not available */
122
/* TPM IRQ */
123
PAD_SCI
(
GPIO_130
,
PULL_UP
, EDGE_LOW),
124
/* CLK_REQ3_L */
125
PAD_NF
(
GPIO_131
, CLK_REQ3_L,
PULL_NONE
),
126
/* GPIO_132 - GPIO_135: Not available */
127
/* UART2_RXD */
128
PAD_NF
(
GPIO_136
, UART2_RXD,
PULL_NONE
),
129
/* GPIO_137: Not available */
130
/* UART2_TXD */
131
PAD_NF
(
GPIO_138
, UART2_TXD,
PULL_NONE
),
132
/* ALERT_L_M2_WWAN */
133
PAD_SCI
(
GPIO_139
,
PULL_UP
, EDGE_LOW),
134
/* UART0_CTS_L */
135
PAD_NF
(
GPIO_140
, UART0_CTS_L,
PULL_NONE
),
136
/* UART0_RXD */
137
PAD_NF
(
GPIO_141
, UART0_RXD,
PULL_NONE
),
138
/* UART0_RTS_L */
139
PAD_NF
(
GPIO_142
, UART0_RTS_L,
PULL_NONE
),
140
/* UART0_TXD */
141
PAD_NF
(
GPIO_143
, UART0_TXD,
PULL_NONE
),
142
/* CAM_FW_UPDATE_WP_L */
143
PAD_GPO
(
GPIO_144
, LOW),
144
/* I2C0 SCL */
145
PAD_NF
(
GPIO_145
, I2C0_SCL,
PULL_NONE
),
146
/* I2C0 SDA */
147
PAD_NF
(
GPIO_146
, I2C0_SDA,
PULL_NONE
),
148
/* I2C1 SCL */
149
PAD_NF
(
GPIO_147
, I2C1_SCL,
PULL_NONE
),
150
/* I2C1 SDA */
151
PAD_NF
(
GPIO_148
, I2C1_SDA,
PULL_NONE
),
152
};
153
154
void
mainboard_program_gpios
(
void
)
155
{
156
gpio_configure_pads
(
gpio_set_stage_ram
,
ARRAY_SIZE
(
gpio_set_stage_ram
));
157
}
GPIO_10
#define GPIO_10
Definition:
gpio_ftns.h:12
GPIO_18
#define GPIO_18
Definition:
gpio_ftns.h:17
GPIO_17
#define GPIO_17
Definition:
gpio_ftns.h:16
GPIO_16
#define GPIO_16
Definition:
gpio_ftns.h:15
GPIO_11
#define GPIO_11
Definition:
gpio_ftns.h:13
GPIO_22
#define GPIO_22
Definition:
gpio_ftns.h:14
GPIO_32
#define GPIO_32
Definition:
gpio_ftns.h:15
GPIO_68
#define GPIO_68
Definition:
gpio_ftns.h:26
ARRAY_SIZE
#define ARRAY_SIZE(a)
Definition:
helpers.h:12
PULL_UP
#define PULL_UP
Definition:
buildOpts.c:70
PULL_NONE
#define PULL_NONE
Definition:
buildOpts.c:72
mainboard_program_gpios
void mainboard_program_gpios(void)
Definition:
gpio.c:24
gpio_set_stage_ram
static const struct soc_amd_gpio gpio_set_stage_ram[]
Definition:
gpio.c:11
GPIO_91
#define GPIO_91
Definition:
gpio.h:67
GPIO_30
#define GPIO_30
Definition:
gpio.h:46
GPIO_76
#define GPIO_76
Definition:
gpio.h:59
GPIO_27
#define GPIO_27
Definition:
gpio.h:44
GPIO_0
#define GPIO_0
Definition:
gpio.h:21
GPIO_7
#define GPIO_7
Definition:
gpio.h:28
GPIO_90
#define GPIO_90
Definition:
gpio.h:66
GPIO_143
#define GPIO_143
Definition:
gpio.h:90
GPIO_89
#define GPIO_89
Definition:
gpio.h:65
GPIO_69
#define GPIO_69
Definition:
gpio.h:55
GPIO_12
#define GPIO_12
Definition:
gpio.h:33
GPIO_1
#define GPIO_1
Definition:
gpio.h:22
GPIO_5
#define GPIO_5
Definition:
gpio.h:26
GPIO_113
#define GPIO_113
Definition:
gpio.h:75
GPIO_130
#define GPIO_130
Definition:
gpio.h:84
GPIO_84
#define GPIO_84
Definition:
gpio.h:60
GPIO_8
#define GPIO_8
Definition:
gpio.h:29
GPIO_141
#define GPIO_141
Definition:
gpio.h:88
GPIO_67
#define GPIO_67
Definition:
gpio.h:53
GPIO_24
#define GPIO_24
Definition:
gpio.h:42
GPIO_147
#define GPIO_147
Definition:
gpio.h:94
GPIO_4
#define GPIO_4
Definition:
gpio.h:25
GPIO_148
#define GPIO_148
Definition:
gpio.h:95
GPIO_140
#define GPIO_140
Definition:
gpio.h:87
GPIO_20
#define GPIO_20
Definition:
gpio.h:38
GPIO_92
#define GPIO_92
Definition:
gpio.h:68
GPIO_19
#define GPIO_19
Definition:
gpio.h:37
GPIO_116
#define GPIO_116
Definition:
gpio.h:78
GPIO_115
#define GPIO_115
Definition:
gpio.h:77
GPIO_9
#define GPIO_9
Definition:
gpio.h:30
GPIO_26
#define GPIO_26
Definition:
gpio.h:43
GPIO_131
#define GPIO_131
Definition:
gpio.h:85
GPIO_29
#define GPIO_29
Definition:
gpio.h:45
GPIO_145
#define GPIO_145
Definition:
gpio.h:92
GPIO_3
#define GPIO_3
Definition:
gpio.h:24
GPIO_142
#define GPIO_142
Definition:
gpio.h:89
GPIO_144
#define GPIO_144
Definition:
gpio.h:91
GPIO_146
#define GPIO_146
Definition:
gpio.h:93
GPIO_85
#define GPIO_85
Definition:
gpio.h:61
GPIO_2
#define GPIO_2
Definition:
gpio.h:23
GPIO_21
#define GPIO_21
Definition:
gpio.h:39
GPIO_40
#define GPIO_40
Definition:
gpio.h:49
GPIO_42
#define GPIO_42
Definition:
gpio.h:50
GPIO_114
#define GPIO_114
Definition:
gpio.h:76
GPIO_23
#define GPIO_23
Definition:
gpio.h:41
GPIO_74
#define GPIO_74
Definition:
gpio.h:57
GPIO_6
#define GPIO_6
Definition:
gpio.h:27
gpio_configure_pads
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
PAD_NFO
#define PAD_NFO(pin, func, direction)
Definition:
gpio_defs.h:212
PAD_SCI
#define PAD_SCI(pin, pull, trigger)
Definition:
gpio_defs.h:229
PAD_NC
#define PAD_NC(pin)
Definition:
gpio_defs.h:263
PAD_NF_SCI
#define PAD_NF_SCI(pin, func, pull, trigger)
Definition:
gpio_defs.h:241
PAD_GPO
#define PAD_GPO(pin, direction)
Definition:
gpio_defs.h:220
PAD_NF
#define PAD_NF(pin, func, pull)
Definition:
gpio_defs.h:208
PAD_GPI
#define PAD_GPI(pin, pull)
Definition:
gpio_defs.h:216
GPIO_139
#define GPIO_139
Definition:
gpio.h:94
GPIO_136
#define GPIO_136
Definition:
gpio.h:91
GPIO_138
#define GPIO_138
Definition:
gpio.h:93
GPIO_81
#define GPIO_81
Definition:
gpio.h:68
GPIO_77
#define GPIO_77
Definition:
gpio.h:64
GPIO_80
#define GPIO_80
Definition:
gpio.h:67
GPIO_78
#define GPIO_78
Definition:
gpio.h:65
gpio.h
soc_amd_gpio
Definition:
gpio.h:11
src
mainboard
amd
chausie
gpio.c
Generated by
1.9.1