各位版友好
描述一下我的问题
我在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