[+ Zhou Yanjie] Paul,
On 27/07/2019 20:17, Paul Cercueil wrote: > Get the virq number from the IRQ domain instead of calculating it from > the hardcoded irq base. > > Signed-off-by: Paul Cercueil <[email protected]> > --- > drivers/irqchip/irq-ingenic.c | 7 ++++++- > 1 file changed, 6 insertions(+), 1 deletion(-) > > diff --git a/drivers/irqchip/irq-ingenic.c b/drivers/irqchip/irq-ingenic.c > index d97a3a500249..82a079fa3a3d 100644 > --- a/drivers/irqchip/irq-ingenic.c > +++ b/drivers/irqchip/irq-ingenic.c > @@ -21,6 +21,7 @@ > > struct ingenic_intc_data { > void __iomem *base; > + struct irq_domain *domain; > unsigned num_chips; > }; > > @@ -34,6 +35,7 @@ struct ingenic_intc_data { > static irqreturn_t intc_cascade(int irq, void *data) > { > struct ingenic_intc_data *intc = irq_get_handler_data(irq); > + struct irq_domain *domain = intc->domain; > uint32_t irq_reg; > unsigned i; > > @@ -43,7 +45,8 @@ static irqreturn_t intc_cascade(int irq, void *data) > if (!irq_reg) > continue; > > - generic_handle_irq(__fls(irq_reg) + (i * 32) + JZ4740_IRQ_BASE); > + irq = irq_find_mapping(domain, __fls(irq_reg) + (i * 32)); > + generic_handle_irq(irq); > } > > return IRQ_HANDLED; > @@ -95,6 +98,8 @@ static int __init ingenic_intc_of_init(struct device_node > *node, > goto out_unmap_base; > } > > + intc->domain = domain; > + > for (i = 0; i < num_chips; i++) { > /* Mask all irqs */ > writel(0xffffffff, intc->base + (i * CHIP_SIZE) + > This is likely to conflict with this[1] series, which turns the intc_cascade function into a chained handler (which it should have been from the start). Can you please work with Zhou to post a unified series? Having two people working independently on the same file is likely to end badly otherwise. Thanks, M. [1] https://lore.kernel.org/lkml/[email protected]/ -- Jazz is not dead. It just smells funny...

