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>
This commit is contained in:

committed by
Jason Cooper

parent
1dacf194b1
commit
332fd7c4fe
@@ -20,6 +20,7 @@
|
||||
#include <linux/errno.h>
|
||||
#include <linux/topology.h>
|
||||
#include <linux/wait.h>
|
||||
#include <linux/io.h>
|
||||
|
||||
#include <asm/irq.h>
|
||||
#include <asm/ptrace.h>
|
||||
@@ -639,13 +640,6 @@ void arch_teardown_hwirq(unsigned int irq);
|
||||
void irq_init_desc(unsigned int irq);
|
||||
#endif
|
||||
|
||||
#ifndef irq_reg_writel
|
||||
# define irq_reg_writel(val, addr) writel(val, addr)
|
||||
#endif
|
||||
#ifndef irq_reg_readl
|
||||
# define irq_reg_readl(addr) readl(addr)
|
||||
#endif
|
||||
|
||||
/**
|
||||
* struct irq_chip_regs - register offsets for struct irq_gci
|
||||
* @enable: Enable register offset to reg_base
|
||||
@@ -821,4 +815,16 @@ static inline void irq_gc_lock(struct irq_chip_generic *gc) { }
|
||||
static inline void irq_gc_unlock(struct irq_chip_generic *gc) { }
|
||||
#endif
|
||||
|
||||
static inline void irq_reg_writel(struct irq_chip_generic *gc,
|
||||
u32 val, int reg_offset)
|
||||
{
|
||||
writel(val, gc->reg_base + reg_offset);
|
||||
}
|
||||
|
||||
static inline u32 irq_reg_readl(struct irq_chip_generic *gc,
|
||||
int reg_offset)
|
||||
{
|
||||
return readl(gc->reg_base + reg_offset);
|
||||
}
|
||||
|
||||
#endif /* _LINUX_IRQ_H */
|
||||
|
Reference in New Issue
Block a user