[PATCH] versatile: don't generate a duplicate IRQ domain

Jamie Iles jamie at jamieiles.com
Thu Jan 12 18:26:11 EST 2012


On Thu, Jan 12, 2012 at 11:18:11PM +0000, Russell King - ARM Linux wrote:
> On Thu, Jan 12, 2012 at 04:07:54PM -0700, Grant Likely wrote:
> > On Thu, Jan 12, 2012 at 3:14 PM, Russell King - ARM Linux
> > <linux at arm.linux.org.uk> wrote:
> > > On Thu, Jan 12, 2012 at 09:58:01PM +0000, Jamie Iles wrote:
> > >> Hi Russell,
> > >>
> > >> On Thu, Jan 12, 2012 at 08:37:56PM +0000, Russell King - ARM Linux wrote:
> > >> > On Fri, Jan 06, 2012 at 04:39:57PM +0000, Jamie Iles wrote:
> > >> > > Now that the VIC driver handles the irqdomain natively we don't need to
> > >> > > generate one in the versatile core code.  Longer term we should move the
> > >> > > initialisation of both IRQ controllers to using of_irq_init() but
> > >> > > that'll need a little more work.
> > >> > >
> > >> > > Cc: Russell King <linux at arm.linux.org.uk>
> > >> > > Cc: Grant Likely <grant.likely at secretlab.ca>
> > >> > > Signed-off-by: Jamie Iles <jamie at jamieiles.com>
> > >> >
> > >> > Please confirm that this patch can be applied ontop of commit
> > >> > 356b95424cfb456e14a59eaa579422ce014c424b
> > >> > (Merge branch 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/geert/linux-m68k)
> > >>
> > >> OK, this does apply, but it doesn't fail in the way I had expected.
> > >> Actually, it doesn't barf at all because the generated domain that my
> > >> patch removes has 0 IRQ's so it never gets attached to the irq_desc's.
> > >
> > > If you say...
> > >
> > >> However, this patch is still valid as we end up with two domains
> > >> associated with the VIC but we get lucky as the real domain is
> > >> registered first.  I can update the patch description to reflect this if
> > >> you still want to apply it.
> > >
> > > If you think the patch comments don't reflect what the patch is doing
> > > then yes please.
> > >
> > > I don't know how this irq domain stuff works so I really can't say
> > > anything much about this patch other than trust you that it's correct.
> > 
> > This patch looks incomplete to me.  With it applied I don't think the
> > vic's dt node won't get associated with the irq_domain, which will
> > make dt irq mapping fail to work.  The node pointer needs to get
> > passed into the vic initialization routine if the
> > irq_domain_generate_simple() call is to be removed.
> 
> Even with this:
> 
>         v->domain.irq_base = irq;
>         v->domain.nr_irq = 32;
> #ifdef CONFIG_OF_IRQ
>         v->domain.of_node = of_node_get(node);
> #endif /* CONFIG_OF */
>         v->domain.ops = &irq_domain_simple_ops;
>         irq_domain_add(&v->domain);
> 
> which can be found in vic_register() ?

No, because:

	vic_init()
	  __vic_init() -> with NULL np pointer
	    vic_register()
	
So we won't have the device_node for the VIC.  I think I really need to 
convert the versatile stuff over to the full of_irq_init() method of 
probing, which isn't as bad as I thought as everything is populated from 
the DT there but it looked like it could be registered statically too 
from versatile_init().  I'll try and get everything going from the DT 
now.

Jamie



More information about the linux-arm-kernel mailing list