From: Laurent Pinchart <laurent.pinchart@ideasonboard.com>
To: Philipp Zabel <p.zabel@pengutronix.de>
Cc: linux-kernel@vger.kernel.org, linux-media@vger.kernel.org,
devel@driverdev.osuosl.org,
Grant Likely <grant.likely@linaro.org>,
Greg Kroah-Hartman <gregkh@linuxfoundation.org>,
Guennadi Liakhovetski <g.liakhovetski@gmx.de>,
Mauro Carvalho Chehab <m.chehab@samsung.com>,
Russell King <rmk+kernel@arm.linux.org.uk>,
kernel@pengutronix.de
Subject: Re: [PATCH 5/8] of: Add of_graph_get_port_by_id function
Date: Wed, 20 Aug 2014 22:13:34 +0200 [thread overview]
Message-ID: <2335139.eKsPusnO4R@avalon> (raw)
In-Reply-To: <1408453366-1366-6-git-send-email-p.zabel@pengutronix.de>
Hi Philipp,
Thank you for the patch.
On Tuesday 19 August 2014 15:02:43 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 <p.zabel@pengutronix.de>
> ---
> drivers/of/base.c | 30 ++++++++++++++++++++++++++++++
> include/linux/of_graph.h | 7 +++++++
> 2 files changed, 37 insertions(+)
>
> diff --git a/drivers/of/base.c b/drivers/of/base.c
> index a49b5628..6044c15 100644
> --- a/drivers/of/base.c
> +++ b/drivers/of/base.c
> @@ -2053,6 +2053,36 @@ 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
> + * @id: id of the port
> + *
> + * Return: A 'port' node pointer with refcount incremented.The caller
Missing space before "The".
> + * has to use of_node_put() on it when done.
> + */
> +struct device_node *of_graph_get_port_by_id(struct device_node *node, int
> id)
How about making id and unsigned int, as it can't be negative ?
> +{
> + struct device_node *port = NULL;
> + int port_id;
> +
> + while (true) {
> + port = of_get_next_child(node, port);
> + if (!port)
> + return NULL;
> + if (of_node_cmp(port->name, "port") != 0)
> + continue;
> + if (of_property_read_u32(port, "reg", &port_id)) {
> + if (!id)
> + return port;
> + } else {
> + if (id == port_id)
> + return port;
> + }
Nitpicking here, I would have written this
int port_id = 0;
port = of_get_next_child(node, port);
if (!port)
return NULL;
if (of_node_cmp(port->name, "port") != 0)
continue;
of_property_read_u32(port, "reg", &port_id);
if (id == port_id)
return port;
That saves 8 bytes with my ARM cross-compiler (at the expense of using two
extra local registers).
Please free to ignore this is you find your code layout easier to read.
> + }
> +}
> +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 2890a4c..24ceb4b 100644
> --- a/include/linux/of_graph.h
> +++ b/include/linux/of_graph.h
> @@ -33,6 +33,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, int
> 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(
> @@ -46,6 +47,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, int id)
> +{
> + return NULL;
> +}
> +
> static inline struct device_node *of_graph_get_next_endpoint(
> const struct device_node *parent,
> struct device_node *previous)
--
Regards,
Laurent Pinchart
next prev parent reply other threads:[~2014-08-20 20:12 UTC|newest]
Thread overview: 13+ messages / expand[flat|nested] mbox.gz Atom feed top
2014-08-19 13:02 [PATCH 0/5] Add of-graph helpers to loop over endpoints and find ports by id Philipp Zabel
2014-08-19 13:02 ` [PATCH 1/8] [media] soc_camera: Do not decrement endpoint node refcount in the loop Philipp Zabel
2014-08-19 13:02 ` [PATCH 2/8] imx-drm: " Philipp Zabel
2014-08-19 13:02 ` [PATCH 3/8] of: Decrement refcount of previous endpoint in of_graph_get_next_endpoint Philipp Zabel
2014-08-19 13:02 ` [PATCH 4/8] of: Add for_each_endpoint_of_node helper macro Philipp Zabel
2014-08-20 19:58 ` Laurent Pinchart
2014-08-19 13:02 ` [PATCH 5/8] of: Add of_graph_get_port_by_id function Philipp Zabel
2014-08-20 20:13 ` Laurent Pinchart [this message]
2014-08-22 12:09 ` Philipp Zabel
2014-08-19 13:02 ` [PATCH 6/8] drm: use for_each_endpoint_of_node macro in drm_of_find_possible_crtcs Philipp Zabel
2014-08-20 20:17 ` Laurent Pinchart
2014-08-19 13:02 ` [PATCH 7/8] imx-drm: use for_each_endpoint_of_node macro in imx_drm_encoder_get_mux_id Philipp Zabel
2014-08-19 13:02 ` [PATCH 8/8] imx-drm: use for_each_endpoint_of_node macro in imx_drm_encoder_parse_of Philipp Zabel
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=2335139.eKsPusnO4R@avalon \
--to=laurent.pinchart@ideasonboard.com \
--cc=devel@driverdev.osuosl.org \
--cc=g.liakhovetski@gmx.de \
--cc=grant.likely@linaro.org \
--cc=gregkh@linuxfoundation.org \
--cc=kernel@pengutronix.de \
--cc=linux-kernel@vger.kernel.org \
--cc=linux-media@vger.kernel.org \
--cc=m.chehab@samsung.com \
--cc=p.zabel@pengutronix.de \
--cc=rmk+kernel@arm.linux.org.uk \
/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 an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.