•函数原型:int __gpio_get_value(unsigned gpio) •作用:获取 gpio 电平值 (gpio 已为 input/output 状态)。 •参数: •gpio:gpio 编号。 •返回: •返回 gpio 对应的电平逻辑,1 表示高, 0 表示低。 4.2.6 __gpio_set_value •函数原型:void __gpio_set_value(unsigned gpio, in...
这不是巧合:可以将 .set_config() 分配给函数 gpiochip_generic_config(),这将导致调用 pinctrl_gpio_set_config(),最终在 GPIO 控制器“后面”调用引脚控制后端,通常更接近实际引脚。这样,引脚控制器可以管理下面列出的 GPIO 配置。 如果使用引脚控制器后端,GPIO 控制器或硬件描述需要提供“GPIO 范围”,将 GPIO...
在gpio_request中,首先判断该pin的有效性,即该pin的pin num不能超过最大的GPIO pin脚数,然后把FLAG_REQUESTED标记设为1,表示该pin已被申请使用,同时把label属性设置为sysfs,最后调用gpio chip注册时定义的request函数,由前面的硬件驱动分析可知,该函数直接返回一个0值。gpio_export()的执行过程和gpiochip_export比较...
• 函数原型:void __gpio_set_value(unsigned gpio, int value) • 作用:设置 gpio 电平值 (gpio 已为 input/output 状态)。 • 参数: • gpio:gpio 编号。 • value: 期望设置的 gpio 电平值,非 0 表示高, 0 表示低。 • 返回: • 无返回值 4.2.7 of_get_named_gpio • 函数原型:...
set_pull:设置当前GPIO上拉配置; set_config:设置GPIO配置; get_config:获取GPIO配置; 该结构体的主要作用是提供每个GPIO bank的配置和控制函数的定义,为操作系统提供接口以便可以对GPIO进行读写操作。 需要注意的是,struct samsung_gpio_cfg 是在平台特定的gpio芯片驱动程序中使用的结构体,它们利用这些函数,通过配置...
• 与 gpio 子系统的交互 • 实现 pin 中断 2.2 相关术语介绍 表2-1: Pinctrl 模块相关术语介绍 2.3 总体框架 Sunxi Pinctrl 驱动模块的框架如下图所示,整个驱动模块可以分成 4 个部分:pinctrl api、pinctrl common frame、sunxi pinctrl driver,以及 board configuration。(图中最上面一层 device driver 表示...
gpio 和 pinctrl 子系统在内核里的使用率非常高,和嵌入式产品的关联非常大。从这两个子系统开始学习驱动开发是个不错的入门选择。
legacy API:integer-based GPIO interface,形式为 gpio_xxx(),例如void gpio_set_value(unsigned gpio, int value),不推荐使用该 API; 推荐API: descriptor-based GPIO interface,形式为 gpiod_xxx(),例如void gpiod_set_value(struct gpio_desc *desc, int value),新添加的驱动代码一律采用这套 API。
3.2.1 device tree 对 gpio 控制器的通用配置 在kernel/{KERNEL}/arch/arm64/boot/dts/sunxi/sun*-pinctrl.dtsi* 文件中(Linux5.4直接放在sun.dtsi 中),配置了该 SoC 的 pinctrl 控制器的通用配置信息,一般不建议修改,有 pinctrl 驱动维护者维护。目前,在 sunxi 平台,我们根据电源域,注册两个 pinctrl 设备...