aboutsummaryrefslogtreecommitdiffstats
path: root/drivers/parisc/dino.c
diff options
context:
space:
mode:
Diffstat (limited to 'drivers/parisc/dino.c')
-rw-r--r--drivers/parisc/dino.c29
1 files changed, 9 insertions, 20 deletions
diff --git a/drivers/parisc/dino.c b/drivers/parisc/dino.c
index c542c7bb7454..d9f51485beee 100644
--- a/drivers/parisc/dino.c
+++ b/drivers/parisc/dino.c
@@ -296,10 +296,9 @@ static struct pci_port_ops dino_port_ops = {
296 .outl = dino_out32 296 .outl = dino_out32
297}; 297};
298 298
299static void dino_disable_irq(unsigned int irq) 299static void dino_mask_irq(unsigned int irq)
300{ 300{
301 struct irq_desc *desc = irq_to_desc(irq); 301 struct dino_device *dino_dev = get_irq_chip_data(irq);
302 struct dino_device *dino_dev = desc->chip_data;
303 int local_irq = gsc_find_local_irq(irq, dino_dev->global_irq, DINO_LOCAL_IRQS); 302 int local_irq = gsc_find_local_irq(irq, dino_dev->global_irq, DINO_LOCAL_IRQS);
304 303
305 DBG(KERN_WARNING "%s(0x%p, %d)\n", __func__, dino_dev, irq); 304 DBG(KERN_WARNING "%s(0x%p, %d)\n", __func__, dino_dev, irq);
@@ -309,10 +308,9 @@ static void dino_disable_irq(unsigned int irq)
309 __raw_writel(dino_dev->imr, dino_dev->hba.base_addr+DINO_IMR); 308 __raw_writel(dino_dev->imr, dino_dev->hba.base_addr+DINO_IMR);
310} 309}
311 310
312static void dino_enable_irq(unsigned int irq) 311static void dino_unmask_irq(unsigned int irq)
313{ 312{
314 struct irq_desc *desc = irq_to_desc(irq); 313 struct dino_device *dino_dev = get_irq_chip_data(irq);
315 struct dino_device *dino_dev = desc->chip_data;
316 int local_irq = gsc_find_local_irq(irq, dino_dev->global_irq, DINO_LOCAL_IRQS); 314 int local_irq = gsc_find_local_irq(irq, dino_dev->global_irq, DINO_LOCAL_IRQS);
317 u32 tmp; 315 u32 tmp;
318 316
@@ -347,20 +345,11 @@ static void dino_enable_irq(unsigned int irq)
347 } 345 }
348} 346}
349 347
350static unsigned int dino_startup_irq(unsigned int irq)
351{
352 dino_enable_irq(irq);
353 return 0;
354}
355
356static struct irq_chip dino_interrupt_type = { 348static struct irq_chip dino_interrupt_type = {
357 .name = "GSC-PCI", 349 .name = "GSC-PCI",
358 .startup = dino_startup_irq, 350 .unmask = dino_unmask_irq,
359 .shutdown = dino_disable_irq, 351 .mask = dino_mask_irq,
360 .enable = dino_enable_irq, 352 .ack = no_ack_irq,
361 .disable = dino_disable_irq,
362 .ack = no_ack_irq,
363 .end = no_end_irq,
364}; 353};
365 354
366 355
@@ -391,7 +380,7 @@ ilr_again:
391 int irq = dino_dev->global_irq[local_irq]; 380 int irq = dino_dev->global_irq[local_irq];
392 DBG(KERN_DEBUG "%s(%d, %p) mask 0x%x\n", 381 DBG(KERN_DEBUG "%s(%d, %p) mask 0x%x\n",
393 __func__, irq, intr_dev, mask); 382 __func__, irq, intr_dev, mask);
394 __do_IRQ(irq); 383 generic_handle_irq(irq);
395 mask &= ~(1 << local_irq); 384 mask &= ~(1 << local_irq);
396 } while (mask); 385 } while (mask);
397 386