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

Go to the source code of this file.

Data Structures

union  gpio_t
 
struct  tlmm_gpio
 

Macros

#define GPIO_FUNC_GPIO   0
 
#define TLMM_GPIO_OFF_DELTA   0x1000
 
#define GPIO(num)   ((gpio_t){.addr = GPIO##num##_ADDR})
 

Enumerations

enum  gpio_tlmm_intr_bmsk { GPIO_INTR_STATUS_MASK = 0x1 , GPIO_INTR_DECT_CTL_MASK = 0x3 }
 
enum  gpio_tlmm_bmsk {
  GPIO_BMSK = 0x1 , GPIO_CFG_PULL_BMSK = 0x3 , GPIO_CFG_FUNC_BMSK = 0xF , GPIO_CFG_DRV_BMSK = 0x7 ,
  GPIO_CFG_EGPIO_BMSK = 0x800
}
 
enum  gpio_tlmm_intr_shft { GPIO_INTR_DECT_CTL_SHFT = 2 , GPIO_INTR_RAW_STATUS_EN_SHFT = 4 }
 
enum  gpio_tlmm_shft {
  GPIO_CFG_PULL_SHFT = 0 , GPIO_CFG_FUNC_SHFT = 2 , GPIO_CFG_DRV_SHFT = 6 , GPIO_CFG_OE_SHFT = 9 ,
  GPIO_CFG_EGPIO_SHFT = 1
}
 
enum  gpio_io_shft { GPIO_IO_IN_SHFT , GPIO_IO_OUT_SHFT }
 
enum  gpio_irq_status { GPIO_INTR_STATUS_DISABLE , GPIO_INTR_STATUS_ENABLE }
 
enum  gpio_direction { GPIO_INPUT , GPIO_OUTPUT }
 
enum  gpio_pull {
  GPIO_NO_PULL , GPIO_PULL_DOWN , GPIO_KEEPER , GPIO_PULL_UP ,
  GPIO_PULLNONE = 0 , GPIO_PULLUP = 1 , GPIO_PULLDOWN = 2
}
 
enum  gpio_drv_str {
  GPIO_2MA , GPIO_4MA , GPIO_6MA , GPIO_8MA ,
  GPIO_10MA , GPIO_12MA , GPIO_14MA , GPIO_16MA
}
 
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_configure (gpio_t gpio, uint32_t func, uint32_t pull, uint32_t drive_str, uint32_t enable)
 
void gpio_input_irq (gpio_t gpio, enum gpio_irq_type type, uint32_t pull)
 
int gpio_irq_status (gpio_t gpio)
 

Macro Definition Documentation

◆ GPIO

#define GPIO (   num)    ((gpio_t){.addr = GPIO##num##_ADDR})

Definition at line 98 of file gpio_common.h.

◆ GPIO_FUNC_GPIO

#define GPIO_FUNC_GPIO   0

Definition at line 9 of file gpio_common.h.

◆ TLMM_GPIO_OFF_DELTA

#define TLMM_GPIO_OFF_DELTA   0x1000

Definition at line 10 of file gpio_common.h.

Enumeration Type Documentation

◆ gpio_direction

Enumerator
GPIO_INPUT 
GPIO_OUTPUT 

Definition at line 55 of file gpio_common.h.

◆ gpio_drv_str

Enumerator
GPIO_2MA 
GPIO_4MA 
GPIO_6MA 
GPIO_8MA 
GPIO_10MA 
GPIO_12MA 
GPIO_14MA 
GPIO_16MA 

Definition at line 69 of file gpio_common.h.

◆ gpio_io_shft

Enumerator
GPIO_IO_IN_SHFT 
GPIO_IO_OUT_SHFT 

Definition at line 43 of file gpio_common.h.

◆ gpio_irq_status

Enumerator
GPIO_INTR_STATUS_DISABLE 
GPIO_INTR_STATUS_ENABLE 

Definition at line 49 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 80 of file gpio_common.h.

◆ gpio_pull

enum gpio_pull
Enumerator
GPIO_NO_PULL 
GPIO_PULL_DOWN 
GPIO_KEEPER 
GPIO_PULL_UP 
GPIO_PULLNONE 
GPIO_PULLUP 
GPIO_PULLDOWN 

Definition at line 61 of file gpio_common.h.

◆ gpio_tlmm_bmsk

Enumerator
GPIO_BMSK 
GPIO_CFG_PULL_BMSK 
GPIO_CFG_FUNC_BMSK 
GPIO_CFG_DRV_BMSK 
GPIO_CFG_EGPIO_BMSK 

Definition at line 19 of file gpio_common.h.

◆ gpio_tlmm_intr_bmsk

Enumerator
GPIO_INTR_STATUS_MASK 
GPIO_INTR_DECT_CTL_MASK 

Definition at line 13 of file gpio_common.h.

◆ gpio_tlmm_intr_shft

Enumerator
GPIO_INTR_DECT_CTL_SHFT 
GPIO_INTR_RAW_STATUS_EN_SHFT 

Definition at line 28 of file gpio_common.h.

◆ gpio_tlmm_shft

Enumerator
GPIO_CFG_PULL_SHFT 
GPIO_CFG_FUNC_SHFT 
GPIO_CFG_DRV_SHFT 
GPIO_CFG_OE_SHFT 
GPIO_CFG_EGPIO_SHFT 

Definition at line 34 of file gpio_common.h.

Function Documentation

◆ gpio_configure()

void gpio_configure ( gpio_t  gpio,
uint32_t  func,
uint32_t  pull,
uint32_t  drive_str,
uint32_t  enable 
)

Definition at line 7 of file gpio.c.

◆ gpio_input_irq()

void gpio_input_irq ( gpio_t  gpio,
enum gpio_irq_type  type,
uint32_t  pull 
)

Definition at line 65 of file gpio.c.

◆ gpio_irq_status()

int gpio_irq_status ( gpio_t  gpio)

Definition at line 79 of file gpio.c.