Почему platform_get_irq не может получить irq в моем драйвере mailbox-altera? - PullRequest
0 голосов
/ 26 февраля 2019

Я новичок в разработке драйверов для Linux.Я сталкиваюсь с проблемой невозможности получить IRQ при попытке использовать драйвер mailbox-altera.На моей платформе DTS, связанной с почтовым ящиком, выглядит следующим образом:

    hps_bridges: bridge@0xc0000000 {
        compatible = "altr,bridge-17.1", "simple-bus";
        reg = <0xc0000000 0x20000000>,
            <0xff200000 0x00200000>;
        reg-names = "axi_h2f", "axi_h2f_lw";
        #address-cells = <2>;
        #size-cells = <1>;
        ranges = <0x00000000 0x00020000 0xc0020000 0x00004000>,
            <0x00000001 0x00000030 0xff200030 0x00000010>,
            <0x00000001 0x00000020 0xff200020 0x00000010>,
            <0x00000001 0x00000000 0xff200000 0x00000020>,
            <0x00000001 0x00010000 0xff210000 0x00004000>;
        ...

        bci_avalon_mailbox_simple_master_hps: mailbox@0x100000030 {
            compatible = "altr,bci_avalon_mailbox_simple-17.0", "altr,mailbox-1.0";
            reg = <0x00000001 0x00000030 0x00000010>;
            interrupt-parent = <&nios2_gen2_master>;
            interrupts = <11>;
            #mbox-cells = <1>;  /* embeddedsw.dts.params.#mbox-cells type NUMBER */
            linux,mailbox-name = "bci_avalon_mailbox_simple_master_hps";
        }; //end mailbox@0x100000030 (bci_avalon_mailbox_simple_master_hps)

        bci_avalon_mailbox_simple_hps_master: mailbox@0x100000020 {
            compatible = "altr,bci_avalon_mailbox_simple-17.0", "altr,mailbox-1.0";
            reg = <0x00000001 0x00000020 0x00000010>;
            interrupt-parent = <&nios2_gen2_master>;
            interrupts = <12>;
            #mbox-cells = <1>;  /* embeddedsw.dts.params.#mbox-cells type NUMBER */
            linux,mailbox-name = "bci_avalon_mailbox_simple_hps_master";
        }; //end mailbox@0x100000020 (bci_avalon_mailbox_simple_hps_master)
    ...
    }

Как я отследил, что я не могу получить irq - добавить журналы, как показано ниже: enter image description here

enter image description here

Мои журналы:

#insmod mailbox-altera.ko
dev->num_resources=1.
resource[0] type=512.
start=0xff200030, size=16.
dev->num_resources=1.
resource[0] type=512.
platform_get_irq return -6.
dev->num_resources=1.
resource[0] type=512.
start=0xff200020, size=16.
dev->num_resources=1.
resource[0] type=512.
platform_get_irq return -6.

, что указывает на то, что область памяти, которую я получаю в драйвере, точно соответствует описанию DTS, но platform_get_irq завершается ошибкой,потому что в устройстве почтового ящика есть только один ресурс (тип IORESOURCE_MEM).Как описание DTS, я не должен получить информацию о прерываниях = <11> или <12> в программном обеспечении, когда я запускаю драйвер?Что я должен сделать, чтобы получить ожидаемый IRQ ID?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...