diff mbox

[PATCH-next] mfd: ab8500: fix dt irq mapping

Message ID 1401726478-14879-1-git-send-email-grygorii.strashko@ti.com (mailing list archive)
State New, archived
Headers show

Commit Message

Grygorii Strashko June 2, 2014, 4:27 p.m. UTC
The AD8500 defines itself as interrupt-controller in DT,
but it doesn't assign DT node to IRQ domain when creates it.
As result, of_irq_xx() helpers don't work because they can't
find necessary IRQ domain.

Hence, fix it by assigning AD8500 core device DT node to IRQ
domain when it's created.

This patch fixes STE u8500 Snowball boot failure reported by Kevin Hilman
https://lkml.org/lkml/2014/5/27/624

Cc: Samuel Ortiz <sameo@linux.intel.com>
Cc: Lee Jones <lee.jones@linaro.org>
Cc: Rob Herring <robh@kernel.org>
Cc: Grant Likely <grant.likely@linaro.org>
Cc: Thierry Reding <thierry.reding@gmail.com>
Reported-and-tested-by: Kevin Hilman <khilman@linaro.org>
Signed-off-by: Grygorii Strashko <grygorii.strashko@ti.com>
---
 drivers/mfd/ab8500-core.c |    2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

Comments

Linus Walleij June 3, 2014, 11:21 a.m. UTC | #1
On Mon, Jun 2, 2014 at 6:27 PM, Grygorii Strashko
<grygorii.strashko@ti.com> wrote:

> The AD8500 defines itself as interrupt-controller in DT,
> but it doesn't assign DT node to IRQ domain when creates it.
> As result, of_irq_xx() helpers don't work because they can't
> find necessary IRQ domain.
>
> Hence, fix it by assigning AD8500 core device DT node to IRQ
> domain when it's created.
>
> This patch fixes STE u8500 Snowball boot failure reported by Kevin Hilman
> https://lkml.org/lkml/2014/5/27/624
>
> Cc: Samuel Ortiz <sameo@linux.intel.com>
> Cc: Lee Jones <lee.jones@linaro.org>
> Cc: Rob Herring <robh@kernel.org>
> Cc: Grant Likely <grant.likely@linaro.org>
> Cc: Thierry Reding <thierry.reding@gmail.com>
> Reported-and-tested-by: Kevin Hilman <khilman@linaro.org>
> Signed-off-by: Grygorii Strashko <grygorii.strashko@ti.com>

Reviewed-by: Linus Walleij <linus.walleij@linaro.org>

Yours,
Linus Walleij
Kevin Hilman June 6, 2014, 3:51 a.m. UTC | #2
On Tue, Jun 3, 2014 at 4:21 AM, Linus Walleij <linus.walleij@linaro.org> wrote:
> On Mon, Jun 2, 2014 at 6:27 PM, Grygorii Strashko
> <grygorii.strashko@ti.com> wrote:
>
>> The AD8500 defines itself as interrupt-controller in DT,
>> but it doesn't assign DT node to IRQ domain when creates it.
>> As result, of_irq_xx() helpers don't work because they can't
>> find necessary IRQ domain.
>>
>> Hence, fix it by assigning AD8500 core device DT node to IRQ
>> domain when it's created.
>>
>> This patch fixes STE u8500 Snowball boot failure reported by Kevin Hilman
>> https://lkml.org/lkml/2014/5/27/624
>>
>> Cc: Samuel Ortiz <sameo@linux.intel.com>
>> Cc: Lee Jones <lee.jones@linaro.org>
>> Cc: Rob Herring <robh@kernel.org>
>> Cc: Grant Likely <grant.likely@linaro.org>
>> Cc: Thierry Reding <thierry.reding@gmail.com>
>> Reported-and-tested-by: Kevin Hilman <khilman@linaro.org>
>> Signed-off-by: Grygorii Strashko <grygorii.strashko@ti.com>
>
> Reviewed-by: Linus Walleij <linus.walleij@linaro.org>

Anyone picking this one up?  It's still broken in -next, and will be
needed for v3.16.

Kevin
Lee Jones June 6, 2014, 6:46 a.m. UTC | #3
On Thu, 05 Jun 2014, Kevin Hilman wrote:
> On Tue, Jun 3, 2014 at 4:21 AM, Linus Walleij <linus.walleij@linaro.org> wrote:
> > On Mon, Jun 2, 2014 at 6:27 PM, Grygorii Strashko
> > <grygorii.strashko@ti.com> wrote:
> >
> >> The AD8500 defines itself as interrupt-controller in DT,
> >> but it doesn't assign DT node to IRQ domain when creates it.
> >> As result, of_irq_xx() helpers don't work because they can't
> >> find necessary IRQ domain.
> >>
> >> Hence, fix it by assigning AD8500 core device DT node to IRQ
> >> domain when it's created.
> >>
> >> This patch fixes STE u8500 Snowball boot failure reported by Kevin Hilman
> >> https://lkml.org/lkml/2014/5/27/624
> >>
> >> Cc: Samuel Ortiz <sameo@linux.intel.com>
> >> Cc: Lee Jones <lee.jones@linaro.org>
> >> Cc: Rob Herring <robh@kernel.org>
> >> Cc: Grant Likely <grant.likely@linaro.org>
> >> Cc: Thierry Reding <thierry.reding@gmail.com>
> >> Reported-and-tested-by: Kevin Hilman <khilman@linaro.org>
> >> Signed-off-by: Grygorii Strashko <grygorii.strashko@ti.com>
> >
> > Reviewed-by: Linus Walleij <linus.walleij@linaro.org>
> 
> Anyone picking this one up?  It's still broken in -next, and will be
> needed for v3.16.

I'm going to pull it in to mfd-for-fixes, as mfd-for-next has already
been sent to Linus.
diff mbox

Patch

diff --git a/drivers/mfd/ab8500-core.c b/drivers/mfd/ab8500-core.c
index a8ee4a3..cf2e6a1 100644
--- a/drivers/mfd/ab8500-core.c
+++ b/drivers/mfd/ab8500-core.c
@@ -591,7 +591,7 @@  static int ab8500_irq_init(struct ab8500 *ab8500, struct device_node *np)
 		num_irqs = AB8500_NR_IRQS;
 
 	/* If ->irq_base is zero this will give a linear mapping */
-	ab8500->domain = irq_domain_add_simple(NULL,
+	ab8500->domain = irq_domain_add_simple(ab8500->dev->of_node,
 			num_irqs, 0,
 			&ab8500_irq_ops, ab8500);