11 #define MAX_GPIO_NUMBER 75
14 #define GPIO_BASE 0x48
18 #ifdef __SIMPLE_DEVICE__
49 if (
gpio->set1.direction)
55 if (
gpio->set1.invert)
65 if (
gpio->set2.direction)
77 if (
gpio->set3.direction)
97 index = gpio_num / 32;
100 return (
inl(gpio_base + gpio_reg_offsets[index]) >> bit) & 1;
110 unsigned int bitmask = 1;
111 unsigned int vector = 0;
114 ((
gpio = *gpio_num_array++) != -1)) {
127 static const int gpio_reg_offsets[] = {
137 index = gpio_num / 32;
140 config =
inl(gpio_base + gpio_reg_offsets[index]);
144 outl(
config, gpio_base + gpio_reg_offsets[index]);
149 static const int gpio_reg_offsets[] = {
159 index = gpio_num / 32;
162 config =
inl(gpio_base + gpio_reg_offsets[index]);
163 return !(
config & (1 << bit));
void outl(u32 val, u16 port)
DEVTREE_CONST struct device * pcidev_on_root(uint8_t dev, uint8_t fn)
static __always_inline u16 pci_read_config16(const struct device *dev, u16 reg)
#define PCI_DEV(SEGBUS, DEV, FN)
void setup_pch_gpios(const struct pch_gpio_map *gpio)
unsigned int get_gpios(const int *gpio_num_array)
int gpio_is_native(int gpio_num)
void set_gpio(int gpio_num, int value)
static u16 get_gpio_base(void)
int get_gpio(int gpio_num)