parisc: Fix interrupt routing for C8000 serial ports

We can't use dev->mod_index for selecting the interrupt routing entry,
because it's not an index into interrupt routing table. It will be even
wrong on a machine with 2 CPUs (4 cores). But all needed information is
contained in the PAT entries for the serial ports. mod[0] contains the
iosapic address and mod_info has some indications for the interrupt
input (at least it looks like it). This patch implements the searching
for the right iosapic and uses this interrupt input information.

Signed-off-by: Thomas Bogendoerfer <[email protected]>
Cc: <[email protected]> # 3.10
Signed-off-by: Helge Deller <[email protected]>
This commit is contained in:
Thomas Bogendoerfer 2013-07-30 02:02:16 +02:00 • committed by Helge Deller
commit dd5e6d6a3d
4 changed files with 32 additions and 13 deletions

View file

@ -31,9 +31,8 @@ static int __init serial_init_chip(struct parisc_device *dev)
int err;
#ifdef CONFIG_64BIT
extern int iosapic_serial_irq(int cellnum);
if (!dev->irq && (dev->id.sversion == 0xad))
dev->irq = iosapic_serial_irq(dev->mod_index-1);
dev->irq = iosapic_serial_irq(dev);
#endif
if (!dev->irq) {