From mboxrd@z Thu Jan 1 00:00:00 1970 Return-path: Received: from mail.visioncatalog.de ([217.6.246.34] helo=root.phytec.de) by merlin.infradead.org with esmtp (Exim 4.80.1 #2 (Red Hat Linux)) id 1W09ZI-00014q-36 for barebox@lists.infradead.org; Mon, 06 Jan 2014 12:46:09 +0000 Received: from idefix.phytec.de (idefix.phytec.de [172.16.0.10]) by root.phytec.de (Postfix) with ESMTP id 6A4ECBF0ED for ; Mon, 6 Jan 2014 12:47:06 +0100 (CET) From: Jan Weitzel Date: Mon, 6 Jan 2014 13:45:43 +0100 Message-Id: <1389012343-20503-1-git-send-email-j.weitzel@phytec.de> In-Reply-To: <20140106105052.GE3677@pengutronix.de> References: <20140106105052.GE3677@pengutronix.de> List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , MIME-Version: 1.0 Content-Type: text/plain; charset="us-ascii" Content-Transfer-Encoding: 7bit Sender: "barebox" Errors-To: barebox-bounces+u.kleine-koenig=pengutronix.de@lists.infradead.org Subject: [PATCH v3] of: find also nodes by mixture of alias and path To: barebox@lists.infradead.org Let of_find_node_by_path_or_alias also find a node starting with an alias followed by a path like "i2c0/tps@24" Signed-off-by: Jan Weitzel --- v2: rename ret to node v3: use strchr drivers/of/base.c | 23 ++++++++++++++++++++++- 1 files changed, 22 insertions(+), 1 deletions(-) diff --git a/drivers/of/base.c b/drivers/of/base.c index ea2d879..6e5e7d6 100644 --- a/drivers/of/base.c +++ b/drivers/of/base.c @@ -1378,11 +1378,32 @@ EXPORT_SYMBOL(of_find_node_by_path); struct device_node *of_find_node_by_path_or_alias(struct device_node *root, const char *str) { + struct device_node *node; + const char *slash; + char *alias; + size_t len = 0; + if (*str == '/') return of_find_node_by_path_from(root, str); - else + + slash = strchr(str, '/'); + + if (!slash) return of_find_node_by_alias(root, str); + len = slash - str + 1; + alias = xmalloc(len); + strlcpy(alias, str, len); + + node = of_find_node_by_alias(root, alias); + + if (!node) + goto out; + + node = of_find_node_by_path_from(node, slash); +out: + free(alias); + return node; } EXPORT_SYMBOL(of_find_node_by_path_or_alias); -- 1.7.0.4 _______________________________________________ barebox mailing list barebox@lists.infradead.org http://lists.infradead.org/mailman/listinfo/barebox