aboutsummaryrefslogtreecommitdiffstats
path: root/drivers/parisc/dino.c
diff options
context:
space:
mode:
authorHelge Deller <deller@parisc-linux.org>2006-01-10 20:47:54 -0500
committerKyle McMartin <kyle@duet.int.mcmartin.ca>2006-01-10 21:51:39 -0500
commit4d64c9f58e618b1bdbc91cb071e6c8d90f43d620 (patch)
treecdfd90e3328934260227207cdcb2904218524a6c /drivers/parisc/dino.c
parenta01c8cb126cb5f5a592f01b08ff8859508c75ba1 (diff)
[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>
Diffstat (limited to 'drivers/parisc/dino.c')
-rw-r--r--drivers/parisc/dino.c7
1 files changed, 4 insertions, 3 deletions
diff --git a/drivers/parisc/dino.c b/drivers/parisc/dino.c
index 595d1987e997..45a1a494c1cc 100644
--- a/drivers/parisc/dino.c
+++ b/drivers/parisc/dino.c
@@ -124,6 +124,7 @@
124 124
125#define DINO_IRQS 11 /* bits 0-10 are architected */ 125#define DINO_IRQS 11 /* bits 0-10 are architected */
126#define DINO_IRR_MASK 0x5ff /* only 10 bits are implemented */ 126#define DINO_IRR_MASK 0x5ff /* only 10 bits are implemented */
127#define DINO_LOCAL_IRQS (DINO_IRQS+1)
127 128
128#define DINO_MASK_IRQ(x) (1<<(x)) 129#define DINO_MASK_IRQ(x) (1<<(x))
129 130
@@ -146,7 +147,7 @@ struct dino_device
146 unsigned long txn_addr; /* EIR addr to generate interrupt */ 147 unsigned long txn_addr; /* EIR addr to generate interrupt */
147 u32 txn_data; /* EIR data assign to each dino */ 148 u32 txn_data; /* EIR data assign to each dino */
148 u32 imr; /* IRQ's which are enabled */ 149 u32 imr; /* IRQ's which are enabled */
149 int global_irq[12]; /* map IMR bit to global irq */ 150 int global_irq[DINO_LOCAL_IRQS]; /* map IMR bit to global irq */
150#ifdef DINO_DEBUG 151#ifdef DINO_DEBUG
151 unsigned int dino_irr0; /* save most recent IRQ line stat */ 152 unsigned int dino_irr0; /* save most recent IRQ line stat */
152#endif 153#endif
@@ -297,7 +298,7 @@ struct pci_port_ops dino_port_ops = {
297static void dino_disable_irq(unsigned int irq) 298static void dino_disable_irq(unsigned int irq)
298{ 299{
299 struct dino_device *dino_dev = irq_desc[irq].handler_data; 300 struct dino_device *dino_dev = irq_desc[irq].handler_data;
300 int local_irq = gsc_find_local_irq(irq, dino_dev->global_irq, irq); 301 int local_irq = gsc_find_local_irq(irq, dino_dev->global_irq, DINO_LOCAL_IRQS);
301 302
302 DBG(KERN_WARNING "%s(0x%p, %d)\n", __FUNCTION__, dino_dev, irq); 303 DBG(KERN_WARNING "%s(0x%p, %d)\n", __FUNCTION__, dino_dev, irq);
303 304
@@ -309,7 +310,7 @@ static void dino_disable_irq(unsigned int irq)
309static void dino_enable_irq(unsigned int irq) 310static void dino_enable_irq(unsigned int irq)
310{ 311{
311 struct dino_device *dino_dev = irq_desc[irq].handler_data; 312 struct dino_device *dino_dev = irq_desc[irq].handler_data;
312 int local_irq = gsc_find_local_irq(irq, dino_dev->global_irq, irq); 313 int local_irq = gsc_find_local_irq(irq, dino_dev->global_irq, DINO_LOCAL_IRQS);
313 u32 tmp; 314 u32 tmp;
314 315
315 DBG(KERN_WARNING "%s(0x%p, %d)\n", __FUNCTION__, dino_dev, irq); 316 DBG(KERN_WARNING "%s(0x%p, %d)\n", __FUNCTION__, dino_dev, irq);