Hi Jason, On 07/05/2016 05:53 PM, Jason Cooper wrote: >> >> Thanks for your comments. >> So, aside from some naming issues, do you think the driver is ok? > > Well, it's going to be few days before I can really dig in to this. > Until then, what I can say I see is that it looks like you're using > devicetree to tell Linux how to lay out the irq domains. That's not > right :(
Ok, so that replies my questions 1 and 2, thanks. > > The devicetree should *only* describe the hardware. Would *BSD be able > to use the description in the dtb effectively? > > iiuc, I think irq-crossbar.c may be a similar enough in task to give you > an idea or two. I already did something like that, you can see it here: https://marc.info/?l=linux-kernel&m=146592235919308&w=2 the problem with that code is that it cannot handle more than 24 IRQs (the number of outputs of the router), because they are not being shared. Maybe I need a sort of hybrid approach by reintroducing part of "irq-crossbar.c" code to replace the irq domain layout that is currently being done using DT properties ? However, I have not seen any examples of how to describe, using the DT, an association between a device HW irq, and the GIC hwirq where it goes to, nor how to express in the DT that multiple devices should share a given GIC hwirq. Basically, when a device requests the IRQ specified in its DT, I need: - to know which GIC hwirq line should I route it to (or the GIC to tell me which one it expects) - two devices should be able to request to share the same GIC hwirq If you take a look at the DT for drivers/irqchip/irq-tango.c (arch/arm/boot/dts/tango4-common.dtsi) you will see that 3 domains are created using DT nodes. The difference being that in the irq-tango.c case the routing is fixed w.r.t the GIC. Best regards, Sebastian