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 /kernel | |
| 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 'kernel')
| -rw-r--r-- | kernel/irq/generic-chip.c | 20 |
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 | } |
| 65 | EXPORT_SYMBOL_GPL(irq_gc_mask_set_bit); | 65 | EXPORT_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 | } |
| 85 | EXPORT_SYMBOL_GPL(irq_gc_mask_clr_bit); | 85 | EXPORT_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 | } |
| 120 | EXPORT_SYMBOL_GPL(irq_gc_ack_set_bit); | 120 | EXPORT_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 | ||
