aboutsummaryrefslogtreecommitdiffstats
path: root/include/linux/irq.h
diff options
context:
space:
mode:
authorKevin Cernekee <cernekee@gmail.com>2014-11-07 01:44:17 -0500
committerJason Cooper <jason@lakedaemon.net>2014-11-08 23:01:22 -0500
commit332fd7c4fef5f3b166e93decb07fd69eb24f7998 (patch)
tree73f4056f73629eecffaa5d3140fbb2e88c609ff5 /include/linux/irq.h
parent1dacf194b1468546a5715db58cbb65d50b598482 (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.h20
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);
639void irq_init_desc(unsigned int irq); 640void 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) { }
821static inline void irq_gc_unlock(struct irq_chip_generic *gc) { } 815static inline void irq_gc_unlock(struct irq_chip_generic *gc) { }
822#endif 816#endif
823 817
818static 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
824static 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 */