PCIe PIC_INTERRUPT_PIN (0x3c) равно 0 - PullRequest
       22

PCIe PIC_INTERRUPT_PIN (0x3c) равно 0

0 голосов
/ 06 сентября 2018

Я пишу свой драйвер pcie для нестандартной платы. Я собираюсь использовать прерывание.

if(request_irq(dev->irq, pci_dma_irq, IRQF_SHARED | IRQF_TRIGGER_HIGH, 
            "PCIe sol_dma", dev)){
    unit_err("request irq %d\n", dev->irq);
   ret = 1;
}

# cat / proc / interrutps

           CPU0       CPU1       
 16:          0          0   OpenPIC    16 Level     [EDAC] L2 err
 19:          2          0   OpenPIC    19 Level     fsl-lbc
 20:          0          0   OpenPIC    20 Level     fsldma-chan
 21:          0          0   OpenPIC    21 Level     fsldma-chan
 22:          0          0   OpenPIC    22 Level     fsldma-chan
 23:          0          0   OpenPIC    23 Level     fsldma-chan
 24:          0          0   OpenPIC    24 Level     [PCI] PME, PCIe PME, [EDAC] PCI err
 25:          0          0   OpenPIC     8 Level     PCIe sol_dma
 26:    4174986          0   OpenPIC     3 Level     phy_interrupt
 29:          0          0   OpenPIC    29 Level     eth0_g0_tx   
 30:          0         32   OpenPIC    30 Level     eth0_g0_rx
 34:          0          0   OpenPIC    34 Level     eth0_g0_er

Обработчик прерываний не вызывается. Регистр PCI_INTERRUPT_LINE (0x3c) равен 0. В ОРЕЛЛИ главе 12

Ко времени загрузки Linux, микропрограмма компьютера уже присвоила уникальный номер прерывания устройство, и драйвер просто должен использовать его. Номер прерывания сохраняется в конфигурации регистр рациона 60 ( PCI_INTERRUPT_LINE ), ширина которого составляет один байт.

Но у меня нет BIOS, только u-boot и dts. Как настроить регистр PCI_INTERRUPT_LINE во время загрузки?

Ответы [ 2 ]

0 голосов
/ 07 сентября 2018

проблема была в дтб. Карта прерываний интерфейса pci для моего процессора имела неверное значение для отображения. Я исправил это как в документации. Это работает сейчас.

0 голосов
/ 07 сентября 2018

Вам не нужно устанавливать это. Это не влияет на устройство. Для BIOS это старый способ сообщить драйверу ОС, как он настроил прерывание.

...