From mboxrd@z Thu Jan 1 00:00:00 1970
From: a.hajda@samsung.com (Andrzej Hajda)
Date: Tue, 23 Dec 2014 12:10:00 +0100
Subject: [PATCH v6 3/3] of: Add of_graph_get_port_by_id function
In-Reply-To: <1419261091-29888-4-git-send-email-p.zabel@pengutronix.de>
References: <1419261091-29888-1-git-send-email-p.zabel@pengutronix.de>
<1419261091-29888-4-git-send-email-p.zabel@pengutronix.de>
Message-ID: <54994D88.3000009@samsung.com>
To: linux-arm-kernel@lists.infradead.org
List-Id: linux-arm-kernel.lists.infradead.org
Hi Philipp,
On 12/22/2014 04:11 PM, Philipp Zabel wrote:
> This patch adds a function to get a port device tree node by port id,
> or reg property value.
>
> Signed-off-by: Philipp Zabel
> Acked-by: Laurent Pinchart
> ---
> drivers/of/base.c | 26 ++++++++++++++++++++++++++
> include/linux/of_graph.h | 7 +++++++
> 2 files changed, 33 insertions(+)
>
> diff --git a/drivers/of/base.c b/drivers/of/base.c
> index aac66df..c816299 100644
> --- a/drivers/of/base.c
> +++ b/drivers/of/base.c
> @@ -2080,6 +2080,32 @@ int of_graph_parse_endpoint(const struct device_node *node,
> EXPORT_SYMBOL(of_graph_parse_endpoint);
>
> /**
> + * of_graph_get_port_by_id() - get the port matching a given id
> + * @parent: pointer to the parent device node
Here you have 'parent' and 'node' in the code.
> + * @id: id of the port
> + *
> + * Return: A 'port' node pointer with refcount incremented. The caller
> + * has to use of_node_put() on it when done.
> + */
> +struct device_node *of_graph_get_port_by_id(struct device_node *node, u32 id)
> +{
> + struct device_node *port;
> +
> + for_each_child_of_node(node, port) {
> + u32 port_id = 0;
> +
> + if (of_node_cmp(port->name, "port") != 0)
> + continue;
> + of_property_read_u32(port, "reg", &port_id);
> + if (id == port_id)
> + return port;
> + }
> +
> + return NULL;
> +}
Maybe I miss something but it does not handle optional 'ports' node.
Regards
Andrzej
> +EXPORT_SYMBOL(of_graph_get_port_by_id);
> +
> +/**
> * of_graph_get_next_endpoint() - get next endpoint node
> * @parent: pointer to the parent device node
> * @prev: previous endpoint node, or NULL to get first
> diff --git a/include/linux/of_graph.h b/include/linux/of_graph.h
> index e43442e..3c1c95a 100644
> --- a/include/linux/of_graph.h
> +++ b/include/linux/of_graph.h
> @@ -40,6 +40,7 @@ struct of_endpoint {
> #ifdef CONFIG_OF
> int of_graph_parse_endpoint(const struct device_node *node,
> struct of_endpoint *endpoint);
> +struct device_node *of_graph_get_port_by_id(struct device_node *node, u32 id);
> struct device_node *of_graph_get_next_endpoint(const struct device_node *parent,
> struct device_node *previous);
> struct device_node *of_graph_get_remote_port_parent(
> @@ -53,6 +54,12 @@ static inline int of_graph_parse_endpoint(const struct device_node *node,
> return -ENOSYS;
> }
>
> +static inline struct device_node *of_graph_get_port_by_id(
> + struct device_node *node, u32 id)
> +{
> + return NULL;
> +}
> +
> static inline struct device_node *of_graph_get_next_endpoint(
> const struct device_node *parent,
> struct device_node *previous)
>
From mboxrd@z Thu Jan 1 00:00:00 1970
From: Andrzej Hajda
Subject: Re: [PATCH v6 3/3] of: Add of_graph_get_port_by_id function
Date: Tue, 23 Dec 2014 12:10:00 +0100
Message-ID: <54994D88.3000009@samsung.com>
References: <1419261091-29888-1-git-send-email-p.zabel@pengutronix.de>
<1419261091-29888-4-git-send-email-p.zabel@pengutronix.de>
Mime-Version: 1.0
Content-Type: text/plain; charset="utf-8"
Content-Transfer-Encoding: base64
Return-path:
Received: from mailout3.w1.samsung.com (mailout3.w1.samsung.com
[210.118.77.13])
by gabe.freedesktop.org (Postfix) with ESMTP id B80506E3B4
for ; Tue, 23 Dec 2014 03:10:19 -0800 (PST)
Received: from eucpsbgm1.samsung.com (unknown [203.254.199.244])
by mailout3.w1.samsung.com
(Oracle Communications Messaging Server 7u4-24.01(7.0.4.24.0) 64bit (built Nov
17 2011)) with ESMTP id <0NH1003W38JXC590@mailout3.w1.samsung.com> for
dri-devel@lists.freedesktop.org; Tue, 23 Dec 2014 11:14:21 +0000 (GMT)
In-reply-to: <1419261091-29888-4-git-send-email-p.zabel@pengutronix.de>
List-Unsubscribe: ,
List-Archive:
List-Post:
List-Help:
List-Subscribe: ,
Errors-To: dri-devel-bounces@lists.freedesktop.org
Sender: "dri-devel"
To: Philipp Zabel , Grant Likely
Cc: Mathieu Poirier , Greg Kroah-Hartman , linux-kernel@vger.kernel.org, dri-devel@lists.freedesktop.org, Laurent Pinchart , kernel@pengutronix.de, Russell King , linux-media@vger.kernel.org, Guennadi Liakhovetski , linux-arm-kernel@lists.infradead.org, Mauro Carvalho Chehab
List-Id: dri-devel@lists.freedesktop.org
SGkgUGhpbGlwcCwKCk9uIDEyLzIyLzIwMTQgMDQ6MTEgUE0sIFBoaWxpcHAgWmFiZWwgd3JvdGU6
Cj4gVGhpcyBwYXRjaCBhZGRzIGEgZnVuY3Rpb24gdG8gZ2V0IGEgcG9ydCBkZXZpY2UgdHJlZSBu
b2RlIGJ5IHBvcnQgaWQsCj4gb3IgcmVnIHByb3BlcnR5IHZhbHVlLgo+IAo+IFNpZ25lZC1vZmYt
Ynk6IFBoaWxpcHAgWmFiZWwgPHAuemFiZWxAcGVuZ3V0cm9uaXguZGU+Cj4gQWNrZWQtYnk6IExh
dXJlbnQgUGluY2hhcnQgPGxhdXJlbnQucGluY2hhcnRAaWRlYXNvbmJvYXJkLmNvbT4KPiAtLS0K
PiAgZHJpdmVycy9vZi9iYXNlLmMgICAgICAgIHwgMjYgKysrKysrKysrKysrKysrKysrKysrKysr
KysKPiAgaW5jbHVkZS9saW51eC9vZl9ncmFwaC5oIHwgIDcgKysrKysrKwo+ICAyIGZpbGVzIGNo
YW5nZWQsIDMzIGluc2VydGlvbnMoKykKPiAKPiBkaWZmIC0tZ2l0IGEvZHJpdmVycy9vZi9iYXNl
LmMgYi9kcml2ZXJzL29mL2Jhc2UuYwo+IGluZGV4IGFhYzY2ZGYuLmM4MTYyOTkgMTAwNjQ0Cj4g
LS0tIGEvZHJpdmVycy9vZi9iYXNlLmMKPiArKysgYi9kcml2ZXJzL29mL2Jhc2UuYwo+IEBAIC0y
MDgwLDYgKzIwODAsMzIgQEAgaW50IG9mX2dyYXBoX3BhcnNlX2VuZHBvaW50KGNvbnN0IHN0cnVj
dCBkZXZpY2Vfbm9kZSAqbm9kZSwKPiAgRVhQT1JUX1NZTUJPTChvZl9ncmFwaF9wYXJzZV9lbmRw
b2ludCk7Cj4gIAo+ICAvKioKPiArICogb2ZfZ3JhcGhfZ2V0X3BvcnRfYnlfaWQoKSAtIGdldCB0
aGUgcG9ydCBtYXRjaGluZyBhIGdpdmVuIGlkCj4gKyAqIEBwYXJlbnQ6IHBvaW50ZXIgdG8gdGhl
IHBhcmVudCBkZXZpY2Ugbm9kZQoKSGVyZSB5b3UgaGF2ZSAncGFyZW50JyBhbmQgJ25vZGUnIGlu
IHRoZSBjb2RlLgoKPiArICogQGlkOiBpZCBvZiB0aGUgcG9ydAo+ICsgKgo+ICsgKiBSZXR1cm46
IEEgJ3BvcnQnIG5vZGUgcG9pbnRlciB3aXRoIHJlZmNvdW50IGluY3JlbWVudGVkLiBUaGUgY2Fs
bGVyCj4gKyAqIGhhcyB0byB1c2Ugb2Zfbm9kZV9wdXQoKSBvbiBpdCB3aGVuIGRvbmUuCj4gKyAq
Lwo+ICtzdHJ1Y3QgZGV2aWNlX25vZGUgKm9mX2dyYXBoX2dldF9wb3J0X2J5X2lkKHN0cnVjdCBk
ZXZpY2Vfbm9kZSAqbm9kZSwgdTMyIGlkKQo+ICt7Cj4gKwlzdHJ1Y3QgZGV2aWNlX25vZGUgKnBv
cnQ7Cj4gKwo+ICsJZm9yX2VhY2hfY2hpbGRfb2Zfbm9kZShub2RlLCBwb3J0KSB7Cj4gKwkJdTMy
IHBvcnRfaWQgPSAwOwo+ICsKPiArCQlpZiAob2Zfbm9kZV9jbXAocG9ydC0+bmFtZSwgInBvcnQi
KSAhPSAwKQo+ICsJCQljb250aW51ZTsKPiArCQlvZl9wcm9wZXJ0eV9yZWFkX3UzMihwb3J0LCAi
cmVnIiwgJnBvcnRfaWQpOwo+ICsJCWlmIChpZCA9PSBwb3J0X2lkKQo+ICsJCQlyZXR1cm4gcG9y
dDsKPiArCX0KPiArCj4gKwlyZXR1cm4gTlVMTDsKPiArfQoKCk1heWJlIEkgbWlzcyBzb21ldGhp
bmcgYnV0IGl0IGRvZXMgbm90IGhhbmRsZSBvcHRpb25hbCAncG9ydHMnIG5vZGUuCgpSZWdhcmRz
CkFuZHJ6ZWoKCgo+ICtFWFBPUlRfU1lNQk9MKG9mX2dyYXBoX2dldF9wb3J0X2J5X2lkKTsKPiAr
Cj4gKy8qKgo+ICAgKiBvZl9ncmFwaF9nZXRfbmV4dF9lbmRwb2ludCgpIC0gZ2V0IG5leHQgZW5k
cG9pbnQgbm9kZQo+ICAgKiBAcGFyZW50OiBwb2ludGVyIHRvIHRoZSBwYXJlbnQgZGV2aWNlIG5v
ZGUKPiAgICogQHByZXY6IHByZXZpb3VzIGVuZHBvaW50IG5vZGUsIG9yIE5VTEwgdG8gZ2V0IGZp
cnN0Cj4gZGlmZiAtLWdpdCBhL2luY2x1ZGUvbGludXgvb2ZfZ3JhcGguaCBiL2luY2x1ZGUvbGlu
dXgvb2ZfZ3JhcGguaAo+IGluZGV4IGU0MzQ0MmUuLjNjMWM5NWEgMTAwNjQ0Cj4gLS0tIGEvaW5j
bHVkZS9saW51eC9vZl9ncmFwaC5oCj4gKysrIGIvaW5jbHVkZS9saW51eC9vZl9ncmFwaC5oCj4g
QEAgLTQwLDYgKzQwLDcgQEAgc3RydWN0IG9mX2VuZHBvaW50IHsKPiAgI2lmZGVmIENPTkZJR19P
Rgo+ICBpbnQgb2ZfZ3JhcGhfcGFyc2VfZW5kcG9pbnQoY29uc3Qgc3RydWN0IGRldmljZV9ub2Rl
ICpub2RlLAo+ICAJCQkJc3RydWN0IG9mX2VuZHBvaW50ICplbmRwb2ludCk7Cj4gK3N0cnVjdCBk
ZXZpY2Vfbm9kZSAqb2ZfZ3JhcGhfZ2V0X3BvcnRfYnlfaWQoc3RydWN0IGRldmljZV9ub2RlICpu
b2RlLCB1MzIgaWQpOwo+ICBzdHJ1Y3QgZGV2aWNlX25vZGUgKm9mX2dyYXBoX2dldF9uZXh0X2Vu
ZHBvaW50KGNvbnN0IHN0cnVjdCBkZXZpY2Vfbm9kZSAqcGFyZW50LAo+ICAJCQkJCXN0cnVjdCBk
ZXZpY2Vfbm9kZSAqcHJldmlvdXMpOwo+ICBzdHJ1Y3QgZGV2aWNlX25vZGUgKm9mX2dyYXBoX2dl
dF9yZW1vdGVfcG9ydF9wYXJlbnQoCj4gQEAgLTUzLDYgKzU0LDEyIEBAIHN0YXRpYyBpbmxpbmUg
aW50IG9mX2dyYXBoX3BhcnNlX2VuZHBvaW50KGNvbnN0IHN0cnVjdCBkZXZpY2Vfbm9kZSAqbm9k
ZSwKPiAgCXJldHVybiAtRU5PU1lTOwo+ICB9Cj4gIAo+ICtzdGF0aWMgaW5saW5lIHN0cnVjdCBk
ZXZpY2Vfbm9kZSAqb2ZfZ3JhcGhfZ2V0X3BvcnRfYnlfaWQoCj4gKwkJCQkJc3RydWN0IGRldmlj
ZV9ub2RlICpub2RlLCB1MzIgaWQpCj4gK3sKPiArCXJldHVybiBOVUxMOwo+ICt9Cj4gKwo+ICBz
dGF0aWMgaW5saW5lIHN0cnVjdCBkZXZpY2Vfbm9kZSAqb2ZfZ3JhcGhfZ2V0X25leHRfZW5kcG9p
bnQoCj4gIAkJCQkJY29uc3Qgc3RydWN0IGRldmljZV9ub2RlICpwYXJlbnQsCj4gIAkJCQkJc3Ry
dWN0IGRldmljZV9ub2RlICpwcmV2aW91cykKPiAKCl9fX19fX19fX19fX19fX19fX19fX19fX19f
X19fX19fX19fX19fX19fX19fX19fCmRyaS1kZXZlbCBtYWlsaW5nIGxpc3QKZHJpLWRldmVsQGxp
c3RzLmZyZWVkZXNrdG9wLm9yZwpodHRwOi8vbGlzdHMuZnJlZWRlc2t0b3Aub3JnL21haWxtYW4v
bGlzdGluZm8vZHJpLWRldmVsCg==
From mboxrd@z Thu Jan 1 00:00:00 1970
Return-path:
Received: from mailout3.w1.samsung.com ([210.118.77.13]:60537 "EHLO
mailout3.w1.samsung.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org
with ESMTP id S1752026AbaLWLKU (ORCPT
);
Tue, 23 Dec 2014 06:10:20 -0500
Message-id: <54994D88.3000009@samsung.com>
Date: Tue, 23 Dec 2014 12:10:00 +0100
From: Andrzej Hajda
MIME-version: 1.0
To: Philipp Zabel ,
Grant Likely
Cc: Mathieu Poirier ,
Greg Kroah-Hartman ,
linux-kernel@vger.kernel.org, dri-devel@lists.freedesktop.org,
Laurent Pinchart ,
kernel@pengutronix.de, Russell King ,
Mauro Carvalho Chehab ,
Guennadi Liakhovetski ,
linux-arm-kernel@lists.infradead.org, linux-media@vger.kernel.org
Subject: Re: [PATCH v6 3/3] of: Add of_graph_get_port_by_id function
References: <1419261091-29888-1-git-send-email-p.zabel@pengutronix.de>
<1419261091-29888-4-git-send-email-p.zabel@pengutronix.de>
In-reply-to: <1419261091-29888-4-git-send-email-p.zabel@pengutronix.de>
Content-type: text/plain; charset=utf-8
Content-transfer-encoding: 7bit
Sender: linux-media-owner@vger.kernel.org
List-ID:
Hi Philipp,
On 12/22/2014 04:11 PM, Philipp Zabel wrote:
> This patch adds a function to get a port device tree node by port id,
> or reg property value.
>
> Signed-off-by: Philipp Zabel
> Acked-by: Laurent Pinchart
> ---
> drivers/of/base.c | 26 ++++++++++++++++++++++++++
> include/linux/of_graph.h | 7 +++++++
> 2 files changed, 33 insertions(+)
>
> diff --git a/drivers/of/base.c b/drivers/of/base.c
> index aac66df..c816299 100644
> --- a/drivers/of/base.c
> +++ b/drivers/of/base.c
> @@ -2080,6 +2080,32 @@ int of_graph_parse_endpoint(const struct device_node *node,
> EXPORT_SYMBOL(of_graph_parse_endpoint);
>
> /**
> + * of_graph_get_port_by_id() - get the port matching a given id
> + * @parent: pointer to the parent device node
Here you have 'parent' and 'node' in the code.
> + * @id: id of the port
> + *
> + * Return: A 'port' node pointer with refcount incremented. The caller
> + * has to use of_node_put() on it when done.
> + */
> +struct device_node *of_graph_get_port_by_id(struct device_node *node, u32 id)
> +{
> + struct device_node *port;
> +
> + for_each_child_of_node(node, port) {
> + u32 port_id = 0;
> +
> + if (of_node_cmp(port->name, "port") != 0)
> + continue;
> + of_property_read_u32(port, "reg", &port_id);
> + if (id == port_id)
> + return port;
> + }
> +
> + return NULL;
> +}
Maybe I miss something but it does not handle optional 'ports' node.
Regards
Andrzej
> +EXPORT_SYMBOL(of_graph_get_port_by_id);
> +
> +/**
> * of_graph_get_next_endpoint() - get next endpoint node
> * @parent: pointer to the parent device node
> * @prev: previous endpoint node, or NULL to get first
> diff --git a/include/linux/of_graph.h b/include/linux/of_graph.h
> index e43442e..3c1c95a 100644
> --- a/include/linux/of_graph.h
> +++ b/include/linux/of_graph.h
> @@ -40,6 +40,7 @@ struct of_endpoint {
> #ifdef CONFIG_OF
> int of_graph_parse_endpoint(const struct device_node *node,
> struct of_endpoint *endpoint);
> +struct device_node *of_graph_get_port_by_id(struct device_node *node, u32 id);
> struct device_node *of_graph_get_next_endpoint(const struct device_node *parent,
> struct device_node *previous);
> struct device_node *of_graph_get_remote_port_parent(
> @@ -53,6 +54,12 @@ static inline int of_graph_parse_endpoint(const struct device_node *node,
> return -ENOSYS;
> }
>
> +static inline struct device_node *of_graph_get_port_by_id(
> + struct device_node *node, u32 id)
> +{
> + return NULL;
> +}
> +
> static inline struct device_node *of_graph_get_next_endpoint(
> const struct device_node *parent,
> struct device_node *previous)
>