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/input | |
| 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/input')
| -rw-r--r-- | drivers/input/serio/hp_sdc.c | 9 |
1 files changed, 4 insertions, 5 deletions
diff --git a/drivers/input/serio/hp_sdc.c b/drivers/input/serio/hp_sdc.c index 4110d5254e..e011f83fa5 100644 --- a/drivers/input/serio/hp_sdc.c +++ b/drivers/input/serio/hp_sdc.c @@ -874,11 +874,10 @@ static int __init hp_sdc_init_hppa(struct parisc_device *d) hp_sdc.dev = d; hp_sdc.irq = d->irq; - /* TODO: Is NMI == IRQ - 1 all cases, or is there a way to query? */ - hp_sdc.nmi = d->irq - 1; - hp_sdc.base_io = (unsigned long) d->hpa; - hp_sdc.data_io = (unsigned long) d->hpa + 0x800; - hp_sdc.status_io = (unsigned long) d->hpa + 0x801; + hp_sdc.nmi = d->aux_irq; + hp_sdc.base_io = d->hpa; + hp_sdc.data_io = d->hpa + 0x800; + hp_sdc.status_io = d->hpa + 0x801; return hp_sdc_init(); } |
