往linux内核注册中断,request_irq返回值-22,不能注册成功

zynq上定义了一个gpio用作dipsw输入,并且带有中断。
运用到DTS,在systom-top.dts中是这样描述中断信息的。
interrupt-parent = <&intc>;
interrupts = <0 29 4>;

驱动中:
irqNumber = platform_get_resource(pdev, IORESOURCE_IRQ, 1);
if (!irqNumber) {
printk("no IRQ found\n");
return -1;
}
printk("irqNumber = %d\n",irqNumber->start);
ccddev->irq = irqNumber->start;
printk("ccddev->irq = %d\n",ccddev->irq);
//这边从DTS得到的中断号是 164=irqNumber->start
//init irq
result = request_irq(a,
(irq_handler_t) ebbgpio_irq_handler,
0,
DRIVER_NAME,
ccddev);
printk(KERN_INFO "GPIO_TEST: The interrupt request result is: %d\n", result);
//request_irq 的返回值一直为-22

第1个回答  2018-03-16
回复 xidianunix 这个取决于你的内核版本。追问

我的内核版本是Linux version 4.6.0-xilinx。
你的意思是,有的内核可以执行成功?
我知道的是request_irq的第三个参数对于不同的内核是不一样的。

本回答被网友采纳
第2个回答  2019-10-05
你好,我的内核是4.4.0-21,注册中断的时候程序里使用了#include<interrupt.h>,我在使用gcc编译的时候已经指定内核路径了,但是终端还是提示各种头文件找不到例如asm/xxx.h等,请问你是怎么注册中断的?求解答,向大佬致敬。

相关了解……

你可能感兴趣的内容

本站内容来自于网友发表,不代表本站立场,仅表示其个人看法,不对其真实性、正确性、有效性作任何的担保
相关事宜请发邮件给我们
© 非常风气网