summaryrefslogtreecommitdiff
path: root/sys/arch
diff options
context:
space:
mode:
authorTheo de Raadt <deraadt@cvs.openbsd.org>2001-04-23 02:40:52 +0000
committerTheo de Raadt <deraadt@cvs.openbsd.org>2001-04-23 02:40:52 +0000
commit2f18d058ec50e7b888effd21d8e10e6f98712293 (patch)
tree4d9aef3cf6725723b2d3affa7cea4e01cfa2bfbf /sys/arch
parentd562c485e90138def15237a8dd2ac5d74e06d75f (diff)
when we take a pci interrupt, upgrade it to level. but always ignore
changes which force to edge, because it appears that a lot of via bios do not contain a full list of level interrupts. when we set such an interrupt to edge, we spin and hang. i suggested this behaviour change, and this fix is by northpoint mickey.
Diffstat (limited to 'sys/arch')
-rw-r--r--sys/arch/i386/pci/via82c586.c5
1 files changed, 2 insertions, 3 deletions
diff --git a/sys/arch/i386/pci/via82c586.c b/sys/arch/i386/pci/via82c586.c
index acc26485817..35d7c9a4c56 100644
--- a/sys/arch/i386/pci/via82c586.c
+++ b/sys/arch/i386/pci/via82c586.c
@@ -1,4 +1,4 @@
-/* $OpenBSD: via82c586.c,v 1.6 2001/01/25 00:07:41 mickey Exp $ */
+/* $OpenBSD: via82c586.c,v 1.7 2001/04/23 02:40:51 deraadt Exp $ */
/* $NetBSD: via82c586.c,v 1.2 2000/07/18 11:24:09 soda Exp $ */
/*-
@@ -253,10 +253,9 @@ via82c586_set_trigger(v, irq, trigger)
reg = pci_conf_read(ph->ph_pc, ph->ph_tag,
VP3_CFG_PIRQ_REG);
shift = vp3_cfg_trigger_shift[i];
+ /* XXX we only upgrade the trigger here */
if (trigger == IST_LEVEL)
reg &= ~(VP3_CFG_TRIGGER_MASK << shift);
- else
- reg |= (VP3_CFG_TRIGGER_EDGE << shift);
pci_conf_write(ph->ph_pc, ph->ph_tag,
VP3_CFG_PIRQ_REG, reg);
break;