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