summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorSimon Glass <sjg@chromium.org>2015-01-25 08:26:58 -0700
committerSimon Glass <sjg@chromium.org>2015-01-29 17:09:54 -0700
commit2f3b95dbc78ce96b0f9f471e688db66223988419 (patch)
treeebd398714c12cda56eac400fd7bb67b3dbde77d3
parent040b69af7209d8fe0742352f4a72719df8dda9a5 (diff)
dm: core: Set device tree node for root device
The root device corresponds to the root device tree node, so set this up. Also add a few notes to the documentation. Signed-off-by: Simon Glass <sjg@chromium.org>
-rw-r--r--doc/driver-model/README.txt4
-rw-r--r--drivers/core/root.c3
2 files changed, 7 insertions, 0 deletions
diff --git a/doc/driver-model/README.txt b/doc/driver-model/README.txt
index eafa825ab4..40415698cf 100644
--- a/doc/driver-model/README.txt
+++ b/doc/driver-model/README.txt
@@ -363,6 +363,10 @@ can leave out platdata_auto_alloc_size. In this case you can use malloc
in your ofdata_to_platdata (or probe) method to allocate the required memory,
and you should free it in the remove method.
+The driver model tree is intended to mirror that of the device tree. The
+root driver is at device tree offset 0 (the root node, '/'), and its
+children are the children of the root node.
+
Declaring Uclasses
------------------
diff --git a/drivers/core/root.c b/drivers/core/root.c
index 47b3acfbe9..a5b0a61501 100644
--- a/drivers/core/root.c
+++ b/drivers/core/root.c
@@ -49,6 +49,9 @@ int dm_init(void)
ret = device_bind_by_name(NULL, false, &root_info, &DM_ROOT_NON_CONST);
if (ret)
return ret;
+#ifdef CONFIG_OF_CONTROL
+ DM_ROOT_NON_CONST->of_offset = 0;
+#endif
ret = device_probe(DM_ROOT_NON_CONST);
if (ret)
return ret;