coreboot
coreboot is an Open Source project aimed at replacing the proprietary BIOS found in most computers.
gpio_common.h File Reference
#include <soc/addressmap.h>
#include <soc/gpio_base.h>
#include <stddef.h>
#include <stdint.h>
Include dependency graph for gpio_common.h:

Go to the source code of this file.

Data Structures

struct  gpio_drv_info
 
struct  eint_section
 
struct  eint_regs
 

Enumerations

enum  pull_enable { GPIO_PULL_DISABLE = 0 , GPIO_PULL_ENABLE = 1 }
 
enum  pull_select { GPIO_PULL_DOWN = 0 , GPIO_PULL_UP = 1 }
 
enum  gpio_drv_adv { GPIO_DRV_ADV_125_UA = 0 , GPIO_DRV_ADV_250_UA = 1 , GPIO_DRV_ADV_500_UA = 2 , GPIO_DRV_ADV_1_MA = 3 }
 
enum  gpio_irq_type {
  IRQ_TYPE_EDGE_RISING , IRQ_TYPE_EDGE_FALLING , IRQ_TYPE_LEVEL_HIGH , IRQ_TYPE_LEVEL_LOW ,
  IRQ_TYPE_LEVEL , IRQ_TYPE_RISING_EDGE , IRQ_TYPE_FALLING_EDGE , IRQ_TYPE_DUAL_EDGE ,
  IRQ_TYPE_LEVEL = 0 , IRQ_TYPE_RISING_EDGE = 1 , IRQ_TYPE_FALLING_EDGE = 2 , IRQ_TYPE_DUAL_EDGE = 3 ,
  IRQ_TYPE_EDGE_RISING = 0 , IRQ_TYPE_EDGE_FALLING , IRQ_TYPE_LEVEL_HIGH , IRQ_TYPE_LEVEL_LOW
}
 

Functions

void gpio_set_pull (gpio_t gpio, enum pull_enable enable, enum pull_select select)
 
void gpio_set_mode (gpio_t gpio, int mode)
 
int gpio_set_driving (gpio_t gpio, uint8_t drv)
 
int gpio_get_driving (gpio_t gpio)
 
int gpio_set_driving_adv (gpio_t gpio, enum gpio_drv_adv drv)
 
int gpio_get_driving_adv (gpio_t gpio)
 
 check_member (eint_regs, d1en, 0x420)
 
int gpio_eint_poll (gpio_t gpio)
 
void gpio_eint_configure (gpio_t gpio, enum gpio_irq_type type)
 

Variables

static struct eint_regs *const mtk_eint = (void *)(EINT_BASE)
 

Enumeration Type Documentation

◆ gpio_drv_adv

Enumerator
GPIO_DRV_ADV_125_UA 
GPIO_DRV_ADV_250_UA 
GPIO_DRV_ADV_500_UA 
GPIO_DRV_ADV_1_MA 

Definition at line 29 of file gpio_common.h.

◆ gpio_irq_type

Enumerator
IRQ_TYPE_EDGE_RISING 
IRQ_TYPE_EDGE_FALLING 
IRQ_TYPE_LEVEL_HIGH 
IRQ_TYPE_LEVEL_LOW 
IRQ_TYPE_LEVEL 
IRQ_TYPE_RISING_EDGE 
IRQ_TYPE_FALLING_EDGE 
IRQ_TYPE_DUAL_EDGE 
IRQ_TYPE_LEVEL 
IRQ_TYPE_RISING_EDGE 
IRQ_TYPE_FALLING_EDGE 
IRQ_TYPE_DUAL_EDGE 
IRQ_TYPE_EDGE_RISING 
IRQ_TYPE_EDGE_FALLING 
IRQ_TYPE_LEVEL_HIGH 
IRQ_TYPE_LEVEL_LOW 

Definition at line 54 of file gpio_common.h.

◆ pull_enable

Enumerator
GPIO_PULL_DISABLE 
GPIO_PULL_ENABLE 

Definition at line 11 of file gpio_common.h.

◆ pull_select

Enumerator
GPIO_PULL_DOWN 
GPIO_PULL_UP 

Definition at line 16 of file gpio_common.h.

Function Documentation

◆ check_member()

check_member ( eint_regs  ,
d1en  ,
0x420   
)

◆ gpio_eint_configure()

void gpio_eint_configure ( gpio_t  gpio,
enum gpio_irq_type  type 
)

◆ gpio_eint_poll()

int gpio_eint_poll ( gpio_t  gpio)

Definition at line 126 of file gpio.c.

References eint_regs::ack, mtk_eint, pos_bit_calc_for_eint(), read32(), eint_section::regs, eint_regs::sta, and write32().

Referenced by tis_plat_irq_status().

Here is the call graph for this function:
Here is the caller graph for this function:

◆ gpio_get_driving()

int gpio_get_driving ( gpio_t  gpio)

Definition at line 354 of file gpio.c.

References BIT, gpio_driving_info, gpio_find_reg_addr(), info, and read32().

Referenced by mtk_snfc_init().

Here is the call graph for this function:
Here is the caller graph for this function:

◆ gpio_get_driving_adv()

int gpio_get_driving_adv ( gpio_t  gpio)

Definition at line 393 of file gpio.c.

References BIT, gpio_driving_adv_info, gpio_find_reg_addr(), gpio_drv_info::offset, read32(), gpio_drv_info::shift, and gpio_drv_info::width.

Here is the call graph for this function:

◆ gpio_set_driving()

int gpio_set_driving ( gpio_t  gpio,
uint8_t  drv 
)

Definition at line 324 of file gpio.c.

References BIT, clrbits32, clrsetbits32, gpio_driving_adv_info, gpio_driving_info, gpio_find_reg_addr(), info, is_valid_drv(), mask, gpio_drv_info::offset, gpio_drv_info::shift, and gpio_drv_info::width.

Referenced by mtk_snfc_init().

Here is the call graph for this function:
Here is the caller graph for this function:

◆ gpio_set_driving_adv()

int gpio_set_driving_adv ( gpio_t  gpio,
enum gpio_drv_adv  drv 
)

Definition at line 366 of file gpio.c.

References BIT, clrsetbits32, gpio_driving_adv_info, gpio_find_reg_addr(), is_valid_drv_adv(), mask, gpio_drv_info::offset, gpio_drv_info::shift, and gpio_drv_info::width.

Here is the call graph for this function:

◆ gpio_set_mode()

◆ gpio_set_pull()

Variable Documentation

◆ mtk_eint

struct eint_regs* const mtk_eint = (void *)(EINT_BASE)
static

Definition at line 90 of file gpio_common.h.

Referenced by gpio_eint_configure(), and gpio_eint_poll().