Messages in this thread | | | Subject | Re: Interrupts not being raised. | Date | Fri, 12 Feb 1999 13:49:38 +0000 | From | David Woodhouse <> |
| |
OK, it gets an interrupt when I manually generate it with asm("int $42");
Applicom driver: $Id: ac.c,v 1.6 1999/02/05 16:11:55 dwmw2 Exp $ Applicom PCI board found at mem 0xf4101800, irq 10 Applicom interrupt on IRQ 10 occurred APPLICOM 0xF4101800 - 1 card(s) installed driver V2.8.0
Should I then assume that they're lying to me, and there _is_ some magic incantation to get their board to generate IRQs, or is there something in the PCI setup that I (and Greg) might have missed?
philb@gnu.org said: > Check that your card doesn't think it's in CardBus mode or anything > of that sort.
Is this something I can do with the generic PCI handling code? I don't have much of a spec for the card. The ISA card works OK, and I was told that the PCI one should be identical.
As you can see, I've tried a few strange things with PCI, in case it helped...
for (i=1; i<= MAX_PCI_DEVICE_NUM && !dev; i++) { dev = pci_find_device(PCI_VENDOR_ID_APPLICOM, i, NULL); }
if (dev) { /* unsigned short pcicmd; */ /* if (pci_read_config_word(dev, PCI_COMMAND, &pcicmd)) { */ /* printk("ac.o: error accessing PCI regs\n"); */ /* } */ /* else */ /* { */ /* printk("Setting IO capability and mastering\n"); */ /* pci_write_config_word(dev, PCI_COMMAND, pcicmd | PCI_COMMAND_I O); */ /* pci_set_master(dev); */ /* } */
mem = dev->base_address[0]; irq = dev->irq; printk(KERN_INFO "Applicom %s found at mem 0x%lx, irq %d\n",applic om_pci_devnames[dev->device-1], mem, irq); } // else return ENODEV; RamIO = (unsigned char *)ioremap(mem, LEN_RAM_IO * MAX_BOARD ); if (request_irq(irq, &ac_interrupt, SA_SHIRQ, "Applicom", &ac_open)) { printk("Could not allocate IRQ %d for Applicom device. Exiting.\ n", irq); iounmap((void *)RamIO); return -ENXIO; }
asm volatile ("int $42"); // raise IRQ10
---------------
How are interrupts handled on Intel UP machines? I always assumed that there was a single 'IRQ' line to the CPU, and the handler for that interrogated the PIC to find out which interrupt was raised. I can't find that code in the kernel though - it seems as if PIC interrupts are generating INT 0x20-0x2f directly. What am I missing?
---- ---- ---- David Woodhouse David.Woodhouse@mvhi.com Office: (+44) 1223 810302 Project Leader, Process Information Systems Mobile: (+44) 976 658355 Axiom (Cambridge) Ltd., Swaffham Bulbeck, Cambridge, CB5 0NA, UK. finger dwmw2@ferret.lmh.ox.ac.uk for PGP key.
- To unsubscribe from this list: send the line "unsubscribe linux-kernel" in the body of a message to majordomo@vger.rutgers.edu Please read the FAQ at http://www.tux.org/lkml/
| |