devicetree.vger.kernel.org archive mirror
 help / color / mirror / Atom feed
From: Alexander Holler <holler@ahsoftware.de>
To: Grant Likely <grant.likely@linaro.org>,
	Tomasz Figa <tomasz.figa@gmail.com>,
	linux-kernel@vger.kernel.org
Cc: devicetree@vger.kernel.org, linux-arm-kernel@lists.infradead.org,
	Greg Kroah-Hartman <gregkh@linuxfoundation.org>,
	Russell King <linux@arm.linux.org.uk>, Jon Loeliger <jdl@jdl.com>,
	Rob Herring <robh+dt@kernel.org>
Subject: Re: [RFC PATCH 1/9] dt: deps: dtc: Automatically add new property 'dependencies' which contains a list of referenced phandles
Date: Tue, 27 May 2014 22:31:08 +0200	[thread overview]
Message-ID: <5384F60C.5020608@ahsoftware.de> (raw)
In-Reply-To: <20140527200225.F12C4C40B4B@trevor.secretlab.ca>

Am 27.05.2014 22:02, schrieb Grant Likely:
> On Mon, 19 May 2014 14:35:49 +0200, Alexander Holler <holler@ahsoftware.de> wrote:

>> What's still questionable about the patches for dtc is if dependencies 
>> to devices and not just drivers should be included in the new property 
>> dependencies too. My current assumption is that all devices belonging to 
>> one and the same driver don't have dependencies between each other. In 
>> other words the order in which devices will be attached to one and the 
>> same driver isn't important. If that assumption is correct it would be 
>> possible to just attach all devices belonging to a driver after the 
>> driver was loaded (also I haven't that done in my patches).
> 
> There aren't really any guarantees here. It is perfectly valid to have
> two of the same device depending on the other, or even a device with a
> different driver between the two.
> 
> There's always going to be corner cases on the dependency chain. The
> question is whether or not it is worth trying to solve every concievable
> order, or if a partway solution is good enough.

Solving dependencies always happens automatically, with or without
dependencies inbetween devices. I just ignored dependencies between pure
devices (instead changed them into dependencies between drivers) because
I'm still not sure how to handle devices at all. Below is a diff ontop
my dtc-patches to include dependencies between devices too. As said, the
changes to do so are minimal. Of course, the graphs are a bit more
complex, because they then include devices too, but that isn't any
problem for the solving algorithm at all.


diff --git a/scripts/dtc/dependencies.c b/scripts/dtc/dependencies.c
index 06f447b..602ec01 100644
--- a/scripts/dtc/dependencies.c
+++ b/scripts/dtc/dependencies.c
@@ -66,8 +66,10 @@ static void add_deps(struct node *dt, struct node
*node, struct property *prop)
 			continue;
 		}

-		source = find_compatible_not_disabled(node);
-		target = find_compatible_not_disabled(refnode);
+		//source = find_compatible_not_disabled(node);
+		//target = find_compatible_not_disabled(refnode);
+		source = node;
+		target = refnode;
 		if (!source || !target || source == target ||
 				is_parent_of(source, target) ||
 				is_parent_of(target, source))
@@ -385,9 +387,9 @@ static int __init add_deps_lnx(struct device_node
*parent,

 	if (!__of_device_is_available(node))
 		return 0;
-	if (__of_get_property(node, "compatible", NULL)) {
+//	if (__of_get_property(node, "compatible", NULL)) {
 		if (!parent->phandle) {
-			if (__of_get_property(parent, "compatible", NULL))
+//			if (__of_get_property(parent, "compatible", NULL))
 				parent->phandle = 1 + order.max_phandle++;
 		}
 		if (!node->phandle)
@@ -425,7 +427,7 @@ static int __init add_deps_lnx(struct device_node
*parent,
 		if (unlikely(rc))
 			return rc;
 		parent = node; /* change the parent only if node is a driver */
-	}
+//	}
 	for_each_child_of_node(node, child) {
 		rc = add_deps_lnx(parent, child, print_dot);
 		if (unlikely(rc))
-- 
1.8.3.2



To make it easier to see devices in the produced order, here is another
patch on top:



@@ -464,6 +467,8 @@ void __init of_init_print_order(const char *name)
                if (order.order[i]->full_name)
                        pr_cont(" (%s)", order.order[i]->full_name);
                prop = get_property(order.order[i], "compatible");
+               if (!prop)
+                       pr_cont(" -");
                for (cp = of_prop_next_string(prop, NULL); cp;
                     cp = of_prop_next_string(prop, cp))
                        pr_cont(" %s", cp);



With that patch one can do e.g. dtc -t |  grep ' - ' to see which device
nodes are included which don't have a compatible property. For the
omap3-beagle this produces the following 21 additional entries in the
init-order:

aholler@laptopahbt ~/Source/aholler/dtc.git $ dts/make_dtb.sh
dts/omap3-beagle.dts -t | grep ' - '
init 4 0xe4 pinmux_twl4030_pins
(/ocp/pinmux@48002030/pinmux_twl4030_pins) - (parent 0x14b)
init 10 0x107 clocks (/ocp/cm@48004000/clocks) - (parent 0x106)
init 17 0x101 clocks (/ocp/prm@48306000/clocks) - (parent 0x100)
init 226 0x143 clocks (/ocp/scrm@48002000/clocks) - (parent 0x142)
init 237 0xe1 pinmux_hsusb2_pins
(/ocp/pinmux@48002030/pinmux_hsusb2_pins) - (parent 0x14b)
init 239 0xe2 pinmux_gpio1_pins (/ocp/pinmux@48002a00/pinmux_gpio1_pins)
- (parent 0x14d)
init 251 0xec pinmux_hsusb2_2_pins
(/ocp/pinmux@480025d8/pinmux_hsusb2_2_pins) - (parent 0x18e)
init 255 0xf4 chosen (/chosen) - (parent 0xf3)
init 256 0xf5 aliases (/aliases) - (parent 0xf3)
init 257 0xf6 memory (/memory) - (parent 0xf3)
init 258 0xf7 cpus (/cpus) - (parent 0xf3)
init 269 0x105 clockdomains (/ocp/prm@48306000/clockdomains) - (parent
0x100)
init 311 0x131 clockdomains (/ocp/cm@48004000/clockdomains) - (parent 0x106)
init 333 0x149 clockdomains (/ocp/scrm@48002000/clockdomains) - (parent
0x142)
init 335 0x14c pinmux_uart3_pins
(/ocp/pinmux@48002030/pinmux_uart3_pins) - (parent 0x14b)
init 343 0x157 codec (/ocp/i2c@48070000/twl@48/audio/codec) - (parent 0xf1)
init 398 0x18f choosen (/choosen) - (parent 0xf3)
init 400 0x191 pmu_stat (/leds/pmu_stat) - (parent 0x190)
init 401 0x192 heartbeat (/leds/heartbeat) - (parent 0x190)
init 402 0x193 mmc (/leds/mmc) - (parent 0x190)
init 405 0x196 user (/gpio_keys/user) - (parent 0x195)


Regards,

Alexander Holler

  reply	other threads:[~2014-05-27 20:31 UTC|newest]

Thread overview: 100+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2014-05-12 16:47 [RFC PATCH 0/9] dt: dependencies (for deterministic driver initialization order based on the DT) Alexander Holler
2014-05-12 16:47 ` [RFC PATCH 2/9] dt: deps: dependency based device creation Alexander Holler
2014-05-14 14:05   ` Grant Likely
     [not found]     ` <20140514140534.897F8C4153D-WNowdnHR2B42iJbIjFUEsiwD8/FfD2ys@public.gmane.org>
2014-05-14 14:49       ` Alexander Holler
2014-05-14 17:20         ` Alexander Holler
     [not found]         ` <53738261.4000000-SXC+2es9fhnfWeYVQQPykw@public.gmane.org>
2014-05-14 20:06           ` Grant Likely
2014-05-14 21:10             ` Alexander Holler
     [not found]               ` <5373DBCF.1080503-SXC+2es9fhnfWeYVQQPykw@public.gmane.org>
2014-05-16 11:00                 ` Grant Likely
2014-05-18  9:53                   ` Alexander Holler
2014-05-16 17:31                 ` Alexander Shiyan
2014-05-16 17:31               ` Alexander Shiyan
2014-05-16 17:31               ` Alexander Shiyan
2014-05-14 15:51     ` Alexander Holler
2014-05-17 14:24     ` Tomasz Figa
2014-05-18 14:59       ` Grant Likely
2014-05-19  8:41         ` Alexander Holler
2014-05-12 16:47 ` [RFC PATCH 4/9] dt: deps: dtc: Add option to print dependency graph as dot (Graphviz) Alexander Holler
2014-05-12 16:47 ` [RFC PATCH 7/9] dt: deps: kirkwood: make it possible to use CONFIG_OF_DEPENDENCIES Alexander Holler
2014-05-12 16:47 ` [RFC PATCH 8/9] dt: deps: dts: kirkwood: dockstar: add dependency ehci -> usb power regulator Alexander Holler
2014-05-12 16:48 ` [RFC PATCH 9/9] dt: deps: omap2: make it possible to use CONFIG_OF_DEPENDENCIES Alexander Holler
     [not found] ` <1399913280-6915-1-git-send-email-holler-SXC+2es9fhnfWeYVQQPykw@public.gmane.org>
2014-05-12 16:47   ` [RFC PATCH 1/9] dt: deps: dtc: Automatically add new property 'dependencies' which contains a list of referenced phandles Alexander Holler
     [not found]     ` <1399913280-6915-2-git-send-email-holler-SXC+2es9fhnfWeYVQQPykw@public.gmane.org>
2014-05-17 12:16       ` Tomasz Figa
2014-05-19 12:35         ` Alexander Holler
2014-05-19 15:38           ` Jon Loeliger
2014-05-19 15:49           ` Jon Loeliger
     [not found]             ` <CAJgR-BhRtc1XGqk-TVOrf2y_pYS+nratkPrf+OenP4SFcyK3ng-JsoAwUIsXosN+BqQ9rBEUg@public.gmane.org>
2014-05-19 17:26               ` Alexander Holler
     [not found]           ` <5379FAA5.10404-SXC+2es9fhnfWeYVQQPykw@public.gmane.org>
2014-05-27 20:02             ` Grant Likely
2014-05-27 20:31               ` Alexander Holler [this message]
2014-05-12 16:47   ` [RFC PATCH 3/9] dt: deps: dtc: Add option to print initialization order Alexander Holler
2014-05-12 20:38     ` Jon Loeliger
     [not found]       ` <CAJgR-BhnFngGr9qxa7NvF7GExiCAr1=HS16AtN20uj7nCmLcKQ-JsoAwUIsXosN+BqQ9rBEUg@public.gmane.org>
2014-05-12 22:58         ` Alexander Holler
     [not found]           ` <537151FF.8070104-SXC+2es9fhnfWeYVQQPykw@public.gmane.org>
2014-05-13  8:54             ` [PATCH 0/3] add dependencies Alexander Holler
     [not found]               ` <1399971243-18153-1-git-send-email-holler-SXC+2es9fhnfWeYVQQPykw@public.gmane.org>
2014-05-13  8:54                 ` [PATCH 1/3] deps: Automatically add new property 'dependencies' which contains a list of referenced phandles Alexander Holler
2014-05-13  8:54                 ` [PATCH 2/3] deps: Add option to print initialization order Alexander Holler
2014-05-13  8:54                 ` [PATCH 3/3] deps: Add option to print dependency graph as dot (Graphviz) Alexander Holler
2014-05-13 18:48             ` [PATCH] deps: introduce new (virtual) property no-dependencies Alexander Holler
     [not found]               ` <1400006923-7950-1-git-send-email-holler-SXC+2es9fhnfWeYVQQPykw@public.gmane.org>
2014-05-14  1:55                 ` Alexander Holler
     [not found]                   ` <5372CD15.5020001-SXC+2es9fhnfWeYVQQPykw@public.gmane.org>
2014-05-14  7:02                     ` Alexander Holler
2014-05-12 16:47   ` [RFC PATCH 5/9] dt: deps: register drivers based on the initialization order based on DT Alexander Holler
2014-05-14 14:13     ` Grant Likely
     [not found]       ` <20140514141300.67206C4153D-WNowdnHR2B42iJbIjFUEsiwD8/FfD2ys@public.gmane.org>
2014-05-14 14:58         ` Alexander Holler
     [not found]           ` <53738496.2070800-SXC+2es9fhnfWeYVQQPykw@public.gmane.org>
2014-05-14 19:32             ` Grant Likely
2014-05-12 16:47   ` [RFC PATCH 6/9] dt: deps: WIP: well done drivers Alexander Holler
2014-05-13 15:40   ` [PATCH 10/9] dt: deps: fix bug not registering late drivers when OF_DEPENDENCIES is disabled Alexander Holler
2014-05-13 19:27   ` [RFC PATCH 11/9] dt: deps: dtc: introduce new (virtual) property no-dependencies Alexander Holler
2014-05-14 14:19   ` [RFC PATCH 0/9] dt: dependencies (for deterministic driver initialization order based on the DT) Grant Likely
2014-05-14 15:02     ` Alexander Holler
     [not found]       ` <53738580.7000902-SXC+2es9fhnfWeYVQQPykw@public.gmane.org>
2014-05-14 16:05         ` Grant Likely
     [not found]           ` <CACxGe6s4px_9CNk3bkc1OF1KGZGYdyh4gE_VufCKU5dLFBG48g-JsoAwUIsXosN+BqQ9rBEUg@public.gmane.org>
2014-05-14 16:23             ` Alexander Holler
2014-05-14 17:30               ` Rob Herring
2014-05-14 17:45                 ` Alexander Holler
2014-05-14 17:53                   ` Alexander Holler
     [not found]                     ` <5373ADB6.1070702-SXC+2es9fhnfWeYVQQPykw@public.gmane.org>
2014-05-14 18:16                       ` Alexander Holler
2014-05-14 19:13                         ` Alexander Holler
2014-05-14 19:06                   ` Rob Herring
     [not found]                     ` <CAL_JsqJ-=amrmRR9FfnOH1ELDQ1kTaG3e1n878mgpZP1FUw_jA-JsoAwUIsXosN+BqQ9rBEUg@public.gmane.org>
2014-05-14 19:24                       ` Alexander Holler
     [not found]                         ` <5373C2F4.50803-SXC+2es9fhnfWeYVQQPykw@public.gmane.org>
2014-05-15  1:46                           ` Alexander Holler
2014-05-14 23:00                       ` Alexander Holler
     [not found]     ` <20140514141914.446F7C4153D-WNowdnHR2B42iJbIjFUEsiwD8/FfD2ys@public.gmane.org>
2014-08-21 14:02       ` Thierry Reding
     [not found]         ` <20140821140211.GD19293-AwZRO8vwLAwmlAP/+Wk3EA@public.gmane.org>
2014-08-21 19:19           ` Alexander Holler
     [not found]             ` <53F64624.5000403-SXC+2es9fhnfWeYVQQPykw@public.gmane.org>
2014-08-22 13:19               ` Mark Rutland
2014-08-22 15:45                 ` Alexander Holler
2014-08-25  9:39                 ` Thierry Reding
2014-08-25 13:08                   ` Jon Loeliger
     [not found]                     ` <E1XLu15-0002DP-6o-CYoMK+44s/E@public.gmane.org>
2014-08-25 13:37                       ` Thierry Reding
     [not found]                         ` <20140825133714.GH4163-AwZRO8vwLAwmlAP/+Wk3EA@public.gmane.org>
2014-08-25 14:13                           ` Jon Loeliger
     [not found]                             ` <E1XLv1z-0002Jv-VN-CYoMK+44s/E@public.gmane.org>
2014-08-25 14:41                               ` Thierry Reding
2014-08-26  8:42                           ` Grant Likely
2014-08-26  8:49                             ` Thierry Reding
2014-08-26  9:42                               ` Alexander Holler
2014-08-26 10:11                                 ` Mark Rutland
2014-08-26 10:24                                   ` Thierry Reding
2014-08-27 10:34                                   ` Grant Likely
     [not found]                                     ` <20140827103432.64927C409CB-WNowdnHR2B42iJbIjFUEsiwD8/FfD2ys@public.gmane.org>
2014-08-27 14:44                                       ` Catalin Marinas
     [not found]                                         ` <20140827144403.GB13850-5wv7dgnIgG8@public.gmane.org>
2014-08-27 16:22                                           ` Stephen Warren
     [not found]                                             ` <53FE05AE.9000406-3lzwWm7+Weoh9ZMKESR00Q@public.gmane.org>
2014-08-27 16:30                                               ` Alexander Holler
2014-08-27 16:37                                                 ` Stephen Warren
2014-08-27 16:58                                                   ` Alexander Holler
     [not found]                                                   ` <53FE0966.5020206-3lzwWm7+Weoh9ZMKESR00Q@public.gmane.org>
2014-08-27 17:52                                                     ` Catalin Marinas
     [not found]                                                       ` <20140827175243.GJ13850-5wv7dgnIgG8@public.gmane.org>
2014-08-27 18:14                                                         ` Alexander Holler
2014-08-28  6:50                                                   ` Alexander Holler
2014-08-28  9:23                                                     ` Catalin Marinas
     [not found]                                                       ` <20140828092308.GA31111-5wv7dgnIgG8@public.gmane.org>
2014-08-29  1:43                                                         ` Alexander Holler
     [not found]                                 ` <53FC566C.30904-SXC+2es9fhnfWeYVQQPykw@public.gmane.org>
2014-08-26 10:25                                   ` Thierry Reding
2014-08-26 10:44                                     ` Alexander Holler
     [not found]                                       ` <53FC6513.5040800-SXC+2es9fhnfWeYVQQPykw@public.gmane.org>
2014-08-26 11:01                                         ` Alexander Holler
2014-08-26 11:08                                       ` Thierry Reding
2014-08-26 11:23                                         ` Alexander Holler
     [not found]                                           ` <53FC6E4A.6030407-SXC+2es9fhnfWeYVQQPykw@public.gmane.org>
2014-08-26 11:47                                             ` Thierry Reding
2014-08-26 12:00                                               ` Alexander Holler
     [not found]                                                 ` <53FC76E8.5050009-SXC+2es9fhnfWeYVQQPykw@public.gmane.org>
2014-08-26 13:58                                                   ` Jon Loeliger
2014-08-26 14:17                                                     ` Thierry Reding
     [not found]                                                     ` <E1XMHGc-0008TS-CQ-CYoMK+44s/E@public.gmane.org>
2014-08-27  7:16                                                       ` Alexander Holler
2014-08-27  9:26                                                         ` Alexander Holler
2014-08-26  7:56                       ` Alexander Holler
2014-08-26  8:51                       ` Grant Likely
     [not found]                         ` <20140826085128.958A9C40989-WNowdnHR2B42iJbIjFUEsiwD8/FfD2ys@public.gmane.org>
2014-08-26  9:56                           ` Alexander Holler
2014-08-26 10:18                           ` Alexander Holler
2014-08-26  9:54                   ` Mark Rutland
2014-05-14  8:20 ` dt: deps: some tips about how to debug/evaluate this feature Alexander Holler

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=5384F60C.5020608@ahsoftware.de \
    --to=holler@ahsoftware.de \
    --cc=devicetree@vger.kernel.org \
    --cc=grant.likely@linaro.org \
    --cc=gregkh@linuxfoundation.org \
    --cc=jdl@jdl.com \
    --cc=linux-arm-kernel@lists.infradead.org \
    --cc=linux-kernel@vger.kernel.org \
    --cc=linux@arm.linux.org.uk \
    --cc=robh+dt@kernel.org \
    --cc=tomasz.figa@gmail.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;
as well as URLs for NNTP newsgroup(s).