diff options
author | Kevin Cernekee <cernekee@gmail.com> | 2014-11-07 01:44:17 -0500 |
---|---|---|
committer | Jason Cooper <jason@lakedaemon.net> | 2014-11-08 23:01:22 -0500 |
commit | 332fd7c4fef5f3b166e93decb07fd69eb24f7998 (patch) | |
tree | 73f4056f73629eecffaa5d3140fbb2e88c609ff5 /include/linux/irq.h | |
parent | 1dacf194b1468546a5715db58cbb65d50b598482 (diff) |
genirq: Generic chip: Change irq_reg_{readl,writel} arguments
Pass in the irq_chip_generic struct so we can use different readl/writel
settings for each irqchip driver, when appropriate. Compute
(gc->reg_base + reg_offset) in the helper function because this is pretty
much what all callers want to do anyway.
Compile-tested using the following configurations:
at91_dt_defconfig (CONFIG_ATMEL_AIC_IRQ=y)
sama5_defconfig (CONFIG_ATMEL_AIC5_IRQ=y)
sunxi_defconfig (CONFIG_ARCH_SUNXI=y)
tb10x (ARC) is untested.
Signed-off-by: Kevin Cernekee <cernekee@gmail.com>
Acked-by: Thomas Gleixner <tglx@linutronix.de>
Acked-by: Acked-by: Arnd Bergmann <arnd@arndb.de>
Link: https://lkml.kernel.org/r/1415342669-30640-3-git-send-email-cernekee@gmail.com
Signed-off-by: Jason Cooper <jason@lakedaemon.net>
Diffstat (limited to 'include/linux/irq.h')
-rw-r--r-- | include/linux/irq.h | 20 |
1 files changed, 13 insertions, 7 deletions
diff --git a/include/linux/irq.h b/include/linux/irq.h index 03f48d936f66..ed1135d32d80 100644 --- a/include/linux/irq.h +++ b/include/linux/irq.h | |||
@@ -20,6 +20,7 @@ | |||
20 | #include <linux/errno.h> | 20 | #include <linux/errno.h> |
21 | #include <linux/topology.h> | 21 | #include <linux/topology.h> |
22 | #include <linux/wait.h> | 22 | #include <linux/wait.h> |
23 | #include <linux/io.h> | ||
23 | 24 | ||
24 | #include <asm/irq.h> | 25 | #include <asm/irq.h> |
25 | #include <asm/ptrace.h> | 26 | #include <asm/ptrace.h> |
@@ -639,13 +640,6 @@ void arch_teardown_hwirq(unsigned int irq); | |||
639 | void irq_init_desc(unsigned int irq); | 640 | void irq_init_desc(unsigned int irq); |
640 | #endif | 641 | #endif |
641 | 642 | ||
642 | #ifndef irq_reg_writel | ||
643 | # define irq_reg_writel(val, addr) writel(val, addr) | ||
644 | #endif | ||
645 | #ifndef irq_reg_readl | ||
646 | # define irq_reg_readl(addr) readl(addr) | ||
647 | #endif | ||
648 | |||
649 | /** | 643 | /** |
650 | * struct irq_chip_regs - register offsets for struct irq_gci | 644 | * struct irq_chip_regs - register offsets for struct irq_gci |
651 | * @enable: Enable register offset to reg_base | 645 | * @enable: Enable register offset to reg_base |
@@ -821,4 +815,16 @@ static inline void irq_gc_lock(struct irq_chip_generic *gc) { } | |||
821 | static inline void irq_gc_unlock(struct irq_chip_generic *gc) { } | 815 | static inline void irq_gc_unlock(struct irq_chip_generic *gc) { } |
822 | #endif | 816 | #endif |
823 | 817 | ||
818 | static inline void irq_reg_writel(struct irq_chip_generic *gc, | ||
819 | u32 val, int reg_offset) | ||
820 | { | ||
821 | writel(val, gc->reg_base + reg_offset); | ||
822 | } | ||
823 | |||
824 | static inline u32 irq_reg_readl(struct irq_chip_generic *gc, | ||
825 | int reg_offset) | ||
826 | { | ||
827 | return readl(gc->reg_base + reg_offset); | ||
828 | } | ||
829 | |||
824 | #endif /* _LINUX_IRQ_H */ | 830 | #endif /* _LINUX_IRQ_H */ |