coreboot
coreboot is an Open Source project aimed at replacing the proprietary BIOS found in most computers.
lp_gpio.h File Reference
#include <stdint.h>
Include dependency graph for lp_gpio.h:
This graph shows which files directly or indirectly include this file:

Go to the source code of this file.

Data Structures

struct  pch_lp_gpio_map
 

Macros

#define GPIO_OWNER(set)   (0x00 + ((set) * 4))
 
#define GPIO_PIRQ_APIC_EN   0x10
 
#define GPIO_BLINK   0x18
 
#define GPIO_SER_BLINK   0x1c
 
#define GPIO_SER_BLINK_CS   0x20
 
#define GPIO_SER_BLINK_DATA   0x24
 
#define GPIO_ROUTE(set)   (0x30 + ((set) * 4))
 
#define GPIO_RESET(set)   (0x60 + ((set) * 4))
 
#define GPIO_GLOBAL_CONFIG   0x7c
 
#define GPIO_IRQ_IS(set)   (0x80 + ((set) * 4))
 
#define GPIO_IRQ_IE(set)   (0x90 + ((set) * 4))
 
#define GPIO_CONFIG0(gpio)   (0x100 + ((gpio) * 8))
 
#define GPIO_CONFIG1(gpio)   (0x104 + ((gpio) * 8))
 
#define MAX_GPIO_NUMBER   94 /* zero based */
 
#define GPIO_LIST_END   0xffffffff
 
#define GPIO_MODE_NATIVE   (0 << 0)
 
#define GPIO_MODE_GPIO   (1 << 0)
 
#define GPIO_DIR_OUTPUT   (0 << 2)
 
#define GPIO_DIR_INPUT   (1 << 2)
 
#define GPIO_NO_INVERT   (0 << 3)
 
#define GPIO_INVERT   (1 << 3)
 
#define GPIO_IRQ_EDGE   (0 << 4)
 
#define GPIO_IRQ_LEVEL   (1 << 4)
 
#define GPI_LEVEL   (1 << 30)
 
#define GPO_LEVEL_SHIFT   31
 
#define GPO_LEVEL_MASK   (1 << GPO_LEVEL_SHIFT)
 
#define GPO_LEVEL_LOW   (0 << GPO_LEVEL_SHIFT)
 
#define GPO_LEVEL_HIGH   (1 << GPO_LEVEL_SHIFT)
 
#define GPIO_PULL_NONE   (0 << 0)
 
#define GPIO_PULL_DOWN   (1 << 0)
 
#define GPIO_PULL_UP   (2 << 0)
 
#define GPIO_SENSE_ENABLE   (0 << 2)
 
#define GPIO_SENSE_DISABLE   (1 << 2)
 
#define GPIO_OWNER_ACPI   0
 
#define GPIO_OWNER_GPIO   1
 
#define GPIO_ROUTE_SCI   0
 
#define GPIO_ROUTE_SMI   1
 
#define GPIO_IRQ_DISABLE   0
 
#define GPIO_IRQ_ENABLE   1
 
#define GPO_NO_BLINK   0
 
#define GPO_BLINK   1
 
#define GPIO_RESET_PWROK   0
 
#define GPIO_RESET_RSMRST   1
 
#define GPIO_PIRQ_APIC_MASK   0
 
#define GPIO_PIRQ_APIC_ROUTE   1
 
#define LP_GPIO_END    { .conf0 = GPIO_LIST_END }
 
#define LP_GPIO_NATIVE    { .conf0 = GPIO_MODE_NATIVE }
 
#define LP_GPIO_UNUSED
 
#define LP_GPIO_ACPI_SCI
 
#define LP_GPIO_ACPI_SMI
 
#define LP_GPIO_INPUT
 
#define LP_GPIO_INPUT_INVERT
 
#define LP_GPIO_IRQ_EDGE
 
#define LP_GPIO_IRQ_LEVEL
 
#define LP_GPIO_PIRQ
 
#define LP_GPIO_PIRQ_INVERT
 
#define LP_GPIO_OUT_HIGH
 
#define LP_GPIO_OUT_LOW
 

Functions

void setup_pch_lp_gpios (const struct pch_lp_gpio_map map[])
 
int get_gpio (int gpio_num)
 
void set_gpio (int gpio_num, int value)
 
int gpio_is_native (int gpio_num)
 
unsigned int get_gpios (const int *gpio_num_array)
 

Variables

struct pch_lp_gpio_map __packed
 
const struct pch_lp_gpio_map mainboard_lp_gpio_map []
 

Macro Definition Documentation

◆ GPI_LEVEL

#define GPI_LEVEL   (1 << 30)

Definition at line 40 of file lp_gpio.h.

◆ GPIO_BLINK

#define GPIO_BLINK   0x18

Definition at line 11 of file lp_gpio.h.

◆ GPIO_CONFIG0

#define GPIO_CONFIG0 (   gpio)    (0x100 + ((gpio) * 8))

Definition at line 20 of file lp_gpio.h.

◆ GPIO_CONFIG1

#define GPIO_CONFIG1 (   gpio)    (0x104 + ((gpio) * 8))

Definition at line 21 of file lp_gpio.h.

◆ GPIO_DIR_INPUT

#define GPIO_DIR_INPUT   (1 << 2)

Definition at line 32 of file lp_gpio.h.

◆ GPIO_DIR_OUTPUT

#define GPIO_DIR_OUTPUT   (0 << 2)

Definition at line 31 of file lp_gpio.h.

◆ GPIO_GLOBAL_CONFIG

#define GPIO_GLOBAL_CONFIG   0x7c

Definition at line 17 of file lp_gpio.h.

◆ GPIO_INVERT

#define GPIO_INVERT   (1 << 3)

Definition at line 35 of file lp_gpio.h.

◆ GPIO_IRQ_DISABLE

#define GPIO_IRQ_DISABLE   0

Definition at line 68 of file lp_gpio.h.

◆ GPIO_IRQ_EDGE

#define GPIO_IRQ_EDGE   (0 << 4)

Definition at line 37 of file lp_gpio.h.

◆ GPIO_IRQ_ENABLE

#define GPIO_IRQ_ENABLE   1

Definition at line 69 of file lp_gpio.h.

◆ GPIO_IRQ_IE

#define GPIO_IRQ_IE (   set)    (0x90 + ((set) * 4))

Definition at line 19 of file lp_gpio.h.

◆ GPIO_IRQ_IS

#define GPIO_IRQ_IS (   set)    (0x80 + ((set) * 4))

Definition at line 18 of file lp_gpio.h.

◆ GPIO_IRQ_LEVEL

#define GPIO_IRQ_LEVEL   (1 << 4)

Definition at line 38 of file lp_gpio.h.

◆ GPIO_LIST_END

#define GPIO_LIST_END   0xffffffff

Definition at line 24 of file lp_gpio.h.

◆ GPIO_MODE_GPIO

#define GPIO_MODE_GPIO   (1 << 0)

Definition at line 29 of file lp_gpio.h.

◆ GPIO_MODE_NATIVE

#define GPIO_MODE_NATIVE   (0 << 0)

Definition at line 28 of file lp_gpio.h.

◆ GPIO_NO_INVERT

#define GPIO_NO_INVERT   (0 << 3)

Definition at line 34 of file lp_gpio.h.

◆ GPIO_OWNER

#define GPIO_OWNER (   set)    (0x00 + ((set) * 4))

Definition at line 9 of file lp_gpio.h.

◆ GPIO_OWNER_ACPI

#define GPIO_OWNER_ACPI   0

Definition at line 58 of file lp_gpio.h.

◆ GPIO_OWNER_GPIO

#define GPIO_OWNER_GPIO   1

Definition at line 59 of file lp_gpio.h.

◆ GPIO_PIRQ_APIC_EN

#define GPIO_PIRQ_APIC_EN   0x10

Definition at line 10 of file lp_gpio.h.

◆ GPIO_PIRQ_APIC_MASK

#define GPIO_PIRQ_APIC_MASK   0

Definition at line 83 of file lp_gpio.h.

◆ GPIO_PIRQ_APIC_ROUTE

#define GPIO_PIRQ_APIC_ROUTE   1

Definition at line 84 of file lp_gpio.h.

◆ GPIO_PULL_DOWN

#define GPIO_PULL_DOWN   (1 << 0)

Definition at line 50 of file lp_gpio.h.

◆ GPIO_PULL_NONE

#define GPIO_PULL_NONE   (0 << 0)

Definition at line 49 of file lp_gpio.h.

◆ GPIO_PULL_UP

#define GPIO_PULL_UP   (2 << 0)

Definition at line 51 of file lp_gpio.h.

◆ GPIO_RESET

#define GPIO_RESET (   set)    (0x60 + ((set) * 4))

Definition at line 16 of file lp_gpio.h.

◆ GPIO_RESET_PWROK

#define GPIO_RESET_PWROK   0

Definition at line 78 of file lp_gpio.h.

◆ GPIO_RESET_RSMRST

#define GPIO_RESET_RSMRST   1

Definition at line 79 of file lp_gpio.h.

◆ GPIO_ROUTE

#define GPIO_ROUTE (   set)    (0x30 + ((set) * 4))

Definition at line 15 of file lp_gpio.h.

◆ GPIO_ROUTE_SCI

#define GPIO_ROUTE_SCI   0

Definition at line 63 of file lp_gpio.h.

◆ GPIO_ROUTE_SMI

#define GPIO_ROUTE_SMI   1

Definition at line 64 of file lp_gpio.h.

◆ GPIO_SENSE_DISABLE

#define GPIO_SENSE_DISABLE   (1 << 2)

Definition at line 54 of file lp_gpio.h.

◆ GPIO_SENSE_ENABLE

#define GPIO_SENSE_ENABLE   (0 << 2)

Definition at line 53 of file lp_gpio.h.

◆ GPIO_SER_BLINK

#define GPIO_SER_BLINK   0x1c

Definition at line 12 of file lp_gpio.h.

◆ GPIO_SER_BLINK_CS

#define GPIO_SER_BLINK_CS   0x20

Definition at line 13 of file lp_gpio.h.

◆ GPIO_SER_BLINK_DATA

#define GPIO_SER_BLINK_DATA   0x24

Definition at line 14 of file lp_gpio.h.

◆ GPO_BLINK

#define GPO_BLINK   1

Definition at line 74 of file lp_gpio.h.

◆ GPO_LEVEL_HIGH

#define GPO_LEVEL_HIGH   (1 << GPO_LEVEL_SHIFT)

Definition at line 45 of file lp_gpio.h.

◆ GPO_LEVEL_LOW

#define GPO_LEVEL_LOW   (0 << GPO_LEVEL_SHIFT)

Definition at line 44 of file lp_gpio.h.

◆ GPO_LEVEL_MASK

#define GPO_LEVEL_MASK   (1 << GPO_LEVEL_SHIFT)

Definition at line 43 of file lp_gpio.h.

◆ GPO_LEVEL_SHIFT

#define GPO_LEVEL_SHIFT   31

Definition at line 42 of file lp_gpio.h.

◆ GPO_NO_BLINK

#define GPO_NO_BLINK   0

Definition at line 73 of file lp_gpio.h.

◆ LP_GPIO_ACPI_SCI

#define LP_GPIO_ACPI_SCI
Value:
.owner = GPIO_OWNER_ACPI, \
.route = GPIO_ROUTE_SCI }
#define GPIO_MODE_GPIO
Definition: lp_gpio.h:29
#define GPIO_INVERT
Definition: lp_gpio.h:35
#define GPIO_DIR_INPUT
Definition: lp_gpio.h:32
#define GPIO_OWNER_ACPI
Definition: lp_gpio.h:58
#define GPIO_ROUTE_SCI
Definition: lp_gpio.h:63

Definition at line 97 of file lp_gpio.h.

◆ LP_GPIO_ACPI_SMI

#define LP_GPIO_ACPI_SMI
Value:
.owner = GPIO_OWNER_ACPI, \
.route = GPIO_ROUTE_SMI }
#define GPIO_ROUTE_SMI
Definition: lp_gpio.h:64

Definition at line 102 of file lp_gpio.h.

◆ LP_GPIO_END

#define LP_GPIO_END    { .conf0 = GPIO_LIST_END }

Definition at line 86 of file lp_gpio.h.

◆ LP_GPIO_INPUT

#define LP_GPIO_INPUT
Value:
.owner = GPIO_OWNER_GPIO }
#define GPIO_OWNER_GPIO
Definition: lp_gpio.h:59

Definition at line 107 of file lp_gpio.h.

◆ LP_GPIO_INPUT_INVERT

#define LP_GPIO_INPUT_INVERT
Value:

Definition at line 111 of file lp_gpio.h.

◆ LP_GPIO_IRQ_EDGE

#define LP_GPIO_IRQ_EDGE
Value:
.owner = GPIO_OWNER_GPIO, \
.irqen = GPIO_IRQ_ENABLE }
#define GPIO_IRQ_ENABLE
Definition: lp_gpio.h:69
#define GPIO_IRQ_EDGE
Definition: lp_gpio.h:37

Definition at line 115 of file lp_gpio.h.

◆ LP_GPIO_IRQ_LEVEL

#define LP_GPIO_IRQ_LEVEL
Value:
.owner = GPIO_OWNER_GPIO, \
.irqen = GPIO_IRQ_ENABLE }
#define GPIO_IRQ_LEVEL
Definition: lp_gpio.h:38

Definition at line 120 of file lp_gpio.h.

◆ LP_GPIO_NATIVE

#define LP_GPIO_NATIVE    { .conf0 = GPIO_MODE_NATIVE }

Definition at line 89 of file lp_gpio.h.

◆ LP_GPIO_OUT_HIGH

#define LP_GPIO_OUT_HIGH
Value:
.owner = GPIO_OWNER_GPIO, \
.conf1 = GPIO_SENSE_DISABLE }
#define GPO_LEVEL_HIGH
Definition: lp_gpio.h:45
#define GPIO_DIR_OUTPUT
Definition: lp_gpio.h:31
#define GPIO_SENSE_DISABLE
Definition: lp_gpio.h:54

Definition at line 135 of file lp_gpio.h.

◆ LP_GPIO_OUT_LOW

#define LP_GPIO_OUT_LOW
Value:
.owner = GPIO_OWNER_GPIO, \
.conf1 = GPIO_SENSE_DISABLE }
#define GPO_LEVEL_LOW
Definition: lp_gpio.h:44

Definition at line 140 of file lp_gpio.h.

◆ LP_GPIO_PIRQ

#define LP_GPIO_PIRQ
Value:
.owner = GPIO_OWNER_GPIO, \
#define GPIO_PIRQ_APIC_ROUTE
Definition: lp_gpio.h:84

Definition at line 125 of file lp_gpio.h.

◆ LP_GPIO_PIRQ_INVERT

#define LP_GPIO_PIRQ_INVERT
Value:

Definition at line 130 of file lp_gpio.h.

◆ LP_GPIO_UNUSED

#define LP_GPIO_UNUSED
Value:
.owner = GPIO_OWNER_GPIO, \
.conf1 = GPIO_SENSE_DISABLE }

Definition at line 92 of file lp_gpio.h.

◆ MAX_GPIO_NUMBER

#define MAX_GPIO_NUMBER   94 /* zero based */

Definition at line 23 of file lp_gpio.h.

Function Documentation

◆ get_gpio()

int get_gpio ( int  gpio_num)

Definition at line 88 of file gpio.c.

References get_gpio_base(), GP_LVL, GP_LVL2, GP_LVL3, GPI_LEVEL, GPIO_CONFIG0, inl(), and MAX_GPIO_NUMBER.

Referenced by get_gpios().

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

◆ get_gpios()

unsigned int get_gpios ( const int *  gpio_num_array)

Definition at line 107 of file gpio.c.

References get_gpio(), and pch_lp_gpio_map::gpio.

Referenced by dock_present(), locate_spd(), mainboard_get_spd(), and variant_get_spd_index().

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

◆ gpio_is_native()

int gpio_is_native ( int  gpio_num)

Definition at line 147 of file gpio.c.

References config, get_gpio_base(), GPIO_CONFIG0, GPIO_USE_SEL, GPIO_USE_SEL2, GPIO_USE_SEL3, inl(), and MAX_GPIO_NUMBER.

Referenced by pch_enable_mphy(), and pcie_enable_clock_gating().

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

◆ set_gpio()

void set_gpio ( int  gpio_num,
int  value 
)

◆ setup_pch_lp_gpios()

void setup_pch_lp_gpios ( const struct pch_lp_gpio_map  map[])

Variable Documentation

◆ __packed

◆ mainboard_lp_gpio_map

const struct pch_lp_gpio_map mainboard_lp_gpio_map[]
extern

Definition at line 1 of file gpio.c.

Referenced by early_pch_init(), and mainboard_romstage_entry().