Groups | Search | Server Info | Keyboard shortcuts | Login | Register [http] [https] [nntp] [nntps]
Groups > linux.kernel > #1252730
| Path | csiph.com!usenet.pasdenom.info!aioe.org!bofh.it!news.nic.it!robomod |
|---|---|
| From | Geert Uytterhoeven <geert@linux-m68k.org> |
| Newsgroups | linux.kernel |
| Subject | Re: [PATCH v4 04/22] of: add function to allow probing a device from a OF node |
| Date | Wed, 21 Oct 2015 13:30:02 +0200 |
| Message-ID | <qlZKF-1ud-1@gated-at.bofh.it> (permalink) |
| References | <q63IB-5sL-5@gated-at.bofh.it> <q63IB-5sL-3@gated-at.bofh.it> |
| X-Original-To | Tomeu Vizoso <tomeu.vizoso@collabora.com> |
| Dkim-Signature | v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20120113; h=mime-version:sender:in-reply-to:references:date:message-id:subject :from:to:cc:content-type; bh=fAAoFOnfxnLdutfWr9HYwSk5H7xR5c1HJLxs7Tz0pXM=; b=SDu4MuE2KS/pyKU7qZiKvkp/SbcWOmpa16u4ST7MwXdb2xfEabxgbF267+SLDLI+09 UpE3LItsZbFOS6hBLvLV8eCyYQNwgkHB8FX97yZI8krbouuV0xSHliBLhxxQqLSIYYGz q5n1Q7lB/XQjMG4yV1HT3w7sGr+4ctPzn3fp/mCC416kdoMZMSupEHksS1TUw0k4YmW2 WZFBlF/4L7MWGRA8mm+5WEi650xv8KSXQawYQ/BlxaJgY+b+HNqasCNpvYC1KmAge8Fc kVmh5/8bBPIuJ47EuH8fZ11T+0lbMWp95RTix38aVk8sw7m3xR3OrbgKOJf/6RvJVfHQ bASA== |
| MIME-Version | 1.0 |
| X-Received | by 10.202.65.11 with SMTP id o11mr5567622oia.18.1445426948084; Wed, 21 Oct 2015 04:29:08 -0700 (PDT) |
| X-Google-Sender-Auth | KDSh89rAnfLZ8jB_R0QcOnbBt0M |
| Content-Type | text/plain; charset=UTF-8 |
| Sender | robomod@news.nic.it |
| List-ID | <linux-kernel.vger.kernel.org> |
| X-Mailing-List | linux-kernel@vger.kernel.org |
| Approved | robomod@news.nic.it |
| Lines | 118 |
| Organization | linux.* mail to news gateway |
| X-Original-Cc | "linux-kernel@vger.kernel.org" <linux-kernel@vger.kernel.org>, Rob Herring <robh+dt@kernel.org>, Stephen Warren <swarren@wwwdotorg.org>, Javier Martinez Canillas <javier@osg.samsung.com>, Mark Brown <broonie@kernel.org>, Thierry Reding <thierry.reding@gmail.com>, "Rafael J. Wysocki" <rjw@rjwysocki.net>, "linux-arm-kernel@lists.infradead.org" <linux-arm-kernel@lists.infradead.org>, Dmitry Torokhov <dmitry.torokhov@gmail.com>, "devicetree@vger.kernel.org" <devicetree@vger.kernel.org>, Linus Walleij <linus.walleij@linaro.org>, ACPI Devel Maling List <linux-acpi@vger.kernel.org>, Arnd Bergmann <arnd@arndb.de>, Frank Rowand <frowand.list@gmail.com>, Grant Likely <grant.likely@linaro.org>, Linux-sh list <linux-sh@vger.kernel.org> |
| X-Original-Date | Wed, 21 Oct 2015 13:29:08 +0200 |
| X-Original-Message-ID | <CAMuHMdW+Uq+mu=iy852bzcvRs8E=w8-WV4oDUyTyLOaDnwrp1Q@mail.gmail.com> |
| X-Original-References | <1441628627-5143-1-git-send-email-tomeu.vizoso@collabora.com> <1441628627-5143-5-git-send-email-tomeu.vizoso@collabora.com> |
| X-Original-Sender | linux-kernel-owner@vger.kernel.org |
| Xref | csiph.com linux.kernel:1252730 |
Show key headers only | View raw
Hi Tomeu,
On Mon, Sep 7, 2015 at 2:23 PM, Tomeu Vizoso <tomeu.vizoso@collabora.com> wrote:
> Walks the OF tree up and finds the closest ancestor that has a struct
> device associated with it, probing it if isn't bound to a driver yet.
>
> The above should ensure that the dependency represented by the passed OF
> node is available, because probing a device should cause its descendants
> to be probed as well (when they get registered).
>
> Subsystems can use this when looking up resources for drivers, to reduce
> the chances of deferred probes because of the probing order of devices.
>
> Signed-off-by: Tomeu Vizoso <tomeu.vizoso@collabora.com>
> ---
>
> Changes in v4:
> - Rename of_platform_probe to of_device_probe
> - Use device_node.device instead of device_node.platform_dev
>
> Changes in v3:
> - Set and use device_node.platform_dev instead of reversing the logic to
> find the platform device that encloses a device node.
> - Drop the fwnode API to probe firmware nodes and add OF-only API for
> now. I think this same scheme could be used for machines with ACPI,
> but I haven't been able to find one that had to defer its probes because
> of the device probe order.
>
> Changes in v2: None
>
> drivers/of/device.c | 58 +++++++++++++++++++++++++++++++++++++++++++++++
> drivers/of/platform.c | 2 ++
> include/linux/of_device.h | 3 +++
> 3 files changed, 63 insertions(+)
>
> diff --git a/drivers/of/device.c b/drivers/of/device.c
> index 8b91ea241b10..c32ac7b6fbe2 100644
> --- a/drivers/of/device.c
> +++ b/drivers/of/device.c
> @@ -286,3 +286,61 @@ int of_device_uevent_modalias(struct device *dev, struct kobj_uevent_env *env)
>
> return 0;
> }
> +
> +/**
> + * of_device_probe() - Probe device associated with OF node
> + * @np: node to probe
> + *
> + * Probe the device associated with the passed device node.
> + */
> +void of_device_probe(struct device_node *np)
> +{
> + struct device_node *target;
> + struct device *dev = NULL;
> +
> + if (!of_root || !of_node_check_flag(of_root, OF_POPULATED_BUS))
> + return;
> +
> + if (!np)
> + return;
> +
> + of_node_get(np);
> +
> + /* Find the closest ancestor that has a device associated */
> + for (target = np;
> + !of_node_is_root(target);
> + target = of_get_next_parent(target))
> + if (target->device) {
> + dev = target->device;
> + break;
> + }
> +
> + of_node_put(target);
> +
> + if (!dev) {
> + pr_warn("Couldn't find a device for node '%s'\n",
> + of_node_full_name(np));
This is triggered for all devices with clocks instantiated through
CLK_OF_DECLARE().
E.g. on r8a7791/koelsch ("... | sort | uniq -c"):
1 Couldn't find a device for node '/clocks/audio_clk_a'
1 Couldn't find a device for node '/clocks/audio_clk_b'
1 Couldn't find a device for node '/clocks/audio_clk_c'
2 Couldn't find a device for node '/clocks/cpg_clocks@e6150000'
1 Couldn't find a device for node '/clocks/m2_clk'
2 Couldn't find a device for node '/clocks/mstp0_clks@e6150130'
34 Couldn't find a device for node '/clocks/mstp10_clks@e6150998'
2 Couldn't find a device for node '/clocks/mstp1_clks@e6150134'
2 Couldn't find a device for node '/clocks/mstp2_clks@e6150138'
10 Couldn't find a device for node '/clocks/mstp3_clks@e615013c'
3 Couldn't find a device for node '/clocks/mstp5_clks@e6150144'
8 Couldn't find a device for node '/clocks/mstp7_clks@e615014c'
4 Couldn't find a device for node '/clocks/mstp8_clks@e6150990'
22 Couldn't find a device for node '/clocks/mstp9_clks@e6150994'
1 Couldn't find a device for node '/clocks/pcie_bus_clk'
Corresponding DTS is arch/arm/boot/dts/r8a7791.dtsi.
> + return;
> + }
Gr{oetje,eeting}s,
Geert
--
Geert Uytterhoeven -- There's lots of Linux beyond ia32 -- geert@linux-m68k.org
In personal conversations with technical people, I call myself a hacker. But
when I'm talking to journalists I just say "programmer" or something like that.
-- Linus Torvalds
--
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@vger.kernel.org
More majordomo info at http://vger.kernel.org/majordomo-info.html
Please read the FAQ at http://www.tux.org/lkml/
Back to linux.kernel | Previous | Next | Find similar | Unroll thread
Re: [PATCH v4 04/22] of: add function to allow probing a device from a OF node Geert Uytterhoeven <geert@linux-m68k.org> - 2015-10-21 13:30 +0200
csiph-web