From: Thierry Reding <thierry.reding-Re5JQEeQqe8AvxtiuMwx3w@public.gmane.org>
To: Laurent Pinchart
<laurent.pinchart+renesas-ryLnwIuWjnjg/C1BVhZhaw@public.gmane.org>
Cc: linux-i2c-u79uwXL29TY76Z2rM5mHXA@public.gmane.org,
linux-kernel-u79uwXL29TY76Z2rM5mHXA@public.gmane.org
Subject: Re: [PATCH 0/3] Delay I2C OF IRQ mapping until probe time
Date: Thu, 30 Oct 2014 15:27:54 +0100 [thread overview]
Message-ID: <20141030142752.GB20072@ulmo.nvidia.com> (raw)
In-Reply-To: <1414677578-27412-1-git-send-email-laurent.pinchart+renesas-ryLnwIuWjnjg/C1BVhZhaw@public.gmane.org>
[-- Attachment #1: Type: text/plain, Size: 2071 bytes --]
On Thu, Oct 30, 2014 at 03:59:35PM +0200, Laurent Pinchart wrote:
> Hello,
>
> I recently ran into an issue with the OF IRQ parsing code in the I2C core
> (of_i2c_register_devices in drivers/i2c/i2c-core.c).
>
> My DT contains the following nodes.
>
> gpio1: gpio@e6051000 {
> ...
> #interrupt-cells = <2>;
> interrupt-controller;
> clocks = <&mstp9_clks R8A7790_CLK_GPIO1>;
> };
>
> iic2: i2c@e6520000 {
> #address-cells = <1>;
> #size-cells = <0>;
> ...
> hdmi@39 {
> compatible = "adi,adv7511w";
> reg = <0x39>;
> interrupt-parent = <&gpio1>;
> interrupts = <15 IRQ_TYPE_EDGE_FALLING>;
> ...
> };
> };
>
> mstp9_clks: mstp9_clks@e6150994 {
> ...
> };
>
> The i2c@e6520000 node is probed before the gpio@e6051000 node. The
> of_i2c_register_devices() function tries to register all children, including
> hdmi@39. It tries to parse and map the I2C client IRQ by calling
> irq_of_parse_and_map(), which returns 0 as the interrupt controller isn't
> probed yet. The adv7511 driver later probes the hdmi@39 device and gets
> client->irq set to 0.
>
> As we can't control the probe order in the general case we need to rely on
> deferred probing. This patch series is an attempt to do so, by moving IRQ
> mapping from device registration time to device probe time were probing can be
> deferred.
>
> Laurent Pinchart (3):
> of/irq: Export of_irq_get()
> i2c: core: Dispose OF IRQ mapping at client removal time
> i2c: core: Map OF IRQ at probe time
>
> drivers/i2c/i2c-core.c | 14 ++++++++++++--
> drivers/of/irq.c | 1 +
> 2 files changed, 13 insertions(+), 2 deletions(-)
The series:
Reviewed-by: Thierry Reding <treding-DDmLM1+adcrQT0dZR+AlfA@public.gmane.org>
[-- Attachment #2: Type: application/pgp-signature, Size: 819 bytes --]
WARNING: multiple messages have this Message-ID (diff)
From: Thierry Reding <thierry.reding@gmail.com>
To: Laurent Pinchart <laurent.pinchart+renesas@ideasonboard.com>
Cc: linux-i2c@vger.kernel.org, linux-kernel@vger.kernel.org
Subject: Re: [PATCH 0/3] Delay I2C OF IRQ mapping until probe time
Date: Thu, 30 Oct 2014 15:27:54 +0100 [thread overview]
Message-ID: <20141030142752.GB20072@ulmo.nvidia.com> (raw)
In-Reply-To: <1414677578-27412-1-git-send-email-laurent.pinchart+renesas@ideasonboard.com>
[-- Attachment #1: Type: text/plain, Size: 2042 bytes --]
On Thu, Oct 30, 2014 at 03:59:35PM +0200, Laurent Pinchart wrote:
> Hello,
>
> I recently ran into an issue with the OF IRQ parsing code in the I2C core
> (of_i2c_register_devices in drivers/i2c/i2c-core.c).
>
> My DT contains the following nodes.
>
> gpio1: gpio@e6051000 {
> ...
> #interrupt-cells = <2>;
> interrupt-controller;
> clocks = <&mstp9_clks R8A7790_CLK_GPIO1>;
> };
>
> iic2: i2c@e6520000 {
> #address-cells = <1>;
> #size-cells = <0>;
> ...
> hdmi@39 {
> compatible = "adi,adv7511w";
> reg = <0x39>;
> interrupt-parent = <&gpio1>;
> interrupts = <15 IRQ_TYPE_EDGE_FALLING>;
> ...
> };
> };
>
> mstp9_clks: mstp9_clks@e6150994 {
> ...
> };
>
> The i2c@e6520000 node is probed before the gpio@e6051000 node. The
> of_i2c_register_devices() function tries to register all children, including
> hdmi@39. It tries to parse and map the I2C client IRQ by calling
> irq_of_parse_and_map(), which returns 0 as the interrupt controller isn't
> probed yet. The adv7511 driver later probes the hdmi@39 device and gets
> client->irq set to 0.
>
> As we can't control the probe order in the general case we need to rely on
> deferred probing. This patch series is an attempt to do so, by moving IRQ
> mapping from device registration time to device probe time were probing can be
> deferred.
>
> Laurent Pinchart (3):
> of/irq: Export of_irq_get()
> i2c: core: Dispose OF IRQ mapping at client removal time
> i2c: core: Map OF IRQ at probe time
>
> drivers/i2c/i2c-core.c | 14 ++++++++++++--
> drivers/of/irq.c | 1 +
> 2 files changed, 13 insertions(+), 2 deletions(-)
The series:
Reviewed-by: Thierry Reding <treding@nvidia.com>
[-- Attachment #2: Type: application/pgp-signature, Size: 819 bytes --]
next prev parent reply other threads:[~2014-10-30 14:27 UTC|newest]
Thread overview: 24+ messages / expand[flat|nested] mbox.gz Atom feed top
2014-10-30 13:59 [PATCH 0/3] Delay I2C OF IRQ mapping until probe time Laurent Pinchart
[not found] ` <1414677578-27412-1-git-send-email-laurent.pinchart+renesas-ryLnwIuWjnjg/C1BVhZhaw@public.gmane.org>
2014-10-30 13:59 ` [PATCH 1/3] of/irq: Export of_irq_get() Laurent Pinchart
2014-10-30 13:59 ` Laurent Pinchart
2014-10-30 14:16 ` Wolfram Sang
2014-10-30 14:17 ` Laurent Pinchart
2014-10-31 18:20 ` Wolfram Sang
2014-10-31 20:58 ` Rob Herring
2014-10-31 20:58 ` Rob Herring
2014-11-04 15:55 ` Grant Likely
2014-11-04 15:55 ` Grant Likely
[not found] ` <1414677578-27412-2-git-send-email-laurent.pinchart+renesas-ryLnwIuWjnjg/C1BVhZhaw@public.gmane.org>
2014-11-07 18:05 ` Wolfram Sang
2014-11-07 18:05 ` Wolfram Sang
2014-10-30 14:27 ` Thierry Reding [this message]
2014-10-30 14:27 ` [PATCH 0/3] Delay I2C OF IRQ mapping until probe time Thierry Reding
2014-10-30 13:59 ` [PATCH 2/3] i2c: core: Dispose OF IRQ mapping at client removal time Laurent Pinchart
[not found] ` <1414677578-27412-3-git-send-email-laurent.pinchart+renesas-ryLnwIuWjnjg/C1BVhZhaw@public.gmane.org>
2014-10-30 14:25 ` Thierry Reding
2014-10-30 14:25 ` Thierry Reding
2014-11-07 18:03 ` Wolfram Sang
2014-11-07 18:03 ` Wolfram Sang
2014-10-30 13:59 ` [PATCH 3/3] i2c: core: Map OF IRQ at probe time Laurent Pinchart
[not found] ` <1414677578-27412-4-git-send-email-laurent.pinchart+renesas-ryLnwIuWjnjg/C1BVhZhaw@public.gmane.org>
2014-11-07 18:05 ` Wolfram Sang
2014-11-07 18:05 ` Wolfram Sang
2014-11-17 11:24 ` Geert Uytterhoeven
2014-11-17 11:24 ` Geert Uytterhoeven
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=20141030142752.GB20072@ulmo.nvidia.com \
--to=thierry.reding-re5jqeeqqe8avxtiumwx3w@public.gmane.org \
--cc=laurent.pinchart+renesas-ryLnwIuWjnjg/C1BVhZhaw@public.gmane.org \
--cc=linux-i2c-u79uwXL29TY76Z2rM5mHXA@public.gmane.org \
--cc=linux-kernel-u79uwXL29TY76Z2rM5mHXA@public.gmane.org \
/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 an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.