From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1751544AbdBFIv4 (ORCPT ); Mon, 6 Feb 2017 03:51:56 -0500 Received: from mail-wj0-f196.google.com ([209.85.210.196]:33497 "EHLO mail-wj0-f196.google.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1750950AbdBFIu2 (ORCPT ); Mon, 6 Feb 2017 03:50:28 -0500 Date: Mon, 6 Feb 2017 09:50:23 +0100 From: Daniel Vetter To: Rob Herring Cc: David Airlie , Daniel Vetter , Sean Paul , Neil Armstrong , Liviu Dudau , dri-devel@lists.freedesktop.org, Tomi Valkeinen , Frank Rowand , Marek Vasut , Kevin Hilman , Chen-Yu Tsai , Krzysztof Kozlowski , Xinliang Liu , Javier Martinez Canillas , Xinwei Kong , Kukjin Kim , Mali DP Maintainers , devicetree@vger.kernel.org, Chen Feng , Jyri Sarha , Carlo Caione , Russell King , Matthias Brugger , Alison Wang , Jingoo Han , Seung-Woo Kim , linux-kernel@vger.kernel.org, Kyungmin Park , Rongrong Zou , Maxime Ripard Subject: Re: [PATCH 1/5] of: introduce of_graph_get_remote_node Message-ID: <20170206085023.onmsh5dcmn6ofpp5@phenom.ffwll.local> Mail-Followup-To: Rob Herring , David Airlie , Daniel Vetter , Sean Paul , Neil Armstrong , Liviu Dudau , dri-devel@lists.freedesktop.org, Tomi Valkeinen , Frank Rowand , Marek Vasut , Kevin Hilman , Chen-Yu Tsai , Krzysztof Kozlowski , Xinliang Liu , Javier Martinez Canillas , Xinwei Kong , Kukjin Kim , Mali DP Maintainers , devicetree@vger.kernel.org, Chen Feng , Jyri Sarha , Carlo Caione , Russell King , Matthias Brugger , Alison Wang , Jingoo Han , Seung-Woo Kim , linux-kernel@vger.kernel.org, Kyungmin Park , Rongrong Zou , Maxime Ripard References: <20170204033635.10250-1-robh@kernel.org> <20170204033635.10250-2-robh@kernel.org> MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: <20170204033635.10250-2-robh@kernel.org> X-Operating-System: Linux phenom 4.8.0-1-amd64 User-Agent: NeoMutt/20161126 (1.7.1) Sender: linux-kernel-owner@vger.kernel.org List-ID: X-Mailing-List: linux-kernel@vger.kernel.org On Fri, Feb 03, 2017 at 09:36:31PM -0600, Rob Herring wrote: > The OF graph API leaves too much of the graph walking to clients when > in many cases the driver doesn't care about accessing the port or > endpoint nodes. The drivers typically just want the device connected via > a particular graph connection. of_graph_get_remote_node provides this > functionality. > > Signed-off-by: Rob Herring Just a quick procedural comment: drm-misc for 4.11 is closed already, but if we can get this core patch into 4.11 still then that would avoid cross-tree sync pains in 4.12 ... -Daniel > --- > drivers/of/base.c | 28 ++++++++++++++++++++++++++++ > include/linux/of_graph.h | 8 ++++++++ > 2 files changed, 36 insertions(+) > > diff --git a/drivers/of/base.c b/drivers/of/base.c > index d4bea3c797d6..ea18ab16b92c 100644 > --- a/drivers/of/base.c > +++ b/drivers/of/base.c > @@ -2469,3 +2469,31 @@ struct device_node *of_graph_get_remote_port(const struct device_node *node) > return of_get_next_parent(np); > } > EXPORT_SYMBOL(of_graph_get_remote_port); > + > +struct device_node *of_graph_get_remote_node(const struct device_node *node, > + int port, int endpoint) > +{ > + struct device_node *endpoint_node, *remote; > + > + endpoint_node = of_graph_get_endpoint_by_regs(node, port, endpoint); > + if (!endpoint_node) { > + pr_debug("no valid endpoint (%d, %d) for node %s\n", > + port, endpoint, node->full_name); > + return NULL; > + } > + > + remote = of_graph_get_remote_port_parent(endpoint_node); > + of_node_put(endpoint); > + if (!remote) { > + pr_debug("no valid remote node\n"); > + return NULL; > + } > + > + if (!of_device_is_available(remote)) { > + pr_debug("not available for remote node\n"); > + return NULL; > + } > + > + return remote; > +} > +EXPORT_SYMBOL(of_graph_get_remote_node); > diff --git a/include/linux/of_graph.h b/include/linux/of_graph.h > index bb3a5a2cd570..7b71d3e09209 100644 > --- a/include/linux/of_graph.h > +++ b/include/linux/of_graph.h > @@ -51,6 +51,8 @@ struct device_node *of_graph_get_endpoint_by_regs( > struct device_node *of_graph_get_remote_port_parent( > const struct device_node *node); > struct device_node *of_graph_get_remote_port(const struct device_node *node); > +struct device_node *of_graph_get_remote_node(const struct device_node *node, > + int port, int endpoint); > #else > > static inline int of_graph_parse_endpoint(const struct device_node *node, > @@ -89,6 +91,12 @@ static inline struct device_node *of_graph_get_remote_port( > { > return NULL; > } > +static inline struct device_node *of_graph_get_remote_node( > + const struct device_node *node, > + int port, int endpoint) > +{ > + return NULL; > +} > > #endif /* CONFIG_OF */ > > -- > 2.10.1 > > _______________________________________________ > dri-devel mailing list > dri-devel@lists.freedesktop.org > https://lists.freedesktop.org/mailman/listinfo/dri-devel -- Daniel Vetter Software Engineer, Intel Corporation http://blog.ffwll.ch