[<prev] [next>] [<thread-prev] [thread-next>] [day] [month] [year] [list]
Message-ID: <24f34220-a017-f4e0-b72e-d1fdb014c0e1@free.fr>
Date: Sun, 16 Jul 2017 01:46:58 +0200
From: Mason <slash.tmp@...e.fr>
To: Marc Zyngier <marc.zyngier@....com>
Cc: Thomas Petazzoni <thomas.petazzoni@...e-electrons.com>,
Thomas Gleixner <tglx@...utronix.de>,
Jason Cooper <jason@...edaemon.net>,
Mark Rutland <mark.rutland@....com>,
Thibaud Cornic <thibaud_cornic@...madesigns.com>,
LKML <linux-kernel@...r.kernel.org>,
Linux ARM <linux-arm-kernel@...ts.infradead.org>
Subject: Re: [RFC PATCH v2] irqchip: Add support for tango interrupt router
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.
Powered by blists - more mailing lists