From: Nikhil Devshatwar <nikhil.nd@ti.com>
To: david@gibson.dropbear.id.au, jdl@jdl.com
Cc: devicetree-compiler@vger.kernel.org, linux-omap@vger.kernel.org,
Nikhil Devshatwar <nikhil.nd@ti.com>
Subject: [PATCH] dtc: parser: Add label while overriding nodes
Date: Wed, 28 Jan 2015 20:20:11 +0530 [thread overview]
Message-ID: <1422456611-15447-1-git-send-email-nikhil.nd@ti.com> (raw)
This patch changes the dtc grammar to allow following syntax
i2cexp: &i2c2 {
...
};
Current device tree compiler allows to define multiple labels when defining
the device node the first time. Typically device nodes are defined in
DTSI files. Now these nodes can be overwritten for updating some of the
properties. Typically, device nodes are overridden in DTS files.
When working with adapter boards, most of the time adapter board can fit to
multiple base boards. But depending on which base board it is connected to,
the devices on the adapter board would be children of different devices.
e.g. On dra7-evm.dts, i2c2 is exported for expansion connector whereas
on dra72-evm.dts, i2c5 is exported for expansion connector.
This causes a problem when writing a generic device tree file for
the adapter board. Because, you cannot know whether all the devices on
adapter board are present on i2c or i2c5.
The problem can be solved by adding a common label (e.g. i2cexp) in both
of the DTS files when overriding the device nodes for i2c2 or i2c5.
This way, generic adapter board file would override the i2cexp. And
depending on which base board you use the adapter board, all the devices
are automatically added for correct device nodes.
Signed-off-by: Nikhil Devshatwar <nikhil.nd@ti.com>
---
dtc-parser.y | 12 ++++++++++++
1 file changed, 12 insertions(+)
diff --git a/dtc-parser.y b/dtc-parser.y
index ea57e0a..5a897e3 100644
--- a/dtc-parser.y
+++ b/dtc-parser.y
@@ -140,6 +140,18 @@ devicetree:
{
$$ = merge_nodes($1, $3);
}
+
+ | devicetree DT_LABEL DT_REF nodedef
+ {
+ struct node *target = get_node_by_ref($1, $3);
+
+ add_label(&target->labels, $2);
+ if (target)
+ merge_nodes(target, $4);
+ else
+ ERROR(&@3, "Label or path %s not found", $3);
+ $$ = $1;
+ }
| devicetree DT_REF nodedef
{
struct node *target = get_node_by_ref($1, $2);
--
1.7.9.5
next reply other threads:[~2015-01-28 14:50 UTC|newest]
Thread overview: 7+ messages / expand[flat|nested] mbox.gz Atom feed top
2015-01-28 14:50 Nikhil Devshatwar [this message]
2015-01-29 10:07 ` [PATCH] dtc: parser: Add label while overriding nodes David Gibson
[not found] ` <20150129100731.GC10150-RXTfZT5YzpxwFLYp8hBm2A@public.gmane.org>
2015-01-29 10:13 ` David Gibson
-- strict thread matches above, loose matches on Subject: below --
2015-01-08 14:12 Nikhil Devshatwar
2015-01-27 15:11 ` Devshatwar, Nikhil
[not found] ` <1420726362-22555-1-git-send-email-nikhil.nd-l0cyMroinI0@public.gmane.org>
2015-01-27 23:34 ` Rob Herring
[not found] ` <CAL_Jsq+w7R=99qPc+YG_Bh1L-nMs1Gptjwo=KYTK5OX2HVVNpA-JsoAwUIsXosN+BqQ9rBEUg@public.gmane.org>
2015-01-28 6:38 ` Devshatwar, Nikhil
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=1422456611-15447-1-git-send-email-nikhil.nd@ti.com \
--to=nikhil.nd@ti.com \
--cc=david@gibson.dropbear.id.au \
--cc=devicetree-compiler@vger.kernel.org \
--cc=jdl@jdl.com \
--cc=linux-omap@vger.kernel.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 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).