[问题] Multiple interrupt handling 问题

楼主: howard6066 (汐止最后一股清流)   2023-11-20 21:56:07
各位版友好
描述一下我的问题
我在driver透过CPU GPIO注册一个IRQ, 当有中断来 会在handling处理
架构是CPU GPIO pin接到CPLD在接到Dev A,B,C的中断
流程是 当CPU收到中断后 再透过CPLD I2C Register去看是哪个Device发的中断
现在我只要收Dev A的中断 Dev B,C设定不发中断 有先Mask掉B,C的中断
但是很奇怪 我在IRQ都没看到有中断发生
手动测试GPIO都会收到中断 但挂上driver就收不到了
我理解为只要CPU收到中断, 应该会就近到handing
然后我在handing判断CPLD哪个Device就好
会跟Multiple device 中断有关系吗? single device 就会收到?
我code大概这样写
gpio_request(gpio_pin)
gpio_to_irq(gpio_pin)
request_irq(IRQF_TRIGGER_FALLING | IRQF_SHARED) or
request_threaded_irq(IRQF_TRIGGER_FALLING | IRQF_SHARED)
系统架构 如下
GPIO_Pin I2C
CPU
作者: dces4212 (flawless)   2023-11-20 22:58:00
你说的“手动测试会收到”可以再说详细点吗?没注册irq也收得到?
楼主: howard6066 (汐止最后一股清流)   2023-11-20 23:22:00
就是在/sys/class 把gpio开起来 设成inputDev A发中断 就会变成pull low状态这样
作者: leolarrel (真.粽子无双)   2023-11-21 09:37:00
gpio driver 有在dts 中宣告 #interrupt-controller 吗你可能要先好好研究kernel的irq domain,gpio subsystem
楼主: howard6066 (汐止最后一股清流)   2023-11-21 10:55:00
CPU intel的 没有dts, call intel gpio driver
作者: leolarrel (真.粽子无双)   2023-11-21 11:31:00
那只能往ACPI & 你说的那个intel gpio 的code , 对照kernel 的irq doman 的观念下去debug.我手上没code没得debug另外,手边没电路图不知道你的设计,也不知道你的intelcpu 是哪一颗.一般消费型intel cpu 有自己的中断控制硬件,gpio 我猜那个gpio是不是要接到cpu 的硬件中断控制器那边?
楼主: howard6066 (汐止最后一股清流)   2023-11-21 12:20:00
这位大大谢谢 好不想debug driver…Cpu是atom c3538, cpu 同一根gpio pin去接其他硬件call pinctrl-intel.c, 奇怪的是我irq都长出来了 但没收到中断 中间init过程 也没有error
作者: leolarrel (真.粽子无双)   2023-11-22 09:39:00
查了这个cpu , 他应该没错也是走APIC 概念的中断控制器那么你就要去确定这根GPIO 是否可以设定成"中断触发"模式,或这跟GPIO 是否有纳入APIC 控制器的管辖,因如果连APIC 都无法知道某跟硬件pin有发出中断的话,你软件再怎么神通都没用.
楼主: howard6066 (汐止最后一股清流)   2023-11-22 12:17:00
更新一下 问题解了 bios那边要设定gpio irq不过bios不是我负责的 细节不太清楚之前都是用arm base的平台 我忘记了uboot dev tree要先设定gpio irq相关吗? 不然driver挂起来 会没中断
作者: leolarrel (真.粽子无双)   2023-11-22 14:33:00
uboot 不用,进 kernel 用dts 控管及可
楼主: howard6066 (汐止最后一股清流)   2023-11-22 19:44:00
我看之前用的Nxp ls1046a 在uboot dts有GIC IRQ, gpiGpio irq相关定义这个是用在uboot而已吗 跟kernel分开来看?应该是不会影响到driver? 再次感谢大大
作者: leolarrel (真.粽子无双)   2023-11-23 12:30:00
这个是用在uboot而已吗 跟kernel分开来看? <-是的

Links booklink

Contact Us: admin [ a t ] ucptt.com