coreboot
coreboot is an Open Source project aimed at replacing the proprietary BIOS found in most computers.
gpio_common.h
Go to the documentation of this file.
1 /* SPDX-License-Identifier: GPL-2.0-only */
2 
3 #ifndef SOC_MEDIATEK_COMMON_GPIO_H
4 #define SOC_MEDIATEK_COMMON_GPIO_H
5 
6 #include <soc/addressmap.h>
7 #include <soc/gpio_base.h>
8 #include <stddef.h>
9 #include <stdint.h>
10 
14 };
15 
19 };
20 
21 /*
22  * GPIO DRIVING
23  * Special IO(I2C, HDMI...) advanced drive strength:
24  * GPIO_DRV_ADV_125_UA: 0.125mA
25  * GPIO_DRV_ADV_250_UA: 0.25mA
26  * GPIO_DRV_ADV_500_UA: 0.5mA
27  * GPIO_DRV_ADV_1_MA: 1mA
28  */
34 };
35 
36 struct gpio_drv_info {
40 };
41 
42 void gpio_set_pull(gpio_t gpio, enum pull_enable enable,
43  enum pull_select select);
44 void gpio_set_mode(gpio_t gpio, int mode);
45 
46 /* Normal driving function */
49 
50 /* Advanced driving function */
53 
59 };
60 
61 struct eint_section {
64 };
65 
66 struct eint_regs {
67  struct eint_section sta;
68  struct eint_section ack;
69  struct eint_section mask;
70  struct eint_section mask_set;
71  struct eint_section mask_clr;
72  struct eint_section sens;
73  struct eint_section sens_set;
74  struct eint_section sens_clr;
75  struct eint_section soft;
76  struct eint_section soft_set;
77  struct eint_section soft_clr;
78  struct eint_section rsv00;
79  struct eint_section pol;
80  struct eint_section pol_set;
81  struct eint_section pol_clr;
82  struct eint_section rsv01;
86 };
87 
88 check_member(eint_regs, d1en, 0x420);
89 
90 static struct eint_regs *const mtk_eint = (void *)(EINT_BASE);
91 
92 /*
93  * Firmware never enables interrupts on this platform. This function
94  * reads current EINT status and clears the pending interrupt.
95  *
96  * Returns 1 if the interrupt was pending, else 0.
97  */
99 
100 /*
101  * Configure a GPIO to handle external interrupts (EINT) of given irq type.
102  */
104 
105 #endif
unsigned int type
Definition: edid.c:57
int gpio_set_driving(gpio_t gpio, uint8_t drv)
Definition: gpio.c:324
gpio_irq_type
Definition: gpio_common.h:54
@ IRQ_TYPE_EDGE_RISING
Definition: gpio_common.h:55
@ IRQ_TYPE_EDGE_FALLING
Definition: gpio_common.h:56
@ IRQ_TYPE_LEVEL_HIGH
Definition: gpio_common.h:57
@ IRQ_TYPE_LEVEL_LOW
Definition: gpio_common.h:58
pull_enable
Definition: gpio_common.h:11
@ GPIO_PULL_ENABLE
Definition: gpio_common.h:13
@ GPIO_PULL_DISABLE
Definition: gpio_common.h:12
int gpio_get_driving(gpio_t gpio)
Definition: gpio.c:354
int gpio_eint_poll(gpio_t gpio)
Definition: gpio.c:126
int gpio_get_driving_adv(gpio_t gpio)
Definition: gpio.c:393
gpio_drv_adv
Definition: gpio_common.h:29
@ GPIO_DRV_ADV_250_UA
Definition: gpio_common.h:31
@ GPIO_DRV_ADV_500_UA
Definition: gpio_common.h:32
@ GPIO_DRV_ADV_125_UA
Definition: gpio_common.h:30
@ GPIO_DRV_ADV_1_MA
Definition: gpio_common.h:33
int gpio_set_driving_adv(gpio_t gpio, enum gpio_drv_adv drv)
Definition: gpio.c:366
check_member(eint_regs, d1en, 0x420)
void gpio_set_mode(gpio_t gpio, int mode)
Definition: gpio.c:45
static struct eint_regs *const mtk_eint
Definition: gpio_common.h:90
void gpio_eint_configure(gpio_t gpio, enum gpio_irq_type type)
Definition: gpio.c:142
pull_select
Definition: gpio_common.h:16
@ GPIO_PULL_DOWN
Definition: gpio_common.h:17
@ GPIO_PULL_UP
Definition: gpio_common.h:18
void gpio_set_pull(gpio_t gpio, enum pull_enable enable, enum pull_select select)
Definition: gpio.c:17
@ EINT_BASE
Definition: addressmap.h:22
unsigned int uint32_t
Definition: stdint.h:14
unsigned char uint8_t
Definition: stdint.h:8
struct eint_section sta
Definition: gpio_common.h:67
struct eint_section ack
Definition: gpio_common.h:68
struct eint_section sens_set
Definition: gpio_common.h:73
struct eint_section pol_set
Definition: gpio_common.h:80
struct eint_section pol
Definition: gpio_common.h:79
struct eint_section soft_set
Definition: gpio_common.h:76
struct eint_section mask
Definition: gpio_common.h:69
struct eint_section mask_set
Definition: gpio_common.h:70
struct eint_section soft_clr
Definition: gpio_common.h:77
uint32_t d1en[7]
Definition: gpio_common.h:85
struct eint_section rsv01
Definition: gpio_common.h:82
struct eint_section sens_clr
Definition: gpio_common.h:74
struct eint_section soft
Definition: gpio_common.h:75
uint32_t d0en[7]
Definition: gpio_common.h:83
uint32_t rsv02
Definition: gpio_common.h:84
struct eint_section rsv00
Definition: gpio_common.h:78
struct eint_section mask_clr
Definition: gpio_common.h:71
struct eint_section pol_clr
Definition: gpio_common.h:81
struct eint_section sens
Definition: gpio_common.h:72
uint32_t align1[9]
Definition: gpio_common.h:63
uint32_t offset
Definition: gpio_common.h:37
uint8_t width
Definition: gpio_common.h:39
uint8_t shift
Definition: gpio_common.h:38
Definition: pinmux.c:36