[問題] 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