[英]irq_to_desc function failing with IRQ number
我正在嘗試為IRQ第43行安裝IRQ處理程序,如下所示:
ret2 = request_irq(irq_no, handle_interrupt, IRQF_SHARED, DEVICE_NAME, &pdev->dev);
但是我繼續使rquest_irq失敗,輸入-22無效。 看完內核代碼后,我可以看到函數request_threaded_irq()在以下幾點以-EINVAL返回:
desc = irq_to_desc(irq);
if (!desc) {
printk(KERN_EMERG "%s:%d\n", __func__, __LINE__);
return -EINVAL;
}
誰能幫我理解irq_to_desc()函數返回NULL的原因是什么? 我在mips機器中使用內核版本4.11。
謝謝。
如果相應的IRQ號未映射到任何分配的IRQ描述符,則對irq_to_desc()
的調用可能會失敗。 如果啟用了CONFIG_SPARSE_IRQ
內核配置,則IRQ描述符將存儲在基數樹中。 否則,IRQ號和描述符之間將直接轉換。
通常在注冊中斷控制器驅動程序時分配IRQ描述符。 您可以參考中斷控制器的數據表或所用平台的數據表。
您可以檢查IRQ 43是否對您的中斷控制器有效。 可以從設備的設備樹節點中找到中斷控制器信息(在設備樹節點中查找interrupt-parent
)。
希望這可以幫助。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.