coreboot
coreboot is an Open Source project aimed at replacing the proprietary BIOS found in most computers.
gpio.h
Go to the documentation of this file.
1 /* SPDX-License-Identifier: GPL-2.0-only */
2 
3 #ifndef _SOC_GPIO_H_
4 #define _SOC_GPIO_H_
5 
6 #include <stdint.h>
7 #include <soc/gpio_defs.h>
8 #include <soc/iomap.h>
9 
10 #define CROS_GPIO_DEVICE_NAME "Braswell"
11 
12 #define COMMUNITY_SIZE 0x20000
13 
14 #define COMMUNITY_GPSOUTHWEST_BASE \
15 (IO_BASE_ADDRESS + COMMUNITY_OFFSET_GPSOUTHWEST)
16 
17 #define COMMUNITY_GPNORTH_BASE \
18 (IO_BASE_ADDRESS + COMMUNITY_OFFSET_GPNORTH)
19 
20 #define COMMUNITY_GPEAST_BASE \
21 (IO_BASE_ADDRESS + COMMUNITY_OFFSET_GPEAST)
22 
23 #define COMMUNITY_GPSOUTHEAST_BASE \
24 (IO_BASE_ADDRESS + COMMUNITY_OFFSET_GPSOUTHEAST)
25 
26 #define GPIO_COMMUNITY_COUNT 4
27 #define GPIO_FAMILIES_MAX_PER_COMM 7
28 #define GP_SOUTHWEST 0
29 #define GP_NORTH 1
30 #define GP_EAST 2
31 #define GP_SOUTHEAST 3
32 
33 #define COMMUNITY_BASE(community) \
34 (IO_BASE_ADDRESS + community * 0x8000)
35 
36 #define GP_READ_ACCESS_POLICY_BASE(community) \
37 (COMMUNITY_BASE(community) + 0x000)
38 
39 #define GP_WRITE_ACCESS_POLICY_BASE(community) \
40 (COMMUNITY_BASE(community) + 0x100)
41 
42 #define GP_WAKE_STATUS_REG_BASE(community) \
43 (COMMUNITY_BASE(community) + 0x200)
44 
45 #define GP_WAKE_MASK_REG_BASE(community) \
46 (COMMUNITY_BASE(community) + 0x280)
47 
48 #define GP_INT_STATUS_REG_BASE(community) \
49 (COMMUNITY_BASE(community) + 0x300)
50 
51 #define GP_INT_MASK_REG_BASE(community) \
52 (COMMUNITY_BASE(community) + 0x380)
53 
54 #define GP_FAMILY_RCOMP_CTRL(community, family) \
55 (COMMUNITY_BASE(community) + 0x1080 + 0x80 * family)
56 
57 #define GP_FAMILY_RCOMP_OFFSET(community, family) \
58 (COMMUNITY_BASE(community) + 0x1084 + 0x80 * family)
59 
60 #define GP_FAMILY_RCOMP_OVERRIDE(community, family) \
61 (COMMUNITY_BASE(community) + 0x1088 + 0x80 * family)
62 
63 #define GP_FAMILY_RCOMP_VALUE(community, family) \
64 (COMMUNITY_BASE(community) + 0x108C + 0x80 * family)
65 
66 #define GP_FAMILY_CONF_COMP(community, family) \
67 (COMMUNITY_BASE(community) + 0x1090 + 0x80 * family)
68 
69 #define GP_FAMILY_CONF_REG(community, family) \
70 (COMMUNITY_BASE(community) + 0x1094 + 0x80 * family)
71 
72 /* Value written into pad control reg 0 */
73 #define PAD_CONTROL_REG0_TRISTATE (PAD_CONFIG0_DEFAULT|PAD_GPIOFG_HI_Z)
74 
75 /* Calculate the MMIO Address for specific GPIO pin
76  * control register pointed by index.
77  */
78 #define FAMILY_NUMBER(gpio_pad) (gpio_pad / MAX_FAMILY_PAD_GPIO_NO)
79 #define INTERNAL_PAD_NUM(gpio_pad) (gpio_pad % MAX_FAMILY_PAD_GPIO_NO)
80 #define GPIO_OFFSET(gpio_pad) (FAMILY_PAD_REGS_OFF \
81  + (FAMILY_PAD_REGS_SIZE * FAMILY_NUMBER(gpio_pad) \
82  + (GPIO_REGS_SIZE * INTERNAL_PAD_NUM(gpio_pad))))
83 
84 /* Gpio to Pad mapping */
85 #define SDMMC1_CMD_MMIO_OFFSET GPIO_OFFSET(23)
86 #define SDMMC1_D0_MMIO_OFFSET GPIO_OFFSET(17)
87 #define SDMMC1_D1_MMIO_OFFSET GPIO_OFFSET(24)
88 #define SDMMC1_D2_MMIO_OFFSET GPIO_OFFSET(20)
89 #define SDMMC1_D3_MMIO_OFFSET GPIO_OFFSET(26)
90 #define MMC1_D4_SD_WE_MMIO_OFFSET GPIO_OFFSET(67)
91 #define MMC1_D5_MMIO_OFFSET GPIO_OFFSET(65)
92 #define MMC1_D6_MMIO_OFFSET GPIO_OFFSET(63)
93 #define MMC1_D7_MMIO_OFFSET GPIO_OFFSET(68)
94 #define MMC1_RCLK_OFFSET GPIO_OFFSET(69)
95 #define HV_DDI2_DDC_SDA_MMIO_OFFSET GPIO_OFFSET(62)
96 #define HV_DDI2_DDC_SCL_MMIO_OFFSET GPIO_OFFSET(67)
97 #define CFIO_139_MMIO_OFFSET GPIO_OFFSET(64)
98 #define CFIO_140_MMIO_OFFSET GPIO_OFFSET(67)
99 
100 /* GPIO Security registers offset */
101 #define GPIO_READ_ACCESS_POLICY_REG 0x0000
102 #define GPIO_WRITE_ACCESS_POLICY_REG 0x0100
103 #define GPIO_WAKE_STATUS_REG 0x0200
104 #define GPIO_WAKE_MASK_REG0 0x0280
105 #define GPIO_WAKE_MASK_REG1 0x0284
106 #define GPIO_INTERRUPT_STATUS 0x0300
107 #define GPIO_INTERRUPT_MASK 0x0380
108 #define GPE0A_STS_REG 0x20
109 #define GPE0A_EN_REG 0x28
110 #define ALT_GPIO_SMI_REG 0x38
111 #define GPIO_ROUT_REG 0x58
112 
113 /* Pad register offset */
114 #define PAD_CONF0_REG 0x0
115 #define PAD_CONF1_REG 0x4
116 
117 /* Number of GPIOs in each bank */
118 #define GP_SOUTHWEST_COUNT 56
119 #define GP_NORTH_COUNT 59
120 #define GP_EAST_COUNT 24
121 #define GP_SOUTHEAST_COUNT 55
122 
123 #define MAX_GPIO_CNT (GP_SOUTHWEST_COUNT + GP_NORTH_COUNT + GP_EAST_COUNT + GP_SOUTHEAST_COUNT)
124 
125 /* General */
126 #define GPIO_REGS_SIZE 8
127 #define NA 0
128 #define MASK_WAKE 0
129 #define UNMASK_WAKE 1
130 #define GPE_CAPABLE 1
131 #define GPE_CAPABLE_NONE 0
132 
133 #define MAX_FAMILY_PAD_GPIO_NO 15
134 #define FAMILY_PAD_REGS_OFF 0x4400
135 #define FAMILY_PAD_REGS_SIZE 0x400
136 
137 /* config0[31:28] - Interrupt Selection Interrupt Select */
138 #define PAD_INT_SEL(int_s) (int_s << 28)
139 
140 /* config0[27:26] - Glitch Filter Config */
141 #define PAD_GFCFG(glitch_cfg) (glitch_cfg << 26)
142 #define PAD_GFCFG_DISABLE (0 << 26)
143 #define PAD_ENABLE_EDGE_DETECTION (1 << 26) /* EDGE DETECTION ONLY */
144 #define PAD_ENABLE_RX_DETECTION (2 << 26) /* RX DETECTION ONLY */
145 #define PAD_ENABLE_EDGE_RX_DETECTION (3 << 26) /* RX & EDGE DETECTION */
146 
147 /* config0[25:24] - RX/TX Enable Config */
148 #define PAD_FUNC_CTRL(tx_rx_enable) (tx_rx_enable << 24)
149 #define PAD_FUNC_CTRL_RX_TX_ENABLE (0 << 24)
150 #define PAD_FUNC_CTRL_TX_ENABLE_RX_DISABLE (1 << 24)
151 #define PAD_FUNC_CTRL_TX_ENABLE_RX_ENABLE (2 << 24)
152 #define PAD_TX_RX_ENABLE (3 << 24)
153 
154 /* config0[23:20] - Termination */
155 #define PAD_PULL(TERM) (TERM << 20)
156 #define PAD_PULL_DISABLE (0 << 20)
157 #define PAD_PULL_DOWN_20K (1 << 20)
158 #define PAD_PULL_DOWN_5K (2 << 20)
159 #define PAD_PULL_DOWN_1K (4 << 20)
160 #define PAD_PULL_UP_20K (9 << 20)
161 #define PAD_PULL_UP_5K (10 << 20)
162 #define PAD_PULL_UP_1K (12 << 20)
163 
164 /* config0[19:16] - PAD Mode */
165 #define PAD_MODE_SELECTION(MODE_SEL) (MODE_SEL<<16)
166 
167 #define SET_PAD_MODE_SELECTION(pad_config, mode) \
168  ((pad_config & 0xfff0ffff) | PAD_MODE_SELECTION(mode))
169 
170 /* config0[15] - GPIO Enable */
171 #define PAD_GPIO_DISABLE (0 << 15)
172 #define PAD_GPIO_ENABLE (1 << 15)
173 
174 /* config0[14:11] - Reserver2 */
175 
176 /* config0[10:8] - GPIO Config */
177 #define PAD_GPIO_CFG(gpio_cfg) (gpio_cfg << 8)
178 #define PAD_GPIOFG_GPIO (0 << 8)
179 #define PAD_GPIOFG_GPO (1 << 8)
180 #define PAD_GPIOFG_GPI (2 << 8)
181 #define PAD_GPIOFG_HI_Z (3 << 8)
182 
183 /* config0[7] - Gpio Light Mode Bar */
184 /* config0[6:2] - Reserved1 */
185 /* config0[1] - GPIO TX State */
186 #define PAD_DEFAULT_TX(STATE) (STATE<<1)
187 /* config0[0] - GPIO RX State */
188 #define PAD_RX_BIT 1
189 
190 /* Pad Control Register 1 configuration */
191 #define PAD_DISABLE_INT (0 << 0)
192 #define PAD_TRIG_EDGE_LOW (1 << 0)
193 #define PAD_TRIG_EDGE_HIGH (2 << 0)
194 #define PAD_TRIG_EDGE_BOTH (3 << 0)
195 #define PAD_TRIG_EDGE_LEVEL (4 << 0)
196 
197 /* Pad config0 power-on values */
198 #define PAD_CONFIG0_DEFAULT 0x00010300
199 #define PAD_CONFIG0_DEFAULT0 0x00910300
200 #define PAD_CONFIG0_DEFAULT1 0x00110300
201 #define PAD_CONFIG0_GPI_DEFAULT 0x00010200
202 
203 /* Pad config1 reg power-on values */
204 #define PAD_CONFIG1_DEFAULT0 0x05C00000
205 #define PAD_CONFIG1_CSEN 0x0DC00000
206 #define PAD_CONFIG1_DEFAULT1 0x05C00020
207 
208 #define GPIO_INPUT_PULL(pull) \
209  { .pad_conf0 = pull | PAD_GPIO_ENABLE | PAD_CONFIG0_GPI_DEFAULT, \
210  .pad_conf1 = PAD_CONFIG1_DEFAULT0 }
211 
212 #define GPIO_INPUT_NO_PULL GPIO_INPUT_PULL(PAD_PULL_DISABLE)
213 #define GPIO_INPUT_PU_20K GPIO_INPUT_PULL(PAD_PULL_UP_20K)
214 #define GPIO_INPUT_PU_5K GPIO_INPUT_PULL(PAD_PULL_UP_5K)
215 #define GPIO_INPUT_PU_1K GPIO_INPUT_PULL(PAD_PULL_UP_1K)
216 #define GPIO_INPUT_PD_20K GPIO_INPUT_PULL(PAD_PULL_DOWN_20K)
217 #define GPIO_INPUT_PD_5K GPIO_INPUT_PULL(PAD_PULL_DOWN_5K)
218 #define GPIO_INPUT_PD_1K GPIO_INPUT_PULL(PAD_PULL_DOWN_1K)
219 
220 #define GPI(int_type, int_sel, term, int_msk, glitch_cfg, wake_msk, gpe_val) { \
221  .pad_conf0 = PAD_INT_SEL(int_sel) | PAD_GFCFG(glitch_cfg) \
222  | PAD_PULL(term) | PAD_GPIO_ENABLE | PAD_GPIOFG_GPI, \
223  .pad_conf1 = int_type << 0 | PAD_CONFIG1_DEFAULT0, \
224  .wake_mask = wake_msk, \
225  .int_mask = int_msk, \
226  .gpe = gpe_val }
227 
228 #define GPO_FUNC(term, tx_state) {\
229  .pad_conf0 = PAD_GPIO_ENABLE | PAD_GPIOFG_GPO | PAD_PULL(term) \
230  | tx_state << 1, \
231  .pad_conf1 = PAD_CONFIG1_DEFAULT0 }
232 
233 #define NATIVE_FUNC(mode, term, inv_rx_tx) {\
234  .pad_conf0 = PAD_GPIO_DISABLE | PAD_GPIOFG_HI_Z \
235  | PAD_MODE_SELECTION(mode) | PAD_PULL(term),\
236  .pad_conf1 = PAD_CONFIG1_DEFAULT0 | inv_rx_tx << 4 }
237 
238 #define NATIVE_FUNC_TX_RX(tx_rx_enable, mode, term, inv_rx_tx) {\
239  .pad_conf0 = PAD_FUNC_CTRL(tx_rx_enable) | PAD_GPIO_DISABLE \
240  | PAD_GPIOFG_GPIO | PAD_MODE_SELECTION(mode) \
241  | PAD_PULL(term),\
242  .pad_conf1 = PAD_CONFIG1_DEFAULT0 | inv_rx_tx << 4 }
243 
244 #define NATIVE_FUNC_CSEN(mode, term, inv_rx_tx) {\
245  .pad_conf0 = PAD_GPIO_DISABLE | PAD_GPIOFG_HI_Z \
246  | PAD_MODE_SELECTION(mode) | PAD_PULL(term),\
247  .pad_conf1 = PAD_CONFIG1_CSEN | inv_rx_tx << 4 }
248 
249 #define NATIVE_INT(mode, int_sel) {\
250  .pad_conf0 = PAD_INT_SEL(int_sel) | PAD_GPIO_DISABLE \
251  | PAD_GPIOFG_HI_Z | PAD_MODE_SELECTION(mode),\
252  .pad_conf1 = PAD_CONFIG1_DEFAULT0 }
253 
254 #define NATIVE_INT_PU20K(mode, int_sel) {\
255  .pad_conf0 = PAD_PULL_UP_20K | PAD_INT_SEL(int_sel) | PAD_GPIO_DISABLE \
256  | PAD_GPIOFG_HI_Z | PAD_MODE_SELECTION(mode),\
257  .pad_conf1 = PAD_CONFIG1_DEFAULT0 }
258 
259 #define SPEAKER \
260 { .pad_conf0 = PAD_CONFIG0_DEFAULT0, \
261  .pad_conf1 = PAD_CONFIG1_DEFAULT0 }
262 
263 #define SPARE_PIN\
264  { .pad_conf0 = 0x00110300,\
265  .pad_conf1 = PAD_CONFIG1_DEFAULT0 }
266 
267 /* SCI , SMI, Wake */
268 #define GPIO_SCI(int_sel) \
269  { .pad_conf0 = PAD_PULL_DISABLE | PAD_ENABLE_EDGE_RX_DETECTION\
270  | PAD_GPIO_ENABLE | PAD_GPIOFG_GPI \
271  | PAD_INT_SEL(int_sel), \
272  .pad_conf1 = PAD_TRIG_EDGE_LOW | PAD_CONFIG1_DEFAULT0, \
273  .gpe = SCI, \
274  .int_mask = 1 }
275 
276 #define GPIO_WAKE(int_sel) \
277  { .pad_conf0 = PAD_PULL_DISABLE | PAD_ENABLE_EDGE_RX_DETECTION\
278  | PAD_GPIO_ENABLE | PAD_GPIOFG_GPI \
279  | PAD_INT_SEL(int_sel), \
280  .pad_conf1 = PAD_TRIG_EDGE_LOW | PAD_CONFIG1_DEFAULT0, \
281  .int_mask = 1,\
282  .wake_mask = 1 }
283 
284 #define GPIO_SMI(int_sel) \
285  { .pad_conf0 = PAD_PULL_DISABLE | PAD_ENABLE_EDGE_RX_DETECTION\
286  | PAD_GPIO_ENABLE | PAD_GPIOFG_GPI \
287  | PAD_INT_SEL(int_sel), \
288  .pad_conf1 = PAD_TRIG_EDGE_LOW | PAD_CONFIG1_DEFAULT0, \
289  .int_mask = 1,\
290  .gpe = SMI }
291 
292 #define GPIO_SKIP { .skip_config = 1 }
293 
294 /* Common GPIO settings */
295 #define NATIVE_DEFAULT(mode) NATIVE_FUNC(mode, 0, 0) /* no pull */
296 #define NATIVE_PU20K(mode) NATIVE_FUNC(mode, 9, 0) /* PH 20k */
297 #define NATIVE_PU5K(mode) NATIVE_FUNC(mode, 10, 0) /* PH 5k */
298 #define NATIVE_PU5K_INVTX(mode) NATIVE_FUNC(mode, 10, inv_tx_enable) /* PH 5k */
299 #define NATIVE_PU1K(mode) NATIVE_FUNC(mode, 12, 0) /* PH 1k */
300 #define NATIVE_PU1K_CSEN_INVTX(mode) \
301  NATIVE_FUNC_CSEN(mode, 12, inv_tx_enable) /* PH 1k */
302 #define NATIVE_PU1K_INVTX(mode) NATIVE_FUNC(mode, 12, inv_tx_enable) /* PH 1k */
303 #define NATIVE_PD20K(mode) NATIVE_FUNC(mode, 1, 0) /* PD 20k */
304 #define NATIVE_PD5K(mode) NATIVE_FUNC(mode, 2, 0) /* PD 5k */
305 #define NATIVE_PD1K(mode) NATIVE_FUNC(mode, 4, 0) /* PD 1k */
306 #define NATIVE_PD1K_CSEN_INVTX(mode) NATIVE_FUNC_CSEN(mode, 4, inv_tx_enable)
307  /* no pull */
308 #define NATIVE_TX_RX_EN NATIVE_FUNC_TX_RX(3, 1, 0, inv_tx_enable)
309 #define NATIVE_TX_RX_M1 NATIVE_FUNC_TX_RX(0, 1, 0, 0) /* no pull */
310 #define NATIVE_TX_RX_M3 NATIVE_FUNC_TX_RX(0, 3, 0, 0) /* no pull */
311 #define NATIVE_PU1K_M1 NATIVE_PU1K(1) /* PU1k M1 */
312 
313 /* Default native functions */
314 #define Native_M0 NATIVE_DEFAULT(0)
315 #define Native_M1 NATIVE_DEFAULT(1)
316 #define Native_M2 NATIVE_DEFAULT(2)
317 #define Native_M3 NATIVE_DEFAULT(3)
318 #define Native_M4 NATIVE_DEFAULT(4)
319 #define Native_M5 NATIVE_DEFAULT(5)
320 #define Native_M6 NATIVE_DEFAULT(6)
321 #define Native_M7 NATIVE_DEFAULT(7)
322 #define Native_M8 NATIVE_DEFAULT(8)
323 
324 #define GPIO_OUT_LOW GPO_FUNC(0, 0) /* gpo low */
325 #define GPIO_OUT_HIGH GPO_FUNC(0, 1) /* gpo high */
326 #define GPIO_NC GPIO_INPUT_PU_20K /* not connect */
327 
328 /* End marker */
329 #define GPIO_LIST_END 0xffffffff
330 
331 #define GPIO_END \
332  { .pad_conf0 = GPIO_LIST_END }
333 
334 /* Functions / defines for changing GPIOs in romstage */
335 #define UART_RXD_PAD 82
336 #define UART_TXD_PAD 83
337 #define PCU_SMB_CLK_PAD 88
338 #define PCU_SMB_DATA_PAD 90
339 #define SOC_DDI1_VDDEN_PAD 16
340 #define UART1_RXD_PAD 9
341 #define UART1_TXD_PAD 13
342 #define DDI2_DDC_SCL 48
343 #define DDI2_DDC_SDA 53
344 
345 struct soc_gpio_map {
346  u32 pad_conf0;
347  u32 pad_conf1;
351  u32 is_gpio:1;
354 
355 struct soc_gpio_config {
356  const struct soc_gpio_map *north;
357  const struct soc_gpio_map *southeast;
358  const struct soc_gpio_map *southwest;
359  const struct soc_gpio_map *east;
360 };
361 
362 /* Description of a GPIO 'community' */
363 struct gpio_bank {
364  const int gpio_count;
365  const u8 *gpio_to_pad;
366  const unsigned long pad_base;
367  const u8 has_gpe_en:1;
368  const u8 has_wake_en:1;
369 };
370 
371 typedef enum {
372  P_NONE = 0, /* Pull None */
373  P_20K_L = 1, /* Pull Down 20K */
374  P_5K_L = 2, /* Pull Down 5K */
375  P_1K_L = 4, /* Pull Down 1K */
376  P_20K_H = 9, /* Pull Up 20K */
377  P_5K_H = 10, /* Pull Up 5K */
378  P_1K_H = 12 /* Pull Up 1K */
380 
381 typedef enum {
382  M0 = 0,
383  M1,
384  M2,
385  M3,
386  M4,
387  M5,
388  M6,
389  M7,
390  M8,
391  M9,
396 } mode_list_t;
397 
398 typedef enum {
399  L0 = 0,
400  L1 = 1,
401  L2 = 2,
402  L3 = 3,
403  L4 = 4,
404  L5 = 5,
405  L6 = 6,
406  L7 = 7,
407  L8 = 8,
408  L9 = 9,
409  L10 = 10,
410  L11 = 11,
411  L12 = 12,
412  L13 = 13,
413  L14 = 14,
414  L15 = 15,
415 } int_select_t;
416 
417 typedef enum {
418  INT_DIS = 0,
424 } int_type_t;
425 
426 typedef enum {
431 } glitch_cfg;
432 
433 typedef enum {
434  maskable = 0,
436 } mask_t;
437 
438 typedef enum {
439  GPE = 0,
442 } gpe_config_t;
443 
444 /*
445  * InvertRxTx 7:4
446  * 0 - No Inversion
447  * 1 - Inversion
448  * [0] RX Enable
449  * [1] TX Enable
450  * [2] RX Data
451  * [3] TX Data
452  */
453 typedef enum {
458  inv_rx_data = 0x4,
459  inv_tx_data = 0x8,
461 
462 #define PAD_VAL_HIGH (1 << 0)
463 
464 void setup_soc_gpios(struct soc_gpio_config *config, u8 enable_xdp_tap);
466 
467 typedef int gpio_t;
468 
469 int get_gpio(int community_base, int pad0_offset);
472 
473 void lpc_init(void);
474 void lpc_set_low_power(void);
475 
476 #endif /* _SOC_GPIO_H_ */
enum board_config config
Definition: memory.c:448
uint32_t gpio_t
Definition: gpio.h:9
struct soc_gpio_config * mainboard_get_gpios(void)
Definition: gpio.c:207
struct soc_gpio_map __packed
void setup_soc_gpios(struct soc_gpio_config *config, u8 enable_xdp_tap)
Definition: gpio.c:202
#define PAD_TRIG_EDGE_BOTH
Definition: gpio.h:194
mode_list_t
Definition: gpio.h:381
@ M6
Definition: gpio.h:388
@ M8
Definition: gpio.h:390
@ M13
Definition: gpio.h:395
@ M5
Definition: gpio.h:387
@ M9
Definition: gpio.h:391
@ M3
Definition: gpio.h:385
@ M0
Definition: gpio.h:382
@ M10
Definition: gpio.h:392
@ M2
Definition: gpio.h:384
@ M7
Definition: gpio.h:389
@ M12
Definition: gpio.h:394
@ M11
Definition: gpio.h:393
@ M1
Definition: gpio.h:383
@ M4
Definition: gpio.h:386
uint16_t gpio_family_number(uint8_t community, uint8_t pad)
Definition: gpio_support.c:12
int_select_t
Definition: gpio.h:398
@ L2
Definition: gpio.h:401
@ L11
Definition: gpio.h:410
@ L7
Definition: gpio.h:406
@ L0
Definition: gpio.h:399
@ L4
Definition: gpio.h:403
@ L12
Definition: gpio.h:411
@ L3
Definition: gpio.h:402
@ L5
Definition: gpio.h:404
@ L8
Definition: gpio.h:407
@ L15
Definition: gpio.h:414
@ L10
Definition: gpio.h:409
@ L13
Definition: gpio.h:412
@ L14
Definition: gpio.h:413
@ L9
Definition: gpio.h:408
@ L1
Definition: gpio.h:400
@ L6
Definition: gpio.h:405
mask_t
Definition: gpio.h:433
@ maskable
Definition: gpio.h:434
@ non_maskable
Definition: gpio.h:435
uint32_t * gpio_pad_config_reg(uint8_t community, uint8_t pad)
Definition: gpio_support.c:49
#define PAD_TRIG_EDGE_HIGH
Definition: gpio.h:193
int get_gpio(int community_base, int pad0_offset)
Definition: gpio_support.c:148
pull_type_t
Definition: gpio.h:371
@ P_5K_L
Definition: gpio.h:374
@ P_NONE
Definition: gpio.h:372
@ P_20K_L
Definition: gpio.h:373
@ P_20K_H
Definition: gpio.h:376
@ P_1K_L
Definition: gpio.h:375
@ P_1K_H
Definition: gpio.h:378
@ P_5K_H
Definition: gpio.h:377
void lpc_set_low_power(void)
Definition: lpc_init.c:82
glitch_cfg
Definition: gpio.h:426
@ en_edge_rx_data
Definition: gpio.h:430
@ glitch_disable
Definition: gpio.h:427
@ en_rx_data
Definition: gpio.h:429
@ en_edge_detect
Definition: gpio.h:428
invert_rx_tx_t
Definition: gpio.h:453
@ inv_tx_enable
Definition: gpio.h:456
@ inv_tx_data
Definition: gpio.h:459
@ inv_rx_enable
Definition: gpio.h:455
@ inv_rx_data
Definition: gpio.h:458
@ inv_rx_tx_enable
Definition: gpio.h:457
@ no_inversion
Definition: gpio.h:454
void lpc_init(void)
Definition: lpc_init.c:90
#define PAD_TRIG_EDGE_LEVEL
Definition: gpio.h:195
gpe_config_t
Definition: gpio.h:438
@ SCI
Definition: gpio.h:441
@ SMI
Definition: gpio.h:440
@ GPE
Definition: gpio.h:439
#define PAD_TRIG_EDGE_LOW
Definition: gpio.h:192
int_type_t
Definition: gpio.h:417
@ trig_edge_high
Definition: gpio.h:420
@ trig_edge_low
Definition: gpio.h:419
@ trig_edge_both
Definition: gpio.h:421
@ trig_level_low
Definition: gpio.h:423
@ trig_level_high
Definition: gpio.h:422
@ INT_DIS
Definition: gpio.h:418
unsigned short uint16_t
Definition: stdint.h:11
unsigned int uint32_t
Definition: stdint.h:14
uint32_t u32
Definition: stdint.h:51
uint8_t u8
Definition: stdint.h:45
unsigned char uint8_t
Definition: stdint.h:8
const u8 * gpio_to_pad
Definition: gpio.h:355
const unsigned long pad_base
Definition: gpio.h:357
const int gpio_count
Definition: gpio.h:354
const u8 has_wake_en
Definition: gpio.h:358
const u8 has_gpe_en
Definition: gpio.h:367
const struct soc_gpio_map * southwest
Definition: gpio.h:358
const struct soc_gpio_map * southeast
Definition: gpio.h:357
const struct soc_gpio_map * north
Definition: gpio.h:356
const struct soc_gpio_map * east
Definition: gpio.h:359
u32 int_mask
Definition: gpio.h:349
u32 pad_conf1
Definition: gpio.h:331
u32 pad_conf0
Definition: gpio.h:330
u32 gpe
Definition: gpio.h:348
u32 is_gpio
Definition: gpio.h:340
u32 wake_mask
Definition: gpio.h:350
u32 skip_config
Definition: gpio.h:352