Forum Discussion
Altera_Forum
Honored Contributor
13 years agoHi,
Once more thanks a lot for your advice about Linux Driver Programming. Rigth now how to deal with Interrupt Service Routine because I have 8 MSI Source. Should I write 8 ISR? Here is a piece of my code --- Quote Start --- ------------------------------------------------------------------------------------------ /* Interrupt Handler */ void LATTICE_pci_intr_handler (int irq, void *dev_id, struct pt_regs *regs) { unsigned long intr_flag; /* Lese Interrupt-Flag, um zu pruefen, ob das LATTICE PCI-Board ueberhaupt */ /* Quelle des Interrupts ist. (Moeglicherweise Shared Interrupt!) */ intr_flag = readl (LATTICE_pci_dev.virt_addr + LATTICE_INTR_REG_ADDR) & 1; if (intr_flag) return; /* Kein Interrupt durch das LATTICE PCI-Board */ /* Hier beginnt die eigentliche Interrupt-Bearbeitung... */ printk ("LATTICE PCI-Board: Interrupt!\n"); } ........ /* Interrupt-Handler registrieren */ if (request_irq (LATTICE_pci_dev.intr_line, LATTICE_pci_intr_handler, SA_SHIRQ, LATTICE_PCI_NAME, &LATTICE_pci_dev)) { printk ("LATTICE PCI-Board: can't get assigned IRQ %d.\n", LATTICE_pci_dev.intr_line); result = -EIO; goto exit1; } --- Quote End ---