summaryrefslogtreecommitdiff
path: root/drivers/parisc/asp.c
diff options
context:
space:
mode:
authorMatthew Wilcox <willy@parisc-linux.org>2005-03-11 17:14:51 -0800
committerLinus Torvalds <torvalds@ppc970.osdl.org>2005-03-11 17:14:51 -0800
commitda32f974a05e11ec2f6c85cd01736b2965639b58 (patch)
treea07db26a75d8eee278987be1851c8d77c3ac9863 /drivers/parisc/asp.c
parent01c7a821e0f92091b5d6d5bf7101193569719dc3 (diff)
[PATCH] PA-RISC GSC interrupt fixes
Two problems occurred with the recent switch to virtual interrupt numbers. The first is that two devices (eg Lasi PS/2 mouse and keyboard) can share the same physical interrupt and should therefore share the same virtual interrupt rather than have a new one assigned to them. Fix this by initialising the global_irq array to NO_IRQ, then checking the array before assigning a new one. The second is that some GSC devices (eg HIL and EISA) can have two interrupts; one for normal interrupts and the other for NMI or high-priority. To fix this, I introduced an auxiliary IRQ to the parisc_device and fill it in in Asp and Wax. Signed-off-by: Matthew Wilcox <willy@parisc-linux.org> Signed-off-by: Linus Torvalds <torvalds@osdl.org>
Diffstat (limited to 'drivers/parisc/asp.c')
-rw-r--r--drivers/parisc/asp.c8
1 files changed, 8 insertions, 0 deletions
diff --git a/drivers/parisc/asp.c b/drivers/parisc/asp.c
index e351219f6fab..388609967133 100644
--- a/drivers/parisc/asp.c
+++ b/drivers/parisc/asp.c
@@ -53,6 +53,14 @@ static void asp_choose_irq(struct parisc_device *dev, void *ctrl)
}
gsc_asic_assign_irq(ctrl, irq, &dev->irq);
+
+ switch (dev->id.sversion) {
+ case 0x73: irq = 2; break; /* i8042 High-priority */
+ case 0x76: irq = 0; break; /* EISA BA */
+ default: return; /* Other */
+ }
+
+ gsc_asic_assign_irq(ctrl, irq, &dev->aux_irq);
}
/* There are two register ranges we're interested in. Interrupt /