Merge branch 'queue/irq/arm' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/tip into next/cleanup
Merge "ARM: Interrupt cleanups and API change preparation" from Thomas
Gleixner:
The following patch series contains the following changes:
- Consolidation of chained interrupt handler setup/removal
- Switch to functions which avoid a redundant interrupt
descriptor lookup
- Preparation of interrupt flow handlers for the 'irq' argument
removal
* 'queue/irq/arm' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/tip:
ARM/orion/gpio: Prepare gpio_irq_handler for irq argument removal
ARM/pxa: Prepare balloon3_irq_handler for irq argument removal
ARM/pxa: Prepare *_irq_handler for irq argument removal
ARM/dove: Prepare pmu_irq_handler for irq argument removal
ARM/sa1111: Prepare sa1111_irq_handler for irq argument removal
ARM/locomo: Prepare locomo_handler for irq argument removal
ARM, irq: Use irq_desc_get_xxx() to avoid redundant lookup of irq_desc
ARM/LPC32xx: Use irq_set_handler_locked()
ARM/irq: Use access helper irq_data_get_affinity_mask()
ARM/locomo: Consolidate chained IRQ handler install/remove
ARM/orion: Consolidate chained IRQ handler install/remove
Signed-off-by: Olof Johansson <olof@lixom.net>
This commit is contained in:
@@ -138,9 +138,9 @@ static struct locomo_dev_info locomo_devices[] = {
|
||||
},
|
||||
};
|
||||
|
||||
static void locomo_handler(unsigned int irq, struct irq_desc *desc)
|
||||
static void locomo_handler(unsigned int __irq, struct irq_desc *desc)
|
||||
{
|
||||
struct locomo *lchip = irq_get_chip_data(irq);
|
||||
struct locomo *lchip = irq_desc_get_chip_data(desc);
|
||||
int req, i;
|
||||
|
||||
/* Acknowledge the parent IRQ */
|
||||
@@ -150,6 +150,8 @@ static void locomo_handler(unsigned int irq, struct irq_desc *desc)
|
||||
req = locomo_readl(lchip->base + LOCOMO_ICR) & 0x0f00;
|
||||
|
||||
if (req) {
|
||||
unsigned int irq;
|
||||
|
||||
/* generate the next interrupt(s) */
|
||||
irq = lchip->irq_base;
|
||||
for (i = 0; i <= 3; i++, irq++) {
|
||||
@@ -475,8 +477,7 @@ static void __locomo_remove(struct locomo *lchip)
|
||||
device_for_each_child(lchip->dev, NULL, locomo_remove_child);
|
||||
|
||||
if (lchip->irq != NO_IRQ) {
|
||||
irq_set_chained_handler(lchip->irq, NULL);
|
||||
irq_set_handler_data(lchip->irq, NULL);
|
||||
irq_set_chained_handler_and_data(lchip->irq, NULL, NULL);
|
||||
}
|
||||
|
||||
iounmap(lchip->base);
|
||||
|
||||
Reference in New Issue
Block a user