int gpiod_to_irq(const struct gpio_desc *desc); (2)头文件: #include <linux/gpio/consumer.h> (3)参数: desc:指向 GPIO 描述符的指针。 (4)函数功能: gpiod_to_irq 函数用于将 GPIO 描述符转换为中断号。 (5)返回值: 返回值为整型,表示中断号。 如果成功将GPIO描述符转换为中断号,返回值为大于...
gpiod_set_array_value_c gpiod_set_debounce gpiod_set_raw_array_val gpiod_set_raw_array_val gpiod_set_raw_value gpiod_set_raw_value_can gpiod_set_value gpiod_set_value_canslee gpiod_to_irq gpiod_unexport 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. ...
任何IRQ使用者都可以从任何irqchip请求IRQ,即使它是一个组合的GPIO+IRQ驱动程序。基本前提是gpio_chip和irq_chip是正交的,它们独立地提供它们的服务。 gpiod_to_irq()只是一个方便的函数,用于找出特定GPIO线的IRQ,不应该依赖于在使用IRQ之前已经调用了它。 始终在来自GPIO和irq_chip API的相应回调中准备硬件并使...
Pinctrl方式,该方式最终是采用Pinctrl子系统来实现各项功能的; 采用GPIO子系统接口的方式,该方式其实有两种,分别是legacy和gpio deion的方式。但目前的内核中,legacy内部会调用gpio deion的方式,后面内容中,我会以legacy的方式来说明使用方法。 Pinctrl控制引脚方式 下面,我以高通平台Pinctrl的方式来说明其代码和设备树的...
to_irq 是一个可选钩子,用于提供GPIO到IRQ的映射。当您想要执行gpio_to_irq()或gpiod_to_irq()函数时,就会调用这个函数。这个实现可能不会休眠。 base 标识该芯片处理的第一个GPIO号;或者,如果注册时为负数,内核将自动(动态)分配一个。 ngpio 是这个控制器提供的gpio数;它从 base 开始到 (base + ngpio...
canslee gpiod_is_active_low gpiod_put gpiod_put_array gpiod_set_array_value gpiod_set_array_value_c gpiod_set_debounce gpiod_set_raw_array_val gpiod_set_raw_array_val gpiod_set_raw_value gpiod_set_raw_value_can gpiod_set_value gpiod_set_value_canslee gpiod_to_irq gpiod_un...
gpio_request--->gpiod_request---> gpiod_request_commit--->chip->request(系统启动时设置为gpopchip_generic_request) --->pinctrl_gpio_request 该调用关系从GPIO子系统的API函数gpio_request最后调用了Pinctrl子系统的函数pinctrl_gpio_request,这种调用关系,也证实了Pinctrl和GPIO子系统的关系。对于其他接口,如...
green = gpiod_get_index(dev,"led",1, GPIOD_OUT_LOW); btn1 = gpiod_get(dev,"btn1", GPIOD_IN); btn2 = gpiod_get(dev,"btn2", GPIOD_IN);// 获得中断号irq = gpiod_to_irq(btn1);// 申请中断retval = request_threaded_irq(irq,NULL, ...
int gpio_to_irq(unsigned gpio); /* map IRQ numbers to GPIO numbers */ int irq_to_gpio(unsigned irq); 1. 2. 3. 4. 返回负数表示有错误 可以将gpio_to_irq()和request_irq()和free_irq()函数联合使用,也可以将irq_to_gpio()和gpio_get_value()函数联合使用; ...
现在内核里面多了 gpiod 的来控制 gpio 口,相对于原来的形式,使用 gpiod 的好处是我们申请后不进行 free 也没有什么问题。但是你要是使用原来的方式后,一定要记得释放。不释放的话可能会有问题。 #旧的 GPIO 使用实例 DTS 文件 det-gpios = <&gpio3 RK_PA6 IRQ_TYPE_EDGE_BOTH>; ...