我想使用GPIOH_4做一个外部的引脚中断,通过低电平触发中断,但是一直失败。我查看过这个Topic
How to request GPIOH_5 as INT mode
但是下面在topic中使用的h文件我没有找到。
#include <asm/irq.h>
#include <linux/amlogic/aml_gpio_consumer.h>
#include <linux/amlogic/gpio-amlogic.h>
#include <linux/amlogic/iomap.h>
我自己的驱动代码如下
myirq_node = of_find_node_by_path ("/myirq");
gpio_num = of_get_named_gpio (myirq_node,"gpios",0);
gpio_request (gpio_num,"myirq_pin");
gpio_direction_input (gpio_num);
irq_num = gpio_to_irq (gpio_num);
debug的时候发现,irq_num是-6。
设备树代码如下
myirq {
compatible = "myirq";
gpios = <&gpio GPIOH_4 GPIO_ACTIVE_LOW>;
interrupt-parent = <&gpio_intc>;
interrupts = <99 IRQ_TYPE_LEVEL_LOW>;
};
我看A311D的芯片手册,好像VIM3只有8个GPIO的外部中断,这8个外部中断可以连到任何一个GPIO引脚,在How to request GPIOH_5 as INT mode中有一个AML_GPIO_IRQ的函数,我猜应该就是完成对GPIO外部中断的分配任务,但是由于找不到相应的头文件,所以不知道如何配置。设备树的写法我也不是很清楚,按照How to request GPIOH_5 as INT mode中,我把gpios = <&gpio xxx xxx>换成interrup-pin = <&gpio xxx xxx>,驱动代码也进行相应更改后,irq_num仍然是-6.
我的系统是Ubuntu mainline。