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
next 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