Message ID | 20250116005920.626822-1-linux@treblig.org (mailing list archive) |
---|---|
State | Handled Elsewhere |
Headers | show |
Series | [v2] irqchip/irq-brcmstb-l2: Replace brcmstb_l2_mask_and_ack() by generic function | expand |
David! On Thu, Jan 16 2025 at 00:59, linux@treblig.org wrote: > Replace brcmstb_l2_mask_and_ack() by the generic > irq_gc_mask_disable_and_ack_set(). > > brcmstb_l2_mask_and_ack() was added in commit 49aa6ef0b439 > ("irqchip/brcmstb-l2: Remove some processing from the handler") in > September 2017 with a comment saying it was actually generic and someone > should add it to the generic code. > > commit 20608924cc2e ("genirq: generic chip: Add > irq_gc_mask_disable_and_ack_set()") did that a few weeks later, however no > one went back and took the brcmstb variant out. That's too late. The original patch is already applied and I'm not going to redo the whole branch for this minor hickup. I've converted it to a delta fix. > Signed-off-by: Dr. David Alan Gilbert <linux@treblig.org> > Signed-off-by: Thomas Gleixner <tglx@linutronix.de> You cannot add my Signed-off-by to a new submission. Thanks, tglx
* Thomas Gleixner (tglx@linutronix.de) wrote: > David! > > On Thu, Jan 16 2025 at 00:59, linux@treblig.org wrote: > > Replace brcmstb_l2_mask_and_ack() by the generic > > irq_gc_mask_disable_and_ack_set(). > > > > brcmstb_l2_mask_and_ack() was added in commit 49aa6ef0b439 > > ("irqchip/brcmstb-l2: Remove some processing from the handler") in > > September 2017 with a comment saying it was actually generic and someone > > should add it to the generic code. > > > > commit 20608924cc2e ("genirq: generic chip: Add > > irq_gc_mask_disable_and_ack_set()") did that a few weeks later, however no > > one went back and took the brcmstb variant out. > > That's too late. The original patch is already applied and I'm not going > to redo the whole branch for this minor hickup. I've converted it to a > delta fix. Thanks. > > Signed-off-by: Dr. David Alan Gilbert <linux@treblig.org> > > Signed-off-by: Thomas Gleixner <tglx@linutronix.de> > > You cannot add my Signed-off-by to a new submission. Apologies. Dave > Thanks, > > tglx
diff --git a/drivers/irqchip/irq-brcmstb-l2.c b/drivers/irqchip/irq-brcmstb-l2.c index c988886917f7..db4c9721fcf2 100644 --- a/drivers/irqchip/irq-brcmstb-l2.c +++ b/drivers/irqchip/irq-brcmstb-l2.c @@ -61,32 +61,6 @@ struct brcmstb_l2_intc_data { u32 saved_mask; /* for suspend/resume */ }; -/** - * brcmstb_l2_mask_and_ack - Mask and ack pending interrupt - * @d: irq_data - * - * Chip has separate enable/disable registers instead of a single mask - * register and pending interrupt is acknowledged by setting a bit. - * - * Note: This function is generic and could easily be added to the - * generic irqchip implementation if there ever becomes a will to do so. - * Perhaps with a name like irq_gc_mask_disable_and_ack_set(). - * - * e.g.: https://patchwork.kernel.org/patch/9831047/ - */ -static void brcmstb_l2_mask_and_ack(struct irq_data *d) -{ - struct irq_chip_generic *gc = irq_data_get_irq_chip_data(d); - struct irq_chip_type *ct = irq_data_get_chip_type(d); - u32 mask = d->mask; - - irq_gc_lock(gc); - irq_reg_writel(gc, mask, ct->regs.disable); - *ct->mask_cache &= ~mask; - irq_reg_writel(gc, mask, ct->regs.ack); - irq_gc_unlock(gc); -} - static void brcmstb_l2_intc_irq_handle(struct irq_desc *desc) { struct brcmstb_l2_intc_data *b = irq_desc_get_handler_data(desc); @@ -248,7 +222,7 @@ static int __init brcmstb_l2_intc_of_init(struct device_node *np, if (init_params->cpu_clear >= 0) { ct->regs.ack = init_params->cpu_clear; ct->chip.irq_ack = irq_gc_ack_set_bit; - ct->chip.irq_mask_ack = brcmstb_l2_mask_and_ack; + ct->chip.irq_mask_ack = irq_gc_mask_disable_and_ack_set; } else { /* No Ack - but still slightly more efficient to define this */ ct->chip.irq_mask_ack = irq_gc_mask_disable_reg; diff --git a/kernel/irq/generic-chip.c b/kernel/irq/generic-chip.c index 32ffcbb87fa1..c4a8bca5f2b0 100644 --- a/kernel/irq/generic-chip.c +++ b/kernel/irq/generic-chip.c @@ -162,6 +162,7 @@ void irq_gc_mask_disable_and_ack_set(struct irq_data *d) irq_reg_writel(gc, mask, ct->regs.ack); irq_gc_unlock(gc); } +EXPORT_SYMBOL_GPL(irq_gc_mask_disable_and_ack_set); /** * irq_gc_eoi - EOI interrupt