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 
5 /* NCORE GPIOs */
6 static const struct soc_gpio_map gpncore_gpio_map[] = {
7  GPIO_INPUT, /* GPIO_S0_NC[00] */
8  GPIO_INPUT, /* GPIO_S0_NC[01] */
9  GPIO_INPUT, /* GPIO_S0_NC[02] */
10  GPIO_INPUT, /* GPIO_S0_NC[03] */
11  GPIO_INPUT, /* GPIO_S0_NC[04] */
12  GPIO_INPUT, /* GPIO_S0_NC[05] */
13  GPIO_INPUT, /* GPIO_S0_NC[06] */
14  GPIO_INPUT, /* GPIO_S0_NC[07] */
15  GPIO_INPUT, /* GPIO_S0_NC[08] */
16  GPIO_INPUT, /* GPIO_S0_NC[09] */
17  GPIO_INPUT, /* GPIO_S0_NC[10] */
18  GPIO_INPUT, /* GPIO_S0_NC[11] */
19  GPIO_INPUT, /* GPIO_S0_NC[12] */
20  GPIO_INPUT, /* GPIO_S0_NC[13] */
21  GPIO_INPUT, /* GPIO_S0_NC[14] */
22  GPIO_INPUT, /* GPIO_S0_NC[15] */
23  GPIO_INPUT, /* GPIO_S0_NC[16] */
24  GPIO_INPUT, /* GPIO_S0_NC[17] */
25  GPIO_INPUT, /* GPIO_S0_NC[18] */
26  GPIO_INPUT, /* GPIO_S0_NC[19] */
27  GPIO_INPUT, /* GPIO_S0_NC[20] */
28  GPIO_INPUT, /* GPIO_S0_NC[21] */
29  GPIO_INPUT, /* GPIO_S0_NC[22] */
30  GPIO_INPUT, /* GPIO_S0_NC[23] */
31  GPIO_INPUT, /* GPIO_S0_NC[24] */
32  GPIO_INPUT, /* GPIO_S0_NC[25] */
33  GPIO_INPUT, /* GPIO_S0_NC[26] */
34  GPIO_END
35 };
36 
37 /* SCORE GPIOs */
38 static const struct soc_gpio_map gpscore_gpio_map[] = {
39  GPIO_INPUT, /* GPIO_S0_SC[000] */
40  GPIO_INPUT, /* GPIO_S0_SC[001] */
41  GPIO_FUNC1, /* SATA_LED# */
42  GPIO_FUNC1, /* PCIE_CLKREQ[0]# */
43  GPIO_FUNC1, /* PCIE_CLKREQ[1]# */
44  GPIO_FUNC1, /* PCIE_CLKREQ[2]# */
45  GPIO_FUNC1, /* PCIE_CLKREQ[3]# */
46  GPIO_INPUT, /* GPIO_S0_SC[007] */
47  GPIO_INPUT, /* GPIO_S0_SC[008] */
48  GPIO_INPUT, /* GPIO_S0_SC[009] */
49  GPIO_INPUT, /* GPIO_S0_SC[010] */
50  GPIO_INPUT, /* GPIO_S0_SC[011] */
51  GPIO_INPUT, /* GPIO_S0_SC[012] */
52  GPIO_INPUT, /* GPIO_S0_SC[013] */
53  GPIO_INPUT, /* GPIO_S0_SC[014] */
54  GPIO_INPUT, /* GPIO_S0_SC[015] */
55  GPIO_INPUT, /* GPIO_S0_SC[016] */
56  GPIO_INPUT, /* GPIO_S0_SC[017] */
57  GPIO_INPUT, /* GPIO_S0_SC[018] */
58  GPIO_INPUT, /* GPIO_S0_SC[019] */
59  GPIO_INPUT, /* GPIO_S0_SC[020] */
60  GPIO_INPUT, /* GPIO_S0_SC[021] */
61  GPIO_INPUT, /* GPIO_S0_SC[022] */
62  GPIO_INPUT, /* GPIO_S0_SC[023] */
63  GPIO_INPUT, /* GPIO_S0_SC[024] */
64  GPIO_INPUT, /* GPIO_S0_SC[025] */
65  GPIO_INPUT, /* GPIO_S0_SC[026] */
66  GPIO_INPUT, /* GPIO_S0_SC[027] */
67  GPIO_INPUT, /* GPIO_S0_SC[028] */
68  GPIO_INPUT, /* GPIO_S0_SC[029] */
69  GPIO_INPUT, /* GPIO_S0_SC[030] */
70  GPIO_INPUT, /* GPIO_S0_SC[031] */
71  GPIO_INPUT, /* GPIO_S0_SC[032] */
72  GPIO_INPUT, /* GPIO_S0_SC[033] */
73  GPIO_INPUT, /* GPIO_S0_SC[034] */
74  GPIO_INPUT, /* GPIO_S0_SC[035] */
75  GPIO_INPUT, /* GPIO_S0_SC[036] */
76  GPIO_INPUT, /* GPIO_S0_SC[037] */
77  GPIO_INPUT, /* GPIO_S0_SC[038] */
78  GPIO_INPUT, /* GPIO_S0_SC[039] */
79  GPIO_INPUT, /* GPIO_S0_SC[040] */
80  GPIO_INPUT, /* GPIO_S0_SC[041] */
81  GPIO_FUNC1, /* ILB_LPC_AD[0] */
82  GPIO_FUNC1, /* ILB_LPC_AD[1] */
83  GPIO_FUNC1, /* ILB_LPC_AD[2] */
84  GPIO_FUNC1, /* ILB_LPC_AD[3] */
85  GPIO_FUNC1, /* ILB_LPC_FRAME# */
86  GPIO_FUNC1, /* ILB_LPC_CLK[0] */
87  GPIO_FUNC1, /* ILB_LPC_CLK[1] */
88  GPIO_FUNC1, /* ILB_LPC_CLKRUN# */
89  GPIO_FUNC1, /* ILB_LPC_SERIRQ */
90  GPIO_FUNC1, /* PCU_SMB_DATA */
91  GPIO_FUNC1, /* PCU_SMB_CLK */
92  GPIO_FUNC1, /* PCU_SMB_ALERT# */
93  GPIO_FUNC1, /* ILB_8254_SPKR */
94  GPIO_INPUT, /* GPIO_S0_SC[055] */
95  GPIO_INPUT, /* GPIO_S0_SC[056] */
96  GPIO_INPUT, /* GPIO_S0_SC[057] */
97  GPIO_INPUT, /* GPIO_S0_SC[058] */
98  GPIO_INPUT, /* GPIO_S0_SC[059] */
99  GPIO_INPUT, /* GPIO_S0_SC[060] */
100  GPIO_INPUT, /* GPIO_S0_SC[061] */
101  GPIO_INPUT, /* GPIO_S0_SC[062] */
102  GPIO_INPUT, /* GPIO_S0_SC[063] */
103  GPIO_INPUT, /* GPIO_S0_SC[064] */
104  GPIO_INPUT, /* GPIO_S0_SC[065] */
105  GPIO_INPUT, /* GPIO_S0_SC[066] */
106  GPIO_INPUT, /* GPIO_S0_SC[067] */
107  GPIO_INPUT, /* GPIO_S0_SC[068] */
108  GPIO_INPUT, /* GPIO_S0_SC[069] */
109  GPIO_INPUT, /* GPIO_S0_SC[070] */
110  GPIO_INPUT, /* GPIO_S0_SC[071] */
111  GPIO_INPUT, /* GPIO_S0_SC[072] */
112  GPIO_INPUT, /* GPIO_S0_SC[073] */
113  GPIO_INPUT, /* GPIO_S0_SC[074] */
114  GPIO_INPUT, /* GPIO_S0_SC[075] */
115  GPIO_INPUT, /* GPIO_S0_SC[076] */
116  GPIO_INPUT, /* GPIO_S0_SC[077] */
117  GPIO_INPUT, /* GPIO_S0_SC[078] */
118  GPIO_INPUT, /* GPIO_S0_SC[079] */
119  GPIO_INPUT, /* GPIO_S0_SC[080] */
120  GPIO_INPUT, /* GPIO_S0_SC[081] */
121  GPIO_INPUT, /* GPIO_S0_SC[082] */
122  GPIO_INPUT, /* GPIO_S0_SC[083] */
123  GPIO_INPUT, /* GPIO_S0_SC[084] */
124  GPIO_INPUT, /* GPIO_S0_SC[085] */
125  GPIO_INPUT, /* GPIO_S0_SC[086] */
126  GPIO_INPUT, /* GPIO_S0_SC[087] */
127  GPIO_INPUT, /* GPIO_S0_SC[088] */
128  GPIO_INPUT, /* GPIO_S0_SC[089] */
129  GPIO_INPUT, /* GPIO_S0_SC[090] */
130  GPIO_INPUT, /* GPIO_S0_SC[091] */
131  GPIO_INPUT, /* GPIO_S0_SC[092] */
132  GPIO_INPUT, /* GPIO_S0_SC[093] */
133  GPIO_INPUT, /* GPIO_S0_SC[094] */
134  GPIO_INPUT, /* GPIO_S0_SC[095] */
135  GPIO_INPUT, /* GPIO_S0_SC[096] */
136  GPIO_INPUT, /* GPIO_S0_SC[097] */
137  GPIO_INPUT, /* GPIO_S0_SC[098] */
138  GPIO_INPUT, /* GPIO_S0_SC[099] */
139  GPIO_INPUT, /* GPIO_S0_SC[100] */
140  GPIO_INPUT, /* GPIO_S0_SC[101] */
141  GPIO_END
142 };
143 
144 /* SSUS GPIOs */
145 static const struct soc_gpio_map gpssus_gpio_map[] = {
146  GPIO_INPUT, /* GPIO_S5[00] */
147  GPIO_FUNC6, /* PMC_WAKE_PCIE[1]# */
148  GPIO_FUNC6, /* PMC_WAKE_PCIE[2]# */
149  GPIO_FUNC6, /* PMC_WAKE_PCIE[3]# */
150  GPIO_INPUT, /* GPIO_S5[04] */
151  GPIO_INPUT, /* GPIO_S5[05] */
152  GPIO_INPUT, /* GPIO_S5[06] */
153  GPIO_INPUT, /* GPIO_S5[07] */
154  GPIO_INPUT, /* GPIO_S5[08] */
155  GPIO_INPUT, /* GPIO_S5[09] */
156  GPIO_INPUT, /* GPIO_S5[10] */
157  GPIO_INPUT, /* GPIO_S5[11] */
158  GPIO_INPUT, /* GPIO_S5[12] */
159  GPIO_INPUT, /* GPIO_S5[13] */
160  GPIO_INPUT, /* GPIO_S5[14] */
161  GPIO_FUNC0, /* PMC_WAKE_PCIE[0]# */
162  GPIO_FUNC(0, PULL_UP, 20K), /* PMC_PWRBTN# */
163  GPIO_INPUT, /* GPIO_S5[17] */
164  GPIO_INPUT, /* GPIO_S5[18] */
165  GPIO_INPUT, /* GPIO_S5[19] */
166  GPIO_INPUT, /* GPIO_S5[20] */
167  GPIO_INPUT, /* GPIO_S5[21] */
168  GPIO_INPUT, /* GPIO_S5[22] */
169  GPIO_INPUT, /* GPIO_S5[23] */
170  GPIO_INPUT, /* GPIO_S5[24] */
171  GPIO_INPUT, /* GPIO_S5[25] */
172  GPIO_INPUT, /* GPIO_S5[26] */
173  GPIO_INPUT, /* GPIO_S5[27] */
174  GPIO_INPUT, /* GPIO_S5[28] */
175  GPIO_INPUT, /* GPIO_S5[29] */
176  GPIO_INPUT, /* GPIO_S5[30] */
177  GPIO_INPUT, /* GPIO_S5[31] */
178  GPIO_INPUT, /* GPIO_S5[32] */
179  GPIO_INPUT, /* GPIO_S5[33] */
180  GPIO_INPUT, /* GPIO_S5[34] */
181  GPIO_INPUT, /* GPIO_S5[35] */
182  GPIO_INPUT, /* GPIO_S5[36] */
183  GPIO_INPUT, /* GPIO_S5[37] */
184  GPIO_INPUT, /* GPIO_S5[38] */
185  GPIO_INPUT, /* GPIO_S5[39] */
186  GPIO_INPUT, /* GPIO_S5[40] */
187  GPIO_INPUT, /* GPIO_S5[41] */
188  GPIO_INPUT, /* GPIO_S5[42] */
189  GPIO_INPUT, /* GPIO_S5[43] */
190  GPIO_END
191 };
192 
194 };
195 
197 };
198 
199 static struct soc_gpio_config gpio_config = {
200  .ncore = gpncore_gpio_map,
201  .score = gpscore_gpio_map,
202  .ssus = gpssus_gpio_map,
203  .core_dirq = &core_dedicated_irq,
204  .sus_dirq = &sus_dedicated_irq,
205 };
206 
208 {
209  return &gpio_config;
210 }
#define GPIO_INPUT
Definition: gpio_ftns.h:24
#define PULL_UP
Definition: buildOpts.c:70
static const struct soc_gpio_map gpssus_gpio_map[]
Definition: gpio.c:145
static const u8 sus_dedicated_irq[GPIO_MAX_DIRQS]
Definition: gpio.c:196
struct soc_gpio_config * mainboard_get_gpios(void)
Definition: gpio.c:207
static const struct soc_gpio_map gpncore_gpio_map[]
Definition: gpio.c:6
static const struct soc_gpio_map gpscore_gpio_map[]
Definition: gpio.c:38
static struct soc_gpio_config gpio_config
Definition: gpio.c:199
static const u8 core_dedicated_irq[GPIO_MAX_DIRQS]
Definition: gpio.c:193
#define GPIO_END
Definition: gpio.h:302
#define GPIO_FUNC0
Definition: gpio.h:263
#define GPIO_FUNC(_func, _pudir, _str)
Definition: gpio.h:255
#define GPIO_MAX_DIRQS
Definition: gpio.h:314
#define GPIO_FUNC6
Definition: gpio.h:269
#define GPIO_FUNC1
Definition: gpio.h:264
uint8_t u8
Definition: stdint.h:45