diff options
Diffstat (limited to 'kernel/irq/chip.c')
| -rw-r--r-- | kernel/irq/chip.c | 20 |
1 files changed, 18 insertions, 2 deletions
diff --git a/kernel/irq/chip.c b/kernel/irq/chip.c index e0e93ff10afd..77e551d92239 100644 --- a/kernel/irq/chip.c +++ b/kernel/irq/chip.c | |||
| @@ -324,6 +324,17 @@ static void default_shutdown(unsigned int irq) | |||
| 324 | desc->status |= IRQ_MASKED; | 324 | desc->status |= IRQ_MASKED; |
| 325 | } | 325 | } |
| 326 | 326 | ||
| 327 | /* Temporary migration helpers */ | ||
| 328 | static void compat_bus_lock(struct irq_data *data) | ||
| 329 | { | ||
| 330 | data->chip->bus_lock(data->irq); | ||
| 331 | } | ||
| 332 | |||
| 333 | static void compat_bus_sync_unlock(struct irq_data *data) | ||
| 334 | { | ||
| 335 | data->chip->bus_sync_unlock(data->irq); | ||
| 336 | } | ||
| 337 | |||
| 327 | /* | 338 | /* |
| 328 | * Fixup enable/disable function pointers | 339 | * Fixup enable/disable function pointers |
| 329 | */ | 340 | */ |
| @@ -346,6 +357,11 @@ void irq_chip_set_defaults(struct irq_chip *chip) | |||
| 346 | chip->disable : default_shutdown; | 357 | chip->disable : default_shutdown; |
| 347 | if (!chip->end) | 358 | if (!chip->end) |
| 348 | chip->end = dummy_irq_chip.end; | 359 | chip->end = dummy_irq_chip.end; |
| 360 | |||
| 361 | if (chip->bus_lock) | ||
| 362 | chip->irq_bus_lock = compat_bus_lock; | ||
| 363 | if (chip->bus_sync_unlock) | ||
| 364 | chip->irq_bus_sync_unlock = compat_bus_sync_unlock; | ||
| 349 | } | 365 | } |
| 350 | 366 | ||
| 351 | static inline void mask_ack_irq(struct irq_desc *desc, int irq) | 367 | static inline void mask_ack_irq(struct irq_desc *desc, int irq) |
| @@ -687,7 +703,7 @@ __set_irq_handler(unsigned int irq, irq_flow_handler_t handle, int is_chained, | |||
| 687 | desc->irq_data.chip = &dummy_irq_chip; | 703 | desc->irq_data.chip = &dummy_irq_chip; |
| 688 | } | 704 | } |
| 689 | 705 | ||
| 690 | chip_bus_lock(irq, desc); | 706 | chip_bus_lock(desc); |
| 691 | raw_spin_lock_irqsave(&desc->lock, flags); | 707 | raw_spin_lock_irqsave(&desc->lock, flags); |
| 692 | 708 | ||
| 693 | /* Uninstall? */ | 709 | /* Uninstall? */ |
| @@ -707,7 +723,7 @@ __set_irq_handler(unsigned int irq, irq_flow_handler_t handle, int is_chained, | |||
| 707 | desc->irq_data.chip->startup(irq); | 723 | desc->irq_data.chip->startup(irq); |
| 708 | } | 724 | } |
| 709 | raw_spin_unlock_irqrestore(&desc->lock, flags); | 725 | raw_spin_unlock_irqrestore(&desc->lock, flags); |
| 710 | chip_bus_sync_unlock(irq, desc); | 726 | chip_bus_sync_unlock(desc); |
| 711 | } | 727 | } |
| 712 | EXPORT_SYMBOL_GPL(__set_irq_handler); | 728 | EXPORT_SYMBOL_GPL(__set_irq_handler); |
| 713 | 729 | ||
