diff options
author | Miod Vallat <miod@cvs.openbsd.org> | 2015-07-18 00:27:45 +0000 |
---|---|---|
committer | Miod Vallat <miod@cvs.openbsd.org> | 2015-07-18 00:27:45 +0000 |
commit | e1aee1367f5cd748907c8b8e65a64c9c57cf769d (patch) | |
tree | b64dad10714350586df55fab83a05122a7a069d4 /sys | |
parent | fca86046b44e508f5e593794a2c37fe37be35d82 (diff) |
Correctly set up interrupts; now the kernel no longer get stuck with an SCSI
interrupt storm at the end of autoconf.
Diffstat (limited to 'sys')
-rw-r--r-- | sys/arch/alpha/pci/pci_alphabook1.c | 19 |
1 files changed, 11 insertions, 8 deletions
diff --git a/sys/arch/alpha/pci/pci_alphabook1.c b/sys/arch/alpha/pci/pci_alphabook1.c index 7a036db50d8..832b71828b9 100644 --- a/sys/arch/alpha/pci/pci_alphabook1.c +++ b/sys/arch/alpha/pci/pci_alphabook1.c @@ -143,10 +143,9 @@ dec_alphabook1_intr_map(struct pci_attach_args *pa, pci_decompose_tag(pc, bustag, NULL, &device, NULL); /* - * There is only one interrupting PCI device on the AlphaBook: an - * NCR SCSI at device 6. Devices 7 and 8 are the SIO and a - * Cirrus PD6729 PCMCIA controller. There are no option slots - * available. + * There are only two interrupting PCI devices on the AlphaBook: + * the SCSI and PCMCIA controllers. The other PCI device is the + * SIO, and there are no option slots available. * * NOTE! Apparently, there was a later AlphaBook which uses * a different interrupt scheme, and has a built-in Tulip Ethernet @@ -157,10 +156,10 @@ dec_alphabook1_intr_map(struct pci_attach_args *pa, case 6: /* NCR SCSI */ irq = 14; break; - + case 8: /* Cirrus CL-PD6729 */ + irq = 15; + break; default: - printf("dec_alphabook1_intr_map: weird device number %d\n", - device); return 1; } @@ -184,7 +183,11 @@ void * dec_alphabook1_intr_establish(void *lcv, pci_intr_handle_t ih, int level, int (*func)(void *), void *arg, const char *name) { - return sio_intr_establish(NULL /*XXX*/, ih, IST_LEVEL, level, func, + /* + * PCI interrupts on that platform are ISA interrupts in disguise, + * and are edge- rather than level-triggered. + */ + return sio_intr_establish(NULL /*XXX*/, ih, IST_EDGE, level, func, arg, name); } |