[PARISC] Introduce DINO_LOCAL_IRQS and use it for gsc_find_local_irq

Fix dino by using DINO_LOCAL_IRQS as the limit for gsc_find_local_irq()
instead of the irq itself.

Signed-off-by: Helge Deller <deller@parisc-linux.org>
Signed-off-by: Kyle McMartin <kyle@parisc-linux.org>

authored by

Helge Deller and committed by
Kyle McMartin
4d64c9f5 a01c8cb1

+4 -3
+4 -3
drivers/parisc/dino.c
··· 124 125 #define DINO_IRQS 11 /* bits 0-10 are architected */ 126 #define DINO_IRR_MASK 0x5ff /* only 10 bits are implemented */ 127 128 #define DINO_MASK_IRQ(x) (1<<(x)) 129 ··· 147 unsigned long txn_addr; /* EIR addr to generate interrupt */ 148 u32 txn_data; /* EIR data assign to each dino */ 149 u32 imr; /* IRQ's which are enabled */ 150 - int global_irq[12]; /* map IMR bit to global irq */ 151 #ifdef DINO_DEBUG 152 unsigned int dino_irr0; /* save most recent IRQ line stat */ 153 #endif ··· 298 static void dino_disable_irq(unsigned int irq) 299 { 300 struct dino_device *dino_dev = irq_desc[irq].handler_data; 301 - int local_irq = gsc_find_local_irq(irq, dino_dev->global_irq, irq); 302 303 DBG(KERN_WARNING "%s(0x%p, %d)\n", __FUNCTION__, dino_dev, irq); 304 ··· 310 static void dino_enable_irq(unsigned int irq) 311 { 312 struct dino_device *dino_dev = irq_desc[irq].handler_data; 313 - int local_irq = gsc_find_local_irq(irq, dino_dev->global_irq, irq); 314 u32 tmp; 315 316 DBG(KERN_WARNING "%s(0x%p, %d)\n", __FUNCTION__, dino_dev, irq);
··· 124 125 #define DINO_IRQS 11 /* bits 0-10 are architected */ 126 #define DINO_IRR_MASK 0x5ff /* only 10 bits are implemented */ 127 + #define DINO_LOCAL_IRQS (DINO_IRQS+1) 128 129 #define DINO_MASK_IRQ(x) (1<<(x)) 130 ··· 146 unsigned long txn_addr; /* EIR addr to generate interrupt */ 147 u32 txn_data; /* EIR data assign to each dino */ 148 u32 imr; /* IRQ's which are enabled */ 149 + int global_irq[DINO_LOCAL_IRQS]; /* map IMR bit to global irq */ 150 #ifdef DINO_DEBUG 151 unsigned int dino_irr0; /* save most recent IRQ line stat */ 152 #endif ··· 297 static void dino_disable_irq(unsigned int irq) 298 { 299 struct dino_device *dino_dev = irq_desc[irq].handler_data; 300 + int local_irq = gsc_find_local_irq(irq, dino_dev->global_irq, DINO_LOCAL_IRQS); 301 302 DBG(KERN_WARNING "%s(0x%p, %d)\n", __FUNCTION__, dino_dev, irq); 303 ··· 309 static void dino_enable_irq(unsigned int irq) 310 { 311 struct dino_device *dino_dev = irq_desc[irq].handler_data; 312 + int local_irq = gsc_find_local_irq(irq, dino_dev->global_irq, DINO_LOCAL_IRQS); 313 u32 tmp; 314 315 DBG(KERN_WARNING "%s(0x%p, %d)\n", __FUNCTION__, dino_dev, irq);