IRQCHIP_DECLARE:init函数未运行
我正在尝试在我正在开发的嵌入式ARM FPGA系统中使用Xilinx中断控制器驱动程序。 (https://github.com/torvalds/linux/blob/master/drivers/irqchip/irq-xilinx-intc.c)IRQCHIP_DECLARE:init函数未运行
在此驱动程序的到底是行:
IRQCHIP_DECLARE(xilinx_intc_xps, "xlnx,xps-intc-1.00.a", xilinx_intc_of_init);
我已经加入我的设备树的中断控制器的条目。
xil_intc: [email protected] {
compatible = "xlnx,xps-intc-1.00.a";
interrupt-parent = <&intc>;
interrupts = <0x0 0x1e 0x04>;
reg = <0x41810000 0x10000>;
interrupt-controller;
#interrupt-cells = <2>;
xlnx,kind-of-intr = <0x0>;
xlnx,num-intr-inputs = <0x1>;
};
但是,从我所知道的,xilinx_intc_of_init
功能永远不会启动时调用。我在函数的开头添加了一个pr_info
,但我从未看到它被调用。
这似乎表明了问题的唯一信息是:
[ 0.177772] irq: no irq domain found for /amba/[email protected] !
我已经成功地编写和编译其他设备驱动程序,添加设备树条目,并让他们加载并显示在dmesg
,但由于某种原因,我无法让这个工作。
对此进行调试的任何建议?
对于它的价值,我正在将驱动程序编译到内核模块中,使用modules_install
进行安装,并在启动时加入了一个条目以加载/etc/modules
。
编辑:我正在使用4.6内核。
我得出的结论是,从/ lib/modules加载irqchip驱动程序在启动过程中太晚了。
我结束了重建整个内核与修改后的配置,以包括此驱动程序,然后初始化工作正常。
我想教训是,IRQCHIP驱动程序必须编译到内核中,并且不像其他设备驱动程序那样作为内核模块工作?我找不到任何可以这样说的文档,但那是我观察到的行为。