From: Guenter Roeck <linux@roeck-us.net>
To: Rob Herring <robh@kernel.org>
Cc: "linux-kernel@vger.kernel.org" <linux-kernel@vger.kernel.org>,
Samuel Ortiz <sameo@linux.intel.com>,
Lee Jones <lee.jones@linaro.org>
Subject: Re: Problems with commit 9ec36cafe4 (of/irq: do irq resolution in platform_get_irq) and mfd client devices
Date: Tue, 17 Jun 2014 13:29:32 -0700 [thread overview]
Message-ID: <20140617202932.GA31414@roeck-us.net> (raw)
In-Reply-To: <CAL_Jsq+TFKJN_-PowcAyYztXzcomeAiT70xg7FxKgEQoG=7tAw@mail.gmail.com>
On Tue, Jun 17, 2014 at 03:08:24PM -0500, Rob Herring wrote:
> On Tue, Jun 17, 2014 at 1:10 PM, Guenter Roeck <linux@roeck-us.net> wrote:
> > Hi,
> >
> > I have an mfd master and client drivers on a system which has devicetree
> > enabled. The mfd master driver passes interrupts to the clients using
> > mfd cells and 'struct resource'. The client driver is a platform driver
> > which retrieves the irq using platform_get_irq().
> >
> > After commit 9ec36cafe (of/irq: do irq resolution in platform_get_irq),
> > this code no longer works. This is because platform_get_irq() does no
> > longer call platform_get_resource() if OF is enabled and if dev->of_node
> > is not NULL (it is not NULL because there is other [static] information
> > which is passed to the client with devicetree data).
> >
> > Any idea how to solve this problem ? How do I now pass a virtual interrupt
> > from an mfd master to its clients if devicetree is enabled ?
>
> The node ptr points to the MFD node or a child node? If there are
> child nodes in DT, then why not define interrupts there too? If there
> are not child nodes, then perhaps the child drivers should not have DT
> knowledge.
>
There is a whole bunch of secondary data in the child's dt node.
One of the child/client drivers is an i2c controller with attached
i2c muxes and several i2c devices, another is a gpio controller
with a large number of gpio pins which itself acts as interrupt
controller.
> Does it fail to get an interrupt or gets the parent interrupt instead?
>
It fails to get an interrupt and returns -EINVAL.
> We could probably make an error fall-back to looking at resources. Or
> try to get irq from resources first, then call of_irq_get.
>
I submitted a patch implementing the first approach a few minutes ago.
That fixes the problem for me. Not sure if that is the right solution
though, as it doesn't handle -EPROBE_DEFER. Let me know when you see
the patch if there is a better way to handle it (maybe abort with
-EPROBE_DEFER if of_irq_get returns it would do).
Guenter
next prev parent reply other threads:[~2014-06-17 20:29 UTC|newest]
Thread overview: 5+ messages / expand[flat|nested] mbox.gz Atom feed top
2014-06-17 18:10 Problems with commit 9ec36cafe4 (of/irq: do irq resolution in platform_get_irq) and mfd client devices Guenter Roeck
2014-06-17 20:08 ` Rob Herring
2014-06-17 20:29 ` Guenter Roeck [this message]
2014-06-17 21:39 ` Rob Herring
2014-06-17 22:18 ` Guenter Roeck
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=20140617202932.GA31414@roeck-us.net \
--to=linux@roeck-us.net \
--cc=lee.jones@linaro.org \
--cc=linux-kernel@vger.kernel.org \
--cc=robh@kernel.org \
--cc=sameo@linux.intel.com \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox