Vorneweg bin ich auf der Suche nach einer Web-Seite oder Doku im HTML-Format, auf der alle Befehle der Kernel-API aufgelistet und erklärt werden. UND es sollte vor allem aktuell sein. Ich habe in den letzten Wochen ziemlich oft an Problemen verzweifelt, die sich dadurch ergeben haben, daß die Doku nicht mehr ganz aktuell war.
Dann die erst konkrete Frage:
Ich habe versucht mit folgendem Code aus den PCI-Registern den IRQ zu erfragen:
Code: Alles auswählen
result = pci_read_config_byte(dev, PCI_INTERRUPT_LINE, &myirq);
Diese Variable habe ich aber nie initialisiert. Ich habe für meinen PCI-Karten-Treiber folgende Struktur aufgebaut.
Code: Alles auswählen
struct pci_driver me1400_driver = {
.name = ME1400_NAME,
.id_table = me1400_pci_table,
.probe = me1400_probe,
.remove = me1400_remove
};
Code: Alles auswählen
static int me1400_probe (struct pci_dev *dev, const struct pci_device_id *id)
Dann die Erklärung, wie man der parallelen Schnittstelle einen IRQ herauskitzel kann:
Code: Alles auswählen
unsigned long mask;
mask = probe_irq_on();
outb_p(0x10,short_base+2); /* enable reporting */
outb_p(0x00,short_base); /* clear the bit */
outb_p(0xFF,short_base); /* set the bit: interrupt! */
outb_p(0x00,short_base+2); /* disable reporting */
udelay(5); /* give it some time */
short_irq = probe_irq_off(mask);
Dann warum eine 16 auf die Adresse der Schnittstelle + 2? "short_base" ist doch die Adresse des Ports, an dem der Interrupt ausgelöst werden soll. Und warum wird dadurch die Mitteilung des IRQ erst möglich?
Wenn sich da jemand erbahmen könnte
Vielen Dank
Gruss Christian