Messages in this thread | | | Subject | Re: [RFC PATCH v2] irqchip: Add support for tango interrupt router | From | Mason <> | Date | Sun, 16 Jul 2017 01:46:58 +0200 |
| |
On 15/07/2017 15:06, Mason wrote:
> I have two remaining issues: > > 1) In the ISR, I get the hwirq from the GIC. What is the > API to translate that to the SPI? I'm currently just > subtracting 32.
gic_set_type() in drivers/irqchip/irq-gic.c
/* SPIs have restrictions on the supported types */ if (gicirq >= 32 && type != IRQ_TYPE_LEVEL_HIGH && type != IRQ_TYPE_EDGE_RISING) return -EINVAL;
gic_irq_domain_translate() in the same file:
/* Get the interrupt number and add 16 to skip over SGIs */ *hwirq = fwspec->param[1] + 16;
/* * For SPIs, we need to add 16 more to get the GIC irq * ID number */ if (!fwspec->param[0]) *hwirq += 16;
So it seems "acceptable" to compute spi = d->hwirq - 32;
> 2) I'm currently using a single domain, with a > handle_simple_irq domain handler. That's probably > wrong. Should I define two domains, one for edge > IRQs and one for level IRQs, and use the appropriate > handler? Should both domain have 128 entries? > (I.e. are they indexed by the hwirq?) > And should I use linear or tree?
I will read this again carefully: https://www.kernel.org/doc/Documentation/IRQ-domain.txt
Regards.
| |