diff options
author | Matthew Wilcox <willy@parisc-linux.org> | 2005-03-11 17:14:51 -0800 |
---|---|---|
committer | Linus Torvalds <torvalds@ppc970.osdl.org> | 2005-03-11 17:14:51 -0800 |
commit | da32f974a05e11ec2f6c85cd01736b2965639b58 (patch) | |
tree | a07db26a75d8eee278987be1851c8d77c3ac9863 /drivers/parisc/asp.c | |
parent | 01c7a821e0f92091b5d6d5bf7101193569719dc3 (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.c | 8 |
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 / |