linux kernel 中, X86架构中的GPIO,一般都会由EC来提供,正常情况下EC和南桥通过LPC总线通信,GPIO会注册成一个PCI设备,都会生成一个gpio_chip。注册进PCI总线中。用户可以操作GPIO的工作状态。
gpio_chip 结构体
|
struct gpio_chip{
const char*label;
struct device
*dev;
struct module
*owner;
int (*request)(struct gpio_chip*chip,
unsigned offset);
void (*free)(struct
gpio_chip *chip,
unsigned offset);
int (*direction_input)(struct gpio_chip*chip,
unsigned offset);// gpio 输入
int (*get)(struct gpio_chip*chip,
unsigned offset);
int (*direction_output)(struct gpio_chip*chip,
unsigned offset,int value);//gpio
输出
void (*set)(struct
gpio_chip *chip,
unsigned offset,int value);
int (*to_irq)(struct gpio_chip*chip,
unsigned offset);
void (*dbg_show)(struct seq_file*s,
struct gpio_chip*chip);
int base;
u16 ngpio;
char **names;
unsigned can_sleep:1;
unsigned exported:1;
enum gpio_direction
(*get_direction)(struct gpio_chip*chip,
unsigned offset);
};
|