diff options
-rw-r--r-- | include/linux/irq.h | 2 | ||||
-rw-r--r-- | kernel/irq/manage.c | 26 |
2 files changed, 18 insertions, 10 deletions
diff --git a/include/linux/irq.h b/include/linux/irq.h index 56f9988362ec..737eafbc1f3d 100644 --- a/include/linux/irq.h +++ b/include/linux/irq.h | |||
@@ -236,7 +236,7 @@ typedef struct irq_desc irq_desc_t; | |||
236 | #include <asm/hw_irq.h> | 236 | #include <asm/hw_irq.h> |
237 | 237 | ||
238 | extern int setup_irq(unsigned int irq, struct irqaction *new); | 238 | extern int setup_irq(unsigned int irq, struct irqaction *new); |
239 | extern struct irqaction *remove_irq(unsigned int irq, void *dev_id); | 239 | extern void remove_irq(unsigned int irq, struct irqaction *act); |
240 | 240 | ||
241 | #ifdef CONFIG_GENERIC_HARDIRQS | 241 | #ifdef CONFIG_GENERIC_HARDIRQS |
242 | 242 | ||
diff --git a/kernel/irq/manage.c b/kernel/irq/manage.c index 8b069a7046e9..fc16570c9b46 100644 --- a/kernel/irq/manage.c +++ b/kernel/irq/manage.c | |||
@@ -550,15 +550,11 @@ int setup_irq(unsigned int irq, struct irqaction *act) | |||
550 | return __setup_irq(irq, desc, act); | 550 | return __setup_irq(irq, desc, act); |
551 | } | 551 | } |
552 | 552 | ||
553 | /** | 553 | /* |
554 | * remove_irq - free an interrupt | 554 | * Internal function to unregister an irqaction - used to free |
555 | * @irq: Interrupt line to free | 555 | * regular and special interrupts that are part of the architecture. |
556 | * @dev_id: Device identity to free | ||
557 | * | ||
558 | * Used to remove interrupts statically setup by the early boot process. | ||
559 | */ | 556 | */ |
560 | 557 | static struct irqaction *__free_irq(unsigned int irq, void *dev_id) | |
561 | struct irqaction *remove_irq(unsigned int irq, void *dev_id) | ||
562 | { | 558 | { |
563 | struct irq_desc *desc = irq_to_desc(irq); | 559 | struct irq_desc *desc = irq_to_desc(irq); |
564 | struct irqaction *action, **action_ptr; | 560 | struct irqaction *action, **action_ptr; |
@@ -634,6 +630,18 @@ struct irqaction *remove_irq(unsigned int irq, void *dev_id) | |||
634 | } | 630 | } |
635 | 631 | ||
636 | /** | 632 | /** |
633 | * remove_irq - free an interrupt | ||
634 | * @irq: Interrupt line to free | ||
635 | * @act: irqaction for the interrupt | ||
636 | * | ||
637 | * Used to remove interrupts statically setup by the early boot process. | ||
638 | */ | ||
639 | void remove_irq(unsigned int irq, struct irqaction *act) | ||
640 | { | ||
641 | __free_irq(irq, act->dev_id); | ||
642 | } | ||
643 | |||
644 | /** | ||
637 | * free_irq - free an interrupt allocated with request_irq | 645 | * free_irq - free an interrupt allocated with request_irq |
638 | * @irq: Interrupt line to free | 646 | * @irq: Interrupt line to free |
639 | * @dev_id: Device identity to free | 647 | * @dev_id: Device identity to free |
@@ -649,7 +657,7 @@ struct irqaction *remove_irq(unsigned int irq, void *dev_id) | |||
649 | */ | 657 | */ |
650 | void free_irq(unsigned int irq, void *dev_id) | 658 | void free_irq(unsigned int irq, void *dev_id) |
651 | { | 659 | { |
652 | kfree(remove_irq(irq, dev_id)); | 660 | kfree(__free_irq(irq, dev_id)); |
653 | } | 661 | } |
654 | EXPORT_SYMBOL(free_irq); | 662 | EXPORT_SYMBOL(free_irq); |
655 | 663 | ||