summaryrefslogtreecommitdiffstats
path: root/kernel/irq/internals.h
diff options
context:
space:
mode:
authorLinus Torvalds <torvalds@linux-foundation.org>2017-11-13 20:33:11 -0500
committerLinus Torvalds <torvalds@linux-foundation.org>2017-11-13 20:33:11 -0500
commit670310dfbae0eefe7318ff6a61e29e67a7a7bbce (patch)
treeeb3ce3aa3e6786a64fec93d410bb6f0b9a56be77 /kernel/irq/internals.h
parent43ff2f4db9d0f76452b77cfa645f02b471143b24 (diff)
parentffc661c99f621152d5fdcf53f9df0d48c326318b (diff)
Merge branch 'irq-core-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/tip
Pull irq core updates from Thomas Gleixner: "A rather large update for the interrupt core code and the irq chip drivers: - Add a new bitmap matrix allocator and supporting changes, which is used to replace the x86 vector allocator which comes with separate pull request. This allows to replace the convoluted nested loop allocation function in x86 with a facility which supports the recently added property of managed interrupts proper and allows to switch to a best effort vector reservation scheme, which addresses problems with vector exhaustion. - A large update to the ARM GIC-V3-ITS driver adding support for range selectors. - New interrupt controllers: - Meson and Meson8 GPIO - BCM7271 L2 - Socionext EXIU If you expected that this will stop at some point, I have to disappoint you. There are new ones posted already. Sigh! - STM32 interrupt controller support for new platforms. - A pile of fixes, cleanups and updates to the MIPS GIC driver - The usual small fixes, cleanups and updates all over the place. Most visible one is to move the irq chip drivers Kconfig switches into a separate Kconfig menu" * 'irq-core-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/tip: (70 commits) genirq: Fix type of shifting literal 1 in __setup_irq() irqdomain: Drop pointless NULL check in virq_debug_show_one genirq/proc: Return proper error code when irq_set_affinity() fails irq/work: Use llist_for_each_entry_safe irqchip: mips-gic: Print warning if inherited GIC base is used irqchip/mips-gic: Add pr_fmt and reword pr_* messages irqchip/stm32: Move the wakeup on interrupt mask irqchip/stm32: Fix initial values irqchip/stm32: Add stm32h7 support dt-bindings/interrupt-controllers: Add compatible string for stm32h7 irqchip/stm32: Add multi-bank management irqchip/stm32: Select GENERIC_IRQ_CHIP irqchip/exiu: Add support for Socionext Synquacer EXIU controller dt-bindings: Add description of Socionext EXIU interrupt controller irqchip/gic-v3-its: Fix VPE activate callback return value irqchip: mips-gic: Make IPI bitmaps static irqchip: mips-gic: Share register writes in gic_set_type() irqchip: mips-gic: Remove gic_vpes variable irqchip: mips-gic: Use num_possible_cpus() to reserve IPIs irqchip: mips-gic: Configure EIC when CPUs come online ...
Diffstat (limited to 'kernel/irq/internals.h')
-rw-r--r--kernel/irq/internals.h19
1 files changed, 19 insertions, 0 deletions
diff --git a/kernel/irq/internals.h b/kernel/irq/internals.h
index 44ed5f8c8759..07d08ca701ec 100644
--- a/kernel/irq/internals.h
+++ b/kernel/irq/internals.h
@@ -75,6 +75,8 @@ extern void __enable_irq(struct irq_desc *desc);
75#define IRQ_START_FORCE true 75#define IRQ_START_FORCE true
76#define IRQ_START_COND false 76#define IRQ_START_COND false
77 77
78extern int irq_activate(struct irq_desc *desc);
79extern void irq_activate_and_startup(struct irq_desc *desc, bool resend);
78extern int irq_startup(struct irq_desc *desc, bool resend, bool force); 80extern int irq_startup(struct irq_desc *desc, bool resend, bool force);
79 81
80extern void irq_shutdown(struct irq_desc *desc); 82extern void irq_shutdown(struct irq_desc *desc);
@@ -437,6 +439,18 @@ static inline bool irq_fixup_move_pending(struct irq_desc *desc, bool fclear)
437} 439}
438#endif /* !CONFIG_GENERIC_PENDING_IRQ */ 440#endif /* !CONFIG_GENERIC_PENDING_IRQ */
439 441
442#if !defined(CONFIG_IRQ_DOMAIN) || !defined(CONFIG_IRQ_DOMAIN_HIERARCHY)
443static inline int irq_domain_activate_irq(struct irq_data *data, bool early)
444{
445 irqd_set_activated(data);
446 return 0;
447}
448static inline void irq_domain_deactivate_irq(struct irq_data *data)
449{
450 irqd_clr_activated(data);
451}
452#endif
453
440#ifdef CONFIG_GENERIC_IRQ_DEBUGFS 454#ifdef CONFIG_GENERIC_IRQ_DEBUGFS
441#include <linux/debugfs.h> 455#include <linux/debugfs.h>
442 456
@@ -444,7 +458,9 @@ void irq_add_debugfs_entry(unsigned int irq, struct irq_desc *desc);
444static inline void irq_remove_debugfs_entry(struct irq_desc *desc) 458static inline void irq_remove_debugfs_entry(struct irq_desc *desc)
445{ 459{
446 debugfs_remove(desc->debugfs_file); 460 debugfs_remove(desc->debugfs_file);
461 kfree(desc->dev_name);
447} 462}
463void irq_debugfs_copy_devname(int irq, struct device *dev);
448# ifdef CONFIG_IRQ_DOMAIN 464# ifdef CONFIG_IRQ_DOMAIN
449void irq_domain_debugfs_init(struct dentry *root); 465void irq_domain_debugfs_init(struct dentry *root);
450# else 466# else
@@ -459,4 +475,7 @@ static inline void irq_add_debugfs_entry(unsigned int irq, struct irq_desc *d)
459static inline void irq_remove_debugfs_entry(struct irq_desc *d) 475static inline void irq_remove_debugfs_entry(struct irq_desc *d)
460{ 476{
461} 477}
478static inline void irq_debugfs_copy_devname(int irq, struct device *dev)
479{
480}
462#endif /* CONFIG_GENERIC_IRQ_DEBUGFS */ 481#endif /* CONFIG_GENERIC_IRQ_DEBUGFS */