Я пытаюсь предоставить прерывания пользовательскому пространству с помощью драйвера uio_pdrv_genirq. Однако я могу создать экземпляр только 1 устройства в дереве устройств, все последующие устройства не проходят проверку. Система представляет собой zynq-7000, а версия ядра — 3.9.0-xilinx.
Дерево устройств:
/ {
...
amba@0 {
...
gic: intc@f8f01000 {
interrupt-controller;
compatible = "arm,cortex-a9-gic";
#interrupt-cells = <3>;
reg = <0xf8f01000 0x1000>,
<0xf8f00100 0x0100>;
};
interrupt_91@0x43C90000 {
compatible = "generic-uio";
reg = < 0x43C90000 0x1000 >;
interrupts = < 0 59 1 >; //add 32 to get the interrupt number
interrupt-parent = <&gic>;
} ;
interrupter_90@0x43CA0000 {
compatible = "generic-uio";
reg = < 0x43CA0000 0x1000 >;
interrupts = < 0 58 1 >; //add 32 to get the interrupt number
interrupt-parent = <&gic>;
} ;
...
};
вывод dmesg:
dmesg | grep uio
uio_pdrv_genirq 43ca0000.interrupter_90: unable to register uio device
uio_pdrv_genirq: probe of 43ca0000.interrupter_90 failed with error 1
конфигурация ядра:
CONFIG_UIO=y
# CONFIG_UIO_CIF is not set
CONFIG_UIO_PDRV_GENIRQ=y
# CONFIG_UIO_DMEM_GENIRQ is not set
# CONFIG_UIO_AEC is not set
# CONFIG_UIO_SERCOS3 is not set
# CONFIG_UIO_PCI_GENERIC is not set
# CONFIG_UIO_NETX is not set
Я уверен, что раньше работал над Zedboard, я понятия не имею, в чем здесь может быть проблема.