gpio_chip此数据结构,很多结构体指针,此结构是为了抽象GPIO的所有操作。 gpio_chip的抽象,其实就是对GPIO一组bank的抽象,通常在硬件上,一个芯片对于IO口来说,分为了很多组bank,每个bank分成了N组gpio,比如Bst a1000芯片,gpio_chip的抽象就是一个synopsys gpio控制器,控制四组bank,每组bank控制32个gpio。 gpio_de...
bgpio_chip结构体有个gc成员变量,gc是个gpio_chip结构体类型的变量。gpio_chip结构体是抽象出来的GPIO控制器,gpio_chip结构体如下所示(有缩减): 示例代码45.2.2.9 gpio_chip结构体 74struct gpio_chip { 75constchar *label; 76struct device *dev; 77struct module *owner; 78struct list_head list; 79 80...
分配、设置、注册gpioc_chip结构体,示例:drivers\gpio\gpio-74x164.c
staticinlineintgpiochip_add(structgpio_chip *chip)//注册一个gpio_chip结构体,它描述了一组GPIO引脚及其操作函数。voidgpiochip_remove(structgpio_chip *chip)//移除之前注册的gpio_chip。gpiochip_line_config//配置gpio_chip中的特定引脚。gpiochip_request_own//请求对gpio_chip中的引脚的所有权。gpiochip_r...
int gpiochip_add(const struct gpio_chip *chip); void gpiochip_remove(const struct gpio_chip *chip); ``` gpiochip_add`函数用于向内核注册GPIO芯片。它接受一个`gpio_chip`结构体指针作为参数,并将该结构体注册到内核的GPIO芯片列表中。如果注册成功,函数返回0;否则返回一个负值表示错误。 `gpiochip_rem...
3、gpio 相关的结构体,我们说过 pinctrl 子系统和 gpio 子系统是耦合的,我们从结构体就可以看得出来,它包含了最重要的结构体 gpio_chip。 我们已经阐述了pinctrl 子系统主要的数据结构,后面讲述函数调用关系。 二、函数调用逻辑 在文件 drivers/pinctrl/freescale/pinctrl-imx6ul.c 中有如下内容: ...
在这个架构中,每个GPIO控制器被封装为一个“gpio_chip”结构体,此结构体中包含了每个控制器的通用信息: --确定GPIO方向的方法 --存取GPIO值的方法 --声明方法是否休眠的flag --可选的debugfs dump方法(展现附加的状态如上拉配置等) --用于诊断目的的标签 ...
int gpiochip_add(struct gpio_chip *chip) 这是bsp 工程师比较关心的 api。 在gpio 子系统中,SoC 上的每一个 gpio bank 都会被认为是一个 gpio controller,每一个 gpio controller 都由一个 struct gpio_chip 来描述,bsp 工程师的核心工作就是填充该结构体。
Controller Drivers:gpio_chip 控制器驱动:gpio_chip 在这个架构中,每个GPIO控制器被封装为一个“gpio_chip”结构体,此结构体中包含了每个控制器的通用信息: --确定GPIO方向的方法 --存取GPIO值的方法 --声明方法是否休眠的flag --可选的debugfs dump方法(展现附加的状态如上拉配置等) ...
(1)先在开发板的/sys/class/gpio目录下,找到各个gpiochipXXX目录: # cd /sys/class/gpio # ls export gpiochip0 gpiochip128 gpiochip32 gpiochip64 gpiochip96 unexport (2)然后进入某个gpiochip目录,查看文件label的内容 (3)根据label的内容对比设备树 ...