mail archive of the barebox mailing list
 help / color / mirror / Atom feed
From: yegorslists@googlemail.com
To: barebox@lists.infradead.org
Cc: tpiepho@kymetacorp.com
Subject: [PATCH v2 1/2] of: rework of_node_cmp() to support short and full node names
Date: Tue, 12 Jan 2016 11:16:38 +0100	[thread overview]
Message-ID: <1452593799-21408-1-git-send-email-yegorslists@googlemail.com> (raw)

From: Yegor Yefremov <yegorslists@googlemail.com>

Copy functionality of U-Boot's _fdt_nodename_eq() routine.

First it checks, if both node names are equal using the length
of the node in question and then it checks, if the in-tree
node has '@' as next character. This way following use cases are
possible:

If *.its file has following configurations:

        conf214@1 {
                description = "Boot Linux kernel with FDT blob (214)";
                kernel = "kernel@1";
                fdt = "fdt220@1";
        };
        conf214@2 {
                description = "Boot Linux kernel with FDT blob (214@2)";
                kernel = "kernel@1";
                fdt = "fdt210@1";
        };

Then:

> bootm /boot/kernel-fit.itb@conf214 - would select "conf214@1"
> bootm /boot/kernel-fit.itb@conf214@2 - would select "conf214@2"

Signed-off-by: Yegor Yefremov <yegorslists@googlemail.com>
---
Changes:
	v2: add of_node_cmp() description (Trent Piepho)

 drivers/of/base.c | 21 +++++++++++++++++++++
 include/of.h      |  2 +-
 2 files changed, 22 insertions(+), 1 deletion(-)

diff --git a/drivers/of/base.c b/drivers/of/base.c
index d12bfe3..971e27e 100644
--- a/drivers/of/base.c
+++ b/drivers/of/base.c
@@ -31,6 +31,27 @@
 #include <linux/err.h>
 
 /*
+ * Compare node names using the length of the node in question
+ * and then check, if the in-tree node has '@' as next character.
+ * This way both short names like 'name' and full like 'name@1' will
+ * be accepted.
+ */
+int of_node_cmp(const char *s1, const char *s2)
+{
+	int len = strlen(s2);
+
+	if (strncasecmp(s1, s2, len) != 0)
+		return 1;
+
+	if (s1[len] == '\0')
+		return 0;
+	else if (!memchr(s2, '@', len) && (s1[len] == '@'))
+		return 0;
+	else
+		return 1;
+}
+
+/*
  * Iterate over all nodes of a tree. As a devicetree does not
  * have a dedicated list head, the start node (usually the root
  * node) will not be iterated over.
diff --git a/include/of.h b/include/of.h
index 75cc3c1..3b18eef 100644
--- a/include/of.h
+++ b/include/of.h
@@ -10,7 +10,6 @@
 /* Default string compare functions */
 #define of_compat_cmp(s1, s2, l)	strcasecmp((s1), (s2))
 #define of_prop_cmp(s1, s2)		strcmp((s1), (s2))
-#define of_node_cmp(s1, s2)		strcasecmp((s1), (s2))
 
 #define OF_BAD_ADDR      ((u64)-1)
 
@@ -104,6 +103,7 @@ struct device_node *of_unflatten_dtb(const void *fdt);
 struct cdev;
 
 #ifdef CONFIG_OFTREE
+extern int of_node_cmp(const char *s1, const char *s2);
 extern int of_n_addr_cells(struct device_node *np);
 extern int of_n_size_cells(struct device_node *np);
 
-- 
2.1.4


_______________________________________________
barebox mailing list
barebox@lists.infradead.org
http://lists.infradead.org/mailman/listinfo/barebox

             reply	other threads:[~2016-01-12 10:17 UTC|newest]

Thread overview: 4+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2016-01-12 10:16 yegorslists [this message]
2016-01-12 10:16 ` [PATCH v2 2/2] FIT: bootm: accept configuration name as string yegorslists
2016-01-13 15:50 ` [PATCH v2 1/2] of: rework of_node_cmp() to support short and full node names Sascha Hauer
2016-01-13 16:01   ` Yegor Yefremov

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=1452593799-21408-1-git-send-email-yegorslists@googlemail.com \
    --to=yegorslists@googlemail.com \
    --cc=barebox@lists.infradead.org \
    --cc=tpiepho@kymetacorp.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