aboutsummaryrefslogtreecommitdiffstats
path: root/kernel/irq
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 /kernel/irq
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 'kernel/irq')
-rw-r--r--kernel/irq/generic-chip.c20
1 files changed, 10 insertions, 10 deletions
diff --git a/kernel/irq/generic-chip.c b/kernel/irq/generic-chip.c
index cf80e7b0ddab..db458c68e392 100644
--- a/kernel/irq/generic-chip.c
+++ b/kernel/irq/generic-chip.c
@@ -39,7 +39,7 @@ void irq_gc_mask_disable_reg(struct irq_data *d)
39 u32 mask = d->mask; 39 u32 mask = d->mask;
40 40
41 irq_gc_lock(gc); 41 irq_gc_lock(gc);
42 irq_reg_writel(mask, gc->reg_base + ct->regs.disable); 42 irq_reg_writel(gc, mask, ct->regs.disable);
43 *ct->mask_cache &= ~mask; 43 *ct->mask_cache &= ~mask;
44 irq_gc_unlock(gc); 44 irq_gc_unlock(gc);
45} 45}
@@ -59,7 +59,7 @@ void irq_gc_mask_set_bit(struct irq_data *d)
59 59
60 irq_gc_lock(gc); 60 irq_gc_lock(gc);
61 *ct->mask_cache |= mask; 61 *ct->mask_cache |= mask;
62 irq_reg_writel(*ct->mask_cache, gc->reg_base + ct->regs.mask); 62 irq_reg_writel(gc, *ct->mask_cache, ct->regs.mask);
63 irq_gc_unlock(gc); 63 irq_gc_unlock(gc);
64} 64}
65EXPORT_SYMBOL_GPL(irq_gc_mask_set_bit); 65EXPORT_SYMBOL_GPL(irq_gc_mask_set_bit);
@@ -79,7 +79,7 @@ void irq_gc_mask_clr_bit(struct irq_data *d)
79 79
80 irq_gc_lock(gc); 80 irq_gc_lock(gc);
81 *ct->mask_cache &= ~mask; 81 *ct->mask_cache &= ~mask;
82 irq_reg_writel(*ct->mask_cache, gc->reg_base + ct->regs.mask); 82 irq_reg_writel(gc, *ct->mask_cache, ct->regs.mask);
83 irq_gc_unlock(gc); 83 irq_gc_unlock(gc);
84} 84}
85EXPORT_SYMBOL_GPL(irq_gc_mask_clr_bit); 85EXPORT_SYMBOL_GPL(irq_gc_mask_clr_bit);
@@ -98,7 +98,7 @@ void irq_gc_unmask_enable_reg(struct irq_data *d)
98 u32 mask = d->mask; 98 u32 mask = d->mask;
99 99
100 irq_gc_lock(gc); 100 irq_gc_lock(gc);
101 irq_reg_writel(mask, gc->reg_base + ct->regs.enable); 101 irq_reg_writel(gc, mask, ct->regs.enable);
102 *ct->mask_cache |= mask; 102 *ct->mask_cache |= mask;
103 irq_gc_unlock(gc); 103 irq_gc_unlock(gc);
104} 104}
@@ -114,7 +114,7 @@ void irq_gc_ack_set_bit(struct irq_data *d)
114 u32 mask = d->mask; 114 u32 mask = d->mask;
115 115
116 irq_gc_lock(gc); 116 irq_gc_lock(gc);
117 irq_reg_writel(mask, gc->reg_base + ct->regs.ack); 117 irq_reg_writel(gc, mask, ct->regs.ack);
118 irq_gc_unlock(gc); 118 irq_gc_unlock(gc);
119} 119}
120EXPORT_SYMBOL_GPL(irq_gc_ack_set_bit); 120EXPORT_SYMBOL_GPL(irq_gc_ack_set_bit);
@@ -130,7 +130,7 @@ void irq_gc_ack_clr_bit(struct irq_data *d)
130 u32 mask = ~d->mask; 130 u32 mask = ~d->mask;
131 131
132 irq_gc_lock(gc); 132 irq_gc_lock(gc);
133 irq_reg_writel(mask, gc->reg_base + ct->regs.ack); 133 irq_reg_writel(gc, mask, ct->regs.ack);
134 irq_gc_unlock(gc); 134 irq_gc_unlock(gc);
135} 135}
136 136
@@ -145,8 +145,8 @@ void irq_gc_mask_disable_reg_and_ack(struct irq_data *d)
145 u32 mask = d->mask; 145 u32 mask = d->mask;
146 146
147 irq_gc_lock(gc); 147 irq_gc_lock(gc);
148 irq_reg_writel(mask, gc->reg_base + ct->regs.mask); 148 irq_reg_writel(gc, mask, ct->regs.mask);
149 irq_reg_writel(mask, gc->reg_base + ct->regs.ack); 149 irq_reg_writel(gc, mask, ct->regs.ack);
150 irq_gc_unlock(gc); 150 irq_gc_unlock(gc);
151} 151}
152 152
@@ -161,7 +161,7 @@ void irq_gc_eoi(struct irq_data *d)
161 u32 mask = d->mask; 161 u32 mask = d->mask;
162 162
163 irq_gc_lock(gc); 163 irq_gc_lock(gc);
164 irq_reg_writel(mask, gc->reg_base + ct->regs.eoi); 164 irq_reg_writel(gc, mask, ct->regs.eoi);
165 irq_gc_unlock(gc); 165 irq_gc_unlock(gc);
166} 166}
167 167
@@ -245,7 +245,7 @@ irq_gc_init_mask_cache(struct irq_chip_generic *gc, enum irq_gc_flags flags)
245 } 245 }
246 ct[i].mask_cache = mskptr; 246 ct[i].mask_cache = mskptr;
247 if (flags & IRQ_GC_INIT_MASK_CACHE) 247 if (flags & IRQ_GC_INIT_MASK_CACHE)
248 *mskptr = irq_reg_readl(gc->reg_base + mskreg); 248 *mskptr = irq_reg_readl(gc, mskreg);
249 } 249 }
250} 250}
251 251