Commit 4d64c9f5 authored by Helge Deller's avatar Helge Deller Committed by Kyle McMartin

[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: default avatarHelge Deller <deller@parisc-linux.org>
Signed-off-by: default avatarKyle McMartin <kyle@parisc-linux.org>
parent a01c8cb1
...@@ -124,6 +124,7 @@ ...@@ -124,6 +124,7 @@
#define DINO_IRQS 11 /* bits 0-10 are architected */ #define DINO_IRQS 11 /* bits 0-10 are architected */
#define DINO_IRR_MASK 0x5ff /* only 10 bits are implemented */ #define DINO_IRR_MASK 0x5ff /* only 10 bits are implemented */
#define DINO_LOCAL_IRQS (DINO_IRQS+1)
#define DINO_MASK_IRQ(x) (1<<(x)) #define DINO_MASK_IRQ(x) (1<<(x))
...@@ -146,7 +147,7 @@ struct dino_device ...@@ -146,7 +147,7 @@ struct dino_device
unsigned long txn_addr; /* EIR addr to generate interrupt */ unsigned long txn_addr; /* EIR addr to generate interrupt */
u32 txn_data; /* EIR data assign to each dino */ u32 txn_data; /* EIR data assign to each dino */
u32 imr; /* IRQ's which are enabled */ u32 imr; /* IRQ's which are enabled */
int global_irq[12]; /* map IMR bit to global irq */ int global_irq[DINO_LOCAL_IRQS]; /* map IMR bit to global irq */
#ifdef DINO_DEBUG #ifdef DINO_DEBUG
unsigned int dino_irr0; /* save most recent IRQ line stat */ unsigned int dino_irr0; /* save most recent IRQ line stat */
#endif #endif
...@@ -297,7 +298,7 @@ struct pci_port_ops dino_port_ops = { ...@@ -297,7 +298,7 @@ struct pci_port_ops dino_port_ops = {
static void dino_disable_irq(unsigned int irq) static void dino_disable_irq(unsigned int irq)
{ {
struct dino_device *dino_dev = irq_desc[irq].handler_data; struct dino_device *dino_dev = irq_desc[irq].handler_data;
int local_irq = gsc_find_local_irq(irq, dino_dev->global_irq, irq); int local_irq = gsc_find_local_irq(irq, dino_dev->global_irq, DINO_LOCAL_IRQS);
DBG(KERN_WARNING "%s(0x%p, %d)\n", __FUNCTION__, dino_dev, irq); DBG(KERN_WARNING "%s(0x%p, %d)\n", __FUNCTION__, dino_dev, irq);
...@@ -309,7 +310,7 @@ static void dino_disable_irq(unsigned int irq) ...@@ -309,7 +310,7 @@ static void dino_disable_irq(unsigned int irq)
static void dino_enable_irq(unsigned int irq) static void dino_enable_irq(unsigned int irq)
{ {
struct dino_device *dino_dev = irq_desc[irq].handler_data; struct dino_device *dino_dev = irq_desc[irq].handler_data;
int local_irq = gsc_find_local_irq(irq, dino_dev->global_irq, irq); int local_irq = gsc_find_local_irq(irq, dino_dev->global_irq, DINO_LOCAL_IRQS);
u32 tmp; u32 tmp;
DBG(KERN_WARNING "%s(0x%p, %d)\n", __FUNCTION__, dino_dev, irq); DBG(KERN_WARNING "%s(0x%p, %d)\n", __FUNCTION__, dino_dev, irq);
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment