On Friday 15 November 2013 06:23 AM, Mark Rutland wrote: > On Thu, Nov 14, 2013 at 04:46:36PM +0000, Sricharan R wrote: >> Hi Mark, >> >> On Thursday 14 November 2013 07:31 PM, Mark Rutland wrote: >>> On Thu, Nov 14, 2013 at 12:18:47PM +0000, Sricharan R wrote: >>>> In some socs the gic can be preceded by a crossbar IP which >>>> routes the peripheral interrupts to the gic inputs. The peripheral >>>> interrupts are associated with a fixed crossbar input line and the >>>> crossbar routes that to one of the free gic input line. >>>> >>>> The DT entries for peripherals provides the fixed crossbar input line >>>> as its interrupt number and the mapping code should associate this with >>>> a free gic input line. This patch adds the support inside the gic irqchip >>>> to handle such routable irqs. The routable irqs are registered in a linear >>>> domain. The registered routable domain's callback should be implemented >>>> to get a free irq and to configure the IP to route it. >>>> >>>> Cc: Thomas Gleixner <tglx@xxxxxxxxxxxxx> >>>> Cc: Linus Walleij <linus.walleij@xxxxxxxxxx> >>>> Cc: Santosh Shilimkar <santosh.shilimkar@xxxxxx> >>>> Cc: Russell King <linux@xxxxxxxxxxxxxxxx> >>>> Cc: Tony Lindgren <tony@xxxxxxxxxxx> >>>> Cc: Rajendra Nayak <rnayak@xxxxxx> >>>> Cc: Marc Zyngier <marc.zyngier@xxxxxxx> >>>> Cc: Grant Likely <grant.likely@xxxxxxxxxx> >>>> Cc: Rob Herring <rob.herring@xxxxxxxxxxx> >>>> Signed-off-by: Sricharan R <r.sricharan@xxxxxx> >>>> Acked-by: Santosh Shilimkar <santosh.shilimkar@xxxxxx> >>>> --- >>>> [V2] Added default routable-irqs functions to avoid >>>> unnecessary if checks as per Thomas Gleixner comments >>>> and renamed routable-irq binding as per >>>> Kumar Gala <galak@xxxxxxxxxxxxxx> comments. >>>> >>>> [V3] Addressed unnecessary warn-on and updated default >>>> xlate function as per Thomas Gleixner comments >>>> >>>> Documentation/devicetree/bindings/arm/gic.txt | 6 ++ >>>> drivers/irqchip/irq-gic.c | 81 ++++++++++++++++++++++--- >>>> include/linux/irqchip/arm-gic.h | 7 ++- >>>> 3 files changed, 83 insertions(+), 11 deletions(-) >>>> >>>> diff --git a/Documentation/devicetree/bindings/arm/gic.txt b/Documentation/devicetree/bindings/arm/gic.txt >>>> index 3dfb0c0..5357745 100644 >>>> --- a/Documentation/devicetree/bindings/arm/gic.txt >>>> +++ b/Documentation/devicetree/bindings/arm/gic.txt >>>> @@ -49,6 +49,11 @@ Optional >>>> regions, used when the GIC doesn't have banked registers. The offset is >>>> cpu-offset * cpu-nr. >>>> >>>> +- arm,routable-irqs : Total number of gic irq inputs which are not directly >>>> + connected from the peripherals, but are routed dynamically >>>> + by a crossbar/multiplexer preceding the GIC. The GIC irq >>>> + input line is assigned dynamically when the corresponding >>>> + peripheral's crossbar line is mapped. >>> I'm not keen on the design of the arm,routable-irqs property. The set of >>> IRQs which the crossbar IP can use is a property of which IRQ lines it >>> has routed to the GIC. I don't see why that should be considered a >>> property of the GIC; it's a property of the crossbar IP's attachment to >>> the GIC. >>> >>> Given we already have a mechanism for describing the attachment (i.e. >>> the interrupts property) where the property appears on the node for the >>> device generating/propagating the interrupt, I don't see why we should >>> do differently here. >> We did try using interrupts=<> property for all peripherals and >> mapping them as crossbar's parent. But that approach of representing >> crossbar as a interrupt parent was not accepted, since the crossbar >> was just routing the interrupts from peripherals to GIC and nothing more. >> Also mapping all the interrupts using interrupt-map like property by a fixed way >> in DTS itself was considered hacky > > I'm not suggesting you should interrupt-map. I agree that that > interrupt-map is not suitable for a dynamically configurable device like > the crossbar. > > When you say that the crossbar is just routing the interrupts, at what > level is it doing so? Does it accept a logical interrupt and output > another logical interrupt, or does it just connect the two lines > electrically? > Its just makes electrical connection between input and output line and thats it. Regards, Santosh -- To unsubscribe from this list: send the line "unsubscribe devicetree" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html