[PATCH 1/8] irq: choose irq_domain type for generic-chip based on irq_base
Grant Likely
grant.likely at secretlab.ca
Wed Feb 15 16:20:22 EST 2012
On Mon, Feb 13, 2012 at 03:38:58PM -0600, Rob Herring wrote:
> On 02/11/2012 11:14 AM, Shawn Guo wrote:
> > Choosing irq_domain type for generic-chip based on device_node forces
> > non-DT users to use legacy irq_domain, which makes no sense, because
> > linear irq_domain is actually encouraged to be used by both DT and
> > non-DT users.
>
> NAK
>
> Encouraged by who? As we discussed in person at Connect, I said you
> should use legacy domain for non-DT case. Grant and I have discussed
> this as well and agree.
Yes. I'd *like* for everyone (DT and non-DT) to be able to use the
linear revmap, but I can't see any nice way to do it as long as
devices are registered with hard coded #define irq numbers.
>
> > The patch changes it to make the decision based on irq_base. If users
> > pass in a negative irq_base value, a linear irq_domain will be created,
> > otherwise a legacy irq_domain will be created.
>
> This allows DT users to decide as well and possibly use legacy domains
> which is explicitly what I was trying to prevent. DT users must use
> linear domains and non-DT must use legacy. Otherwise, we'll get more
> half done DT conversions like mx5 is.
>
> Getting linear domains to work for non-DT to work would be a worthwhile
> goal if we didn't plan to remove non-DT boards. I don't think we really
> need linear to work for non-DT case.
I agree with that.
>
> Rob
>
> > Signed-off-by: Shawn Guo <shawn.guo at linaro.org>
> > Cc: Rob Herring <rob.herring at calxeda.com>
> > Cc: Grant Likely <grant.likely at secretlab.ca>
> > Cc: Thomas Gleixner <tglx at linutronix.de>
> > ---
> > kernel/irq/generic-chip.c | 2 +-
> > 1 files changed, 1 insertions(+), 1 deletions(-)
> >
> > diff --git a/kernel/irq/generic-chip.c b/kernel/irq/generic-chip.c
> > index 3ac7fa1..839f882 100644
> > --- a/kernel/irq/generic-chip.c
> > +++ b/kernel/irq/generic-chip.c
> > @@ -346,7 +346,7 @@ int irq_setup_generic_chip_domain(const char *name, struct device_node *node,
> > irq_setup_generic_chip(gc[i], 0, flags, clr, set);
> > }
> >
> > - if (node)
> > + if ((int) irq_base < 0)
> > d = irq_domain_add_linear(node, hwirq_cnt,
> > &irq_gc_irq_domain_ops, gc);
> > else
>
More information about the linux-arm-kernel
mailing list