diff options
Diffstat (limited to 'drivers/parisc/dino.c')
-rw-r--r-- | drivers/parisc/dino.c | 29 |
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 | ||
299 | static void dino_disable_irq(unsigned int irq) | 299 | static 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 | ||
312 | static void dino_enable_irq(unsigned int irq) | 311 | static 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 | ||
350 | static unsigned int dino_startup_irq(unsigned int irq) | ||
351 | { | ||
352 | dino_enable_irq(irq); | ||
353 | return 0; | ||
354 | } | ||
355 | |||
356 | static struct irq_chip dino_interrupt_type = { | 348 | static 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 | ||